! "W N  @ &   / e&7 J  j De Ԥ!@eW  8m RW et ZEWue T!eD @5 &     7 = ߋpH@E A Ze      @7@ eE "   r t@P ljɋU1$ !                      { S89FPVop  %&'()*+,-./0123456789:;<=>@ABCDEFGHIJKLMNOPQRSTYZ[\]^_`bfdhjklnopqwwfS(< fb WfS(AfS;m DGm m H  Km m `RUX[m  m  ;^m  JMPSVm +m +VYm ^0m !4 m #m "m m @m m  S H m m  m m 5m 6$m Wm Wm R!m R!km m m 4m 4 m I#m I#&m #m w"fm [m [6)m m &79m ^0m `cfRm m TUm )m )5Xm Qm Qp|m ]0m m rm r m 8m 8. fS;m :fS;m  m *m * m m   m )m )m 4m ,m m |m 5m m 0m (m P m P m  m  m ^5m bm -#m  dfS(m m $m 4m ; fS;m 8r m ,m ,  fSI;m 6m m m zm z|m p5m q  #&m Pm P8 !m #m $m F3m 'm m 8,fSl  =j+m m 03 p B6m m .@C k /Fm m xJMPSVm !m !Y\m m _ L p-` _ 0c X 䰴bm 4m 4jem ,m f   q{ [ fS(< -y g m m X  X w pm &m & U m L4m Om m Z"m # q m m  O#m _"m _"@Cm m RF 5 p~m m |m 5m 5|m m ;0 { %m m T m m `k  ܲm 4m 4p) GW =m !m !@m !m !m m /    m 尶Z"m #m #" = pF%m m k  NB fSX;m F&#m m 2m m  58;m 6m >*-m Ym Yz0m 8 m 8 PJMPm m SVBE) }V <DHKm m nNQTm Bm B@W) W =bm m lopm 5m sJ T ЫDBvm #m #!m "m ") R ϫm 5m  i fS@;m C 0m i m i m  խBfS<) Tm m  m m 4fS:m pm  խ:fS;m m m m m m d5fS4I    ) U t! $ ' *  s 尴-  c 尴   "   fS;fS;fS;fS; fS;fS; fS;fS;fSz;fS;m   fS;fS;m 2 ꪶfS;fS$: n ꪴfS:fS; f  fS9fS8  0 fS9fS8o fS7fS7 fS7fS7% m @6* iby%fS7fS7fS7fS7`fS7fS 7|fS7fSn5. ( m m hE 1  q 尴)4 7  d 尴h: l   fSj5fS]5Y fS 7fS7 m #m " fST4fSM4 %  m , - l l  m m + m ##m "#  m m  m m + ) 3V " fSE4l ɚ\q  qE  { fS@;fS:fS(I concede ~ www I win w  f Wqs`G~@  JsЋ  |w Draw w4J  ` ` W b @s b @B   w, @ w 0 'bits' returned bw/usr/games/ttt.kthe 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 Albania:Tirana|Tirane" Andorra:Andorra la V[ell|iej]a Austria:Vienna|Wien Belgium:Brussel[s|]|Bruxelles Bulgaria:Sofi[a|ya] Czechoslovakia:Prague|Praha Denmark:Copenhagen|K[o|o/]benhavn East Germany:Berlin England|United Kingdom|Great Britain|UK:London Finland:Helsinki France:Paris Greece:Athens Hungary:Budapest Iceland:Reykjavik Ireland|Eire:Dublin Italy:Rom[e|a] Liechtenstein:Vaduz Luxembourg:Luxembourg Malta:Valletta Monaco:Monte Carlo Netherlands|Holland:The Hague|'sGravenhage|den Haag Norway:Oslo Poland:Wars[aw|zawa] Portugal:Lisbo[n|a] R[u|o]mania:Bucharest|Bucuresti San Marino:San Marino Spain:Madrid Sweden:Stockholm Switzerland:Bern|Berne Turkey:Ankara USSR|Russia:Mos[cow|kva] [West |]Germany:Bonn Yugoslavia:Belgrade|Beograd                           %% %ׯ%-% & Input file. 7*0 0t7 ', $$7h* wr* l w`* Z w) F  6w$* w"* w* ~  w) l wz, "'_) $<  yw -&V*& Ct+>6q@H0Z+< F630E6;p@?ZG;@c?GG?%/;.z@<0r?Q?K?3H?8CB}BrBwB>0<;;;BAAAN9 ?968GAHIjH@!0VHBG?@I/H?cHIE??>Ev/0$HhHEuE>?=>[EEE>EQG3?EkE+>?<C)HGD!EfEu?TEE:GG;n6WG_r (  & &%W!,_ @ T wt C,  rd X N nwF _  % Z W!,s(w   *@ f 4 *  V N &p_:%**70% pw4wSymbol table overflow. J(00 e F*7 & $ W!,SN'_    *$$ ** x  H  lr_z$**p$ H    <      3 3 3 4 5 4 7 4 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 6 4 5 4 9 1 1 1 1 2 2 2 2 3 3 3 3 r_ w     *3Af   $f   &   ^@      :    r # _    _ F _    pd ` _ Z  W!,:%w *;fA@@ fe   xf f 0    _ @  pwV"**7"_& &e   f " d_    _  _    b( & 6  w  %_@5- @s e @5- @l e %_@5- @ 7N f  _@5f  _%  p h%      P H ^ ^  & %@5S%P%%  f@&l 4e   4  X& %& 4e 4 N  pd ` _ 2  *A   @  f   \ w|   wj    *p*!w!A f x n   D_L$_ w T_  7f# 6Z#   w D  4#   _ f  _ | 7# B h l7" C l -"""" %%m"" "  m"  0 Pw("f Z  | lf d N  %$-  *@)@   @)@ w Type y to move first: w  2 Iw z 1111 2222 3333 4444 1234 1234 1234 1234 1 ---- ---- ---- ---- 2 ---- ---- ---- ---- 3 ---- ---- ---- ---- 4 ---- ---- ---- ----? ׭ yw .L@@f@f@f  x w You win  JZ X "w jw  D w I have a force win: "7 e w 2 W  &@  W   w  xW   #@ w o # w  4  N 4  w.w fe %ww ~wDe   % w7 7 ׯ-  (w7  .weB J ӕ- R r f e0 @ >2 ҋ D~8 ӕ0 $f v Le0 9e  7we&  m  ~    ~ w7 n d `0   LWp `e0eӕ?f@)" N H B : "  " "  w _ f  wZf ^ b7!  F J7! $!m!$!   C   j !m$  * w  h b 8 _ f ,  _ f  7.!   7! 7 ! !!! &v   N  f    Rf   6N  ! N   w J _ f` \ QED        9y # * W w  fw  @1  &@1 U &@1  U W   w LIllegal move &  w of w  e1e1e1@  &w |vxw rjhfdZ``mRmP w $Dw  w. f  w&  U%&tE7 E7E7f @@   w^fwJA 7 fAW,f B@ 8 @&61fA   @ @e7p1@ 1wf@wNwJwf@f& CB  ԕ-   e0fv   vA W  ~@& HADCBF7F%s %s differ: char %s, line %s %5s %3o %3o arg count cannot open %s EOF on %s dox<fJecslXr VR  <D   w  _ Z@@ _  _ 7"f ~ wzv  h < ^ ~ wV 6 :  " _     j B _ C Z _  7l B f Z  H& BWpdewp8B 0 2-&"$"  v    _7  f  \ V v  p w _  "7 BB   _ ! ~  f!   w@  A Ze 7  Ef `C  r CpDD`@ "`  "w &D D w D&`w f @  f mWp/w@Ef L  @@f@f@fxe?e CD  7 ;L@@f@f@fx @ & &w tw `  ; <     L@@f@f@fx D  +  &w ( ( + , V  w& 8  ]   [  w w _ f  ~q, ej-f*\   7F w Nesting depth. e -*? 7  D ! $7 ` &    \ w w* 9w`        w  w w w" w w  |  x w Fatal error 'T*w7 7  bf 6 ׭((.((((((((((((((w ~ &  Lffflp w ,`1 @  p eW   w  W   B   "w  2 w  w  w x/dev/ttyc/usr/bin/dds        behknqtwx{~y|02׭9.0 -c    w h N  N  7z׭tA ׭lFd7׭Z\ ׭L. , &7 $72  .    f p Cn f ` f P J D E7   * Ef  E7~ r7 lf ZwW!,_ wL W!, :8A ^fW!, ^W!,* +0* 7'  _&f&&    c U  7w'_ ^ b9_ f N ,D< . 27 &.    f-  N & _ . V _ _ _wp8 7r77 p$ w7  zN B   p T X7^   < :< 8 ~  ( N  TN~ ( -⇁ ` N " Hq,w  f1N1N1N1f&q,@ @  4 q,w q,q f&CC  n F lI 9 Blqqq&@1 7 & 2   (  "  % e &e w --p-@11   & *    -   !rectoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken Pipe$ L 7 8  f    N 7| HN  f    Z N   H  , \N    tf  r e0 Ne0  > 7 ~v7r 7 h b   P N 7 @782r 00h &   _ r .&  v& l   C : B xv t 1  w0Out of space. -p- &    p-r@@ @l12& b , -1 p- f&7  -`CM J- ! e <$L$\$m ),  B,4l$4  -0-  2  | A  f -8 ># wOut of space - too big a block.  fJ -m -bJw e ew"  D    w r2  2--  %F2^   Wq 0W 3E`e@t7 &&@tEe B &error /dev/junk_  Fw \ -1f   w m &&  0 rx wp7v v 2 P T   z !@ pv  x e0  w    ' ( 7  f0      0  6 0  -   f  w e0 9eN N  h_ "  * `_ . 7w ' d w7j-mn ~-$ 7d e\ e7  7 e 2 T$%wout of space - no more block storage &N ~  @ @j-J "eeB -J,"eJ,eB,B,@@& Z ,$e - &f-7de0 10 -  -Bw>1 11  p-$e11-A 11Ae11-ez-'wUW!@-wOut of pushdown. W!, A 0? !% *+-./0123456789:; <T =h > ?ABCDEF I^ KnL'OP*QhS V2 XdZ [ ^_cDdf i kl&ozpqs v2 xdz  @- ׭q&&f  f  7  !  @am7  dded x    q  v&&(/bin/sh-c! w _ Xf  v ~  2 x 7 & b pd`   pd7`   e7    7   z      ` >  e B  C  ` |  e   fbb ^-`N7 LFH-@FF 7r0wp*w*. R    8wFT*( ) ? " (0)"0 not D ! ww$w,!w"rwt7*7 ,r7 w47--&m- e7@ ]]7`7@e7w ~7 ~7 v0 0!/!,`h^B t7eE7&t7t7E7.7  p ,    0w b? w XFile not found. d ׭ ԝ A  y  c < Lqf& 7  & eddd7    t T X T cq T 2 6qf& 7     8 vv  Jw j    Hv  w <l " v7    . m6  pc ` rd@    c   t-  -  | &&BBin switch. `+l7 j7 B7 d7 b 0  9Y a zw A Zfw L ,"+v-v ._^*l   7 ]w j 7-+m+     0 p P` 0 9 . wn  JF   Fԋ.09AZ _az  F ;wԋw7ww ` /\? 0^=:!D'h"t$&%`@E A 4*A C  5WpdD `  $  TBe  z ~!d d  z f C f  C jf   R   fB   | v  j ^ Xf& 2vw7 0  w t |  ww 7   w F N R ww w l_7   7   W!  Wqd ` z Dqd  & 6  w  % B @  ʥ0ʥ7 B te@P ʋ @m& d   @m D-N ww - FN *f % % *& % %ww Dԋ@ w|w j~wlDeb  \ % wL7 H7 Hׯ>- 6 4(w(7 * .weB J ӕ- R r f e0 @ @><8*,.60FHPX`hpb b "b&b*b.b2b6b 6D `  w     D 8 v@ 7pw J7 t w H  6 tX 7 hL w &7 V: w 7 Dw  Tw .   8m 6 w: $ 5 w rh  7  w &   - jE     w .\ v e0 ve0 `D D sN  pd `pd `B (eB &v@  r     &  pc rd   | &    ed~ z r n  ` V q,w FD >0 2"  f  7  Em7  dd     8 <q    q  ^ ~x& Tf > ҋ D~8,0 ӕ0 $f v Le0 9etn f` 7Pwe&  m4 2 ~    ~ w7   0   Wp `e0eӕ?f ,P   @f  7 4zr-ldfww:wN f@ww@w*f@@& HADCBF7Farg count bad mode ve0 w  XZ 7& DFN ,EBw r  E  m  f - (  r f e0 -. v F$ $ $$ w Q$B 쇷 ^7 lf w!, A  C W  CBe @w 2 7 x  -"7 e7 7 x em 7 h m^ m\ em  !0  w   @f  .f  7 >  4  3  v    2v  B & v   ! Pw  \ N v  D  6 \ V@@@@ ,7F " 772   q,@W -W 1f&@l1 11 1   t qq,Æ @f&q,@ @ Unknown error: doxJfXecslfr+;GYi{ 1BQ`x!Error 0Not super-userNo 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 corePermission deniedError 14Block device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a di|@  Ew w w *w (w )w bw ,@w "  -7  w  䇅EE @ Ex  T I PF  6 : w )+9  w -( j ,   ~ L 5  5 w $ L  e@` 8 E 7 |r0r1r2r3r4r5sppcff R # @  , w -w + Aewx w 4x0  &4 @D@$f p^evmov vcmp0vbit@vbicPvbis`vaddvsu? clr?@ com? inc? dec? neg?@ adc? sbc? tst? ror?@ rol? asr? asl?@jmp?swab?@ldfps?stfps?stst?clrf?@tstf?absf?negf? sxt? mtpi?mtpd?@ mfpi?@mfpdpLmulrLdivtLashvLashc F%B7 7 el h   h%n%  N N  N<   <  wh vw Fp@m-f ^7\w8w &NupwFD  N w w $ʋeWp D%dʋe % `wfwBw>fwf@w&w"lw f@Aw| f BRf@wwrwBf@w N  ww DeL@4 w w lw w >cw vw &w w w w dw w cw w no archive file w cannot create archive file w" W, w w a0؇77 w Tw `w  w Rw w Lxw w .w ,w  w w w w  W w w  -- not found /tmp/vtmambrbnebeqbgebltbgtblebplbmibhiblosbvcbvsbhisblohaltwaitrtiiotresetHmulfHmodfHaddfHmovfHsubfHcmpfpmovfHdivfpmoveipmovfipmovfoHmovieHmovifHmovofcfccsetfseti setd setljsrxxor(rts4cf &   w/%J %K  t5p t5rN  5N  5 2 B-B-%B-B-% &    w4w "DC%: he`m e rfww p@&f %JB r<R r< r<R r< rWtC` re rwF h  h!7 h%n  x  0!x 7 Bww ԔAA WpCeԔԔ/* * Text structure. * One allocated per pure * procedure on swap device. * Manipulated by text.c */ struct text { int x_daddr; /* disk address of segment */ int x_caddr; /* core address, if loaded */ int x_size; /* size (*64) */ int *x_iptr; /* inode of prototype */ char x_count; /* reference count */ char x_ccount; /* number of loaded references */ } text[NTEXT]; lg4sflghemtxsys? \mark~sobbsplfoctE  E8& E  tw r7`m7 w x7`  `w r7`z Nt hE  2E5U mt t d &w r7`  H X5 5@ X nzvcEE E X E    w R;eew zz :@FLRX^djpvԔ BeWpCeԔԔԔ&  ed&  ed&  ed&  e@ &  wxw fA r nw^mw FD % A r  r e0@ԕ A r e0@w@& HADCBF7LF6rwH6r@f@  P`Hm` bad conversion no permission /usr/adm/wtmpPFM:/ESTEDTDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAug/* * Definition of the unix super block. * The root super block is allocated and * read in iinit/alloc.c. Subsequently * a super block is allocated and read * with each mount (smount/sys3.c) and * released with unmount (sumount/sys3.c). * A disk block is ripped off for storage. * See alloc.c for general alloc/free * routines for free list and I list. */ struct filsys { int s_isize; /* size in blocks of I list */ int s_fsize; /* size in blocks of entire volume */ int s_nfree; /* number of in cor~ "(2  ^corea.out?0HangupInterruptQuitIllegal instructionTrace/BPTIOTEMTFP exceptionKilledBus errorSegmentation violationBad system call?15?16?17sp ps pc r0 r1 r2 r3 r4 r5 releexitforkreadwriteopenclosewaitcreatlinkunlinkexecchdirtimemakdirchmodchownbreakstatseektellmountumountsetuidgetuidstimequitintrfstaSepOctNovDece free blocks (0-100) */ int s_free[100]; /* in core free blocks */ int s_ninode; /* number of in core I nodes (0-100) */ int s_inode[100]; /* in core free I nodes */ char s_flock; /* lock during free list manipulation */ char s_ilock; /* lock during I list manipulation */ char s_fmod; /* super block modified flag */ char s_ronly; /* mounted read-only flag */ int s_time[2]; /* current date of last update */ int pad[50]; }; temtsmdatesttygttyilginshogsleepsynckillswitchesboot/2*D! w ~chown uid f1 ... eCע0ע9w 7"w w BCan't open /etc/uids w w Who?  : w  ʋw :w VNw ww(77 Ћ w ?  }  0 Wp ` /etc/passwdfA7~ fA @e7x1@  1 @ &@wLՋ@@ 7B Ewww &w ~U/* * Location of the users' stored * registers relative to R0. * Usage is u.u_ar0[XX]. */ #define R0 (0) #define R1 (-2) #define R2 (-9) #define R3 (-8) #define R4 (-7) #define R5 (-6) #define R6 (-3) #define R7 (1) #define RPS (2) #define TBIT 020 /* PS trace bit */  & 6  bw P%  @% b @&  5  @% b:f  @&  !E%@@Ҕ/ҥ/ @@&  -@-:  @% bN@&  5&  N:f @%@-   @% b:f %5 bwfwhwdwf@wLw fw6w2  disk offset J7f tape offset 07N count  T 0 *    0 Wp `@ illegal digit -  ^ e*ȋ5 5&D9ȋ5@*&e  (: 7    0 rf rv(&1ɋ/* * Used to dissect integer device code * into major (driver designation) and * minor (driver parameter) parts. */ struct { char d_minor; char d_major; }; /* * Declaration of block device * switch. Each entry (row) is * the only link between the * main unix code and the driver. * The initialization of the * device switches is in the * file conf.c. */ struct bdevsw { int (*d_open)(); int (*d_close)(); int (*d_strategy)(); int *d_tab; } bdevsw[]; /* * Nblkdev is the number of entries * wf@ww$wlfww*wN f@ww0w*f@@& HADCBF7FUsage: cp oldfile newfile Cannot open old file. Copying file to itself. Can't create new file. Read error Write error. -  ɋ Wv  B   J  yru0drx<tpw (bad usage 7w@w Aw H ^ 7(- :w w -- not in archive format ׭z0 06 77w ^cannot open temp file  w  ~zvr E7Nȋ/@ w  Ћa%wwHD7@w (rows) in the block switch. It is * set in binit/bio.c by making * a pass over the switch. * Used in bounds checking on major * device numbers. */ int nblkdev; /* * Character device switch. */ struct cdevsw { int (*d_open)(); int (*d_close)(); int (*d_read)(); int (*d_write)(); int (*d_sgtty)(); } cdevsw[]; /* * Number of character switch entries. * Set by cinit/tty.c */ int nchrdev; 8X & 6  w 5 %e@7 $ 8 % \s0      ( x| ^  HW  58 x}b& f :% f %  x  %  & % %ww p l%_% _ R5%_%_ 65%5 5c%;`  Ne xNe  pe  7  5~w nw w  -- cannot open Pw w -- phase error 4J"wW 7 5 47wW 7 5x&fw w  -- cannot create w  w f@:w  w w  w - -/* * Each buffer in the pool is usually doubly linked into 2 lists: * the device with which it is currently associated (always) * and also on a list of blocks available for allocation * for other use (usually). * The latter list is kept in last-used order, and the two * lists are doubly linked to make it easy to remove * a buffer from one list when it was found by * looking through the other. * A buffer is on the available list, and is liable * to be reassigned to another disk block, if and only * if it is not marked BUSY. When a buffer is busy, the * available-list pointers can be used for other purposes. * Most drivers use the forward ptr as a link in their I/O * active queue. * A buffer header contains all the information required * to perform I/O. * Most of the routines which manipulate these things * are in bio.c. */ struct buf { int b_flags; /* see defines below */ struct buf *b_forw; /* headed by devtab of b_dev */ struct buf *b_back; /* " */ struct buf *av_forw; /* positit7(@tE7tt  & 55@ EHEww %5- U L 5% zwvw r D5_ 5_ m _ eE5 5 tEB-_ mPtEAm@  _  U@& 5@ U t E4 Wt @`E@`t4`tE4B 4 E 4 4&  <& 5`ro"_bdwrite"<~bdwrite<bpdprbpL10000\L15d_bawrite"rL14n~bawriterbprbp~brelsebpbackprbpspsL19_wakeup L20L21_spl6 ~incoreadevbpdpdevblknoL23L20002L25L22~getblk"bpdpdevblknoL30bL294_panic L20004:L32>L3on on free list, */ struct buf *av_back; /* if not BUSY*/ int b_dev; /* major+minor device name */ int b_wcount; /* transfer count (usu. words) */ char *b_addr; /* low order core address */ char *b_xmem; /* high order core address */ char *b_blkno; /* block # on device */ char b_error; /* returned after I/O */ char *b_resid; /* words not transferred after error */ } buf[NBUF]; /* * Each block device has a devtab, which contains private state stuff * and 2 list heads: the b_forw/b_bac5@ EH 7> j'ww D57wblkdevdevtab88888HX9L20007X_sleep _spl0 L33~L34;L35L37L38_notavai"LL20008L40~iowaitbprbpL428L20010,~notavaiLbprbpsps_iodone"|~iodone|bprbpL46_mapfree"pL47L45_clrbuf"~clrbufbpcpL52_binit"~binitbpdpibdpL20012L57k list, which is doubly linked * and has all the buffers currently associated with that major * device; and the d_actf/d_actl list, which is private to the * device but in fact is always used for the head and tail * of the I/O queue for the device. * Various routines in bio.c look at b_forw/b_back * (notice they are the same as in the buf structure) * but the rest is private to each device driver. */ struct devtab { char d_active; /* busy flag */ char d_errcnt; /* error count (for recovery) */ ))(((8I(())(HY8YY)HYRL200148L60J_devstar"`~devstar`bpdpdevblkdevlochbcom comrbpL62L63_rhstart"~rhstartbpabae dpdevblkdevloccomrbpL65L66L67_maplock _mapallo"~mapallobpabpiaL68lL69L20016L20018>L74`L20020T~mapfreepbpL78_swap"~swapstruct buf *b_forw; /* first buffer for this dev */ struct buf *b_back; /* last buffer for this dev */ struct buf *d_actf; /* head of I/O queue */ struct buf *d_actl; /* tail of I/O queue */ }; /* * This is the head of the queue of available * buffers-- all unused except for the 2 list heads. */ struct buf bfreelist; /* * These flags are kept in b_flags. */ #define B_WRITE 0 /* non-read pseudo-flag */ #define B_READ 01 /* read when I/O occurs */ #define B_DONE 02 /* transaction finished */ #d())))(()))8Ii h Hi i Yi h i 8countfpcoreaddrrdflg blknoL80L20022L82L20024L840_bflush"B~bflushBbpdevL86hL20026HL10001XL89xL87|L20028r_physio"~physiostratbpbasenbrw abptsdevL92 L93L10002L94*L20030L10003VL10004Z_lshift L96L20032L98L91~gefine B_ERROR 04 /* transaction aborted */ #define B_BUSY 010 /* not on av_forw/back list */ #define B_PHYS 020 /* Physical IO potentially using UNIBUS map */ #define B_MAP 040 /* This block has the UNIBUS map allocated */ #define B_WANTED 0100 /* issue wakeup when BUSY goes off */ #define B_RELOC 0200 /* no longer used */ #define B_ASYNC 0400 /* don't wait for I/O completion */ #define B_DELWRI 01000 /* don't write till block leaves available list */ H9999988HY)(Y     H eterrobpabpL990tty.ol (< w Ce & e& e& ww x 7ne 7be 7V ww | E%  fWp %w6& @5 '\ %  %(( 5\( %  %5eD-w BCE% 5 5 %%%  <4%5%A%Ze  5 % %   5 $  ww CDE%5 _% 5  $ _5ҋ !\ $ %a%ze% 5ww D@t s-3! w  w @-4  %<U@ @t;  t-t-  f5U@& P LwD :< L5U 0003t tw D & 5  ww D 00Uww D5  pU5 E@ wPw L@ ~w8w 4 727,7& H Y   _u "_buf h_bfreeli _bdevsw _nblkdev _cdevsw _nchrdev _canonb _coremap _swapmap _rootdir _cputype _execnt _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _curpri _maxmem _lks _rootdev _swapdev _swplo _nswap  $ e & Ze5 E B xʋ=ʊ;tE5%ʋt&e % tE5% U@%  e &U wx5@tE5%% w B nE "Q tE mE@` __  )YHY hy y 9 )YnL63L65L70<L73L75~ttyoutp$actpcrtpcolpctypeL10005HL47L48nL51VL52L53L54zL55L58L66,L688_max L71hL76_ttrstrt"~ttrstrtatptp~ttstartatpaddrctpL82L81>L84&_timeout _ttread"B~ttreadBatptp  !` %&&  eww  ># F 7% &  e Rww 5 5  w ~ fw ` a ZğR NE@ EQ27.7.w$w # <&  %ww ėE5Ue-? ww E5  5 *ww E  y7tj7f wXyIyIIyXY_u "_bdevsw _nblkdev _cdevsw _nchrdev _ka6 _mmread"~mmreadbnoncaddevcsv L1L4_lshift _spl7 L5j_fuibyte _spl0 _passc cret _mmwrite"~mmwritebnoncaddevL8_dpadd L6_cpass L10*_suibyte pc.ol L86|L88b_passc _ttwrite"~ttwriteatptpcL91L90L20015L93L20013_cpass _ttystty"~ttysttyatpavtpvL96L95dc.o.ol p4@xw %FDueCteUA#@II5  &  0tw\w XDue45E w0w yyyyy(9yyyyxy9yxy x( IIyX9IyyyIIIyIyX9yI 9yx( yyyyhyyy9yyy(9y$w  !%Ah U@l vww    h7  Fww ~%v5hUAh    >w:w 6 t *w"w 5l nww %5h!%5hj %UAh ww ~%2 ww 5l%dz( f P * HwDw @d tw0YIYY)XY)YXXH))X)YYYYXhYXx)YXx)IYXXh))_bdevsw _nblkdev _cdevsw _nchrdev _u "_pc11 _pcopeU 4  707  w|w x 7v˕U ^' EE @ ˕/( tUC5U ww 565 & %5 E7E U77! ,!5EU˕Cwz  xߕ  - -؂"" Et5 @PUA e-HH0002L10003L10004_tmintr"~tmintrbpunitL25~L26DL27L29&L31:L34zL33p_tmread"~tmreaddev_tmphys"_physio _tmwrite"~tmwritedev~tmphysunitadev_lshift partab.ol { n"~pcopenflagdevcsv L2<L3L1FL4_lbolt _sleep _pcleade"cret _pcclose"J~pccloseJflagdevL8r_spl4 L9X_getc _spl0 L7v_pcread"z~pcreadzcL16L20001L18L19_passc _pcwrite"~pcwritecL21L20003_pcoutpu"t_cpass _pcstart"~pcstartcL23_pcrint"~pxyyyyyyxyyyyyHyyyyyyyxy_bdevsw _nblkdev _cdevsw _nchrdev _buf h_bfreeli _u _partab#rp.ob.ol 2 $w D5  Ete2@ "U L4      rWtPt r4` vx7r3-, 3-,34  *w&w "$ t&& eww :7 && %5 ߕ  5~ 5~ UcrintL26L25TL280L29L_putc _wakeup _pcpint"X~pcpintXL31p~pcoutputcL34L33L35~pcleadeiL39rf.ol t*w D5 t -U 4  707  ww 8 t&6& ewjw fb$b7X 080& %09 3 U7)7( zww f ew"_tctab _tcper _tcclose"~tcclosedevcsv _bflush cret _tcstrat"~tcstratbpabpL30_mapallo L10000FL4R_iodone L2_spl6 L5fL6nL7|_tcstart"_spl0 ~tcstartbpcomtccmpL9L20001L11L8L12L13_tcintr"L10004L29L30L19H~tcintrbptccmptcdtp77 Nwpw lN  f ewDw @N   f eww B >e `@Et0!2 w##hN<_iodone L1_lrem _ldiv _spl5 L6L5L7L10001L8L9_rpstart"_spl0 cret ~rpstartbpL10 _devstar _rpintr"~rpintrbpctrL11L12r_deverro L13PL14FL16XL17bL20000_rpread"~rpreaddev_rpphys"L19_physio _rpwrite"~rpwritedev e5 5N 5N  r f r tUAWt @Pww  & ~ & & eww (7 & %5 U77 zww f ewtw p f ewV (Xyyyyyy xI(yI yyyyyYIyyyyyIyyyyyL21~rpphyscdev_lshift L24,L23(lp.o.ol o4w 5 L UU@L ^ww  ^7 ww  ^ ww D5%a%z e7 y 7p y ( )'!^ ^ B-8eE7,w5  7  %<5  % 7 7 5  - 7 %P  -  w x yy yyy(yyyyX  _buf h_bfreeli _bdevsw _nblkdev _cdevsw _nchrdev _u "_rktab _rrkbuf _rkstrat"~rkstratbpqcqldabpcsv L2_mapallo L3*L4D_iodone L1r_spl5 L5XL6yyyyyIXiIXiIhI_buf h_bfreeli _bdevsw _nblkdev _cdevsw _nchrdev _u "_tmtab _rtmbuf _t_openf _t_blkno _t_nxrec _tmopen"~tmopenflagdminordevcsv L2L1,cret _tmclose"0~tmclose0flagdminor N5LwZw V %2L F w8w 4%d.  f w`{|}~~ 6"~BYIYYYYYYYYYYYYYYYYYYYYYY`L7n_rkstart"_spl0 cret _rkaddr"v~rkaddrvbpbdmpL9L10_lrem _ldiv ~rkstartbpL11 _devstar _rkintr"~rkintrbpL12hL13T_deverro L14<L20000d_rkread"l~rkreadldev_physio _rkwrite"~rkwritedevtc.ol w N @E0ww D5 %B EdevL5N_tcomman"^~tcomman^unitcomL7rL10000d_lbolt _sleep _tmstrat"~tmstratbpabppL10L11L20002L20004_clrbuf _iodone L9 L13_spl5 L14L15L16_tmstart"_spl0 ~tmstartbpunitcomblknoL18(L10001L17L20L21L20006L23L22L1YYYYYYXYYXXYXX_bdevsw _nblkdev _cdevsw _nchrdev _u "_lp11 _lpopen"~lpopenflagdevcsv L10000L2L1._lpcanon"^cret _lpclose"2~lpclose2flagdev_lpwrite"F~lpwriteFcL5RL20001L_cpass L10002L10003 L16L13L17L15L18L8~L10007L10008$L296L21L23L27"L31~L32B~lpcanon^cc1c2L9L10009L10004L14L7L10005L25_lpoutpu"L33VL35lL20003`_lpstart"~lpstartcL38L20005_getc L37_lpint"~lpintcL260L20004L29*~dhstart8cptpcnchatpspsL31L20013L33nL34_getc L35L36L37_ttrstrt _timeout dhfdm.ol 4"w Dueww wX_partab _bdevsw _nblkdev _cdevsw _nchrdev _dh11 _dmopen"~dmopentpdevcsv cret _dmclose"~dmclose @ 5*H C = 7. U"7 77 & 0 ww N xf$ e 7ww N x f$ e7 ww DB    wZiii8Hy8HL10010L40_wakeup ~lpoutpucL43_sleep _putc _spl4 _spl0 dhdm.ol /w Due@@B5@B`@  &  ww Due5 @@B`@w|w x5@0@Eue\te! 5@B &  B `@w X)Xdevsys.ool w  f&Wp %ww b &Wp  ww @ &Wp  ww  f&Wp %wpw lwV((((II_bdevsw _nblkdev _cdevsw _nchrdev _u "_partab _proc L_syopen"~syopenflagtp8HiHXyyyyyiyyXyyiyyyyyyyy)XiX)_partab _bdevsw _nblkdev _cdevsw _nchrdev _dh11 _ndh11 _dmopen"~dmopentpdevcsv L2,_spl5 L3DL200018_sleep _spl0 cret _dmclose"T~dmcloseTtpdevL5_dmint"~dminttpL7L9_wakeup L10L11devcsv _syttyp"L1"cret _syread"&~syread&tpdevL3D_sywrite"H~sywriteHtpdevL5f_sysgtty"j~sysgttyjflagtpdevL7~syttyptpL10hp.ool MP $w   ww D EteP@ "U L4    rWtPt r4` XZ7TyyXiiiiih(i_buf h_bfreeli _bdevsw _nblkdev _cdevsw _nchrdev _u "_httab _rhtbuf _h_openf _h_blkno _h_nxrec _htopen"~htopenflagunitdevcsv L10000L2 L1B_hcomman"cret _htclose"F~htcloseFflagunitdev_signal _flushtt dh.ool ) "tw %6Due8tU@0 #@ hN  0w|w xDueN  wTw P@te w:w 6@te w w ' #uEue%55 5   ww DueN&  hww D U@0U +t Wt@PU@5 5@3-, 3-,3  ww  t&& eww 775@" & %5p   5 ~ } w U7m7l NwRw NN  f* ew&w "N   f* eww B  e `@Et0!P w%,Qfd,L5x~hcommanunitdevcomL7L10001_lbolt _sleep L9L20002L11L20003L13L20005_htstrat"$~htstrat$bpabppL16`L17ZL20007RL20009L_clrbuf _iodone L15L19n_spl5 L20L21L22_htstart"_spl0 ~htstartbpunitblknoL24L23lL25L20010L1UUU2U ww @ A @@E0 @@  8 e ww  B!aNte5 % e %/2% @@e !U@0@`tQ7Q" = 2Ee %_w IxhIy xIhii0002L27L28LL29,L31:_rhstart _htintr"p~htintrpbpunitL33L34L35L37L40L39 _htread"~htreaddev_htphys"x_physio _htwrite"N~htwriteNdev~htphysxunitadev_lshift hs.ool T4(w D  U 4  707  ww   E(y xy xXy xxy xxy Yy xy _buf h_bfreeli _bdevsw _nblkdev _cdevsw _nchrdev _u "_hp_size#P_hptab _hpbuf _hp_open _hpopen"~hpopencsv L1&cret _hpstrat"*~hpstrat*bpabpp1p2L10000PL4\_iodone L3_lrem _ldiv _spl5 L7L6L8L10001L9L10_hpstart"_spl0 ~hpstartbpL118 &&& ew`w \X$X7N5@  (& % / ) U77 jw w f eww  f ew9yyyyyyyyyyXyyyy_buf h_bfreeli _bdevsy_bdevsw _nblkdev _cdevsw _nchrdev _u "_partab _proc L_dh11 _dh_clis _ndh11#"_dhsar _dhopen"~dhopenflagtpdevcsv L2L1_dhstart"8L3^_dhparam"h_dmopen cret _dhclose"~dhclosetpdev_dmclose _wflusht _dhread"~dhread._rhstart _hpintr"2~hpintr2bpctrL12L13_deverro L14zL15pL20000_hpread"~hpreaddev_hpphys"L18_physio _hpwrite"~hpwritedevL20~hpphyscdev_lshift L23JL22Fht.ool _ w DE% 0   f ww DE4 f f f wvw rDw _nblkdev _cdevsw _nchrdev _u "_hstab _rhsbuf _hsstrat"~hsstratbpabpmblkscsv L2L3*_iodone L1X_spl5 L4>L5FL6T_hsstart"\_spl0 cret ~hsstart\bpaddrL7L8x_rhstart _hsintr"~hsintrbpL9L10_deverro L20000_hsread"~hsreaddev_physio _hswrite"~hswritededev_ttread _dhwrite"~dhwritedev_ttwrite _dhrint"~dhrinttpcL94L10000_wakeup L20002L12*L13&_ttyinpu _dhsgtty">~dhsgtty>avtprdev_ttystty L15d~dhparamhtpatplpr_spl5 L17L16L18L19L20L21L24_spl0 _dhxint"~dhxinttpttybitbar Z5 tE( 5*%@EUEU: *E%@U ww D E e - - U  !55 4  707zn  dw`w \^a tE(%@EUEU:E 5 U7 -- &Y  G &[ < &&& eww O E5@ *5* %vdos.oofS 7 $w 5 %U  Wt p 0 eWpWtN    L z R 7HD@ %2f  %`  % M  7 7   & & e&  % ^wZw V%(@%`#`     #&),/25!$'*-036"%(+.1478;>ADGJM9<?BEHKN:=@CFILOPSVY\_beQTWZ]`cfRUX[^adghknqtwz}ilorux{~jmpsv devinoL22tL20005dL24L20011|_iget L26L20018L21L20009L28L20007_iput L30zL20017L20015L35ZL20013L384L34hL31L40 _ifree"~ifreefpdevinoL41~getfsn1n2pdevL20020L45.L10002L47*L48L42@L49%_update" %( %#5 ww %(_N %_N &f  e%_N &f ` &f T ee%_@@m@me-\_ j% e  @teU %z  % e  @teUDm%z   %  Dm% #  @tU"e# jz%z%  mw,w (@e !Nf de % 2e Nf  w2 N  w N &e Nf& % ; 4 %d#Nf d&e %4  4e  apww DCe - N w w N &e *  a5Nf  e e w<  D~updateDipmpbpL50L20022VL53L20024L57_iupdat _prele _bflush iget.ol w &  5-(5-$̵̵2!e%   w~ e % ɂtt̕fe f 5  ,fe tl5eSee  w D  24 tw  /etc/initmem = %l RESTRICTED RIGHTS Use, duplication or disclosure is subject to restrictions stated in Contract with Western Electric Company, Inc. no clock9yXx(Y8Yi8))H))H )95 5 KNef 5 @ ` %5 @tp-@tp- %d ap%de% %d 5#4e N  _w PN %d  apww  L-%d%d N 4 4  e%ڂ% ww Q  *#  4nj& % e%΂̵ &  & &   4  w|w xBʵL Ee5f  5f tA@lee ʵeʵTeTN ww D5 pe5[ U5HN& e5 1e@-%& 5e5  N& @p- & ,ȃ N& = e@-E4 4 ww 6  w@UII9 9I9 Y YI9Ye % 7  w iinitno spacebad blockOut of inodesbad countno fsY)))hx )yyYhx Y4  pw @7ZHԔ%VX  ,wLno imtInode table overflow 8x I9I_u "_canonb _coremap _swapmap _rootdir _cputype _execnt _lbolt _time _tout _callout x_mount _mpid _runin xYYxh hyyX_runout _runrun _curpri _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _regloc _proc L_text _inode _ka6 _icode#_main"~mainipcsv L2_fuibyte L3B_clearse _mfree L4nL5LL6nL7hL8_printf L9 L10L11LL12z_min _fuiword L13 L14 L15_panicYYYiixyyxH X ih _canonb _coremap _swapmap _rootdir _cputype _execnt _lbolt _time _tout _callout x_mount _canonb _coremap _swapmap _rootdir _cputype _execnt _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _curpri _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _regloc _u "_inode _bdevsw _nblkdev _cdevsw _nchrdev _buf h_bfreeli _iget"~igetip _cinit _binit _iinit _iget _newproc L16_expand _estabur"_copyout L1_sched cret _sureg"~sureguprpaL18L19L20L21L22L23L24L25L17~estaburapnddpntnsasep L27bL28_nseg"L29L30L31L32L33L3_mpid _runin _runout _runrun _curpri _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _regloc _bdevsw _nblkdev _cdevsw _nchrdev _buf h_bfreeli _inode _u "_iinit"~iinitcpbpcsv _bread _getblk L2BL3_panic _bcopy _brelse cret _alloc"~allocbpipfpdevbno_getfsip1ip2pdevinocsv L2$L20001_sleep L20013L20005*L6L8bL20003JL13_panic L20011jL1~L20007nL16_printf L20008|cret L5_ldiv _bread L17_brelse _iput",_lrem L18L20010~iput,rppL21vL22^_itrunc"2_ifree _iupdat"_prele ~iupdattm4L35L36L37L386L396L40BL41TL42HL43TL44XL45rL46L47L48L49L50L51L26~nsegnL52alloc.ol |8w t %   & % 744477w|w x N e  I  `5?Nf % "L5L20001_sleep L9L10D_badbloc"L11"_wakeup _clrbuf L4@L12_prdev _free"`~free`fpbpipdevbnoL14L20003vL13L16L17_bwrite ~badblocfpbnabnafpdevL100006L19LL20L18H_ialloc"P~iallocPfpbpipijkrpbpip1ip2ipL23._getfs L25L20015L27L28L29&_bwrite ~itrunc2iprpbpcpdpepL30&L31L20021RL33L35L36L20019zL38L40L41L20017L43_free _maknode"*~maknode*modeip_ialloc L46DL45@_wdir"p~wdirpipcp1cp2L20023_writei prf.ol ~.xw Ce 1 @ %%B %d%l%o %o  v %s eww Nf N& v Nf e0 wLw HD x 5t t tv%     tww w N~ w @@&f eww D  ( Nf& ewpanic: %s %s on dev %l/4L5>_lshift _min"L6_dpcmp _bmap L7L8_breada L20000_bread _iomove"_brelse cret _writei"8~writei8bpdnonbnipnaipL11lL10tL14vL15L16L17_getblk L20002L19L20.L21&_bawrite _bdwrite L23d_max"x~maxxabL25pricsv L2\_issig L3P_spl6 _spl0 L4D_wakeup"~_swtch"L5x_aretu L1Xcret ~wakeup~chancipL9L10_setrun"~setrunrppL12L11_setpri"~setpriuppppL15L16_sched"~schedp1rpanL184L19"L20003%l errbn%l er%o %o yyyyyy_ka6 _buf h_bfreeli _bdevsw _nblkdev _cL24~minabL27L26~iomovebpanflag cpnotL29L30_copyin L20004_copyout L32L28_dpadd L374L34 _cpass _passc slp.ool b w 0 %  t̕t 7 ~   w t̕t Pw ~C2  e~w\w .L20001@L22^L24|L25_malloc L27<L20005L30L31 L20007L34 L10001_xswap L36pL37l_swap L38_mfree L39b_panic ~swtchL41vrpipvnL42_savu _retu L43L46L47 L44(L50:_idle _sureg L51d_newproc"l~newproclupnpridevsw _nchrdev _panicst _printf"~printfxaxbxccsadxfmtx1x2x3 x4 x5x6x7x8x9csv L3L20001 L1r_putchar"L10000@L5XL10001LL10002P_printn"vL6lL7hL20003bcret ~printnvban_ldiv L10_lrem ~putcharXD4 ̕H@< 7. ~w"w DEted`% ww  ̥  5e%L% D m J TE%̥.̥+e%L%E%̥̥ 5e%L%D  & %_4@ && e ,m D&& e et& prppa1a2L53~L20009zL20011L58L59L60mL20013L61L64L65|L66rL67_copyseg _expand"~expandnewsizeinpa1a2L70L69^L71L72:L20015&subr.ol w @55S@5/5LN C5 @ @m@ @m0  %@0rccsL11L12L14_panic"~panics_update L16~L17"_idle _prdev"(~prdev(devstrL20_deverro"L~deverroLbprbpo1o2L22L23rdwri.ol JLw B 0_4E% Wp  _4B 55E5N  E%`# &E eH%4_4b w8w 4  * 77 2e%Lʥ  R HB 8  ww 5 7 ~̋ 5-f e%LDm ̕"  4%@ 4 D7C 5˕t  & & %˕ wt N f w Z @U@t55@ @mBN 0 w2@ @mN  @ @m7 %@ @m7@ @m0f %4@tEe5 `N 5 @ `AH  f 5D@E5 `N 5@ `N   7 %@ `7w     w@ j w   N 59@ 7* @- f& %N& 5rff eN  ww BE% Wp  _t _tB E5N  5E%`  X%& & 5 fff e/N 5*N N   &E e 5    ww u-@wt@w ju-@wZ5tu- NmfN %? N  N& % 5  Nm u-f % wswap errorno procsi )i)i)  )i))iğ  Ewb jw Duw:w 6w2w .DCB~wY(y(@w PC@Dmr*Q]p5# &\ P& %j7w`6B (     h(Xx HHX8)i(((YYYYYYYyYYYYYYYYyYYhYYyyy_bdevsw _nblkdev _cdevsw _nchrdev _inode _u "_buf h_bfreeli _canonb _coremap _swapmap _rootdir _cputype _execnt _lbolth(xx_inode _u))9)i8   HH )i HHH _time _tout _callout x_mount _mpid _runin _runout _runrun _curpri _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _regloc _bmap"~bmapipbnbpnbdibapnbpcsv L2"L20005L9L4_alloc L20004J_bdwrite L12L13:L14(L1cret L10L1 "_buf h_bfreeli _bdevsw _nblkdev _cdevsw _nchrdev _canonb _coremap _swapmap _rootdir _cputype _execnt _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _curpri _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _regloc _readi"~readibpbnondnipnaiplbncsv L1H9)_u "_proc L_text _canonb _coremap _swapmap _rootdir _cputype _execnt _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _curpri _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _regloc _file _inode _buf h_bfreeli _sleep"~sleepchanrps1$L15H_bread L16L17L18_brelse L19L20L21_passc"~passccL24NL25.L27<L10000jL20006FL23J_subyte _cpass"n~cpassncL29L20009xL28L20008~L31L33_fubyte _nodev"~nodev_nulldev"~nulldev_bcopy"~bcopycounttofromabcL39text.ol =D l<w D 5et l  < f& e ~  f %4p7j w^w Z$0  <54 et& %  ww _8  e % t-0a 4 tle?tEet  e  & & e7 N v e& 3L14L15L16L30L31~trappcsppsaidevcallpnps r1r0 csv _savfp L2L6J_printf L7TL8^L9l_panic L3r_psignal L12~_issig L33_psig _setpri L1cret _fuiword L10000L17B_fuword L18L19(L22bL23L16L20006_wakeup _swtch L15_procxmt"L17L20008_exit _psig"L10001L35L25~psigrpnpL23nL24_grow"j_suword L22_core"~coreipsL388_schar _namei L39L20012^_maknode _access L42R_itrunc _writei _estabur _iput L10002dL37`~growjsie3C      % ww D  & %wout of swap spaceswap errorout of textout of swap spaceI(h)I()I^L20001F_trap1"L26|L27_backup L32_grow ~trap1f_savu _nosys"~nosys_nullsys"~nullsyssig.ol *Pw t-N& * e%Lww %D t̥d̕d̥ ww Ĝ   Ĝ  wr 5w ` ˕ P  x% , e%L ww J2 57/%% 0 e jspaiL20020_ldiv L46L43_expand L47L20017_copyseg L50 L20019_clearse _ptrace"~ptracepL54.L53L200222L57LL59^L60t_sleep L61L20024L63L10007(L68L702L71JL72dL73L74L80L81~procxmtipL65L20025L64L69(h)I)_canonb _coremap _swapmap _rootdir _cputype _execnt _lbolt _time _tout _callout x_mount _mpid &e & 0E x7D  etQ7* ^wZw V78  mI C 55`1FB- 7 @7 >2. e & && e7 t77   ww d t@-@@ & @e 60`(" e  w>v` h`@l &   `w R̥ _fuibyte _fuiword L20028,_fubyte _fuword _suiword L20029L10005L75L76L20027L79sysent.ol 4 (8HXhx(_runin _runout _runrun _curpri _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _regloc _u "_proc L_text _inode _xswap"~xswapffosrpapcsv L2_malloc L38L4l_panic _xccdec"<_swap L5fL6~L7~_mfree L1_wakeup cret _xfree"~xfreeipxp - 0- e%L:  7 FE7x

e U E_D _ _2Jd8HXhx(8HXhx_sysent#_nullsys _rexit _fork _read _write _open _close _wait _creat _link _unlink _exec _chdir _gtime _mknod _chmod _chown _sbreak _stat _seek _getpid _smount _sumount _setuid _getuid _stime _ptracL9_iput _xalloc"~xallociprpxptsL138L14L20001L16L15>L21L22JL23L24L25_expand _estabur _readi L264_savu _swtch ~xccdec<rpxpL27htrap.ol GD VPw @E%U@e 7@  x&J NeT N^ l   ~  vcore)i)i)i)9i)9i)hxe _nosys _fstat _stty _gtty _nice _sslep _sync _kill _getswit _dup _pipe _times _profil _setgid _getgid _ssig clock.ol wP ,w M 2 e  5#   &  e  3ee3@E%  f  h F%<@_5f<, * " -- 5 ʋ wjNe %  >7mENe Ete%)N e E?%?Ete "e  1  N  1e "b d_~U5 _~ _r __rCL  _~ _rw . 7ww d'ww w:::::::n::ka6 = %o aps = %o trap type %o trapIYi)i()i)iE%  r2d e%Lۂ7 @E%@e 7 v  n wbw ^ B J e e   !tt_wyXiiiyyyyyh )8Yhhhh(HIxYIYI  8 H X X 9_canonb _coremap _swapmap _rootdir _cputype _execnt _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _curpr(Ii(yyy_canonb _coremap _swapmap _rootdir _cputype _execnt _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _curpri _maxmem _lks _rootdev _swapdev _swplo _nswap Y_canonb _coremap _swapmap _rootdir _cputype _execnt _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _curpri _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _regloc#_u "_proc L_ka6 _sysent _trap"L10002&L29L5:L10nL11L1i _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _regloc _u "_proc L_inode _ipc _signal"~signaltppsigcsv L20001L4_psignal"*cret ~psignal*rppsigL6^L7HL8R_setrun _issig"b~issigbnpL20004L12_stop"L10L20003~stopcppp_updlock _rablock _regloc _u "_proc L_clock"~clockpcppsppsdevnps r1r0 p1p2csv _display L2xL3$L20001L4(_spl5 L6TL20003BL7ZL8pL20005`L10L12_incupc L13L1L15_spl1 L16_wakeup L17L20007L20RL22"L23@L24D_setpri L26n_issig L28_psig cret _timeout"~timeoutargstfuntimp1p2_spl7 L30L20009L31L32L20011L34L20013fio.ool  "w C % w  w D̵Ee e  E& x ww DE7 yfWp % & & 5X@&E` %e  HZH` %V N % & _Pw5 >f _\_Vw E ww   %jwiY85 `\7 \7 VD 7:7_65 %Om7 e?tE5me?tE5Nff e _67   De$ % 4˵ _6% % q_6na % & f& e7 He7B8 www e@@ A @e5pNf @ ef & ҋ@ fe x w61`ww  e?tE  t  e`` e ` `zr&  N wx `: &     out H _u "_file _bdevsw _nblkdev _cdevsw _nchrdev _inode _getf"~getffprffcsv L2 L1cret _closef"*~closef*fpiprfpL5V_wakeup L6p_closei"xL10001L10002L11L12L8~closeiL13L12L20007L15L20009_ldiv L17L18@L19_brelse L21:L23~L24V_bmap _bread _bcopy L25L20012L30L31 cret _schar"0~schar0_uchar"D~ucharDc_fubyte L35bpipe.ool w  # ( ʕ2˕3̕w3@ 0  w D% 4 3 of swapXYY(xhxiprwmajdevripL10003L20000_iput _openi"L10005L10006L16L18*L136~openiiprwmajdevripL10007L170L20001&L20003_access":~access:modeipmaipL20p_getfs L21jL20009L20006bL23L10008L24L19L25_owner"~ownerip5Ee   Ue  , 7 f7b X ww D8   7 $     w% U e 7   7  5Ee w LD& ̵w(w $D̵ w))8YY)xxx(8YXXYii(((X9hx_uchar _namei L29L20014L20011L28_suser"~suserL33L32_ufalloc"~ufallociL20016 L37 L34_falloc"4~falloc4fpiL40^L20021@L39ZL20018DL20020bL45_printf malloc.ol 0hw CK-smK ewe  w BD e D-m tm@m-*4c &e4(Xx)(XHX()X)(_canonb _coremap _swapmap _rootdir _cputype _execnt _lbolt _time _tout _callout x_mount _mpid _runin _rXX9(8iYi4@m- tLm  Lew$ii_malloc"~mallocbpmpsizeacsv L2<L20001 L48L62L9"L14cret _mfree"D~mfreeDbpmpsizeunout _runrun _curpri _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _regloc _u "_inode _file _pipe"~pipeiprfwfrcsv _ialloc L1X_falloc L20001jL20003\cret _iput _readp"r~readprfpiprpL5L20005L7_wakeup _prele"L4_sleep _plock"_readi X iX h_canonb _coremap _swapmap _rootdir _cputype _execnt _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _curpri _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _regloataaL11ZL20003RL12`L14L10L16L19L24nami.ool hw : %/&  %/    _ _E%@@& H   %VҐ %/%V %/o7 v7 p^5 & 7R5 J$ N % & 7B @e7 5 N _writep"~writepfpiprpcL10L11<L98L20007_psignal L13j_min _writei ~plockiprpL16L20009~preleiprpL18sys1.ool  ,w    _X %  5@ _65`_6@5 5 $ %_6eBN %_6 %_6  5c _u "_proc L_buf h_bfreeli _inode _exec"~execapnancbpdsipcptscsepcsv _uchar _namei L2*L1XL20001_sleep _getblk _access L46L5L20015tL7_fubyte L9_fuword L10_readi L11L16_estabur _xfree _expand _xalloc L17L20003L12L20005_clearse _suword L19L20007~L23_subyte L24L25L20009L30L20011L20013,_iput _brelse L36T_wakeup cret _rexit"\~rexit\_exit"t~exittapqL20017L20019L43_closef _malloc L45L46_panic _bcopy _bwrite _mfree L47L20023L50ZL200212L54ripL16rL17L_access L20L21_itrunc _prele _falloc _openi L15_iput _close"~closefpL22_closef _seek"L10001.L29L32nL33~seekfpntL23L24L25FL27`L20007x_link"~linkipxpL36DL37L38>L10002_suser L39L400_wdir7f ww  E8EE4P ww     ww p%%  ? J!0wfw b 5 n    ,%d7\ & e%L܂ 3ww   e%ww E7 E7wunlink -- iget  I h I L_setrun _swtch _wait"l~waitlbpfpL58rL20025vL61^L63"_bread _dpadd L57L65RL66~_fork"~forkp1p2L20027L71L72_newproc L73L67_sbreak"~sbreakadinL75_nseg L76L74L77L78tL20029f_copyseg L80L20031L82 _mknod"H~mknodHipL42nL44L41_sslep"~sslepd_spl7 L20008_dpcmp L20010_spl0 L10003L48 _sleep sys3.ool #$ w  & L ww    & L  ww f @&e @& @&e tle@e5 Nef e % f e % ww     I    I 8Hh xI  8H X  h I  sys2.ool . <w  ww  ww C >̰ 87̵ %  77%  6&e "?fwLw H     & $%w"w  ?E  & $%ww CB%5 5 E%@'   rE tE @ 0  w0w ,>   ww 5"   5     "  w| e%  0& f@t %{f e 2J 2& %22E2  w 5; " e%* 5-e % & f@t % 3  w:w 6  E%`I-5 w      x  _u "_inode _canonb _coremap _swapmap _rootdir _cputype _execnt _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _curpri _maxmem _lks _rootdev _swapdev 2 0  w w  D̵#=%t 5t5%E ~5    x.5mfe ttwl E5` w N  Ag6E%@  +d - #N0-    ww    R H wpw l d`\jfe F@ff e  (wYhYYxxYhIYX_swplo _nswap _updlock _rablock _regloc _proc L_getswit"~getswitcsv cret _gtime"~gtime_stime"&~stime&_suser L3J_wakeup _setuid"N~setuidNuidL10000dL5t_getuid"x~getuidx_setgid"~setgidgidL10001L8_getgid"~getgid_getpid"~getpid_sync"~sync_update _nice"~nicenL14L15_unlink"~unlin$" e Nf e wwZ nn  x(8 x x hxYY_canonb _coremap _swapmap _rootdir _cputype _execnt _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _curpri _maxmem _lks _rootdev _swapdev _skippp_uchar _namei L16_prele _iget L17JL18Z_panic L10002`L19_writei _iput _chdir"~chdiripL20L21L22_access _chmod"~chmodip_owner L23L24_chown""~chown"ipL25L_ssig"P~ssigPaL10003fL27nL26_kill"~killafpq(H x x8 x xHH8H  xH ywplo _nswap _updlock _rablock _regloc _buf h_bfreeli _u "_inode _file _bdevsw _nblkdev _cdevsw _nchrdev _fstat"~fstatfpcsv _getf L1_stat1"Lcret _stat""~stat"ip_uchar _namei L2H_iput ~stat1Lipubbpcpi_iupdat _ldiv _bread _lrem L20001_suword L20003_brelse /* * tunable variables */ #define NBUF 15 /* size of buffer cache */ #define NINODE 100 /* number of in core inodes */ #define NFILE 100 /* number of in core file structures */ #define NMOUNT 5 /* number of mountable file systems */ #define NEXEC 3 /* number of simultaneous exec's */ #define MAXMEM (64*32) /* max core per process - first # is Kw */ #define SSIZE 20 /* initial stack size (*64 bytes) */ #define SINCR 20 /* increment of stack (*64 bytes) */ #define NOFILE 15 /* max open files per py8yy yyH_canonb _coremap _swapmap _rootdir _cputype _execnt _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _curpri _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _regloc _u "_file _inode _read"~readcs_dup"~dupfpiL10$_ufalloc _smount"(~smount(ipmpdsmp_getmdev"L11L12tL20005hL16L15L20zL10000L10001L19_getblk _bcopy _prele _sumount"4~sumount4ipmpd_update L21L20007PL24\L25nL20009rL28~getmdevipdL30 L31L32rocess */ #define CANBSIZ 256 /* max size of typewriter line */ #define CMAPSIZ 100 /* size of core allocation area */ #define SMAPSIZ 100 /* size of swap allocation area */ #define NCALL 20 /* max simultaneous time callouts */ #define NPROC 50 /* max number of processes */ #define NTEXT 40 /* max number of pure texts */ #define NCLIST 100 /* max total clist size */ #define HZ 60 /* Ticks/second of the clock */ /* * priorities * probably should not be * altered too much */ #define PSWP -100 #dv _rdwr" cret _write"~write~rdwr fpmodem_getf L3L4@L5lL6d_readp L8_writep L9_readi L10_writei _dpadd _open"~openip_uchar _namei L11_open1"$_creat"~creatipL13L12 _maknode L20003~open1$ipmodefpimtrfsys4.ool . Zw x ww ww 7 ww ğ7 707ww wpw lğ~7 ^ 77wNw JZVuw6w 2j? >w$w ww &%   00ww  3 $ Z E%@ X7    wlw h  E%@{ @& n efine PINOD -90 #define PRIBIO -50 #define PPIPE 1 #define PWAIT 40 #define PSLEP 90 #define PUSER 100 /* * signals * dont change */ #define NSIG 20 #define SIGHUP 1 /* hangup */ #define SIGINT 2 /* interrupt (rubout) */ #define SIGQIT 3 /* quit (FS) */ #define SIGINS 4 /* illegal instruction */ #define SIGTRC 5 /* trace or breakpoint */ #define SIGIOT 6 /* iot */ #define SIGEMT 7 /* emt */ #define SIGFPT 8 /* floating exception */ #define SIGKIL 9 /* kill */ #define SIGBUS 10 /* bus error */ #define SIGSEG 11 /* segmentation violation */ #define SIGSYS 12 /* sys */ #define SIGPIPE 13 /* end of pipe */ /* * fundamental constants * cannot be changed */ #define USIZE 16 /* size of user block (*64) */ #define NULL 0 #define NODEV (-1) #define ROOTINO 1 /* i number of all roots */ #define DIRSIZ 14 /* max characters per directory */ /* * structure to access an * integer in bytes */ struct { char lobyte; char hibyte; }; /* * structure to access an integer */ struct { int integ; ng column of device */ char t_erase; /* erase character */ char t_kill; /* kill character */ char t_state; /* internal state, not visible externally */ char t_char; /* character temporary */ int t_speeds; /* output+input line speed */ int t_dev; /* device name */ }; char partab[]; /* ASCII table: parity, character class */ #define TTIPRI 10 #define TTOPRI 20 #define CERASE '#' /* default special characters */ #define CEOT 004 #define CKILL '@' #define CQUIT 034 /* FS, cntl shift L */ #defineine EEXIST 17 #define EXDEV 18 #define ENODEV 19 #define ENOTDIR 20 #define EISDIR 21 #define EINVAL 22 #define ENFILE 23 #define EMFILE 24 #define ENOTTY 25 #define ETXTBSY 26 #define EFBIG 27 #define ENOSPC 28 #define ESPIPE 29 #define EROFS 30 #define EMLINK 31 #define EPIPE 32 }; /* * Certain processor registers */ #define PS 0177776 #define KL 0177560 #define SW 0177570 CINTR 0177 /* DEL */ /* limits */ #define TTHIWAT 50 #define TTLOWAT 30 #define TTYHOG 256 /* modes */ #define HUPCL 01 #define XTABS 02 #define LCASE 04 #define ECHO 010 #define CRMOD 020 #define RAW 040 #define ODDP 0100 #define EVENP 0200 #define NLDELAY 001400 #define TBDELAY 006000 #define CRDELAY 030000 #define VTDELAY 040000 /* Hardware bits */ #define DONE 0200 #define IENABLE 0100 /* Internal state bits */ #define TIMEOUT 01 /* Delay timeout in progress */ #define WOPEN 02 /* Waiting for op/* * The I node is the focus of all * file activity in unix. There is a unique * inode allocated for each active file, * each current directory, each mounted-on * file, text file, and the root. An inode is 'named' * by its dev/inumber pair. (iget/iget.c) * Data, from mode on, is read in * from permanent inode on volume. */ struct inode { char i_flag; char i_count; /* reference count */ int i_dev; /* device where inode resides */ int i_number; /* i number, 1-to-1 with device address */ int i_m/* * Random set of variables * used by more than one * routine. */ char canonb[CANBSIZ]; /* buffer for erase and kill (#@) */ int coremap[CMAPSIZ]; /* space for core allocation */ int swapmap[SMAPSIZ]; /* space for swap allocation */ int *rootdir; /* pointer to inode of root directory */ int cputype; /* type of cpu =40, 45, or 70 */ int execnt; /* number of processes in exec */ int lbolt; /* time of day in 60th not in time */ int time[2]; /* time in sec from 1970 */ int tout[2]; /* time of day oen to complete */ #define ISOPEN 04 /* Device is open */ #define SSTART 010 /* Has special start routine at addr */ #define CARR_ON 020 /* Software copy of carrier-present */ #define BUSY 040 /* Output in progress */ #define ASLEEP 0100 /* Wakeup when output done */ ode; char i_nlink; /* directory entries */ char i_uid; /* owner */ char i_gid; /* group of owner */ char i_size0; /* most significant of size */ char *i_size1; /* least sig */ int i_addr[8]; /* device addresses constituting file */ int i_lastr; /* last logical block read (for read-ahead) */ } inode[NINODE]; /* flags */ #define ILOCK 01 /* inode is locked */ #define IUPD 02 /* inode has been modified */ #define IACC 04 /* inode access time to be updated */ #define IMOUNT 010 /* inode is mountedf next sleep */ /* * The callout structure is for * a routine arranging * to be called by the clock interrupt * (clock.c) with a specified argument, * in a specified amount of time. * Used, for example, to time tab * delays on teletypes. */ struct callo { int c_time; /* incremental time */ int c_arg; /* argument to routine */ int (*c_func)(); /* routine */ } callout[NCALL]; /* * Mount structure. * One allocated on every mount. * Used to find the super block. */ struct mount { int m_dev; //* * The user structure. * One allocated per process. * Contains all per process data * that doesn't need to be referenced * while the process is swapped. * The user block is USIZE*64 bytes * long; resides at virtual kernel * loc 140000; contains the system * stack per user; is cross referenced * with the proc structure for the * same process. */ struct user { int u_rsav[2]; /* save r5,r6 when exchanging stacks */ int u_fsav[25]; /* save fp registers */ /* rsav and fsav must be first in on */ #define IWANT 020 /* some process waiting on lock */ #define ITEXT 040 /* inode is pure text prototype */ /* modes */ #define IALLOC 0100000 /* file is used */ #define IFMT 060000 /* type of file */ #define IFDIR 040000 /* directory */ #define IFCHR 020000 /* character special */ #define IFBLK 060000 /* block special, 0 is regular */ #define ILARG 010000 /* large addressing algorithm */ #define ISUID 04000 /* set user id on execution */ #define ISGID 02000 /* set group id on execution */ #* device mounted */ int *m_bufp; /* pointer to superblock */ int *m_inodp; /* pointer to mounted on inode */ } mount[NMOUNT]; int mpid; /* generic for unique process id's */ char runin; /* scheduling flag */ char runout; /* scheduling flag */ char runrun; /* scheduling flag */ char curpri; /* more scheduling */ int maxmem; /* actual max memory per process */ int *lks; /* pointer to clock device */ int rootdev; /* dev of root see conf.c */ int swapdev; /* dev of swap see conf.c */ int swplo structure */ char u_segflg; /* flag for IO; user or kernel space */ char u_error; /* return error code */ char u_uid; /* effective user id */ char u_gid; /* effective group id */ char u_ruid; /* real user id */ char u_rgid; /* real group id */ int u_procp; /* pointer to proc structure */ char *u_base; /* base address for IO */ char *u_count; /* bytes remaining for IO */ char *u_offset[2]; /* offset in file for IO */ int *u_cdir; /* pointer to inode of current directory */ char u_define ISVTX 01000 /* save swapped text even after use */ #define IREAD 0400 /* read, write, execute permissions */ #define IWRITE 0200 #define IEXEC 0100 ; /* block number of swap space */ int nswap; /* size of swap space */ int updlock; /* lock for sync */ int rablock; /* block to be read ahead */ char regloc[]; /* locs. of saved user registers (trap.c) */ dbuf[DIRSIZ]; /* current pathname component */ char *u_dirp; /* current pointer to inode */ struct { /* current directory entry */ int u_ino; char u_name[DIRSIZ]; } u_dent; int *u_pdir; /* inode of parent directory of dirp */ int u_uisa[16]; /* prototype of segmentation addresses */ int u_uisd[16]; /* prototype of segmentation descriptors */ int u_ofile[NOFILE]; /* pointers to file structures of open files */ int u_arg[5]; /* arguments to current system call */ int u_tsize; /* text siz/* * One file structure is allocated * for each open/creat/pipe call. * Main use is to hold the read/write * pointer associated with each open * file. */ struct file { char f_flag; char f_count; /* reference count */ int f_inode; /* pointer to inode structure */ char *f_offset[2]; /* read/write character pointer */ } file[NFILE]; /* flags */ #define FREAD 01 #define FWRITE 02 #define FPIPE 04 /* * A clist structure is the head * of a linked list queue of characters. * The characters are stored in 4-word * blocks containing a link and 6 characters. * The routines getc and putc (m45.s or m40.s) * manipulate these structures. */ struct clist { int c_cc; /* character count */ int c_cf; /* pointer to first block */ int c_cl; /* pointer to last block */ }; /* * A tty structure is needed for * each UNIX character device that * is used for normal terminal IO. * The routines in tty.c hae (*64) */ int u_dsize; /* data size (*64) */ int u_ssize; /* stack size (*64) */ int u_sep; /* flag for I and D separation */ int u_qsav[2]; /* label variable for quits and interrupts */ int u_ssav[2]; /* label variable for swapping */ int u_signal[NSIG]; /* disposition of signals */ int u_utime; /* this process user time */ int u_stime; /* this process system time */ int u_cutime[2]; /* sum of childs' utimes */ int u_cstime[2]; /* sum of childs' stimes */ int *u_ar0; /* address of /* * One structure allocated per active * process. It contains all data needed * about the process while the * process may be swapped out. * Other per process data (user.h) * is swapped with the process. */ struct proc { char p_stat; char p_flag; char p_pri; /* priority, negative is high */ char p_sig; /* signal number sent to this process */ char p_uid; /* user id, used to direct tty signals */ char p_time; /* resident time for scheduling */ char p_cpu; /* cpu usage for scheduling */ chndle the * common code associated with * these structures. * The definition and device dependent * code is in each driver. (kl.c dc.c dh.c) */ struct tty { struct clist t_rawq; /* input chars right off device */ struct clist t_canq; /* input chars after erase and kill */ struct clist t_outq; /* output list to device */ int t_flags; /* mode, settable by stty call */ int *t_addr; /* device address (register or startup fcn) */ char t_delct; /* number of delimiters in raw q */ char t_col; /* printiusers saved R0 */ int u_prof[4]; /* profile arguments */ char u_intflg; /* catch intr from sys */ /* kernel stack per user * extends from u + USIZE*64 * backward not to reach here */ } u; /* u_error codes */ #define EFAULT 106 #define EPERM 1 #define ENOENT 2 #define ESRCH 3 #define EINTR 4 #define EIO 5 #define ENXIO 6 #define E2BIG 7 #define ENOEXEC 8 #define EBADF 9 #define ECHILD 10 #define EAGAIN 11 #define ENOMEM 12 #define EACCES 13 #define ENOTBLK 15 #define EBUSY 16 #defar p_nice; /* nice for scheduling */ int p_ttyp; /* controlling tty */ int p_pid; /* unique process id */ int p_ppid; /* process id of parent */ int p_addr; /* address of swappable image */ int p_size; /* size of swappable image (*64 bytes) */ int p_wchan; /* event process is awaiting */ int *p_textp; /* pointer to text structure */ } proc[NPROC]; /* stat codes */ #define SSLEEP 1 /* sleeping on high priority */ #define SWAIT 2 /* sleeping on low priority */ #define SRUN 3 /* running */ #define SIDL 4 /* intermediate state in process creation */ #define SZOMB 5 /* intermediate state in process termination */ #define SSTOP 6 /* process being traced */ /* flag codes */ #define SLOAD 01 /* in core */ #define SSYS 02 /* scheduling process */ #define SLOCK 04 /* process cannot be swapped */ #define SSWAP 010 /* process is being swapped out */ #define STRC 020 /* process is being traced */ #define SWTED 040 /* another tracing flag */ */ u.u_prof[3] = (u.u_arg[3]>>1) & 077777; /* pc scale */ } # /* */ #include "../param.h" #include "../conf.h" #include "../inode.h" #include "../user.h" #include "../buf.h" #include "../systm.h" /* * Bmap defines the structure of file system storage * by returning the physical block number on a device given the * inode and the logical block number in a file. * When convenient, it also leaves the physical * block number of the next block of the file in rablock * for use in read-ahead. */ bmap(ip, bn) struct inode *ip; int bn; { register *bp, *bap, nb; in# /* */ /* * Everything in this file is a routine implementing a system call. */ #include "../param.h" #include "../user.h" #include "../reg.h" #include "../inode.h" #include "../systm.h" #include "../proc.h" getswit() { u.u_ar0[R0] = SW->integ; } gtime() { u.u_ar0[R0] = time[0]; u.u_ar0[R1] = time[1]; } stime() { if(suser()) { time[0] = u.u_ar0[R0]; time[1] = u.u_ar0[R1]; wakeup(tout); } } setuid() { register uid; uid = u.u_ar0[R0].lobyte; if(u.u_ruid == uid.lobyte || suser()) { # /* */ #include "../param.h" #include "../systm.h" #include "../user.h" #include "../proc.h" #include "../text.h" #include "../inode.h" /* * Swap out process p. * The ff flag causes its core to be freed-- * it may be off when called to create an image for a * child process in newproc. * Os is the old size of the data area of the process, * and is supplied during core expansion swaps. * * panic: out of swap space * panic: swap error -- IO error */ xswap(p, ff, os) int *p; { register *rp, a; t *nbp, d, i; d = ip->i_dev; if(bn & ~077777) { u.u_error = EFBIG; return(0); } if((ip->i_mode&ILARG) == 0) { /* * small file algorithm */ if((bn & ~7) != 0) { /* * convert small to large */ if ((bp = alloc(d)) == NULL) return(NULL); bap = bp->b_addr; for(i=0; i<8; i++) { *bap++ = ip->i_addr[i]; ip->i_addr[i] = 0; } ip->i_addr[0] = bp->b_blkno; bdwrite(bp); ip->i_mode =| ILARG; goto large; } nb = ip->i_addr[bn]; if(nb == 0 && (bp = u.u_uid = uid; u.u_procp->p_uid = uid; u.u_ruid = uid; } } getuid() { u.u_ar0[R0].lobyte = u.u_ruid; u.u_ar0[R0].hibyte = u.u_uid; } setgid() { register gid; gid = u.u_ar0[R0].lobyte; if(u.u_rgid == gid.lobyte || suser()) { u.u_gid = gid; u.u_rgid = gid; } } getgid() { u.u_ar0[R0].lobyte = u.u_rgid; u.u_ar0[R0].hibyte = u.u_gid; } getpid() { u.u_ar0[R0] = u.u_procp->p_pid; } sync() { update(); } nice() { register n; n = u.u_ar0[R0]; if(n > 20) n = 20; if(n < 0 && !suserrp = p; if(os == 0) os = rp->p_size; a = malloc(swapmap, (rp->p_size+7)/8); if(a == NULL) panic("out of swap space"); xccdec(rp->p_textp); rp->p_flag =| SLOCK; if(swap(a, rp->p_addr, os, 0)) panic("swap error"); if(ff) mfree(coremap, os, rp->p_addr); rp->p_addr = a; rp->p_flag =& ~(SLOAD|SLOCK); rp->p_time = 0; if(runout) { runout = 0; wakeup(&runout); } } /* * relinquish use of the shared text segment * of a process. */ xfree() { register *xp, *ip; if((xp=u.u_procp->p_textp) alloc(d)) != NULL) { bdwrite(bp); nb = bp->b_blkno; ip->i_addr[bn] = nb; ip->i_flag =| IUPD; } rablock = 0; if (bn<7) rablock = ip->i_addr[bn+1]; return(nb); } /* * large file algorithm */ large: i = bn>>8; if(bn & 0174000) i = 7; if((nb=ip->i_addr[i]) == 0) { ip->i_flag =| IUPD; if ((bp = alloc(d)) == NULL) return(NULL); ip->i_addr[i] = bp->b_blkno; } else bp = bread(d, nb); bap = bp->b_addr; /* * "huge" fetch of double indirect block */ if(i ==()) n = 0; u.u_procp->p_nice = n; } /* * Unlink system call. * panic: unlink -- "cannot happen" */ unlink() { register *ip, *pp; extern uchar; pp = namei(&uchar, 2); if(pp == NULL) return; prele(pp); ip = iget(pp->i_dev, u.u_dent.u_ino); if(ip == NULL) panic("unlink -- iget"); if((ip->i_mode&IFMT)==IFDIR && !suser()) goto out; u.u_offset[1] =- DIRSIZ+2; u.u_base = &u.u_dent; u.u_count = DIRSIZ+2; u.u_dent.u_ino = 0; writei(pp); ip->i_nlink--; ip->i_flag =| IUPD; out: iput(pp);!= NULL) { u.u_procp->p_textp = NULL; xccdec(xp); if(--xp->x_count == 0) { ip = xp->x_iptr; if((ip->i_mode&ISVTX) == 0) { xp->x_iptr = NULL; mfree(swapmap, (xp->x_size+7)/8, xp->x_daddr); ip->i_flag =& ~ITEXT; iput(ip); } } } } /* * Attach to a shared text segment. * If there is no shared text, just return. * If there is, hook up to it: * if it is not currently being used, it has to be read * in from the inode (ip) and established in the swap space. * If it is being 7) { i = ((bn>>8) & 0377) - 7; if((nb=bap[i]) == 0) { if((nbp = alloc(d)) == NULL) { brelse(bp); return(NULL); } bap[i] = nbp->b_blkno; bdwrite(bp); } else { brelse(bp); nbp = bread(d, nb); } bp = nbp; bap = bp->b_addr; } /* * normal indirect fetch */ i = bn & 0377; if((nb=bap[i]) == 0 && (nbp = alloc(d)) != NULL) { nb = nbp->b_blkno; bap[i] = nb; bdwrite(nbp); bdwrite(bp); } else brelse(bp); rablock = 0; if(i < 255) rablock = bap[i+1]; return iput(ip); } chdir() { register *ip; extern uchar; ip = namei(&uchar, 0); if(ip == NULL) return; if((ip->i_mode&IFMT) != IFDIR) { u.u_error = ENOTDIR; bad: iput(ip); return; } if(access(ip, IEXEC)) goto bad; iput(u.u_cdir); u.u_cdir = ip; prele(ip); } chmod() { register *ip; if ((ip = owner()) == NULL) return; ip->i_mode =& ~07777; if (u.u_uid) u.u_arg[1] =& ~ISVTX; ip->i_mode =| u.u_arg[1]&07777; ip->i_flag =| IUPD; iput(ip); } chown() { register *ip; if (!suser() |used, but is not currently in core, * a swap has to be done to get it back. * The full coroutine glory has to be invoked-- * see slp.c-- because if the calling process * is misplaced in core the text image might not fit. * Quite possibly the code after "out:" could check to * see if the text does fit and simply swap it in. * * panic: out of swap space */ xalloc(ip) int *ip; { register struct text *xp; register *rp, ts; if(u.u_arg[1] == 0) return; rp = NULL; for(xp = &text[0]; xp < &text[NTE(nb); } /* * Pass back c to the user at his location u_base; * update u_base, u_count, and u_offset. Return -1 * on the last character of the user's read. * u_base is in the user address space unless u_segflg is set. */ passc(c) char c; { if(u.u_segflg) *u.u_base = c; else if(subyte(u.u_base, c) < 0) { u.u_error = EFAULT; return(-1); } u.u_count--; if(++u.u_offset[1] == 0) u.u_offset[0]++; u.u_base++; return(u.u_count == 0? -1: 0); } /* * Pick up and return the next character | (ip = owner()) == NULL) return; ip->i_uid = u.u_arg[1].lobyte; ip->i_gid = u.u_arg[1].hibyte; ip->i_flag =| IUPD; iput(ip); } /* * Change modified date of file: * time to r0-r1; sys smdate; file * This call has been withdrawn because it messes up * incremental dumps (pseudo-old files aren't dumped). * It works though and you can uncomment it if you like. smdate() { register struct inode *ip; register int *tp; int tbuf[2]; if ((ip = owner()) == NULL) return; ip->i_flag =| IUPD; tp = &XT]; xp++) if(xp->x_iptr == NULL) { if(rp == NULL) rp = xp; } else if(xp->x_iptr == ip) { xp->x_count++; u.u_procp->p_textp = xp; goto out; } if((xp=rp) == NULL) panic("out of text"); xp->x_count = 1; xp->x_ccount = 0; xp->x_iptr = ip; ts = ((u.u_arg[1]+63)>>6) & 01777; xp->x_size = ts; if((xp->x_daddr = malloc(swapmap, (ts+7)/8)) == NULL) panic("out of swap space"); expand(USIZE+ts); estabur(0, ts, 0, 0); u.u_count = u.u_arg[1]; u.u_offset[1] = 020; u.u_base = 0from the user's * write call at location u_base; * update u_base, u_count, and u_offset. Return -1 * when u_count is exhausted. u_base is in the user's * address space unless u_segflg is set. */ cpass() { register c; if(u.u_count == 0) return(-1); if(u.u_segflg) c = *u.u_base; else if((c=fubyte(u.u_base)) < 0) { u.u_error = EFAULT; return(-1); } u.u_count--; if(++u.u_offset[1] == 0) u.u_offset[0]++; u.u_base++; return(c&0377); } /* * Routine which sets a user error; placed itbuf[2]; *--tp = u.u_ar0[R1]; *--tp = u.u_ar0[R0]; iupdat(ip, tp); ip->i_flag =& ~IUPD; iput(ip); } */ ssig() { register a; a = u.u_arg[0]; if(a<=0 || a>=NSIG || a ==SIGKIL) { u.u_error = EINVAL; return; } u.u_ar0[R0] = u.u_signal[a]; u.u_signal[a] = u.u_arg[1]; if(u.u_procp->p_sig == a) u.u_procp->p_sig = 0; } kill() { register struct proc *p, *q; register a; int f; f = 0; a = u.u_ar0[R0]; q = u.u_procp; for(p = &proc[0]; p < &proc[NPROC]; p++) { if(p == q) continue; if(; readi(ip); rp = u.u_procp; rp->p_flag =| SLOCK; swap(xp->x_daddr, rp->p_addr+USIZE, ts, 0); rp->p_flag =& ~SLOCK; rp->p_textp = xp; rp = ip; rp->i_flag =| ITEXT; rp->i_count++; expand(USIZE); out: if(xp->x_ccount == 0) { savu(u.u_rsav); savu(u.u_ssav); xswap(u.u_procp, 1, 0); u.u_procp->p_flag =| SSWAP; swtch(); /* no return */ } xp->x_ccount++; } /* * Decrement the in-core usage count of a shared text segment. * When it drops to zero, free the core space. */ xccdec(xp) int *n * illegal entries in the bdevsw and cdevsw tables. */ nodev() { u.u_error = ENODEV; } /* * Null routine; placed in insignificant entries * in the bdevsw and cdevsw tables. */ nulldev() { } /* * copy count words from from to to. */ bcopy(from, to, count) int *from, *to; { register *a, *b, c; a = from; b = to; c = count; do *b++ = *a++; while(--c); } a != 0 && p->p_pid != a) continue; if(a == 0 && (p->p_ttyp != q->p_ttyp || p <= &proc[1])) continue; if(u.u_uid != 0 && u.u_uid != p->p_uid) continue; f++; psignal(p, u.u_arg[0]); } if(f == 0) u.u_error = ESRCH; } times() { register *p; for(p = &u.u_utime; p < &u.u_utime+6;) { suword(u.u_arg[0], *p++); u.u_arg[0] =+ 2; } } profil() { u.u_prof[0] = u.u_arg[0] & ~1; /* base of sample buf */ u.u_prof[1] = u.u_arg[1]; /* size of same */ u.u_prof[2] = u.u_arg[2]; /* pc offset xp; { register *rp; if((rp=xp)!=NULL && rp->x_ccount!=0) if(--rp->x_ccount == 0) mfree(coremap, rp->x_size, rp->x_caddr); } # /* */ #include "../param.h" #include "../seg.h" #include "../buf.h" #include "../conf.h" /* * Address and structure of the * KL-11 console device registers. */ struct { int rsr; int rbr; int xsr; int xbr; }; /* * In case console is off, * panicstr contains argument to last * call to panic. */ char *panicstr; /* * Scaled down version of C Library printf. * Only %s %l %d (==%l) %o are recognized. * Used to print diagnostic information * directly on console tty. * Since it is not interrupt driven, * all system activities are pretty much * suspended. * Printf should not be used for chit-chat. */ printf(fmt,x1,x2,x3,x4,x5,x6,x7,x8,x9,xa,xb,xc) char fmt[]; { register char *s; register *adx, c; adx = &x1; loop: while((c = *fmt++) != '%') { if(c == '\0') return; putchar(c); } c = *fmt++; if(c == 'd' || c == 'l' || c == 'o') printn(*adx, c=='o'? 8: 10); if(c == 's') { s = *adx; while(c = *s++) putchar(c); } adx++; goto loop; } /* * Print an unsigned integer in * address_of_saved_ps - 2; */ default: printf("ka6 = %o\n", *ka6); printf("aps = %o\n", &ps); printf("trap type %o\n", dev); panic("trap"); case 0+USER: /* bus error */ i = SIGBUS; break; /* * If illegal instructions are not * being caught and the offending instruction * is a SETD, the trap is ignored. * This is because C produces a SETD at * the beginning of every program which * will trap on CPUs without 11/45 FPU. */ case 1+USER: /* illegal instruction */ if(fuiworbread(rootdev, 1); cp = getblk(NODEV); if(u.u_error) panic("iinit"); bcopy(bp->b_addr, cp->b_addr, 256); brelse(bp); mount[0].m_bufp = cp; mount[0].m_dev = rootdev; cp = cp->b_addr; cp->s_flock = 0; cp->s_ilock = 0; cp->s_ronly = 0; time[0] = cp->s_time[0]; time[1] = cp->s_time[1]; } /* * alloc will obtain the next available * free disk block from the free list of * the specified device. * The super block has up to 100 remembered * free blocks; the last of these is read to * obtain 100 base b. */ printn(n, b) { register a; if(a = ldiv(n, b)) printn(a, b); putchar(lrem(n, b) + '0'); } /* * Print a character on console. * Attempts to save and restore device * status. * If the switches are 0, all * printing is inhibited. */ putchar(c) { register rc, s; rc = c; if(SW->integ == 0) return; while((KL->xsr&0200) == 0) ; if(rc == 0) return; s = KL->xsr; KL->xsr = 0; KL->xbr = rc; if(rc == '\n') { putchar('\r'); putchar(0177); putchar(0177); } putchar(0); KL->d(pc-2) == SETD && u.u_signal[SIGINS] == 0) goto out; i = SIGINS; break; case 2+USER: /* bpt or trace */ i = SIGTRC; break; case 3+USER: /* iot */ i = SIGIOT; break; case 5+USER: /* emt */ i = SIGEMT; break; case 6+USER: /* sys call */ u.u_error = 0; ps =& ~EBIT; callp = &sysent[fuiword(pc-2)&077]; if (callp == sysent) { /* indirect */ a = fuiword(pc); pc =+ 2; i = fuword(a); if ((i & ~077) != SYS) i = 077; /* illegal */ callp = &sysent[i&077]; for(i=more . . . * * no space on dev x/y -- when * the free list is exhausted. */ alloc(dev) { int bno; register *bp, *ip, *fp; fp = getfs(dev); while(fp->s_flock) sleep(&fp->s_flock, PINOD); do { if(fp->s_nfree <= 0) goto nospace; bno = fp->s_free[--fp->s_nfree]; if(bno == 0) goto nospace; } while (badblock(fp, bno, dev)); if(fp->s_nfree <= 0) { fp->s_flock++; bp = bread(dev, bno); ip = bp->b_addr; fp->s_nfree = *ip++; bcopy(ip, fp->s_free, 100); brelse(bp); fp->s_flock = xsr = s; } /* * Panic is called on unresolvable * fatal errors. * It syncs, prints "panic: mesg" and * then loops. */ panic(s) char *s; { panicstr = s; update(); printf("panic: %s\n", s); for(;;) idle(); } /* * prdev prints a warning message of the * form "mesg on dev x/y". * x and y are the major and minor parts of * the device argument. */ prdev(str, dev) { printf("%s on dev %l/%l\n", str, dev.d_major, dev.d_minor); } /* * deverr prints a diagnostic from * a device driver. * It pri0; icount; i++) u.u_arg[i] = fuword(a =+ 2); } else { for(i=0; icount; i++) { u.u_arg[i] = fuiword(pc); pc =+ 2; } } u.u_dirp = u.u_arg[0]; trap1(callp->call); if(u.u_intflg) u.u_error = EINTR; if(u.u_error < 100) { if(u.u_error) { ps =| EBIT; r0 = u.u_error; } goto out; } i = SIGSYS; break; /* * Since the floating exception is an * imprecise trap, a user generated * trap may actually come from kernel * mode. In this case, a s0; wakeup(&fp->s_flock); } bp = getblk(dev, bno); clrbuf(bp); fp->s_fmod = 1; return(bp); nospace: fp->s_nfree = 0; prdev("no space", dev); u.u_error = ENOSPC; return(NULL); } /* * place the specified disk block * back on the free list of the * specified device. */ free(dev, bno) { register *fp, *bp, *ip; fp = getfs(dev); fp->s_fmod = 1; while(fp->s_flock) sleep(&fp->s_flock, PINOD); if (badblock(fp, bno, dev)) return; if(fp->s_nfree <= 0) { fp->s_nfree = 1; fp->s_free[0] = 0nts the device, block number, * and an octal word (usually some error * status register) passed as argument. */ deverror(bp, o1, o2) int *bp; { register *rbp; rbp = bp; prdev("err", rbp->b_dev); printf("bn%l er%o %o\n", rbp->b_blkno, o1, o2); } ignal is sent * to the current process to be picked * up later. */ case 8: /* floating exception */ psignal(u.u_procp, SIGFPT); return; case 8+USER: i = SIGFPT; break; /* * If the user SP is below the stack segment, * grow the stack automatically. * This relies on the ability of the hardware * to restart a half executed instruction. * On the 11/40 this is not the case and * the routine backup/l40.s may fail. * The classic example is on the instruction * cmp -(sp),-(sp) *; } if(fp->s_nfree >= 100) { fp->s_flock++; bp = getblk(dev, bno); ip = bp->b_addr; *ip++ = fp->s_nfree; bcopy(fp->s_free, ip, 100); fp->s_nfree = 0; bwrite(bp); fp->s_flock = 0; wakeup(&fp->s_flock); } fp->s_free[fp->s_nfree++] = bno; fp->s_fmod = 1; } /* * Check that a block number is in the * range between the I list and the size * of the device. * This is used mainly to check that a * garbage file system has not been mounted. * * bad block on dev x/y -- not in range */ ba/ case 9+USER: /* segmentation exception */ a = sp; if(backup(u.u_ar0) == 0) if(grow(a)) goto out; i = SIGSEG; break; } psignal(u.u_procp, i); out: if(issig()) psig(); setpri(u.u_procp); } /* * Call the system-entry routine f (out of the * sysent table). This is a subroutine for trap, and * not in-line, because if a signal occurs * during processing, an (abnormal) return is simulated from * the last caller to savu(qsav); if this took place * inside of trap, it wouldn't have a chadblock(afp, abn, dev) { register struct filsys *fp; register char *bn; fp = afp; bn = abn; if (bn < fp->s_isize+2 || bn >= fp->s_fsize) { prdev("bad block", dev); return(1); } return(0); } /* * Allocate an unused I node * on the specified device. * Used with file creation. * The algorithm keeps up to * 100 spare I nodes in the * super block. When this runs out, * a linear search through the * I list is instituted to pick * up 100 more. */ ialloc(dev) { register *fp, *bp, *ip; int i,# #include "../param.h" #include "../systm.h" #include "../user.h" #include "../proc.h" #include "../reg.h" #include "../seg.h" #define EBIT 1 /* user error bit in PS: C-bit */ #define UMODE 0170000 /* user-mode bits in PS word */ #define SETD 0170011 /* SETD instruction */ #define SYS 0104400 /* sys (trap) instruction */ #define USER 020 /* user-mode flag added to dev */ /* * structure of the system entry table (sysent.c) */ struct sysent { int count; /* argument count */ int (*call)(); /* namence to clean up. * * If this occurs, the return takes place without * clearing u_intflg; if it's still set, trap * marks an error which means that a system * call (like read on a typewriter) got interrupted * by a signal. */ trap1(f) int (*f)(); { u.u_intflg = 1; savu(u.u_qsav); (*f)(); u.u_intflg = 0; } /* * nonexistent system call-- set fatal error code. */ nosys() { u.u_error = 100; } /* * Ignored system call */ nullsys() { } j, k, ino; fp = getfs(dev); while(fp->s_ilock) sleep(&fp->s_ilock, PINOD); loop: if(fp->s_ninode > 0) { ino = fp->s_inode[--fp->s_ninode]; ip = iget(dev, ino); if (ip==NULL) return(NULL); if(ip->i_mode == 0) { for(bp = &ip->i_mode; bp < &ip->i_addr[8];) *bp++ = 0; fp->s_fmod = 1; return(ip); } /* * Inode was allocated after all. * Look some more. */ iput(ip); goto loop; } fp->s_ilock++; ino = 0; for(i=0; is_isize; i++) { bp = bread(dev, i+2); ip = of handler */ } sysent[64]; /* * Offsets of the user's registers relative to * the saved r0. See reg.h */ char regloc[9] { R0, R1, R2, R3, R4, R5, R6, R7, RPS }; /* * Called from l40.s or l45.s when a processor trap occurs. * The arguments are the words saved on the system stack * by the hardware and software during the trap processing. * Their order is dictated by the hardware and the details * of C's calling sequence. They are peculiar in that * this call is not 'by value' and changed user re bp->b_addr; for(j=0; j<256; j=+16) { ino++; if(ip[j] != 0) continue; for(k=0; ks_inode[fp->s_ninode++] = ino; if(fp->s_ninode >= 100) break; cont:; } brelse(bp); if(fp->s_ninode >= 100) break; } fp->s_ilock = 0; wakeup(&fp->s_ilock); if (fp->s_ninode > 0) goto loop; prdev("Out of inodes", dev); u.u_error = ENOSPC; return(NULL); } /* * Free the specified I node * on the specigisters * get copied back on return. * dev is the kind of trap that occurred. */ trap(dev, sp, r1, nps, r0, pc, ps) { register i, a; register struct sysent *callp; savfp(); if ((ps&UMODE) == UMODE) dev =| USER; u.u_ar0 = &r0; switch(dev) { /* * Trap not expected. * Usually a kernel mode bus error. * The numbers printed are used to * find the hardware PS/PC as follows. * (all numbers in octal 18 bits) * address_of_saved_ps = * (ka6*0100) + aps - 0140000; * address_of_saved_pc =# /* */ #include "../param.h" #include "../systm.h" #include "../filsys.h" #include "../conf.h" #include "../buf.h" #include "../inode.h" #include "../user.h" /* * iinit is called once (from main) * very early in initialization. * It reads the root's super block * and initializes the current date * from the last modified date. * * panic: iinit -- cannot read the super * block. Usually because of an IO error. */ iinit() { register *cp, *bp; (*bdevsw[rootdev.d_major].d_open)(rootdev, 1); bp = fied device. * The algorithm stores up * to 100 I nodes in the super * block and throws away any more. */ ifree(dev, ino) { register *fp; fp = getfs(dev); if(fp->s_ilock) return; if(fp->s_ninode >= 100) return; fp->s_inode[fp->s_ninode++] = ino; fp->s_fmod = 1; } /* * getfs maps a device number into * a pointer to the incore super * block. * The algorithm is a linear * search through the mount table. * A consistency check of the * in core free-block and i-node * counts. * * bad count on dev x/y -- the count * check failed. At this point, all * the counts are zeroed which will * almost certainly lead to "no space" * diagnostic * panic: no fs -- the device is not mounted. * this "cannot happen" */ getfs(dev) { register struct mount *p; register char *n1, *n2; for(p = &mount[0]; p < &mount[NMOUNT]; p++) if(p->m_bufp != NULL && p->m_dev == dev) { p = p->m_bufp->b_addr; n1 = p->s_nfree; n2 = p->s_ninode; if(n1 > 100 || n2 > 100) { prdev("bad count", dev); p->s_nf ~IMOUNT; iput(ip); ip = mp->m_bufp; mp->m_bufp = NULL; brelse(ip); } /* * Common code for mount and umount. * Check that the user's argument is a reasonable * thing on which to mount, and return the device number if so. */ getmdev() { register d, *ip; extern uchar; ip = namei(&uchar, 0); if(ip == NULL) return; if((ip->i_mode&IFMT) != IFBLK) u.u_error = ENOTBLK; d = ip->i_addr[0]; if(ip->i_addr[0].d_major >= nblkdev) u.u_error = ENXIO; iput(ip); return(d); } re"; ip = namei(&schar, 1); if(ip == NULL) { if(u.u_error) return(0); ip = maknode(0666); if(ip == NULL) return(0); } if(!access(ip, IWRITE) && (ip->i_mode&IFMT) == 0 && u.u_uid == u.u_ruid) { itrunc(ip); u.u_offset[0] = 0; u.u_offset[1] = 0; u.u_base = &u; u.u_count = USIZE*64; u.u_segflg = 1; writei(ip); s = u.u_procp->p_size - USIZE; estabur(0, s, 0, 0); u.u_base = 0; u.u_count = s*64; u.u_segflg = 0; writei(ip); } iput(ip); return(u.u_error==0); } /*ree = 0; p->s_ninode = 0; } return(p); } panic("no fs"); } /* * update is the internal name of * 'sync'. It goes through the disk * queues to initiate sandbagged IO; * goes through the I nodes to write * modified nodes; and it goes through * the mount table to initiate modified * super blocks. */ update() { register struct inode *ip; register struct mount *mp; register *bp; if(updlock) return; updlock++; for(mp = &mount[0]; mp < &mount[NMOUNT]; mp++) if(mp->m_bufp != NULL) {  * grow the stack to include the SP * true return if successful. */ grow(sp) char *sp; { register a, si, i; if(sp >= -u.u_ssize*64) return(0); si = ldiv(-sp, 64) - u.u_ssize + SINCR; if(si <= 0) return(0); if(estabur(u.u_tsize, u.u_dsize, u.u_ssize+si, u.u_sep)) return(0); expand(u.u_procp->p_size+si); a = u.u_procp->p_addr + u.u_procp->p_size; for(i=u.u_ssize; i; i--) { a--; copyseg(a-si, a); } for(i=si; i; i--) clearseg(--a); u.u_ssize =+ si; return(1); } /* * sys-trace systip = mp->m_bufp->b_addr; if(ip->s_fmod==0 || ip->s_ilock!=0 || ip->s_flock!=0 || ip->s_ronly!=0) continue; bp = getblk(mp->m_dev, 1); ip->s_fmod = 0; ip->s_time[0] = time[0]; ip->s_time[1] = time[1]; bcopy(ip, bp->b_addr, 256); bwrite(bp); } for(ip = &inode[0]; ip < &inode[NINODE]; ip++) if((ip->i_flag&ILOCK) == 0) { ip->i_flag =| ILOCK; iupdat(ip, time); prele(ip); } updlock = 0; bflush(NODEV); } # /* */ #include "../param.h" #include "../systm.h" #include "../user.h" #include "../proc.h" #include "../inode.h" #include "../reg.h" /* * Priority for tracing */ #define IPCPRI (-1) /* * Structure to access an array of integers. */ struct { int inta[]; }; /* * Tracing variables. * Used to pass trace command from * parent to child being traced. * This data base cannot be * shared and is locked * per user. */ struct { int ip_lock; int ip_req; int ip_addr; int ip_data; } ipc; /* * Senem call. */ ptrace() { register struct proc *p; if (u.u_arg[2] <= 0) { u.u_procp->p_flag =| STRC; return; } for (p=proc; p < &proc[NPROC]; p++) if (p->p_stat==SSTOP && p->p_pid==u.u_arg[0] && p->p_ppid==u.u_procp->p_pid) goto found; u.u_error = ESRCH; return; found: while (ipc.ip_lock) sleep(&ipc, IPCPRI); ipc.ip_lock = p->p_pid; ipc.ip_data = u.u_ar0[R0]; ipc.ip_addr = u.u_arg[1] & ~01; ipc.ip_req = u.u_arg[2]; p->p_flag =& ~SWTED; setrun(p); while (ipc.ip_req > 0) # /* */ #include "../param.h" #include "../systm.h" #include "../reg.h" #include "../buf.h" #include "../filsys.h" #include "../user.h" #include "../inode.h" #include "../file.h" #include "../conf.h" /* * the fstat system call. */ fstat() { register *fp; fp = getf(u.u_ar0[R0]); if(fp == NULL) return; stat1(fp->f_inode, u.u_arg[0]); } /* * the stat system call. */ stat() { register ip; extern uchar; ip = namei(&uchar, 0); if(ip == NULL) return; stat1(ip, u.u_arg[1]); iput(ip); } /* d the specified signal to * all processes with 'tp' as its * controlling teletype. * Called by tty.c for quits and * interrupts. */ signal(tp, sig) { register struct proc *p; for(p = &proc[0]; p < &proc[NPROC]; p++) if(p->p_ttyp == tp) psignal(p, sig); } /* * Send the specified signal to * the specified process. */ psignal(p, sig) int *p; { register *rp; if(sig >= NSIG) return; rp = p; if(rp->p_sig != SIGKIL) rp->p_sig = sig; if(rp->p_stat > PUSER) rp->p_stat = PUSER; if(rp->p_sleep(&ipc, IPCPRI); u.u_ar0[R0] = ipc.ip_data; if (ipc.ip_req < 0) u.u_error = EIO; ipc.ip_lock = 0; wakeup(&ipc); } /* * Code that the child process * executes to implement the command * of the parent process in tracing. */ procxmt() { register int i; register int *p; if (ipc.ip_lock != u.u_procp->p_pid) return(0); i = ipc.ip_req; ipc.ip_req = 0; wakeup(&ipc); switch (i) { /* read user I */ case 1: if (fuibyte(ipc.ip_addr) == -1) goto error; ipc.ip_data = fuiword(ipc.ip_addr* The basic routine for fstat and stat: * get the inode and pass appropriate parts back. */ stat1(ip, ub) int *ip; { register i, *bp, *cp; iupdat(ip, time); bp = bread(ip->i_dev, ldiv(ip->i_number+31, 16)); cp = bp->b_addr + 32*lrem(ip->i_number+31, 16) + 24; ip = &(ip->i_dev); for(i=0; i<14; i++) { suword(ub, *ip++); ub =+ 2; } for(i=0; i<4; i++) { suword(ub, *cp++); ub =+ 2; } brelse(bp); } /* * the dup system call. */ dup() { register i, *fp; fp = getf(u.u_ar0[R0]); if(fp == Nstat == SWAIT) setrun(rp); } /* * Returns true if the current * process has a signal to process. * This is asked at least once * each time a process enters the * system. * A signal does not do anything * directly to a process; it sets * a flag that asks the process to * do something to itself. */ issig() { register n; register struct proc *p; p = u.u_procp; if(n = p->p_sig) { if (p->p_flag&STRC) { stop(); if ((n = p->p_sig) == 0) return(0); } if((u.u_signal[n]&1) == 0) r); break; /* read user D */ case 2: if (fubyte(ipc.ip_addr) == -1) goto error; ipc.ip_data = fuword(ipc.ip_addr); break; /* read u */ case 3: i = ipc.ip_addr; if (i<0 || i >= (USIZE<<6)) goto error; ipc.ip_data = u.inta[i>>1]; break; /* write user I (for now, always an error) */ case 4: if (suiword(ipc.ip_addr, 0) < 0) goto error; suiword(ipc.ip_addr, ipc.ip_data); break; /* write user D */ case 5: if (suword(ipc.ip_addr, 0) < 0) goto error; suword(ipc.ip_adULL) return; if ((i = ufalloc()) < 0) return; u.u_ofile[i] = fp; fp->f_count++; } /* * the mount system call. */ smount() { int d; register *ip; register struct mount *mp, *smp; extern uchar; d = getmdev(); if(u.u_error) return; u.u_dirp = u.u_arg[1]; ip = namei(&uchar, 0); if(ip == NULL) return; if(ip->i_count!=1 || (ip->i_mode&(IFBLK&IFCHR))!=0) goto out; smp = NULL; for(mp = &mount[0]; mp < &mount[NMOUNT]; mp++) { if(mp->m_bufp != NULL) { if(d == mp->m_dev) goto out;eturn(n); } return(0); } /* * Enter the tracing STOP state. * In this state, the parent is * informed and the process is able to * receive commands from the parent. */ stop() { register struct proc *pp, *cp; loop: cp = u.u_procp; if(cp->p_ppid != 1) for (pp = &proc[0]; pp < &proc[NPROC]; pp++) if (pp->p_pid == cp->p_ppid) { wakeup(pp); cp->p_stat = SSTOP; swtch(); if ((cp->p_flag&STRC)==0 || procxmt()) return; goto loop; } exit(); } /* * Perform the action specified bydr, ipc.ip_data); break; /* write u */ case 6: p = &u.inta[ipc.ip_addr>>1]; if (p >= u.u_fsav && p < &u.u_fsav[25]) goto ok; for (i=0; i<9; i++) if (p == &u.u_ar0[regloc[i]]) goto ok; goto error; ok: if (p == &u.u_ar0[RPS]) { ipc.ip_data =| 0170000; /* assure user space */ ipc.ip_data =& ~0340; /* priority 0 */ } *p = ipc.ip_data; break; /* set signal and continue */ case 7: u.u_procp->p_sig = ipc.ip_data; return(1); /* force exit */ case 8: exit(); defaul } else if(smp == NULL) smp = mp; } if(smp == NULL) goto out; (*bdevsw[d.d_major].d_open)(d, !u.u_arg[2]); if(u.u_error) goto out; mp = bread(d, 1); if(u.u_error) { brelse(mp); goto out1; } smp->m_inodp = ip; smp->m_dev = d; smp->m_bufp = getblk(NODEV); bcopy(mp->b_addr, smp->m_bufp->b_addr, 256); smp = smp->m_bufp->b_addr; smp->s_ilock = 0; smp->s_flock = 0; smp->s_ronly = u.u_arg[2] & 1; brelse(mp); ip->i_flag =| IMOUNT; prele(ip); return; out: u.u_error = EBUSY; out1: * the current signal. * The usual sequence is: * if(issig()) * psig(); */ psig() { register n, p; register *rp; rp = u.u_procp; n = rp->p_sig; rp->p_sig = 0; if((p=u.u_signal[n]) != 0) { u.u_error = 0; if(n != SIGINS && n != SIGTRC) u.u_signal[n] = 0; n = u.u_ar0[R6] - 4; grow(n); suword(n+2, u.u_ar0[RPS]); suword(n, u.u_ar0[R7]); u.u_ar0[R6] = n; u.u_ar0[RPS] =& ~TBIT; u.u_ar0[R7] = p; return; } switch(n) { case SIGQIT: case SIGINS: case SIGTRC: case SIGIOT: cast: error: ipc.ip_req = -1; } return(0); } iput(ip); } /* * the umount system call. */ sumount() { int d; register struct inode *ip; register struct mount *mp; update(); d = getmdev(); if(u.u_error) return; for(mp = &mount[0]; mp < &mount[NMOUNT]; mp++) if(mp->m_bufp!=NULL && d==mp->m_dev) goto found; u.u_error = EINVAL; return; found: for(ip = &inode[0]; ip < &inode[NINODE]; ip++) if(ip->i_number!=0 && d==ip->i_dev) { u.u_error = EBUSY; return; } (*bdevsw[d.d_major].d_close)(d, 0); ip = mp->m_inodp; ip->i_flag =&e SIGEMT: case SIGFPT: case SIGBUS: case SIGSEG: case SIGSYS: u.u_arg[0] = n; if(core()) n =+ 0200; } u.u_arg[0] = (u.u_ar0[R0]<<8) | n; exit(); } /* * Create a core image on the file "core" * If you are looking for protection glitches, * there are probably a wealth of them here * when this occurs to a suid command. * * It writes USIZE block of the * user.h area followed by the entire * data+stack segments. */ core() { register s, *ip; extern schar; u.u_error = 0; u.u_dirp = "co# /* */ #include "../param.h" #include "../systm.h" #include "../user.h" #include "../inode.h" #include "../file.h" #include "../reg.h" /* * Max allowable buffering per pipe. * This is also the max size of the * file created to implement the pipe. * If this size is bigger than 4096, * pipes will be implemented in LARG * files, which is probably not good. */ #define PIPSIZ 4096 /* * The sys-pipe entry. * Allocate an inode on the root device. * Allocate 2 file structures. * Put it all together with flags. */ pipe() { register *ip, *rf, *wf; int r; ip = ialloc(rootdev); if(ip == NULL) return; rf = falloc(); if(rf == NULL) { iput(ip); return; } r = u.u_ar0[R0]; wf = falloc(); if(wf == NULL) { rf->f_count = 0; u.u_ofile[r] = NULL; iput(ip); return; } u.u_ar0[R1] = u.u_ar0[R0]; u.u_ar0[R0] = r; wf->f_flag = FWRITE|FPIPE; wf->f_inode = ip; rf->f_flag = FREAD|FPIPE; rf->f_inode = ip; ip->i_count = 2; ip->i_flag = IACC|IUPD; ip->i_mode = IALLOC; } /* * Read call dir*/ 3, &ptrace, /* 26 = ptrace */ 0, &nosys, /* 27 = x */ 1, &fstat, /* 28 = fstat */ 0, &nosys, /* 29 = x */ 1, &nullsys, /* 30 = smdate; inoperative */ 1, &stty, /* 31 = stty */ 1, >ty, /* 32 = gtty */ 0, &nosys, /* 33 = x */ 0, &nice, /* 34 = nice */ 0, &sslep, /* 35 = sleep */ 0, &sync, /* 36 = sync */ 1, &kill, /* 37 = kill */ 0, &getswit, /* 38 = switch */ 0, &nosys, /* 39 = x */ 0, &nosys, /* 40 = x */ 0, &dup, /* 41 = dup */ 0, &pipe, /* 42 = pipe (u.u_dent.u_ino == 0) { if(eo == 0) eo = u.u_offset[1]; goto eloop; } for(cp = &u.u_dbuf[0]; cp < &u.u_dbuf[DIRSIZ]; cp++) if(*cp != cp[u.u_dent.u_name - u.u_dbuf]) goto eloop; /* * Here a component matched in a directory. * If there is more pathname, go back to * cloop, otherwise return. */ if(bp != NULL) brelse(bp); if(flag==2 && c=='\0') { if(access(dp, IWRITE)) goto out; return(dp); } bp = dp->i_dev; iput(dp); dp = iget(bp, u.u_dent.u_ino); if(dp == NULL) returected to a pipe. */ readp(fp) int *fp; { register *rp, *ip; rp = fp; ip = rp->f_inode; loop: /* * Very conservative locking. */ plock(ip); /* * If the head (read) has caught up with * the tail (write), reset both to 0. */ if(rp->f_offset[1] == ip->i_size1) { if(rp->f_offset[1] != 0) { rp->f_offset[1] = 0; ip->i_size1 = 0; if(ip->i_mode&IWRITE) { ip->i_mode =& ~IWRITE; wakeup(ip+1); } } /* * If there are not both reader and * writer active, return witho*/ 1, ×, /* 43 = times */ 4, &profil, /* 44 = prof */ 0, &nosys, /* 45 = tiu */ 0, &setgid, /* 46 = setgid */ 0, &getgid, /* 47 = getgid */ 2, &ssig, /* 48 = sig */ 0, &nosys, /* 49 = x */ 0, &nosys, /* 50 = x */ 0, &nosys, /* 51 = x */ 0, &nosys, /* 52 = x */ 0, &nosys, /* 53 = x */ 0, &nosys, /* 54 = x */ 0, &nosys, /* 55 = x */ 0, &nosys, /* 56 = x */ 0, &nosys, /* 57 = x */ 0, &nosys, /* 58 = x */ 0, &nosys, /* 59 = x */ 0, &nosys, /* 60 = x */ n(NULL); goto cloop; out: iput(dp); return(NULL); } /* * Return the next character from the * kernel string pointed at by dirp. */ schar() { return(*u.u_dirp++ & 0377); } /* * Return the next character from the * user string pointed at by dirp. */ uchar() { register c; c = fubyte(u.u_dirp++); if(c == -1) u.u_error = EFAULT; return(c); } ut * satisfying read. */ prele(ip); if(ip->i_count < 2) return; ip->i_mode =| IREAD; sleep(ip+2, PPIPE); goto loop; } /* * Read and return */ u.u_offset[0] = 0; u.u_offset[1] = rp->f_offset[1]; readi(ip); rp->f_offset[1] = u.u_offset[1]; prele(ip); } /* * Write call directed to a pipe. */ writep(fp) { register *rp, *ip, c; rp = fp; ip = rp->f_inode; c = u.u_count; loop: /* * If all done, return. */ plock(ip); if(c == 0) { prele(ip); u.u_count = 0; ret 0, &nosys, /* 61 = x */ 0, &nosys, /* 62 = x */ 0, &nosys /* 63 = x */ }; # /* */ /* * Structure of the coremap and swapmap * arrays. Consists of non-zero count * and base address of that many * contiguous units. * (The coremap unit is 64 bytes, * the swapmap unit is 512 bytes) * The addresses are increasing and * the list is terminated with the * first zero count. */ struct map { char *m_size; char *m_addr; }; /* * Allocate size units from the given * map. Return the base of the allocated * space. * Algorithm is first fit. */ malloc(mp, size) struct map *mp; urn; } /* * If there are not both read and * write sides of the pipe active, * return error and signal too. */ if(ip->i_count < 2) { prele(ip); u.u_error = EPIPE; psignal(u.u_procp, SIGPIPE); return; } /* * If the pipe is full, * wait for reads to deplete * and truncate it. */ if(ip->i_size1 == PIPSIZ) { ip->i_mode =| IWRITE; prele(ip); sleep(ip+1, PPIPE); goto loop; } /* * Write what is possible and * loop back. */ u.u_offset[0] = 0; u.u_offset[1] = ip-# #include "../param.h" #include "../inode.h" #include "../user.h" #include "../systm.h" #include "../buf.h" /* * Convert a pathname into a pointer to * an inode. Note that the inode is locked. * * func = function called to get next char of name * &uchar if name is in user space * &schar if name is in system space * flag = 0 if name is sought * 1 if name is to be created * 2 if name is to be deleted */ namei(func, flag) int (*func)(); { register struct inode *dp; register c; register char *cp;{ register int a; register struct map *bp; for (bp = mp; bp->m_size; bp++) { if (bp->m_size >= size) { a = bp->m_addr; bp->m_addr =+ size; if ((bp->m_size =- size) == 0) do { bp++; (bp-1)->m_addr = bp->m_addr; } while ((bp-1)->m_size = bp->m_size); return(a); } } return(0); } /* * Free the previously allocated space aa * of size units into the specified map. * Sort aa into map and combine on * one or both ends if possible. */ mfree(mp, size, aa) struct map *mp; >i_size1; u.u_count = min(c, PIPSIZ-u.u_offset[1]); c =- u.u_count; writei(ip); prele(ip); if(ip->i_mode&IREAD) { ip->i_mode =& ~IREAD; wakeup(ip+2); } goto loop; } /* * Lock a pipe. * If its already locked, * set the WANT bit and sleep. */ plock(ip) int *ip; { register *rp; rp = ip; while(rp->i_flag&ILOCK) { rp->i_flag =| IWANT; sleep(rp, PPIPE); } rp->i_flag =| ILOCK; } /* * Unlock a pipe. * If WANT bit is on, * wakeup. * This routine is also used * to unlock inodes in gene int eo, *bp; /* * If name starts with '/' start from * root; otherwise start from current dir. */ dp = u.u_cdir; if((c=(*func)()) == '/') dp = rootdir; iget(dp->i_dev, dp->i_number); while(c == '/') c = (*func)(); if(c == '\0' && flag != 0) { u.u_error = ENOENT; goto out; } cloop: /* * Here dp contains pointer * to last component matched. */ if(u.u_error) goto out; if(c == '\0') return(dp); /* * If there is another component, * dp must be a directory and * mus{ register struct map *bp; register int t; register int a; a = aa; for (bp = mp; bp->m_addr<=a && bp->m_size!=0; bp++); if (bp>mp && (bp-1)->m_addr+(bp-1)->m_size == a) { (bp-1)->m_size =+ size; if (a+size == bp->m_addr) { (bp-1)->m_size =+ bp->m_size; while (bp->m_size) { bp++; (bp-1)->m_addr = bp->m_addr; (bp-1)->m_size = bp->m_size; } } } else { if (a+size == bp->m_addr && bp->m_size) { bp->m_addr =- size; bp->m_size =+ size; } else if (size) do { t = bp->mral. */ prele(ip) int *ip; { register *rp; rp = ip; rp->i_flag =& ~ILOCK; if(rp->i_flag&IWANT) { rp->i_flag =& ~IWANT; wakeup(rp); } } t have x permission. */ if((dp->i_mode&IFMT) != IFDIR) { u.u_error = ENOTDIR; goto out; } if(access(dp, IEXEC)) goto out; /* * Gather up name into * users' dir buffer. */ cp = &u.u_dbuf[0]; while(c!='/' && c!='\0' && u.u_error==0) { if(cp < &u.u_dbuf[DIRSIZ]) *cp++ = c; c = (*func)(); } while(cp < &u.u_dbuf[DIRSIZ]) *cp++ = '\0'; while(c == '/') c = (*func)(); if(u.u_error) goto out; /* * Set up to search a directory. */ u.u_offset[1] = 0; u.u_offset[0] = 0; _addr; bp->m_addr = a; a = t; t = bp->m_size; bp->m_size = size; bp++; } while (size = t); } } # /* */ /* * This table is the switch used to transfer * to the appropriate routine for processing a system call. * Each row contains the number of arguments expected * and a pointer to the routine. */ int sysent[] { 0, &nullsys, /* 0 = indir */ 0, &rexit, /* 1 = exit */ 0, &fork, /* 2 = fork */ 2, &read, /* 3 = read */ 2, &write, /* 4 = write */ 2, &open, /* 5 = open */ 0, &close, /* 6 = close */ 0, &wait, /* 7 = wait */ 2, &creat, /* 8 = creat */ 2, &link, /* u.u_segflg = 1; eo = 0; u.u_count = ldiv(dp->i_size1, DIRSIZ+2); bp = NULL; eloop: /* * If at the end of the directory, * the search failed. Report what * is appropriate as per flag. */ if(u.u_count == 0) { if(bp != NULL) brelse(bp); if(flag==1 && c=='\0') { if(access(dp, IWRITE)) goto out; u.u_pdir = dp; if(eo) u.u_offset[1] = eo-DIRSIZ-2; else dp->i_flag =| IUPD; return(NULL); } u.u_error = ENOENT; goto out; } /* * If offset is on a block boundary   9 = link */ 1, &unlink, /* 10 = unlink */ 2, &exec, /* 11 = exec */ 1, &chdir, /* 12 = chdir */ 0, >ime, /* 13 = time */ 3, &mknod, /* 14 = mknod */ 2, &chmod, /* 15 = chmod */ 2, &chown, /* 16 = chown */ 1, &sbreak, /* 17 = break */ 2, &stat, /* 18 = stat */ 2, &seek, /* 19 = seek */ 0, &getpid, /* 20 = getpid */ 3, &smount, /* 21 = mount */ 1, &sumount, /* 22 = umount */ 0, &setuid, /* 23 = setuid */ 0, &getuid, /* 24 = getuid */ 0, &stime, /* 25 = stime , * read the next directory block. * Release previous if it exists. */ if((u.u_offset[1]&0777) == 0) { if(bp != NULL) brelse(bp); bp = bread(dp->i_dev, bmap(dp, ldiv(u.u_offset[1], 512))); } /* * Note first empty directory slot * in eo for possible creat. * String compare the directory entry * and the current component. * If they do not match, go back to eloop. */ bcopy(bp->b_addr+(u.u_offset[1]&0777), &u.u_dent, (DIRSIZ+2)/2); u.u_offset[1] =+ DIRSIZ+2; u.u_count--; if# /* */ #include "../param.h" #include "../user.h" #include "../filsys.h" #include "../file.h" #include "../conf.h" #include "../inode.h" #include "../reg.h" /* * Convert a user supplied * file descriptor into a pointer * to a file structure. * Only task is to check range * of the descriptor. */ getf(f) { register *fp, rf; rf = f; if(rf<0 || rf>=NOFILE) goto bad; fp = u.u_ofile[rf]; if(fp != NULL) return(fp); bad: u.u_error = EBADF; return(NULL); } /* * Internal form of close. * Decrement reference count on * file structure and call closei * on last closef. * Also make sure the pipe protocol * does not constipate. */ closef(fp) int *fp; { register *rfp, *ip; rfp = fp; if(rfp->f_flag&FPIPE) { ip = rfp->f_inode; ip->i_mode =& ~(IREAD|IWRITE); wakeup(ip+1); wakeup(ip+2); } if(rfp->f_count <= 1) closei(rfp->f_inode, rfp->f_flag&FWRITE); rfp->f_count--; } /* * Decrement reference count on an * inode due to the removal of a * referencing file structure. * On the la# #include "../param.h" #include "../systm.h" #include "../user.h" #include "../proc.h" #define UMODE 0170000 #define SCHMAG 10 /* * clock is called straight from * the real time clock interrupt. * * Functions: * reprime clock * copy *switches to display * implement callouts * maintain user/system times * maintain date * profile * tout wakeup (sys sleep) * lightning bolt wakeup (every 4 sec) * alarm clock signals * jab the scheduler */ clock(dev, sp, r1, nps, r0, pc, ps) { register struct ll of core */ updlock = 0; i = *ka6 + USIZE; UISD->r[0] = 077406; for(;;) { UISA->r[0] = i; if(fuibyte(0) < 0) break; clearseg(i); maxmem++; mfree(coremap, 1, i); i++; } if(cputype == 70) for(i=0; i<62; i=+2) { UBMAP->r[i] = i<<12; UBMAP->r[i+1] = 0; } printf("mem = %l\n", maxmem*5/16); printf("RESTRICTED RIGHTS\n\n"); printf("Use, duplication or disclosure is subject to\n"); printf("restrictions stated in Contract with Western\n"); printf("Electric Company, Inc.\n"); mast closei, switchout * to the close entry point of special * device handler. * Note that the handler gets called * on every open and only on the last * close. */ closei(ip, rw) int *ip; { register *rip; register dev, maj; rip = ip; dev = rip->i_addr[0]; maj = rip->i_addr[0].d_major; if(rip->i_count <= 1) switch(rip->i_mode&IFMT) { case IFCHR: (*cdevsw[maj].d_close)(dev, rw); break; case IFBLK: (*bdevsw[maj].d_close)(dev, rw); } iput(rip); } /* * openi called to allow handler * ocallo *p1, *p2; register struct proc *pp; /* * restart clock */ *lks = 0115; /* * display register */ display(); /* * callouts * if none, just return * else update first non-zero time */ if(callout[0].c_func == 0) goto out; p2 = &callout[0]; while(p2->c_time<=0 && p2->c_func!=0) p2++; p2->c_time--; /* * if ps is high, just return */ if((ps&0340) != 0) goto out; /* * callout */ spl5(); if(callout[0].c_time <= 0) { p1 = &callout[0]; while(p1->c_func !xmem = min(maxmem, MAXMEM); mfree(swapmap, nswap, swplo); /* * determine clock */ UISA->r[7] = ka6[1]; /* io segment */ UISD->r[7] = 077406; lks = CLOCK1; if(fuiword(lks) == -1) { lks = CLOCK2; if(fuiword(lks) == -1) panic("no clock"); } /* * set up system process */ proc[0].p_addr = *ka6; proc[0].p_size = USIZE; proc[0].p_stat = SRUN; proc[0].p_flag =| SLOAD|SSYS; u.u_procp = &proc[0]; /* * set up 'known' i-nodes */ *lks = 0115; cinit(); binit(); iinit(); rootdirf special files to initialize and * validate before actual IO. * Called on all sorts of opens * and also on mount. */ openi(ip, rw) int *ip; { register *rip; register dev, maj; rip = ip; dev = rip->i_addr[0]; maj = rip->i_addr[0].d_major; switch(rip->i_mode&IFMT) { case IFCHR: if(maj >= nchrdev) goto bad; (*cdevsw[maj].d_open)(dev, rw); break; case IFBLK: if(maj >= nblkdev) goto bad; (*bdevsw[maj].d_open)(dev, rw); } return; bad: u.u_error = ENXIO; } /* * Check mode perm= 0 && p1->c_time <= 0) { (*p1->c_func)(p1->c_arg); p1++; } p2 = &callout[0]; while(p2->c_func = p1->c_func) { p2->c_time = p1->c_time; p2->c_arg = p1->c_arg; p1++; p2++; } } /* * lightning bolt time-out * and time of day */ out: if((ps&UMODE) == UMODE) { u.u_utime++; if(u.u_prof[3]) incupc(pc, u.u_prof); } else u.u_stime++; pp = u.u_procp; if(++pp->p_cpu == 0) pp->p_cpu--; if(++lbolt >= HZ) { if((ps&0340) != 0) return; lbolt =- HZ; if(++time[1] = = iget(rootdev, ROOTINO); rootdir->i_flag =& ~ILOCK; u.u_cdir = iget(rootdev, ROOTINO); u.u_cdir->i_flag =& ~ILOCK; /* * make init process * enter scheduling loop * with system process */ if(newproc()) { expand(USIZE+1); estabur(0, 1, 0, 0); copyout(icode, 0, sizeof icode); /* * Return goes to loc. 0 of user init * code just copied out. */ return; } sched(); } /* * Load the user hardware segmentation * registers from the software prototype. * The software registers mission on inode pointer. * Mode is READ, WRITE or EXEC. * In the case of WRITE, the * read-only status of the file * system is checked. * Also in WRITE, prototype text * segments cannot be written. * The mode is shifted to select * the owner/group/other fields. * The super user is granted all * permissions except for EXEC where * at least one of the EXEC bits must * be on. */ access(aip, mode) int *aip; { register *ip, m; ip = aip; m = mode; if(m == IWRITE) { if(getfs(ip->i_dev)->s_ronly= 0) ++time[0]; spl1(); if(time[1]==tout[1] && time[0]==tout[0]) wakeup(tout); if((time[1]&03) == 0) { runrun++; wakeup(&lbolt); } for(pp = &proc[0]; pp < &proc[NPROC]; pp++) if (pp->p_stat) { if(pp->p_time != 127) pp->p_time++; if((pp->p_cpu & 0377) > SCHMAG) pp->p_cpu =- SCHMAG; else pp->p_cpu = 0; if(pp->p_pri > PUSER) setpri(pp); } if(runin!=0) { runin = 0; wakeup(&runin); } if((ps&UMODE) == UMODE) { u.u_ar0 = &r0; if(issig()) psigust have * been setup prior by estabur. */ sureg() { register *up, *rp, a; a = u.u_procp->p_addr; up = &u.u_uisa[16]; rp = &UISA->r[16]; if(cputype == 40) { up =- 8; rp =- 8; } while(rp > &UISA->r[0]) *--rp = *--up + a; if((up=u.u_procp->p_textp) != NULL) a =- up->x_caddr; up = &u.u_uisd[16]; rp = &UISD->r[16]; if(cputype == 40) { up =- 8; rp =- 8; } while(rp > &UISD->r[0]) { *--rp = *--up; if((*rp & WO) == 0) rp[(UISA-UISD)/2] =- a; } } /* * Set up software prototype s != 0) { u.u_error = EROFS; return(1); } if(ip->i_flag & ITEXT) { u.u_error = ETXTBSY; return(1); } } if(u.u_uid == 0) { if(m == IEXEC && (ip->i_mode & (IEXEC | (IEXEC>>3) | (IEXEC>>6))) == 0) goto bad; return(0); } if(u.u_uid != ip->i_uid) { m =>> 3; if(u.u_gid != ip->i_gid) m =>> 3; } if((ip->i_mode&m) != 0) return(0); bad: u.u_error = EACCES; return(1); } /* * Look up a pathname and test if * the resultant inode is owned by the * current user. * If not(); setpri(u.u_procp); } } } /* * timeout is called to arrange that * fun(arg) is called in tim/HZ seconds. * An entry is sorted into the callout * structure. The time in each structure * entry is the number of HZ's more * than the previous entry. * In this way, decrementing the * first entry has the effect of * updating all entries. */ timeout(fun, arg, tim) { register struct callo *p1, *p2; register t; int s; t = tim; s = PS->integ; p1 = &callout[0]; spl7(); while(p1->c_func != 0egmentation * registers to implement the 3 pseudo * text,data,stack segment sizes passed * as arguments. * The argument sep specifies if the * text and data+stack segments are to * be separated. */ estabur(nt, nd, ns, sep) { register a, *ap, *dp; if(sep) { if(cputype == 40) goto err; if(nseg(nt) > 8 || nseg(nd)+nseg(ns) > 8) goto err; } else if(nseg(nt)+nseg(nd)+nseg(ns) > 8) goto err; if(nt+nd+ns+USIZE > maxmem) goto err; a = 0; ap = &u.u_uisa[0]; dp = &u.u_uisd[0]; while(n, try for super-user. * If permission is granted, * return inode pointer. */ owner() { register struct inode *ip; extern uchar(); if ((ip = namei(uchar, 0)) == NULL) return(NULL); if(u.u_uid == ip->i_uid) return(ip); if (suser()) return(ip); iput(ip); return(NULL); } /* * Test if the current user is the * super user. */ suser() { if(u.u_uid == 0) return(1); u.u_error = EPERM; return(0); } /* * Allocate a user file descriptor. */ ufalloc() { register i; for (i=0; ic_time <= t) { t =- p1->c_time; p1++; } p1->c_time =- t; p2 = p1; while(p2->c_func != 0) p2++; while(p2 >= p1) { (p2+1)->c_time = p2->c_time; (p2+1)->c_func = p2->c_func; (p2+1)->c_arg = p2->c_arg; p2--; } p1->c_time = t; p1->c_func = fun; p1->c_arg = arg; PS->integ = s; } t >= 128) { *dp++ = (127<<8) | RO; *ap++ = a; a =+ 128; nt =- 128; } if(nt) { *dp++ = ((nt-1)<<8) | RO; *ap++ = a; } if(sep) while(ap < &u.u_uisa[8]) { *ap++ = 0; *dp++ = 0; } a = USIZE; while(nd >= 128) { *dp++ = (127<<8) | RW; *ap++ = a; a =+ 128; nd =- 128; } if(nd) { *dp++ = ((nd-1)<<8) | RW; *ap++ = a; a =+ nd; } while(ap < &u.u_uisa[8]) { *dp++ = 0; *ap++ = 0; } if(sep) while(ap < &u.u_uisa[16]) { *dp++ = 0; *ap++ = 0; } a =+ ns; while(ns >= 128)+) if (u.u_ofile[i] == NULL) { u.u_ar0[R0] = i; return(i); } u.u_error = EMFILE; return(-1); } /* * Allocate a user file descriptor * and a file structure. * Initialize the descriptor * to point at the file structure. * * no file -- if there are no available * file structures. */ falloc() { register struct file *fp; register i; if ((i = ufalloc()) < 0) return(NULL); for (fp = &file[0]; fp < &file[NFILE]; fp++) if (fp->f_count==0) { u.u_ofile[i] = fp; fp->f_count++; fp# #include "../param.h" #include "../user.h" #include "../systm.h" #include "../proc.h" #include "../text.h" #include "../inode.h" #include "../seg.h" #define CLOCK1 0177546 #define CLOCK2 0172540 /* * Icode is the octal bootstrap * program executed in user mode * to bring up the system. */ int icode[] { 0104413, /* sys exec; init; initp */ 0000014, 0000010, 0000777, /* br . */ 0000014, /* initp: init; 0 */ 0000000, 0062457, /* init: */ 0061564, 0064457, 0064556, 0000164, }; /  ->f_offset[0] = 0; fp->f_offset[1] = 0; return(fp); } printf("no file\n"); u.u_error = ENFILE; return(NULL); } * * Initialization code. * Called from m40.s or m45.s as * soon as a stack and segmentation * have been established. * Functions: * clear and free user core * find which clock is configured * hand craft 0th process * call all initialization routines * fork - process 0 to schedule * - process 1 execute bootstrap * * panic: no clock -- neither clock responds * loop at loc 6 in user mode -- /etc/init * cannot be executed. */ main() { extern schar; register i, *p; /* * zero and free a { a =- 128; ns =- 128; *--dp = (127<<8) | RW; *--ap = a; } if(ns) { *--dp = ((128-ns)<<8) | RW | ED; *--ap = a-128; } if(!sep) { ap = &u.u_uisa[0]; dp = &u.u_uisa[8]; while(ap < &u.u_uisa[8]) *dp++ = *ap++; ap = &u.u_uisd[0]; dp = &u.u_uisd[8]; while(ap < &u.u_uisd[8]) *dp++ = *ap++; } sureg(); return(0); err: u.u_error = ENOMEM; return(-1); } /* * Return the arg/128 rounded up. */ nseg(n) { return((n+127)>>7); } # /* */ #include "../param.h" #include "../inode.h" #include "../user.h" #include "../buf.h" #include "../conf.h" #include "../systm.h" /* * Read the file corresponding to * the inode pointed at by the argument. * The actual read arguments are found * in the variables: * u_base core address for destination * u_offset byte offset in file * u_count number of bytes to read * u_segflg read to kernel/user */ readi(aip) struct inode *aip; { int *bp; int lbn, bn, on; register dn, n; register stru #&o out; } } if(u.u_error) return; ip = maknode(u.u_arg[1]); if (ip==NULL) return; ip->i_addr[0] = u.u_arg[2]; out: iput(ip); } /* * sleep system call * not to be confused with the sleep internal routine. */ sslep() { char *d[2]; spl7(); d[0] = time[0]; d[1] = time[1]; dpadd(d, u.u_ar0[R0]); while(dpcmp(d[0], d[1], time[0], time[1]) > 0) { if(dpcmp(tout[0], tout[1], time[0], time[1]) <= 0 || dpcmp(tout[0], tout[1], d[0], d[1]) > 0) { tout[0] = d[0]; tout[1] = d[1]; } ct inode *ip; ip = aip; if(u.u_count == 0) return; ip->i_flag =| IACC; if((ip->i_mode&IFMT) == IFCHR) { (*cdevsw[ip->i_addr[0].d_major].d_read)(ip->i_addr[0]); return; } do { lbn = bn = lshift(u.u_offset, -9); on = u.u_offset[1] & 0777; n = min(512-on, u.u_count); if((ip->i_mode&IFMT) != IFBLK) { dn = dpcmp(ip->i_size0&0377, ip->i_size1, u.u_offset[0], u.u_offset[1]); if(dn <= 0) return; n = min(n, dn); if ((bn = bmap(ip, lbn)) == 0) return; dn = ip->i_dev; # #include "../param.h" #include "../systm.h" #include "../user.h" #include "../reg.h" #include "../file.h" #include "../inode.h" /* * read system call */ read() { rdwr(FREAD); } /* * write system call */ write() { rdwr(FWRITE); } /* * common code for read and write calls: * check permissions, set base, count, and offset, * and switch out to readi, writei, or pipe code. */ rdwr(mode) { register *fp, m; m = mode; fp = getf(u.u_ar0[R0]); if(fp == NULL) return; if((fp->f_flag&m) == 0) { sleep(tout, PSLEP); } spl0(); } } else { dn = ip->i_addr[0]; rablock = bn+1; } if (ip->i_lastr+1 == lbn) bp = breada(dn, bn, rablock); else bp = bread(dn, bn); ip->i_lastr = lbn; iomove(bp, on, n, B_READ); brelse(bp); } while(u.u_error==0 && u.u_count!=0); } /* * Write the file corresponding to * the inode pointed at by the argument. * The actual write arguments are found * in the variables: * u_base core address for source * u_offset byte offset in file * u_count number of bytes to write * u_segflg wru.u_error = EBADF; return; } u.u_base = u.u_arg[0]; u.u_count = u.u_arg[1]; u.u_segflg = 0; if(fp->f_flag&FPIPE) { if(m==FREAD) readp(fp); else writep(fp); } else { u.u_offset[1] = fp->f_offset[1]; u.u_offset[0] = fp->f_offset[0]; if(m==FREAD) readi(fp->f_inode); else writei(fp->f_inode); dpadd(fp->f_offset, u.u_arg[1]-u.u_count); } u.u_ar0[R0] = u.u_arg[1]-u.u_count; } /* * open system call */ open() { register *ip; extern uchar; ip = namei(&uchar, 0); if(ip == NULL)!$'(+.147:=)ite to kernel/user */ writei(aip) struct inode *aip; { int *bp; int n, on; register dn, bn; register struct inode *ip; ip = aip; ip->i_flag =| IACC|IUPD; if((ip->i_mode&IFMT) == IFCHR) { (*cdevsw[ip->i_addr[0].d_major].d_write)(ip->i_addr[0]); return; } if (u.u_count == 0) return; do { bn = lshift(u.u_offset, -9); on = u.u_offset[1] & 0777; n = min(512-on, u.u_count); if((ip->i_mode&IFMT) != IFBLK) { if ((bn = bmap(ip, bn)) == 0) return; dn = ip->i_dev; } else dn = return; u.u_arg[1]++; open1(ip, u.u_arg[1], 0); } /* * creat system call */ creat() { register *ip; extern uchar; ip = namei(&uchar, 1); if(ip == NULL) { if(u.u_error) return; ip = maknode(u.u_arg[1]&07777&(~ISVTX)); if (ip==NULL) return; open1(ip, FWRITE, 2); } else open1(ip, FWRITE, 1); } /* * common code for open and creat. * Check permissions, allocate an open file structure, * and call the device open routine if any. */ open1(ip, mode, trf) int *ip; { register struct# /* */ #include "../param.h" #include "../systm.h" #include "../user.h" #include "../proc.h" #include "../buf.h" #include "../reg.h" #include "../inode.h" /* * exec system call. * Because of the fact that an I/O buffer is used * to store the caller's arguments during exec, * and more buffers are needed to read in the text file, * deadly embraces waiting for free buffers are possible. * Therefore the number of processes simultaneously * running in exec has to be limited to NEXEC. */ #define EXPRIip->i_addr[0]; if(n == 512) bp = getblk(dn, bn); else bp = bread(dn, bn); iomove(bp, on, n, B_WRITE); if(u.u_error != 0) brelse(bp); else if ((u.u_offset[1]&0777)==0) bawrite(bp); else bdwrite(bp); if(dpcmp(ip->i_size0&0377, ip->i_size1, u.u_offset[0], u.u_offset[1]) < 0 && (ip->i_mode&(IFBLK&IFCHR)) == 0) { ip->i_size0 = u.u_offset[0]; ip->i_size1 = u.u_offset[1]; } ip->i_flag =| IUPD; } while(u.u_error==0 && u.u_count!=0); } /* * Return the logical maximum * file *fp; register *rip, m; int i; rip = ip; m = mode; if(trf != 2) { if(m&FREAD) access(rip, IREAD); if(m&FWRITE) { access(rip, IWRITE); if((rip->i_mode&IFMT) == IFDIR) u.u_error = EISDIR; } } if(u.u_error) goto out; if(trf) itrunc(rip); prele(rip); if ((fp = falloc()) == NULL) goto out; fp->f_flag = m&(FREAD|FWRITE); fp->f_inode = rip; i = u.u_ar0[R0]; openi(rip, m&FWRITE); if(u.u_error == 0) return; u.u_ofile[i] = NULL; fp->f_count--; out: iput(rip); } /* -1 exec() { int ap, na, nc, *bp; int ts, ds, sep; register c, *ip; register char *cp; extern uchar; /* * pick up file names * and check various modes * for execute permission */ ip = namei(&uchar, 0); if(ip == NULL) return; while(execnt >= NEXEC) sleep(&execnt, EXPRI); execnt++; bp = getblk(NODEV); if(access(ip, IEXEC) || (ip->i_mode&IFMT)!=0) goto bad; /* * pack up arguments into * allocated disk buffer */ cp = bp->b_addr; na = 0; nc = 0; while(ap = fuword(u.u_arg of the 2 arguments. */ max(a, b) char *a, *b; { if(a > b) return(a); return(b); } /* * Return the logical minimum * of the 2 arguments. */ min(a, b) char *a, *b; { if(a < b) return(a); return(b); } /* * Move 'an' bytes at byte location * &bp->b_addr[o] to/from (flag) the * user/kernel (u.segflg) area starting at u.base. * Update all the arguments by the number * of bytes moved. * * There are 2 algorithms, * if source address, dest address and count * are all even in a user copy, * * close system call */ close() { register *fp; fp = getf(u.u_ar0[R0]); if(fp == NULL) return; u.u_ofile[u.u_ar0[R0]] = NULL; closef(fp); } /* * seek system call */ seek() { int n[2]; register *fp, t; fp = getf(u.u_ar0[R0]); if(fp == NULL) return; if(fp->f_flag&FPIPE) { u.u_error = ESPIPE; return; } t = u.u_arg[1]; if(t > 2) { n[1] = u.u_arg[0]<<9; n[0] = u.u_arg[0]>>7; if(t == 3) n[0] =& 0777; } else { n[1] = u.u_arg[0]; n[0] = 0; if(t!=0 && n[1]<0) n[0] = -1; [1])) { na++; if(ap == -1) goto bad; u.u_arg[1] =+ 2; for(;;) { c = fubyte(ap++); if(c == -1) goto bad; *cp++ = c; nc++; if(nc > 510) { u.u_error = E2BIG; goto bad; } if(c == 0) break; } } if((nc&1) != 0) { *cp++ = 0; nc++; } /* * read in first 8 bytes * of file for segment * sizes: * w0 = 407/410/411 (410 implies RO text) (411 implies sep ID) * w1 = text size * w2 = data size * w3 = bss size */ u.u_base = &u.u_arg[0]; u.u_count = then the machine language copyin/copyout * is called. * If not, its done byte-by-byte with * cpass and passc. */ iomove(bp, o, an, flag) struct buf *bp; { register char *cp; register int n, t; n = an; cp = bp->b_addr + o; if(u.u_segflg==0 && ((n | cp | u.u_base)&01)==0) { if (flag==B_WRITE) cp = copyin(u.u_base, cp, n); else cp = copyout(cp, u.u_base, n); if (cp) { u.u_error = EFAULT; return; } u.u_base =+ n; dpadd(u.u_offset, n); u.u_count =- n; return; } if (flag== } switch(t) { case 1: case 4: n[0] =+ fp->f_offset[0]; dpadd(n, fp->f_offset[1]); break; default: n[0] =+ fp->f_inode->i_size0&0377; dpadd(n, fp->f_inode->i_size1); case 0: case 3: ; } fp->f_offset[1] = n[1]; fp->f_offset[0] = n[0]; } /* * link system call */ link() { register *ip, *xp; extern uchar; ip = namei(&uchar, 0); if(ip == NULL) return; if(ip->i_nlink >= 127) { u.u_error = EMLINK; goto out; } if((ip->i_mode&IFMT)==IFDIR && !suser()) goto out; /* * unlo 8; u.u_offset[1] = 0; u.u_offset[0] = 0; u.u_segflg = 1; readi(ip); u.u_segflg = 0; if(u.u_error) goto bad; sep = 0; if(u.u_arg[0] == 0407) { u.u_arg[2] =+ u.u_arg[1]; u.u_arg[1] = 0; } else if(u.u_arg[0] == 0411) sep++; else if(u.u_arg[0] != 0410) { u.u_error = ENOEXEC; goto bad; } if(u.u_arg[1]!=0 && (ip->i_flag&ITEXT)==0 && ip->i_count!=1) { u.u_error = ETXTBSY; goto bad; } /* * find text and data sizes * try them out for possible * exceed of max sizes */ ts = (B_WRITE) { while(n--) { if ((t = cpass()) < 0) return; *cp++ = t; } } else while (n--) if(passc(*cp++) < 0) return; } ck to avoid possibly hanging the namei */ ip->i_flag =& ~ILOCK; u.u_dirp = u.u_arg[1]; xp = namei(&uchar, 1); if(xp != NULL) { u.u_error = EEXIST; iput(xp); } if(u.u_error) goto out; if(u.u_pdir->i_dev != ip->i_dev) { iput(u.u_pdir); u.u_error = EXDEV; goto out; } wdir(ip); ip->i_nlink++; ip->i_flag =| IUPD; out: iput(ip); } /* * mknod system call */ mknod() { register *ip; extern uchar; if(suser()) { ip = namei(&uchar, 1); if(ip != NULL) { u.u_error = EEXIST; got(u.u_arg[1]+63)>>6) & 01777; ds = ((u.u_arg[2]+u.u_arg[3]+63)>>6) & 01777; if(estabur(ts, ds, SSIZE, sep)) goto bad; /* * allocate and clear core * at this point, committed * to the new image */ u.u_prof[3] = 0; xfree(); expand(USIZE); xalloc(ip); c = USIZE+ds+SSIZE; expand(c); while(--c >= USIZE) clearseg(u.u_procp->p_addr+c); /* * read in data segment */ estabur(0, ds, 0, 0); u.u_base = 0; u.u_offset[1] = 020+u.u_arg[1]; u.u_count = u.u_arg[2]; readi(ip); /* * initialize stack segment */ u.u_tsize = ts; u.u_dsize = ds; u.u_ssize = SSIZE; u.u_sep = sep; estabur(u.u_tsize, u.u_dsize, u.u_ssize, u.u_sep); cp = bp->b_addr; ap = -nc - na*2 - 4; u.u_ar0[R6] = ap; suword(ap, na); c = -nc; while(na--) { suword(ap=+2, c); do subyte(c++, *cp); while(*cp++); } suword(ap+2, -1); /* * set SUID/SGID protections, if no tracing */ if ((u.u_procp->p_flag&STRC)==0) { if(ip->i_mode&ISUID) if(u.u_uid != 0) { u.u_uid = ip->i_uid; u.u_procp->p_r; a = u.u_procp->p_addr + n - u.u_ssize; i = n; n = u.u_ssize; while(n--) { copyseg(a-d, a); a++; } expand(i); return; bigger: expand(n); a = u.u_procp->p_addr + n; n = u.u_ssize; while(n--) { a--; copyseg(a-d, a); } while(d--) clearseg(--a); } rp = p1; a = rp->p_size; if((rp=rp->p_textp) != NULL) if(rp->x_ccount == 0) a =+ rp->x_size; if((a=malloc(coremap, a)) != NULL) goto found2; /* * none found, * look around for easy core */ spl6(); for(rp = &proc[0]; rp < &proc[NPROC]; rp++) if((rp->p_flag&(SSYS|SLOCK|SLOAD))==SLOAD && (rp->p_stat == SWAIT || rp->p_stat==SSTOP)) goto found1; /* * no easy core, * if this process is deserving, * look around for * oldest process in core */ if(n < 3) goto sloop; n uid = ip->i_uid; } if(ip->i_mode&ISGID) u.u_gid = ip->i_gid; } /* * clear sigs, regs and return */ c = ip; for(ip = &u.u_signal[0]; ip < &u.u_signal[NSIG]; ip++) if((*ip & 1) == 0) *ip = 0; for(cp = ®loc[0]; cp < ®loc[6];) u.u_ar0[*cp++] = 0; u.u_ar0[R7] = 0; for(ip = &u.u_fsav[0]; ip < &u.u_fsav[25];) *ip++ = 0; ip = c; bad: iput(ip); brelse(bp); if(execnt >= NEXEC) wakeup(&execnt); execnt--; } /* * exit system call: * pass back caller's r0 */ rexit() { u.u/258;>*-0369<?@CFIL= -1; for(rp = &proc[0]; rp < &proc[NPROC]; rp++) if((rp->p_flag&(SSYS|SLOCK|SLOAD))==SLOAD && (rp->p_stat==SRUN || rp->p_stat==SSLEEP) && rp->p_time > n) { p1 = rp; n = rp->p_time; } if(n < 2) goto sloop; rp = p1; /* * swap user out */ found1: spl0(); rp->p_flag =& ~SLOAD; xswap(rp, 1, 0); goto loop; /* * swap user in */ found2: if((rp=p1->p_textp) != NULL) { if(rp->x_ccount == 0) { if(swap(rp->x_daddr, a, rp->x_size, B_READ)) goto swaper; rp->x_caddr = a;_arg[0] = u.u_ar0[R0] << 8; exit(); } /* * Release resources. * Save u. area for parent to look at. * Enter zombie state. * Wake up parent and init processes, * and dispose of children. */ exit() { register int *q, a; register struct proc *p; u.u_procp->p_flag =& ~STRC; for(q = &u.u_signal[0]; q < &u.u_signal[NSIG];) *q++ = 1; for(q = &u.u_ofile[0]; q < &u.u_ofile[NOFILE]; q++) if(a = *q) { *q = NULL; closef(a); } iput(u.u_cdir); xfree(); a = malloc(swapmap, 1); if(a == NULL) # /* */ #include "../param.h" #include "../user.h" #include "../proc.h" #include "../text.h" #include "../systm.h" #include "../file.h" #include "../inode.h" #include "../buf.h" /* * Give up the processor till a wakeup occurs * on chan, at which time the process * enters the scheduling queue at priority pri. * The most important effect of pri is that when * pri<0 a signal cannot disturb the sleep; * if pri>=0 signals will be processed. * Callers of this routine must be prepared for * premature re a =+ rp->x_size; } rp->x_ccount++; } rp = p1; if(swap(rp->p_addr, a, rp->p_size, B_READ)) goto swaper; mfree(swapmap, (rp->p_size+7)/8, rp->p_addr); rp->p_addr = a; rp->p_flag =| SLOAD; rp->p_time = 0; goto loop; swaper: panic("swap error"); } /* * This routine is called to reschedule the CPU. * if the calling process is not in RUN state, * arrangements for it to restart must have * been made elsewhere, usually by calling via sleep. */ swtch() { static struct proc *p; register i, panic("out of swap"); p = getblk(swapdev, a); bcopy(&u, p->b_addr, 256); bwrite(p); q = u.u_procp; mfree(coremap, q->p_size, q->p_addr); q->p_addr = a; q->p_stat = SZOMB; loop: for(p = &proc[0]; p < &proc[NPROC]; p++) if(q->p_ppid == p->p_pid) { wakeup(&proc[1]); wakeup(p); for(p = &proc[0]; p < &proc[NPROC]; p++) if(q->p_pid == p->p_ppid) { p->p_ppid = 1; if (p->p_stat == SSTOP) setrun(p); } swtch(); /* no return */ } q->p_ppid = 1; goto loop; } /* * Wait system calturn, and check that the reason for * sleeping has gone away. */ sleep(chan, pri) { register *rp, s; s = PS->integ; rp = u.u_procp; if(pri >= 0) { if(issig()) goto psig; spl6(); rp->p_wchan = chan; rp->p_stat = SWAIT; rp->p_pri = pri; spl0(); if(runin != 0) { runin = 0; wakeup(&runin); } swtch(); if(issig()) goto psig; } else { spl6(); rp->p_wchan = chan; rp->p_stat = SSLEEP; rp->p_pri = pri; spl0(); swtch(); } PS->integ = s; return; /* * If priorit n; register struct proc *rp; if(p == NULL) p = &proc[0]; /* * Remember stack of caller */ savu(u.u_rsav); /* * Switch to scheduler's stack */ retu(proc[0].p_addr); loop: runrun = 0; rp = p; p = NULL; n = 128; /* * Search for highest-priority runnable process */ i = NPROC; do { rp++; if(rp >= &proc[NPROC]) rp = &proc[0]; if(rp->p_stat==SRUN && (rp->p_flag&SLOAD)!=0) { if(rp->p_pri < n) { p = rp; n = rp->p_pri; } } } while(--i); /* * If no process is l. * Search for a terminated (zombie) child, * finally lay it to rest, and collect its status. * Look also for stopped (traced) children, * and pass back status from them. */ wait() { register f, *bp; register struct proc *p; f = 0; loop: for(p = &proc[0]; p < &proc[NPROC]; p++) if(p->p_ppid == u.u_procp->p_pid) { f++; if(p->p_stat == SZOMB) { u.u_ar0[R0] = p->p_pid; bp = bread(swapdev, f=p->p_addr); mfree(swapmap, 1, f); p->p_stat = NULL; p->p_pid = 0; p->p_ppid = 0; p-y was low (>=0) and * there has been a signal, * execute non-local goto to * the qsav location. * (see trap1/trap.c) */ psig: aretu(u.u_qsav); } /* * Wake up all processes sleeping on chan. */ wakeup(chan) { register struct proc *p; register c, i; c = chan; p = &proc[0]; i = NPROC; do { if(p->p_wchan == c) { setrun(p); } p++; } while(--i); } /* * Set the process running; * arrange for it to be swapped in if necessary. */ setrun(p) { register struct proc *rp; rp = p; rprunnable, idle. */ if(p == NULL) { p = rp; idle(); goto loop; } rp = p; curpri = n; /* * Switch to stack of the new process and set up * his segmentation registers. */ retu(rp->p_addr); sureg(); /* * If the new process paused because it was * swapped out, set the stack level to the last call * to savu(u_ssav). This means that the return * which is executed immediately after the call to aretu * actually returns from the last routine which did * the savu. * * You are not>p_sig = 0; p->p_ttyp = 0; p->p_flag = 0; p = bp->b_addr; u.u_cstime[0] =+ p->u_cstime[0]; dpadd(u.u_cstime, p->u_cstime[1]); dpadd(u.u_cstime, p->u_stime); u.u_cutime[0] =+ p->u_cutime[0]; dpadd(u.u_cutime, p->u_cutime[1]); dpadd(u.u_cutime, p->u_utime); u.u_ar0[R1] = p->u_arg[0]; brelse(bp); return; } if(p->p_stat == SSTOP) { if((p->p_flag&SWTED) == 0) { p->p_flag =| SWTED; u.u_ar0[R0] = p->p_pid; u.u_ar0[R1] = (p->p_sig<<8) | 0177; return; } ->p_wchan = 0; rp->p_stat = SRUN; if(rp->p_pri < curpri) runrun++; if(runout != 0 && (rp->p_flag&SLOAD) == 0) { runout = 0; wakeup(&runout); } } /* * Set user priority. * The rescheduling flag (runrun) * is set if the priority is higher * than the currently running process. */ setpri(up) { register *pp, p; pp = up; p = (pp->p_cpu & 0377)/16; p =+ PUSER + pp->p_nice; if(p > 127) p = 127; if(p > curpri) runrun++; pp->p_pri = p; } /* * The main loop of the scheduling (swapping) * expected to understand this. */ if(rp->p_flag&SSWAP) { rp->p_flag =& ~SSWAP; aretu(u.u_ssav); } /* * The value returned here has many subtle implications. * See the newproc comments. */ return(1); } /* * Create a new process-- the internal version of * sys fork. * It returns 1 in the new process. * How this happens is rather hard to understand. * The essential fact is that the new process is created * in such a way that appears to have started executing * in the same call to newproc p->p_flag =& ~(STRC|SWTED); setrun(p); } } if(f) { sleep(u.u_procp, PWAIT); goto loop; } u.u_error = ECHILD; } /* * fork system call. */ fork() { register struct proc *p1, *p2; p1 = u.u_procp; for(p2 = &proc[0]; p2 < &proc[NPROC]; p2++) if(p2->p_stat == NULL) goto found; u.u_error = EAGAIN; goto out; found: if(newproc()) { u.u_ar0[R0] = p1->p_pid; u.u_cstime[0] = 0; u.u_cstime[1] = 0; u.u_stime = 0; u.u_cutime[0] = 0; u.u_cutime[1] = 0; u.u_utime = 0; return; process. * The basic idea is: * see if anyone wants to be swapped in; * swap out processes until there is room; * swap him in; * repeat. * Although it is not remarkably evident, the basic * synchronization here is on the runin flag, which is * slept on and is set once per second by the clock routine. * Core shuffling therefore takes place once per second. * * panic: swap error -- IO error while swapping. * this is the one panic that should be * handled in a less drastic way. Its * very ha as the parent; * but in fact the code that runs is that of swtch. * The subtle implication of the returned value of swtch * (see above) is that this is the value that newproc's * caller in the new process sees. */ newproc() { int a1, a2; struct proc *p, *up; register struct proc *rpp; register *rip, n; p = NULL; /* * First, just locate a slot for a process * and copy the useful info from this process into it. * The panic "cannot happen" because fork has already * checked for the existen} u.u_ar0[R0] = p2->p_pid; out: u.u_ar0[R7] =+ 2; } /* * break system call. * -- bad planning: "break" is a dirty word in C. */ sbreak() { register a, n, d; int i; /* * set n to new data size * set d to new-old * set n to new total size */ n = (((u.u_arg[0]+63)>>6) & 01777); if(!u.u_sep) n =- nseg(u.u_tsize) * 128; if(n < 0) n = 0; d = n - u.u_dsize; n =+ USIZE+u.u_ssize; if(estabur(u.u_tsize, u.u_dsize+d, u.u_ssize, u.u_sep)) return; u.u_dsize =+ d; if(d > 0) goto biggerd. */ sched() { struct proc *p1; register struct proc *rp; register a, n; /* * find user to swap in * of users ready, select one out longest */ goto loop; sloop: runin++; sleep(&runin, PSWP); loop: spl6(); n = -1; for(rp = &proc[0]; rp < &proc[NPROC]; rp++) if(rp->p_stat==SRUN && (rp->p_flag&SLOAD)==0 && rp->p_time > n) { p1 = rp; n = rp->p_time; } if(n == -1) { runout++; sleep(&runout, PSWP); goto loop; } /* * see if there is core for that process */ spl0();ce of a slot. */ retry: mpid++; if(mpid < 0) { mpid = 0; goto retry; } for(rpp = &proc[0]; rpp < &proc[NPROC]; rpp++) { if(rpp->p_stat == NULL && p==NULL) p = rpp; if (rpp->p_pid==mpid) goto retry; } if ((rpp = p)==NULL) panic("no procs"); /* * make proc entry for new proc */ rip = u.u_procp; up = rip; rpp->p_stat = SRUN; rpp->p_flag = SLOAD; rpp->p_uid = rip->p_uid; rpp->p_ttyp = rip->p_ttyp; rpp->p_nice = rip->p_nice; rpp->p_textp = rip->p_textp; rpp->p_pid = mpid; rpp->p_ppid = rip->p_pid; rpp->p_time = 0; /* * make duplicate entries * where needed */ for(rip = &u.u_ofile[0]; rip < &u.u_ofile[NOFILE];) if((rpp = *rip++) != NULL) rpp->f_count++; if((rpp=up->p_textp) != NULL) { rpp->x_count++; rpp->x_ccount++; } u.u_cdir->i_count++; /* * Partially simulate the environment * of the new process so that when it is actually * created (by copying) it will look right. */ savu(u.u_rsav); rpp = p; u.u_procp = rpp; rip = up; n = rip->p_sizeUNT]; ip++) if(ip->m_inodp == p) { dev = ip->m_dev; ino = ROOTINO; goto loop; } panic("no imt"); } p->i_count++; p->i_flag =| ILOCK; return(p); } if(ip==NULL && p->i_count==0) ip = p; } if((p=ip) == NULL) { printf("Inode table overflow\n"); u.u_error = ENFILE; return(NULL); } p->i_dev = dev; p->i_number = ino; p->i_flag = ILOCK; p->i_count++; p->i_lastr = -1; ip = bread(dev, ldiv(ino+31,16)); /* * Check I/O errors */ if (ip->b_flags&B_ERROR)Dx & 6  w h 5555_@ @mȥ-@ @mH7 y  Av=@ @m5N %f@ pTof & 5N @ pN %o u- _( \ 5 \ 5 _ % @ T X 7 @ T 7 S P L7 p  5 lf > 7@<87 6  o@ &T 5 > N; a1 = rip->p_addr; rpp->p_size = n; a2 = malloc(coremap, n); /* * If there is not enough core for the * new process, swap out the current process to generate the * copy. */ if(a2 == NULL) { rip->p_stat = SIDL; rpp->p_addr = a1; savu(u.u_ssav); xswap(rpp, 0, 0); rpp->p_flag =| SSWAP; rip->p_stat = SRUN; } else { /* * There is core, so just copy. */ rpp->p_addr = a2; while(n--) copyseg(a1++, a2++); } u.u_procp = rip; return(0); } /* * Change the size of the data+sta { brelse(ip); iput(p); return(NULL); } ip1 = ip->b_addr + 32*lrem(ino+31, 16); ip2 = &p->i_mode; while(ip2 < &p->i_addr[8]) *ip2++ = *ip1++; brelse(ip); return(p); } /* * Decrement reference count of * an inode structure. * On the last reference, * write the inode out and if necessary, * truncate and deallocate the file. */ iput(p) struct inode *p; { register *rp; rp = p; if(rp->i_count == 1) { rp->i_flag =| ILOCK; if(rp->i_nlink <= 0) { itrunc(rp); rp->i_mode = 0; ifr x  > N X  u- [ X5  @ A pu-@ @ @ @ 0   %% o|  > w<w * j w(w 7 &@e77 @e7f @_ z  4%#  @e7@e75 RARWp Aa1ARWp Aa1 R%R Z 7~0 Z 7j0@eT7^@eT7H7 Fifck regions of the process. * If the size is shrinking, it's easy-- just release the extra core. * If it's growing, and there is core, just allocate it * and copy the image, taking care to reset registers to account * for the fact that the system's stack has moved. * If there is no core, arrange for the process to be swapped * out after adjusting the size requirement-- when it comes * in, enough core will be allocated. * Because of the ssave and SSWAP flags, control will * resume after the swap in see(rp->i_dev, rp->i_number); } iupdat(rp, time); prele(rp); rp->i_flag = 0; rp->i_number = 0; } rp->i_count--; prele(rp); } /* * Check accessed and update flags on * an inode structure. * If either is on, update the inode * with the corresponding dates * set to the argument tm. */ iupdat(p, tm) int *p; int *tm; { register *ip1, *ip2, *rp; int *bp, i; rp = p; if((rp->i_flag&(IUPD|IACC)) != 0) { if(getfs(rp->i_dev)->s_ronly) return; i = rp->i_number+31; bp = bread(rp->i_dev,   & 7"  & X #T &    $   z  z w w - ?5 5%#__ _%a%z%A%Z%__*N  d5%a%z%A%Z%0%9%_  Nf Z 5%%- __-    5% @wr %_@p N b 5%  bwtch, which executes the return * from this stack level. * * After the expansion, the caller will take care of copying * the user's stack towards or away from the data area. */ expand(newsize) { int i, n; register *p, a1, a2; p = u.u_procp; n = p->p_size; p->p_size = newsize; a1 = p->p_addr; if(n >= newsize) { mfree(coremap, n-newsize, a1+newsize); return; } savu(u.u_rsav); a2 = malloc(coremap, newsize); if(a2 == NULL) { savu(u.u_ssav); xswap(p, 1, n); p->p_flag =| SSWAP; swtch(ldiv(i,16)); ip1 = bp->b_addr + 32*lrem(i, 16); ip2 = &rp->i_mode; while(ip2 < &rp->i_addr[8]) *ip1++ = *ip2++; if(rp->i_flag&IACC) { *ip1++ = time[0]; *ip1++ = time[1]; } else ip1 =+ 2; if(rp->i_flag&IUPD) { *ip1++ = *tm++; *ip1++ = *tm; } bwrite(bp); } } /* * Free all the disk blocks associated * with the specified inode structure. * The blocks of the file are removed * in reverse order. This FILO * algorithm will tend to maintain * a contiguous free list much lon@5%'%"TN  %  N %\ 4  *5@-7 %)? 5%  - f N0  |v_N  5% _ %_@ _w * <O X Nf X   w w e-T  e-e7w w  w w 7 @/w  h5%/ Z5%/ ` F7|%*7 r 45@X7z  y-6); /* no return */ } p->p_addr = a2; for(i=0; ip_addr); sureg(); } ger * than FIFO. */ itrunc(ip) int *ip; { register *rp, *bp, *cp; int *dp, *ep; rp = ip; if((rp->i_mode&(IFCHR&IFBLK)) != 0) return; for(ip = &rp->i_addr[7]; ip >= &rp->i_addr[0]; ip--) if(*ip) { if((rp->i_mode&ILARG) != 0) { bp = bread(rp->i_dev, *ip); for(cp = bp->b_addr+512; cp >= bp->b_addr; cp--) if(*cp) { if(ip == &rp->i_addr[7]) { dp = bread(rp->i_dev, *cp); for(ep = dp->b_addr+512; ep >= dp->b_addr; ep--) if(*ep) free(rp->i_dev, *ep); brelse(dp); 22  *w   45- z   5  w@w  u5 um@ 5A 7ruWp mu8uu@ H@ ȋ@e@- Nf J @w:TWp m:Be ( 5 @@mH  % w  w@5   w@ w 5 u 5 / @ 5%% @ ȥ.@w@ w *RUADGJMPS } free(rp->i_dev, *cp); } brelse(bp); } free(rp->i_dev, *ip); *ip = 0; } rp->i_mode =& ~ILARG; rp->i_size0 = 0; rp->i_size1 = 0; rp->i_flag =| IUPD; } /* * Make a new file. */ maknode(mode) { register *ip; ip = ialloc(u.u_pdir->i_dev); if (ip==NULL) return(NULL); ip->i_flag =| IACC|IUPD; ip->i_mode = mode|IALLOC; ip->i_nlink = 1; ip->i_uid = u.u_uid; ip->i_gid = u.u_gid; wdir(ip); return(ip); } /* * Write a directory entry with * parameters left as side effects * u@ ȋ@p@ww  57Nf Nb X  Ne @-@E5% %N| X d@tE %q X wzw h  A H@wRw @N %ou@ 5@ H@ ȋ wu@e5w   wN jw ~w De   % w7 7 ׯ - (w 7  .w eB J ӕ- R r f # #include "../param.h" #include "../systm.h" #include "../user.h" #include "../inode.h" #include "../filsys.h" #include "../conf.h" #include "../buf.h" /* * Look up an inode by device,inumber. * If it is in core (in the inode structure), * honor the locking protocol. * If it is not in core, read it in from the * specified device. * If the inode is mounted on, perform * the indicated indirection. * In all cases, a pointer to a locked * inode structure is returned. * * printf warning: no inodes -to a call to namei. */ wdir(ip) int *ip; { register char *cp1, *cp2; u.u_dent.u_ino = ip->i_number; cp1 = &u.u_dent.u_name[0]; for(cp2 = &u.u_dbuf[0]; cp2 < &u.u_dbuf[DIRSIZ];) *cp1++ = *cp2++; u.u_count = DIRSIZ+2; u.u_segflg = 1; u.u_base = &u.u_dent; writei(u.u_pdir); iput(u.u_pdir); } e0 @ >>  ҋ D~8  ӕ0 $f v Le0 9e    7 we&  m   ~    ~ w7 z  p l 0   X Wp `e0eӕ?f@  ,6 P , &  @f  T7r  T  -  f@w fw.w*  w~fwp7 fwJA 7 - if the inode * structure is full * panic: no imt -- if the mounted file * system is not in the mount table. * "cannot happen" */ iget(dev, ino) { register struct inode *p; register *ip2; int *ip1; register struct mount *ip; loop: ip = NULL; for(p = &inode[0]; p < &inode[NINODE]; p++) { if(dev==p->i_dev && ino==p->i_number) { if((p->i_flag&ILOCK) != 0) { p->i_flag =| IWANT; sleep(p, PINOD); goto loop; } if((p->i_flag&IMOUNT) != 0) { for(ip = &mount[0]; ip < &mount[NMOBEHKNQTWX[L fAW,f B@ 8 @&61fA   @ @e7v1@ 1wfwXwTw fw>AQ  OfA  ^ y   F y @0fA  @9 fA @e&7w7@w7 fAW @wz fV1V7n 5 ewZ 5& w& L& H& D& @& <&~ 8&x 4&r 0&l ,&f (&` $&Z &T &N &H &B &< &6 &0 &* f& fw~w f "& w }f@fA w,6w"0e"w"&ew"@lw"Alew &@t`e @& HADCBF7F2cpvpl~ */usr/fort/fc1/usr/fort/fc2%s: as-f.tmp1/bin/asa.outa.outmove failed: %s ld-x/lib/fr0.o-lf/lib/filib.a-l/bin/ldf.tmp1de# /* */ /* * RP disk driver */ #include "../param.h" #include "../buf.h" #include "../conf.h" #include "../user.h" struct { int rpds; int rper; int rpcs; int rpwc; int rpba; int rpca; int rpda; }; #define RPADDR 0176710 #define NRP 8 struct { char *nblocks; int cyloff; } rp_sizes[] { 40600, 0, /* cyl 0 thru 202 */ 40600, 203, /* cyl 203 thru 405 */ 9200, 0, /* cyl 0 thru 45 */ 9200, 360, /* cyl 360 thru 405 */ -1, 0, /* cyl 0 thru 327 */ -1, 78, /* cyl 78 thru 405 */ 15600, 0, SED; spl0(); } else pcleader(); } pcread() { register int c; spl4(); do { while ((c = getc(&pc11.pcin)) < 0) { if (pc11.pcstate==EOF) goto out; if ((PCADDR->pcrcsr&(ERROR|BUSY|DONE))==0) PCADDR->pcrcsr =| IENABLE|RDRENB; sleep(&pc11.pcin, PCIPRI); } } while (passc(c)>=0); out: spl0(); } pcwrite() { register int c; while ((c=cpass())>=0) pcoutput(c); } pcstart() { register int c; if (PCADDR->pcpcsr&DONE && (c = getc(&pc11.pcout)) >= 0) PCADDR->pcpbuf = c; } pcrinfineincludeCan't creat %s Undefined controlNested 'include'Missing file %sControl syntax%d: Line overflowCan't find %s Try again Fatal error in %s d$ o x` fn e c s l| rT  0 %ew /* cyl 0 thru 77 */ 15600, 328, /* cyl 328 thru 405 */ }; struct devtab rptab; struct buf rrpbuf; #define GO 01 #define RESET 0 #define HSEEK 014 #define IENABLE 0100 #define READY 0200 #define SUFU 01000 #define SUSU 02000 #define SUSI 04000 #define HNF 010000 /* * Use av_back to save track+sector, * b_resid for cylinder. */ #define trksec av_back #define cylin b_resid rpstrategy(abp) struct buf *abp; { register struct buf *bp; register char *p1, *p2; bp = abp; if(bp->b_flags&B_PHYS) mat() { if (pc11.pcstate==WAITING) { if (PCADDR->pcrcsr&ERROR) return; pc11.pcstate = READING; } if (pc11.pcstate==READING) { if (PCADDR->pcrcsr&ERROR) pc11.pcstate = EOF; else { putc(PCADDR->pcrbuf, &pc11.pcin); if (pc11.pcin.cc < PCIHWAT) PCADDR->pcrcsr =| IENABLE|RDRENB; } wakeup(&pc11.pcin); } } pcpint() { pcstart(); if (pc11.pcout.cc <= PCOLWAT) wakeup(&pc11.pcout); } pcoutput(c) { if (PCADDR->pcpcsr&ERROR) { u.u_error = EIO; return; } if (pc11.pcout.cc >= PC# /* */ /* * Memory special file * minor device 0 is physical memory * minor device 1 is kernel memory * minor device 2 is EOF/RATHOLE */ #include "../param.h" #include "../user.h" #include "../conf.h" #include "../seg.h" mmread(dev) { register c, bn, on; int a, d; if(dev.d_minor == 2) return; do { bn = lshift(u.u_offset, -6); on = u.u_offset[1] & 077; a = UISA->r[0]; d = UISD->r[0]; spl7(); UISA->r[0] = bn; UISD->r[0] = 077406; if(dev.d_minor == 1) UISA->r[0] = (ka6-6)->rpalloc(bp); p1 = &rp_sizes[bp->b_dev.d_minor&07]; if (bp->b_dev.d_minor >= (NRP<<3) || bp->b_blkno >= p1->nblocks) { bp->b_flags =| B_ERROR; iodone(bp); return; } bp->av_forw = 0; bp->cylin = p1->cyloff; p1 = bp->b_blkno; p2 = lrem(p1, 10); p1 = ldiv(p1, 10); bp->trksec = (p1%20)<<8 | p2; bp->cylin =+ p1/20; spl5(); if ((p1 = rptab.d_actf)==0) rptab.d_actf = bp; else { for (; p2 = p1->av_forw; p1 = p2) { if (p1->cylin <= bp->cylin && bp->cylin < p2->cylin || p1->cylinOHWAT) sleep(&pc11.pcout, PCOPRI); putc(c, &pc11.pcout); spl4(); pcstart(); spl0(); } pcleader() { register int i; i = 100; do pcoutput(0); while (--i); } [(bn>>7)&07] + (bn & 0177); c = fuibyte(on); UISA->r[0] = a; UISD->r[0] = d; spl0(); } while(u.u_error==0 && passc(c)>=0); } mmwrite(dev) { register c, bn, on; int a, d; if(dev.d_minor == 2) { c = u.u_count; u.u_count = 0; u.u_base =+ c; dpadd(u.u_offset, c); return; } for(;;) { bn = lshift(u.u_offset, -6); on = u.u_offset[1] & 077; if ((c=cpass())<0 || u.u_error!=0) break; a = UISA->r[0]; d = UISD->r[0]; spl7(); UISA->r[0] = bn; UISD->r[0] = 077406; if(dev.d_m >= bp->cylin && bp->cylin > p2->cylin) break; } bp->av_forw = p2; p1->av_forw = bp; } if (rptab.d_active==0) rpstart(); spl0(); } rpstart() { register struct buf *bp; if ((bp = rptab.d_actf) == 0) return; rptab.d_active++; RPADDR->rpda = bp->trksec; devstart(bp, &RPADDR->rpca, bp->cylin, bp->b_dev.d_minor>>3); } rpintr() { register struct buf *bp; register int ctr; if (rptab.d_active == 0) return; bp = rptab.d_actf; rptab.d_active = 0; if (RPADDR->rpcs < 0) { /* errfilopsvy|inor == 1) UISA->r[0] = (ka6-6)->r[(bn>>7)&07] + (bn & 0177); suibyte(on, c); UISA->r[0] = a; UISD->r[0] = d; spl0(); } } or bit */ deverror(bp, RPADDR->rper, RPADDR->rpds); if(RPADDR->rpds & (SUFU|SUSI|HNF)) { RPADDR->rpcs.lobyte = HSEEK|GO; ctr = 0; while ((RPADDR->rpds&SUSU) && --ctr); } RPADDR->rpcs = RESET|GO; ctr = 0; while ((RPADDR->rpcs&READY) == 0 && --ctr); if (++rptab.d_errcnt <= 10) { rpstart(); return; } bp->b_flags =| B_ERROR; } rptab.d_errcnt = 0; rptab.d_actf = bp->av_forw; bp->b_resid = RPADDR->rpwc; iodone(bp); rpstart(); } rpread(dev) { if(rpphys(dev)) physio(rpstra# /* */ /* * TJU16 tape driver */ #include "../param.h" #include "../buf.h" #include "../conf.h" #include "../user.h" struct { int htcs1; int htwc; int htba; int htfc; int htcs2; int htds; int hter; int htas; int htck; int htdb; int htmr; int htdt; int htsn; int httc; int htbae; /* 11/70 bus extension */ }; struct devtab httab; struct buf rhtbuf; #define NUNIT 8 char h_openf[NUNIT]; char *h_blkno[NUNIT]; char *h_nxrec[NUNIT]; #define HTADDR 0172440 #define GO 01 #define NOP 0 #defi# /* */ /* * RF disk driver */ #include "../param.h" #include "../buf.h" #include "../conf.h" #include "../user.h" struct { int rfcs; int rfwc; int rfba; int rfda; int rfdae; }; struct devtab rftab; struct buf rrfbuf; #define NRFBLK 1024 #define RFADDR 0177460 #define GO 01 #define RCOM 02 #define WCOM 04 #define CTLCLR 0400 #define IENABLE 0100 rfstrategy(abp) struct buf *abp; { register struct buf *bp; bp = abp; if(bp->b_flags&B_PHYS) mapalloc(bp); if (bp->b_blkno >= NRFBLK*(bp->b_detegy, &rrpbuf, dev, B_READ); } rpwrite(dev) { if(rpphys(dev)) physio(rpstrategy, &rrpbuf, dev, B_WRITE); } rpphys(dev) { register c; c = lshift(u.u_offset, -9); c =+ ldiv(u.u_count+511, 512); if(c > rp_sizes[dev.d_minor & 07].nblocks) { u.u_error = ENXIO; return(0); } return(1); } ne WEOF 026 #define SFORW 030 #define SREV 032 #define ERASE 024 #define REW 06 #define CLR 010 #define P800 01300 /* 800 + pdp11 mode */ #define P1600 02300 /* 1600 + pdp11 mode */ #define IENABLE 0100 #define CRDY 0200 #define EOF 04 #define DRY 0200 #define MOL 010000 #define PIP 020000 #define ERR 040000 #define SSEEK 1 #define SIO 2 htopen(dev, flag) { register unit; unit = dev.d_minor&077; if (unit >= NUNIT || h_openf[unit]) u.u_error = ENXIO; else { h_openf[unit]++; h_blkno[unit] = 0; v.d_minor+1)) { bp->b_flags =| B_ERROR; iodone(bp); return; } bp->av_forw = 0; spl5(); if (rftab.d_actf==0) rftab.d_actf = bp; else rftab.d_actl->av_forw = bp; rftab.d_actl = bp; if (rftab.d_active==0) rfstart(); spl0(); } rfstart() { register struct buf *bp; if ((bp = rftab.d_actf) == 0) return; rftab.d_active++; RFADDR->rfdae = bp->b_blkno.hibyte; devstart(bp, &RFADDR->rfda, bp->b_blkno<<8, 0); } rfintr() { register struct buf *bp; if (rftab.d_active == 0) return; bp = # /* */ /* * PC-11 Paper tape reader/punch driver */ #include "../param.h" #include "../conf.h" #include "../user.h" #define PCADDR 0177550 #define CLOSED 0 #define WAITING 1 #define READING 2 #define EOF 3 #define RDRENB 01 #define IENABLE 0100 #define DONE 0200 #define BUSY 04000 #define ERROR 0100000 #define PCIPRI 30 #define PCOPRI 40 #define PCOLWAT 50 #define PCOHWAT 100 #define PCIHWAT 250 struct { int pcrcsr; int pcrbuf; int pcpcsr; int pcpbuf; }; struct clist { int cc; int cf; int h_nxrec[unit] = 65535; hcommand(dev, NOP); } } htclose(dev, flag) { register int unit; unit = dev.d_minor&077; h_openf[unit] = 0; if (flag) { hcommand(dev, WEOF); hcommand(dev, WEOF); } hcommand(dev, REW); } hcommand(dev, com) { register unit; extern lbolt; unit = dev.d_minor; while (httab.d_active || (HTADDR->htcs1 & CRDY)==0) sleep(&lbolt, 1); HTADDR->htcs2 = (unit>>3)&07; while((HTADDR->htds&DRY) == 0) sleep(&lbolt, 1); if(unit >= 64) HTADDR->httc = P800 | (unit&07); else rftab.d_actf; rftab.d_active = 0; if (RFADDR->rfcs < 0) { /* error bit */ deverror(bp, RFADDR->rfcs, RFADDR->rfdae); RFADDR->rfcs = CTLCLR; if (++rftab.d_errcnt <= 10) { rfstart(); return; } bp->b_flags =| B_ERROR; } rftab.d_errcnt = 0; rftab.d_actf = bp->av_forw; iodone(bp); rfstart(); } rfread(dev) { physio(rfstrategy, &rrfbuf, dev, B_READ); } rfwrite(dev) { physio(rfstrategy, &rrfbuf, dev, B_WRITE); } cl; }; struct pc11 { int pcstate; struct clist pcin; struct clist pcout; } pc11; pcopen(dev, flag) { extern lbolt; if (flag==0) { if (pc11.pcstate!=CLOSED) { u.u_error = ENXIO; return; } pc11.pcstate = WAITING; while(pc11.pcstate==WAITING) { PCADDR->pcrcsr = IENABLE|RDRENB; sleep(&lbolt, PCIPRI); } } else { PCADDR->pcpcsr =| IENABLE; pcleader(); } } pcclose(dev, flag) { if (flag==0) { spl4(); while (getc(&pc11.pcin) >= 0); PCADDR->pcrcsr = 0; pc11.pcstate = CLO HTADDR->httc = P1600 | (unit&07); while((HTADDR->htds&(MOL|PIP)) != MOL) sleep(&lbolt, 1); HTADDR->htcs1 = com | GO; } htstrategy(abp) struct buf *abp; { register struct buf *bp; register char **p; bp = abp; p = &h_nxrec[bp->b_dev.d_minor&077]; if (*p <= bp->b_blkno) { if (*p < bp->b_blkno) { bp->b_flags =| B_ERROR; iodone(bp); return; } if (bp->b_flags&B_READ) { clrbuf(bp); iodone(bp); return; } } if ((bp->b_flags&B_READ)==0) *p = bp->b_blkno + 1; bp->av_forw = 0; spl5(); if (httab.d_actf==0) httab.d_actf = bp; else httab.d_actl->av_forw = bp; httab.d_actl = bp; if (httab.d_active==0) htstart(); spl0(); } htstart() { register struct buf *bp; register int unit; register char *blkno; loop: if ((bp = httab.d_actf) == 0) return; unit = bp->b_dev.d_minor; HTADDR->htcs2 = (unit>>3)&07; if(unit >= 64) HTADDR->httc = P800 | (unit&07); else HTADDR->httc = P1600 | (unit&07); unit =& 077; blkno = h_blkno[unit]; if (h_openf[unit] < 0 || (HTADD0) { com =| TREV; tctab.d_active = SREV; } *tccmp = com; } tcintr() { register struct buf *bp; register int *tccmp; register int *tcdtp; tccmp = &TCADDR->tccm; tcdtp = &TCADDR->tccsr; bp = tctab.d_actf; if (*tccmp&TAPERR) { if((*tcdtp&(ENDZ|BLKM)) == 0) deverror(bp, *tcdtp, 0); if(*tcdtp & (ILGOP|SELERR)) { tcper[bp->b_dev&07]++; tctab.d_errcnt = 0; } *tccmp =& ~TAPERR; if (--tctab.d_errcnt <= 0) { bp->b_flags =| B_ERROR; goto done; } if (*tccmp&TREV) { setforwdp_bufp; int dp_nxmit; char dp_state; char dp_timer; int dp_proc; } dp11; /* device registers */ struct { int dprcsr; char dprbuf; char dpsyn0; int dptcsr; char dptbuf; char dpsyn1; }; /* bits */ #define ODDPAR 010000 #define IENABLE 0100 #define HDUPLX 02 #define CTRANS 0100000 #define RORUN 040000 #define RING 020000 #define DSRDY 010000 #define CARRIER 04000 #define DONE 0200 #define IENABLE 0100 #define SIENABL 040 #define WRITE 1 #define READ 0 #define DTRDY 01 #define RCVACT 04000 #defR->htcs1 & CRDY)==0) { bp->b_flags =| B_ERROR; httab.d_actf = bp->av_forw; iodone(bp); goto loop; } if (blkno != bp->b_blkno) { httab.d_active = SSEEK; if (blkno < bp->b_blkno) { HTADDR->htfc = blkno - bp->b_blkno; HTADDR->htcs1 = SFORW|IENABLE|GO; } else { if (bp->b_blkno == 0) HTADDR->htcs1 = REW|IENABLE|GO; else { HTADDR->htfc = bp->b_blkno - blkno; HTADDR->htcs1 = SREV|IENABLE|GO; } } return; } httab.d_active = SIO; rhstart(bp, &HTADDR->htfc, bp->b_wcoun: tctab.d_active = SFORW; *tccmp =& ~TREV; } else { setback: tctab.d_active = SREV; *tccmp =| TREV; } (*tccmp).lobyte = IENABLE|RNUM|GO; return; } tcdtp = &TCADDR->tcdt; switch (tctab.d_active) { case SIO: done: tctab.d_active = 0; if (tctab.d_actf = bp->av_forw) tcstart(); else TCADDR->tccm.lobyte = SAT|GO; iodone(bp); return; case SFORW: if (*tcdtp > bp->b_blkno) goto setback; if (*tcdtp < bp->b_blkno) goto setforw; *--tcdtp = bp->b_addr; /* core ine DPADDR 0174770 #define DPPRI 5 #define SYN 026 /* (receive) sync character */ /* * The open fails unless the device is not open or * the opening process is the one that has it open already. */ dpopen(dev, flag) { int dptimeout(); if (dp11.dp_proc!=0 && dp11.dp_proc!=u.u_procp) { u.u_error = ENXIO; return; } dp11.dp_proc = u.u_procp; dp11.dp_state = READ; if (dp11.dp_buf==0) { dp11.dp_buf = getblk(NODEV); dp11.dp_bufp = dp11.dp_buf->b_addr; dp11.dp_timer = HZ; timeout(dptimeout, 0t<<1, &HTADDR->htbae); } htintr() { register struct buf *bp; register int unit; if ((bp = httab.d_actf)==0) return; unit = bp->b_dev.d_minor&077; if (HTADDR->htcs1 & ERR) { /* deverror(bp, HTADDR->hter, 0); */ if(HTADDR->htds&EOF) { if(bp != &rhtbuf && h_openf[unit]) h_openf[unit] = -1; } HTADDR->htcs1 = ERR|CLR|GO; if ((HTADDR->htds&DRY)!=0 && httab.d_active==SIO) { if (++httab.d_errcnt < 10) { h_blkno[unit]++; httab.d_active = 0; htstart(); return; } } address */ *--tcdtp = bp->b_wcount; tccmp->lobyte = ((bp->b_xmem & 03) << 4) | IENABLE|GO | (bp->b_flags&B_READ?RDATA:WDATA); tctab.d_active = SIO; return; case SREV: if (*tcdtp+3 > bp->b_blkno) goto setback; goto setforw; } } , HZ); } DPADDR->dpsyn0 = SYN; DPADDR->dprcsr = HDUPLX|IENABLE; DPADDR->dptcsr = IENABLE|SIENABL|DTRDY; } dpclose() { DPADDR->dprcsr = 0; DPADDR->dptcsr = 0; dp11.dp_timer = 0; dp11.dp_proc = 0; if (dp11.dp_buf != 0) { brelse(dp11.dp_buf); dp11.dp_buf = 0; } } /* * Read waits until: * there is loss of "data set ready", or * a timeout occurs, or * a full record has been received. * The former two result in an error. */ dpread() { register char *bp, **epp; bp = dp11.dp_buf->b_addr;bp->b_flags =| B_ERROR; httab.d_active = SIO; } if (httab.d_active == SIO) { httab.d_errcnt = 0; h_blkno[unit]++; httab.d_actf = bp->av_forw; httab.d_active = 0; iodone(bp); bp->b_resid = HTADDR->htfc; } else h_blkno[unit] = bp->b_blkno; htstart(); } htread(dev) { htphys(dev); physio(htstrategy, &rhtbuf, dev, B_READ); u.u_count = -rhtbuf.b_resid; } htwrite(dev) { htphys(dev); physio(htstrategy, &rhtbuf, dev, B_WRITE); u.u_count = 0; } htphys(dev) { register unit, a; unit = de# /* */ /* * DN-11 ACU interface */ #include "../param.h" #include "../conf.h" #include "../user.h" struct dn { struct { char dn_stat; char dn_reg; } dn11[3]; } #define DNADDR 0175200 #define PWI 00200 #define ACR 00100 #define DLO 0020 #define DONE 0200 #define IENABLE 0100 #define DSS 040 #define PND 020 #define MENABLE 04 #define DPR 02 #define CRQ 01 #define DNPRI 5 dnopen(dev, flag) { register struct dn *dp; register int rdev; rdev = dev.d_minor; dp = &DNADDR->dn11[rdev]; if (dp-> epp = &dp11.dp_bufp; for(;;) { if(dpwait()) return; if (*epp > bp) break; spl6(); if (dp11.dp_timer <= 1) { spl0(); return; } sleep(&dp11, DPPRI); spl0(); } iomove(dp11.dp_buf, 0, min(u.u_count, *epp-bp), B_READ); } /* * write checks to make sure that the data set is not reading, * and that it is ready. Then the record is copied * and transmission started. */ dpwrite() { register char *bp; if (u.u_count==0 || dpwait()) return; dp11.dp_state = WRITE; bp = dp11.dp_bv.d_minor; a = lshift(u.u_offset, -9); h_blkno[unit] = a; h_nxrec[unit] = ++a; } dn_reg&(PWI|DLO)) u.u_error = ENXIO; else { DNADDR->dn11[0].dn_stat =| MENABLE; dp->dn_stat = IENABLE|MENABLE|CRQ; } } dnclose(dev) { DNADDR->dn11[dev.d_minor].dn_stat =& MENABLE; } dnwrite(dev) { register struct dn *dp; register c; extern lbolt; dp = &DNADDR->dn11[dev.d_minor]; for(;;) { while ((dp->dn_stat&DONE)==0) sleep(DNADDR, DNPRI); dp->dn_stat =& ~DONE; contin: if (dp->dn_reg&(PWI|ACR)) { u.u_error = EIO; return; } if (dp->dn_stat&DSS) return; c = 0; iuf->b_addr; dp11.dp_bufp = bp; if (u.u_count>512) u.u_count = 512; dp11.dp_nxmit = u.u_count; iomove(dp11.dp_buf, 0, u.u_count, B_WRITE); dpstart(); } /* * If "data set ready" is down return an error; otherwise * wait until the dataset is in read state with no carrier, * which means a record has just been received. */ dpwait() { for(;;) { if ((DPADDR->dptcsr&DSRDY)==0 || dp11.dp_buf==0) { u.u_error = EIO; return(1); } spl6(); if (dp11.dp_state==READ && (DPADDR->dptcsr&CARRIER)==0)# /* */ /* * TC-11 DECtape driver */ #include "../param.h" #include "../conf.h" #include "../buf.h" #include "../user.h" struct { int tccsr; int tccm; int tcwc; int tcba; int tcdt; }; struct devtab tctab; char tcper[8]; #define TCADDR 0177340 #define NTCBLK 578 #define TAPERR 0100000 #define TREV 04000 #define READY 0200 #define IENABLE 0100 #define UPS 0200 #define ENDZ 0100000 #define BLKM 02000 #define ILGOP 010000 #define SELERR 04000 #define SAT 0 #define RNUM 02 #define RDATA 04 #definef (u.u_count==0 || (dp->dn_stat&PND)==0 || (c=cpass())<0) continue; if (c=='-') { sleep(&lbolt, DNPRI); sleep(&lbolt, DNPRI); goto contin; } dp->dn_reg = c-'0'; dp->dn_stat =| DPR; } } dnint(dev) { wakeup(DNADDR); } { spl0(); return(0); } sleep(&dp11, DPPRI); spl0(); } } /* * Start off the next character to be transmitted; * when the record is done, drop back into read state. */ dpstart() { register int c; extern char partab[]; dp11.dp_timer = 10; if (--dp11.dp_nxmit >= 0) { c = (*dp11.dp_bufp++) & 0177; DPADDR->dptbuf = c | ~partab[c]&0200; } else { dp11.dp_bufp = dp11.dp_buf->b_addr; dp11.dp_state = READ; } } /* * Count down the DP timer (once per second) * If it runs out, it presu SST 010 #define WDATA 014 #define GO 01 #define SFORW 1 #define SREV 2 #define SIO 3 tcclose(dev) { bflush(dev); tcper[dev&07] = 0; } tcstrategy(abp) struct buf *abp; { register struct buf *bp; bp = abp; if(bp->b_flags&B_PHYS) mapalloc(bp); if(bp->b_blkno >= NTCBLK || tcper[bp->b_dev&07]) { bp->b_flags =| B_ERROR; iodone(bp); return; } bp->av_forw = 0; spl6(); if (tctab.d_actf==0) tctab.d_actf = bp; else tctab.d_actl->av_forw = bp; tctab.d_actl = bp; if (tctab.d_active==0) tcrux{~mably means the other station * won't speak. */ dptimeout() { if (dp11.dp_timer==0) return; if (--dp11.dp_timer==0) { dpturnaround(); dp11.dp_timer = 1; } timeout(dptimeout, 0, HZ); } /* * Receiver interrupt: if reading, stash character * unless there is an overrun. */ dprint() { register int c; c = DPADDR->dprbuf & 0177; if (dp11.dp_state==READ) { if ((DPADDR->dprcsr&ODDPAR) == 0) c =| 0200; if (dp11.dp_bufp < dp11.dp_buf->b_addr+512) *dp11.dp_bufp++ = c; } } /* * Transmittstart(); spl0(); } tcstart() { register struct buf *bp; register int *tccmp, com; loop: tccmp = &TCADDR->tccm; if ((bp = tctab.d_actf) == 0) return; if(tcper[bp->b_dev&07]) { if((tctab.d_actf = bp->av_forw) == 0) (*tccmp).lobyte = SAT|GO; bp->b_flags =| B_ERROR; iodone(bp); goto loop; } if (((*tccmp).hibyte&07) != bp->b_dev.d_minor) (*tccmp).lobyte = SAT|GO; tctab.d_errcnt = 20; tctab.d_active = SFORW; com = (bp->b_dev.d_minor<<8) | IENABLE|RNUM|GO; if ((TCADDR->tccsr & UPS) == # /* */ /* * DP-11 Synchronous interface driver * This driver is rather insensitive to the remote * device it talks to, which is to say most of the protocol * must be supplied by the calling program. * Exceptions: parity is even; 7 data bits per character; * max. of 512 characters per record; 10 second timeout * on waiting to receive; half-duplex transmission. */ #include "../param.h" #include "../conf.h" #include "../user.h" #include "../buf.h" /* control info */ struct { char *dp_buf; char *er interrupt: * Knock down hardware bits. * If carrier has dropped, the record is done, so turn the line around; * otherwise start another character. */ dpxint() { register int dpstat; dpstat = DPADDR->dptcsr; DPADDR->dptcsr =& ~(CTRANS|RORUN|RING|DONE); if (dpstat & (CTRANS|RORUN)) dpturnaround(); else if (dpstat&DONE && dp11.dp_state==WRITE) dpstart(); } /* * Change the state from writing to reading at the end of a record. */ dpturnaround() { DPADDR->dprcsr =& ~RCVACT; if (dp11.dp_state==WRITE) { dp11.dp_timer = 10; dp11.dp_state = READ; dp11.dp_bufp = dp11.dp_buf->b_addr; } wakeup(&dp11); } The actual structure of a clist block manipulated by * getc and putc (mch.s) */ struct cblock { struct cblock *c_next; char info[6]; }; /* The character lists-- space for 6*NCLIST characters */ struct cblock cfree[NCLIST]; /* List head for unused character blocks. */ struct cblock *cfreelist; /* * structure of device registers for KL, DL, and DC * interfaces-- more particularly, those for which the * SSTART bit is off and can be treated by general routines * (that is, not DH). */ struct { int tags&RAW)==0 && (c==CQUIT || c==CINTR)) { signal(tp, c==CINTR? SIGINT:SIGQIT); flushtty(tp); return; } if (tp->t_rawq.c_cc>=TTYHOG) { flushtty(tp); return; } if (t_flags&LCASE && c>='A' && c<='Z') c =+ 'a'-'A'; putc(c, &tp->t_rawq); if (t_flags&RAW || c=='\n' || c==004) { wakeup(&tp->t_rawq); if (putc(0377, &tp->t_rawq)==0) tp->t_delct++; } if (t_flags&ECHO) { ttyoutput(c, tp); ttstart(tp); } } /* * put character on TTY output queue, adding delays, * expanding tabs, and han# /* */ /* * RS03/04 disk driver */ #include "../param.h" #include "../buf.h" #include "../conf.h" #include "../user.h" struct { int hscs1; /* Control and Status register 1 */ int hswc; /* Word count register */ int hsba; /* UNIBUS address register */ int hsda; /* Desired address register */ int hscs2; /* Control and Status register 2 */ int hsds; /* Drive Status */ int hser; /* Error register */ int hsas; /* not used */ int hsla; /* not used */ int hsdb; /* not used */ int hsmr; /* not ustrcsr; int ttrbuf; int tttcsr; int tttbuf; }; /* * The routine implementing the gtty system call. * Just call lower level routine and pass back values. */ gtty() { int v[3]; register *up, *vp; vp = v; sgtty(vp); if (u.u_error) return; up = u.u_arg[0]; suword(up, *vp++); suword(++up, *vp++); suword(++up, *vp++); } /* * The routine implementing the stty system call. * Read in values and call lower level. */ stty() { register int *up; up = u.u_arg[0]; u.u_arg[0] = fuword(up); u.u_ardling the CR/NL bit. * It is called both from the top half for output, and from * interrupt level for echoing. * The arguments are the character and the tty structure. */ ttyoutput(ac, tp) struct tty *tp; { register int c; register struct tty *rtp; register char *colp; int ctype; rtp = tp; c = ac&0177; /* * Ignore EOT in normal mode to avoid hanging up * certain terminals. */ if (c==004 && (rtp->t_flags&RAW)==0) return; /* * Turn tabs to spaces as required */ if (c=='\t' && rtp->ted */ int hsdt; /* not used */ int hsbae; /* 11/70 bus extension */ }; struct devtab hstab; struct buf rhsbuf; #define HSADDR 0172040 #define ERR 040000 /* hscs1 - composite error */ #define GO 01 #define RCLR 010 #define DRY 0200 /* hsds - Drive Ready */ hsstrategy(abp) struct buf *abp; { register struct buf *bp; register mblks; bp = abp; mblks = 1024; /* RJS03 */ if(bp->b_dev.d_minor >= 8) mblks = 2048; /* RJS04 */ if(bp->b_blkno >= mblks) { bp->b_flags =| B_ERROR; iodone(bp); returng[1] = fuword(++up); u.u_arg[2] = fuword(++up); sgtty(0); } /* * Stuff common to stty and gtty. * Check legality and switch out to individual * device routine. * v is 0 for stty; the parameters are taken from u.u_arg[]. * c is non-zero for gtty and is the place in which the device * routines place their information. */ sgtty(v) int *v; { register struct file *fp; register struct inode *ip; if ((fp = getf(u.u_ar0[R0])) == NULL) return; ip = fp->f_inode; if ((ip->i_mode&IFMT) != IFCHR) { _flags&XTABS) { do ttyoutput(' ', rtp); while (rtp->t_col&07); return; } /* * for upper-case-only terminals, * generate escapes. */ if (rtp->t_flags&LCASE) { colp = "({)}!|^~'`"; while(*colp++) if(c == *colp++) { ttyoutput('\\', rtp); c = colp[-2]; break; } if ('a'<=c && c<='z') c =+ 'A' - 'a'; } /* * turn to if desired. */ if (c=='\n' && rtp->t_flags&CRMOD) ttyoutput('\r', rtp); if (putc(c, &rtp->t_outq)) return; /* * Calculate delay; } bp->av_forw = 0; spl5(); if (hstab.d_actf==0) hstab.d_actf = bp; else hstab.d_actl->av_forw = bp; hstab.d_actl = bp; if (hstab.d_active==0) hsstart(); spl0(); } hsstart() { register struct buf *bp; register addr; if ((bp = hstab.d_actf) == 0) return; hstab.d_active++; addr = bp->b_blkno; if(bp->b_dev.d_minor < 8) addr =<< 1; /* RJS03 */ HSADDR->hscs2 = bp->b_dev.d_minor & 07; rhstart(bp, &HSADDR->hsda, addr<<1, &HSADDR->hsbae); } hsintr() { register struct buf *bp; if (hst u.u_error = ENOTTY; return; } (*cdevsw[ip->i_addr[0].d_major].d_sgtty)(ip->i_addr[0], v); } /* * Wait for output to drain, then flush input waiting. */ wflushtty(atp) struct tty *atp; { register struct tty *tp; tp = atp; spl5(); while (tp->t_outq.c_cc) { tp->t_state =| ASLEEP; sleep(&tp->t_outq, TTOPRI); } flushtty(tp); spl0(); } /* * Initialize clist by freeing all character blocks, then count * number of character devices. (Once-only routine) */ cinit() { register int ccp; regists. * The numbers here represent clock ticks * and are not necessarily optimal for all terminals. * The delays are indicated by characters above 0200, * thus (unfortunately) restricting the transmission * path to 7 bits. */ colp = &rtp->t_col; ctype = partab[c]; c = 0; switch (ctype&077) { /* ordinary */ case 0: (*colp)++; /* non-printing */ case 1: break; /* backspace */ case 2: if (*colp) (*colp)--; break; /* newline */ case 3: ctype = (rtp->t_flags >> 8) & 03; ifab.d_active == 0) return; bp = hstab.d_actf; hstab.d_active = 0; if(HSADDR->hscs1 & ERR){ /* error bit */ deverror(bp, HSADDR->hscs2, 0); HSADDR->hscs1 = RCLR|GO; if (++hstab.d_errcnt <= 10) { hsstart(); return; } bp->b_flags =| B_ERROR; } hstab.d_errcnt = 0; hstab.d_actf = bp->av_forw; iodone(bp); hsstart(); } hsread(dev) { physio(hsstrategy, &rhsbuf, dev, B_READ); } hswrite(dev) { physio(hsstrategy, &rhsbuf, dev, B_WRITE); } er struct cblock *cp; register struct cdevsw *cdp; ccp = cfree; for (cp=(ccp+07)&~07; cp <= &cfree[NCLIST-1]; cp++) { cp->c_next = cfreelist; cfreelist = cp; } ccp = 0; for(cdp = cdevsw; cdp->d_open; cdp++) ccp++; nchrdev = ccp; } /* * flush all TTY queues */ flushtty(atp) struct tty *atp; { register struct tty *tp; register int sps; tp = atp; while (getc(&tp->t_canq) >= 0); while (getc(&tp->t_outq) >= 0); wakeup(&tp->t_rawq); wakeup(&tp->t_outq); sps = PS->integ; spl5(); while ((ctype == 1) { /* tty 37 */ if (*colp) c = max((*colp>>4) + 3, 6); } else if(ctype == 2) { /* vt05 */ c = 6; } *colp = 0; break; /* tab */ case 4: ctype = (rtp->t_flags >> 10) & 03; if(ctype == 1) { /* tty 37 */ c = 1 - (*colp | ~07); if(c < 5) c = 0; } *colp =| 07; (*colp)++; break; /* vertical motion */ case 5: if(rtp->t_flags & VTDELAY) /* tty 37 */ c = 0177; break; /* carriage return */ case 6: ctype = (rtp->t_flags >> 12) & 03; if(ctype == 1getc(&tp->t_rawq) >= 0); tp->t_delct = 0; PS->integ = sps; } /* * transfer raw input list to canonical list, * doing erase-kill processing and handling escapes. * It waits until a full line has been typed in cooked mode, * or until any character has been typed in raw mode. */ canon(atp) struct tty *atp; { register char *bp; char *bp1; register struct tty *tp; register int c; tp = atp; spl5(); while (tp->t_delct==0) { if ((tp->t_state&CARR_ON)==0) return(0); sleep(&tp->t_rawq, TTIPRI);) { /* tn 300 */ c = 5; } else if(ctype == 2) { /* ti 700 */ c = 10; } *colp = 0; } if(c) putc(c|0200, &rtp->t_outq); } /* * Restart typewriter output following a delay * timeout. * The name of the routine is passed to the timeout * subroutine and it is called during a clock interrupt. */ ttrstrt(atp) { register struct tty *tp; tp = atp; tp->t_state =& ~TIMEOUT; ttstart(tp); } /* * Start output on the typewriter. It is used from the top half * after some characters have been # /* */ /* * general TTY subroutines */ #include "../param.h" #include "../systm.h" #include "../user.h" #include "../tty.h" #include "../proc.h" #include "../inode.h" #include "../file.h" #include "../reg.h" #include "../conf.h" /* * Input mapping table-- if an entry is non-zero, when the * corresponding character is typed preceded by "\" the escape * sequence is replaced by the table value. Mostly used for * upper-case only terminals. */ char maptab[] { 000,000,000,000,004,000,000,000, 000,00 } spl0(); loop: bp = &canonb[2]; while ((c=getc(&tp->t_rawq)) >= 0) { if (c==0377) { tp->t_delct--; break; } if ((tp->t_flags&RAW)==0) { if (bp[-1]!='\\') { if (c==tp->t_erase) { if (bp > &canonb[2]) bp--; continue; } if (c==tp->t_kill) goto loop; if (c==CEOT) continue; } else if (maptab[c] && (maptab[c]==c || (tp->t_flags&LCASE))) { if (bp[-2] != '\\') c = maptab[c]; bp--; } } *bp++ = c; if (bp>=canonb+CANBSIZ) breput on the output queue, * from the interrupt routine to transmit the next * character, and after a timeout has finished. * If the SSTART bit is off for the tty the work is done here, * using the protocol of the single-line interfaces (KL, DL, DC); * otherwise the address word of the tty structure is * taken to be the name of the device-dependent startup routine. */ ttstart(atp) struct tty *atp; { register int *addr, c; register struct tty *tp; struct { int (*func)(); }; tp = atp; addr = tp->t_0,000,000,000,000,000,000, 000,000,000,000,000,000,000,000, 000,000,000,000,000,000,000,000, 000,'|',000,'#',000,000,000,'`', '{','}',000,000,000,000,000,000, 000,000,000,000,000,000,000,000, 000,000,000,000,000,000,000,000, '@',000,000,000,000,000,000,000, 000,000,000,000,000,000,000,000, 000,000,000,000,000,000,000,000, 000,000,000,000,000,000,'~',000, 000,'A','B','C','D','E','F','G', 'H','I','J','K','L','M','N','O', 'P','Q','R','S','T','U','V','W', 'X','Y','Z',000,000,000,000,000, }; /* *ak; } bp1 = bp; bp = &canonb[2]; c = &tp->t_canq; while (bpt_flags; if ((c =& 0177) == '\r' && t_flags&CRMOD) c = '\n'; if ((t_fladdr; if (tp->t_state&SSTART) { (*addr.func)(tp); return; } if ((addr->tttcsr&DONE)==0 || tp->t_state&TIMEOUT) return; if ((c=getc(&tp->t_outq)) >= 0) { if (c<=0177) addr->tttbuf = c | (partab[c]&0200); else { timeout(ttrstrt, tp, c&0177); tp->t_state =| TIMEOUT; } } } /* * Called from device's read routine after it has * calculated the tty-structure given as argument. * The pc is backed up for the duration of this call. * In case of a caught interrupt, an RTI will re-execute. */ ttread(atp) struct tty *atp; { register struct tty *tp; tp = atp; if ((tp->t_state&CARR_ON)==0) return; if (tp->t_canq.c_cc || canon(tp)) while (tp->t_canq.c_cc && passc(getc(&tp->t_canq))>=0); } /* * Called from the device's write routine after it has * calculated the tty-structure given as argument. */ ttwrite(atp) struct tty *atp; { register struct tty *tp; register int c; tp = atp; if ((tp->t_state&CARR_ON)==0) return; while ((c=cpass())>=0) { spl5(); while (tp->t_outq.c_ccL; tp->t_speeds = SSPEED | (SSPEED<<8); tp->t_flags = ODDP|EVENP|ECHO; dhparam(tp); } dmopen(dev); tp->t_state =& ~WOPEN; tp->t_state =| ISOPEN; if (u.u_procp->p_ttyp == 0) u.u_procp->p_ttyp = tp; } /* * Close a DH11 line. */ dhclose(dev) { register struct tty *tp; tp = &dh11[dev.d_minor]; dmclose(dev); tp->t_state =& (CARR_ON|SSTART); wflushtty(tp); } /* * Read from a DH11 line. */ dhread(dev) { ttread(&dh11[dev.d_minor]); } /* * write on a DH11 line */ dhwrite(dev) { ttwrite(# /* */ /* * RK disk driver */ #include "../param.h" #include "../buf.h" #include "../conf.h" #include "../user.h" #define RKADDR 0177400 #define NRK 4 #define NRKBLK 4872 #define RESET 0 #define GO 01 #define DRESET 014 #define IENABLE 0100 #define DRY 0200 #define ARDY 0100 #define WLO 020000 #define CTLRDY 0200 struct { int rkds; int rker; int rkcs; int rkwc; int rkba; int rkda; }; struct devtab rktab; struct buf rrkbuf; rkstrategy(abp) struct buf *abp; { register struct buf *bp; regist > TTHIWAT) { ttstart(tp); tp->t_state =| ASLEEP; sleep(&tp->t_outq, TTOPRI); } spl0(); ttyoutput(c, tp); } ttstart(tp); } /* * Common code for gtty and stty functions on typewriters. * If v is non-zero then gtty is being done and information is * passed back therein; * if it is zero stty is being done and the input information is in the * u_arg array. */ ttystty(atp, av) int *atp, *av; { register *tp, *v; tp = atp; if(v = av) { *v++ = tp->t_speeds; v->lobyte = tp->t_erase; &dh11[dev.d_minor]); } /* * DH11 receiver interrupt. */ dhrint() { register struct tty *tp; register int c; while ((c = DHADDR->dhnxch) < 0) { /* char. present */ tp = &dh11[(c>>8)&017]; if (tp >= &dh11[NDH11]) continue; if((tp->t_state&ISOPEN)==0 || (c&PERROR)) { wakeup(tp); continue; } if (c&FRERROR) /* break */ if (tp->t_flags&RAW) c = 0; /* null (for getty) */ else c = 0177; /* DEL (intr) */ ttyinput(c, tp); } } /* * stty/gtty for DH11 */ dhsgtty(dev, av) er *qc, *ql; int d; bp = abp; if(bp->b_flags&B_PHYS) mapalloc(bp); d = bp->b_dev.d_minor-7; if(d <= 0) d = 1; if (bp->b_blkno >= NRKBLK*d) { bp->b_flags =| B_ERROR; iodone(bp); return; } bp->av_forw = 0; spl5(); if (rktab.d_actf==0) rktab.d_actf = bp; else rktab.d_actl->av_forw = bp; rktab.d_actl = bp; if (rktab.d_active==0) rkstart(); spl0(); } rkaddr(bp) struct buf *bp; { register struct buf *p; register int b; int d, m; p = bp; b = p->b_blkno; m = p->b_dev.d_minor - v->hibyte = tp->t_kill; v[1] = tp->t_flags; return(1); } wflushtty(tp); v = u.u_arg; tp->t_speeds = *v++; tp->t_erase = v->lobyte; tp->t_kill = v->hibyte; tp->t_flags = v[1]; return(0); } int *av; { register struct tty *tp; register r; tp = &dh11[dev.d_minor]; if (ttystty(tp, av)) return; dhparam(tp); } /* * Set parameters from open or stty into the DH hardware * registers. */ dhparam(atp) struct tty *atp; { register struct tty *tp; register int lpr; tp = atp; spl5(); DHADDR->dhcsr.lobyte = tp->t_dev.d_minor | IENABLE; /* * Hang up line? */ if (tp->t_speeds.lobyte==0) { tp->t_flags =| HUPCL; dmclose(tp->t_dev); return; } lpr = (tp->t_speeds.hibyte<<10) | (tp-> 7; if(m <= 0) d = p->b_dev.d_minor; else { d = lrem(b, m); b = ldiv(b, m); } return(d<<13 | (b/12)<<4 | b%12); } rkstart() { register struct buf *bp; if ((bp = rktab.d_actf) == 0) return; rktab.d_active++; devstart(bp, &RKADDR->rkda, rkaddr(bp), 0); } rkintr() { register struct buf *bp; if (rktab.d_active == 0) return; bp = rktab.d_actf; rktab.d_active = 0; if (RKADDR->rkcs < 0) { /* error bit */ deverror(bp, RKADDR->rker, RKADDR->rkds); RKADDR->rkcs = RESET|GO; while((RKA# /* */ /* * DM-BB fake driver */ #include "../tty.h" #include "../conf.h" struct tty dh11[]; dmopen(dev) { register struct tty *tp; tp = &dh11[dev.d_minor]; tp->t_state =| CARR_ON; } dmclose(dev) { } t_speeds.lobyte<<6); if (tp->t_speeds.lobyte == 4) /* 134.5 baud */ lpr =| BITS6|PENABLE|HDUPLX; else if (tp->t_flags&EVENP) if (tp->t_flags&ODDP) lpr =| BITS8; else lpr =| BITS7|PENABLE; else lpr =| BITS7|OPAR|PENABLE; if (tp->t_speeds.lobyte == 3) /* 110 baud */ lpr =| TWOSB; DHADDR->dhlpr = lpr; spl0(); } /* * DH11 transmitter interrupt. * Restart each line which used to be active but has * terminated transmission since the last interrupt. */ dhxint() { register struct tty DDR->rkcs&CTLRDY) == 0) ; if (++rktab.d_errcnt <= 10) { rkstart(); return; } bp->b_flags =| B_ERROR; } rktab.d_errcnt = 0; rktab.d_actf = bp->av_forw; iodone(bp); rkstart(); } rkread(dev) { physio(rkstrategy, &rrkbuf, dev, B_READ); } rkwrite(dev) { physio(rkstrategy, &rrkbuf, dev, B_WRITE); } *tp; register ttybit, bar; bar = dhsar & ~DHADDR->dhbar; DHADDR->dhcsr =& ~XINT; ttybit = 1; for (tp = dh11; bar; tp++) { if(bar&ttybit) { dhsar =& ~ttybit; bar =& ~ttybit; tp->t_state =& ~BUSY; dhstart(tp); } ttybit =<< 1; } } /* * Start (restart) transmission on the given DH11 line. */ dhstart(atp) struct tty *atp; { extern ttrstrt(); register c, nch; register struct tty *tp; int sps; char *cp; sps = PS->integ; spl5(); tp = atp; /* * If it's currently active, or del# /* */ /* * TM tape driver */ #include "../param.h" #include "../buf.h" #include "../conf.h" #include "../user.h" struct { int tmer; int tmcs; int tmbc; int tmba; int tmdb; int tmrd; }; struct devtab tmtab; struct buf rtmbuf; char t_openf[8]; char *t_blkno[8]; char *t_nxrec[8]; #define TMADDR 0172520 #define GO 01 #define RCOM 02 #define WCOM 04 #define WEOF 06 #define SFORW 010 #define SREV 012 #define WIRG 014 #define REW 016 #define DENS 060000 /* 9-channel */ #define IENABLE 0100 #defi# /* */ /* * DH-11 driver * This driver calls on the DHDM driver. * If the DH has no DM11-BB, then the latter will * be fake. To insure loading of the correct DM code, * lib2 should have dhdm.o, dh.o and dhfdm.o in that order. */ #include "../param.h" #include "../conf.h" #include "../user.h" #include "../tty.h" #include "../proc.h" #define DHADDR 0160020 #define NDH11 16 /* number of lines */ #define DHNCH 8 /* max number of DMA chars */ struct tty dh11[NDH11]; /* * Place from which to do DMA oaying, * no need to do anything. */ if (tp->t_state&(TIMEOUT|BUSY)) goto out; /* * t_char is a delay indicator which may have been * left over from the last start. * Arrange for the delay. */ if (c = tp->t_char) { tp->t_char = 0; timeout(ttrstrt, tp, (c&0177)+6); tp->t_state =| TIMEOUT; goto out; } cp = dh_clist[tp->t_dev.d_minor]; nch = 0; /* * Copy DHNCH characters, or up to a delay indicator, * to the DMA area. */ while (nch > -DHNCH && (c = getc(&tp->t_outq))>=0) { ne CRDY 0200 #define GAPSD 010000 #define TUR 1 #define HARD 0102200 /* ILC, EOT, NXM */ #define EOF 0040000 #define SSEEK 1 #define SIO 2 tmopen(dev, flag) { register dminor; dminor = dev.d_minor; if (t_openf[dminor]) u.u_error = ENXIO; else { t_openf[dminor]++; t_blkno[dminor] = 0; t_nxrec[dminor] = 65535; } } tmclose(dev, flag) { register int dminor; dminor = dev.d_minor; t_openf[dminor] = 0; if (flag) tcommand(dminor, WEOF); tcommand(dminor, REW); } tcommand(unit, com) { extern output */ char dh_clist[NDH11][DHNCH]; /* * Used to communicate the number of lines to the DM */ int ndh11 NDH11; /* * Hardware control bits */ #define BITS6 01 #define BITS7 02 #define BITS8 03 #define TWOSB 04 #define PENABLE 020 /* DEC manuals incorrectly say this bit causes generation of even parity. */ #define OPAR 040 #define HDUPLX 040000 #define IENABLE 030100 #define PERROR 010000 #define FRERROR 020000 #define XINT 0100000 #define SSPEED 7 /* standard speed: 300 baud */ /* * Software cif (c >= 0200) { tp->t_char = c; break; } *cp++ = c; nch--; } /* * If the writer was sleeping on output overflow, * wake him when low tide is reached. */ if (tp->t_outq.c_cc<=TTLOWAT && tp->t_state&ASLEEP) { tp->t_state =& ~ASLEEP; wakeup(&tp->t_outq); } /* * If any characters were set up, start transmission; * otherwise, check for possible delay. */ if (nch) { DHADDR->dhcsr.lobyte = tp->t_dev.d_minor | IENABLE; DHADDR->dhcar = cp+nch; DHADDR->dhbcr = nch; c = 1<tmcs & CRDY)==0) sleep(&lbolt, 1); TMADDR->tmcs = DENS|com|GO | (unit<<8); } tmstrategy(abp) struct buf *abp; { register struct buf *bp; register char **p; bp = abp; p = &t_nxrec[bp->b_dev.d_minor]; if (*p <= bp->b_blkno) { if (*p < bp->b_blkno) { bp->b_flags =| B_ERROR; iodone(bp); return; } if (bp->b_flags&B_READ) { clrbuf(bp); iodone(bp); return; } } if ((bp->b_flags&B_READ)==0) *p = bp->b_blkno + 1; bp->av_forw = 0; sopy of last dhbar */ int dhsar; struct dhregs { int dhcsr; int dhnxch; int dhlpr; int dhcar; int dhbcr; int dhbar; int dhbreak; int dhsilo; }; /* * Open a DH11 line. */ dhopen(dev, flag) { register struct tty *tp; extern dhstart(); if (dev.d_minor >= NDH11) { u.u_error = ENXIO; return; } tp = &dh11[dev.d_minor]; tp->t_addr = dhstart; tp->t_dev = dev; DHADDR->dhcsr =| IENABLE; tp->t_state =| WOPEN|SSTART; if ((tp->t_state&ISOPEN) == 0) { tp->t_erase = CERASE; tp->t_kill = CKIL->t_dev.d_minor; DHADDR->dhbar =| c; dhsar =| c; tp->t_state =| BUSY; } else if (c = tp->t_char) { tp->t_char = 0; timeout(ttrstrt, tp, (c&0177)+6); tp->t_state =| TIMEOUT; } out: PS->integ = sps; } pl5(); if (tmtab.d_actf==0) tmtab.d_actf = bp; else tmtab.d_actl->av_forw = bp; tmtab.d_actl = bp; if (tmtab.d_active==0) tmstart(); spl0(); } tmstart() { register struct buf *bp; register int com; int unit; register char *blkno; loop: if ((bp = tmtab.d_actf) == 0) return; unit = bp->b_dev.d_minor; blkno = t_blkno[unit]; if (t_openf[unit] < 0 || (TMADDR->tmcs & CRDY)==0) { bp->b_flags =| B_ERROR; tmtab.d_actf = bp->av_forw; iodone(bp); goto loop; } com = (unit<<8) | ((bp->b_xmem & 03) << 4) | IENABLE|DENS; if (blkno != bp->b_blkno) { tmtab.d_active = SSEEK; if (blkno < bp->b_blkno) { com =| SFORW|GO; TMADDR->tmbc = blkno - bp->b_blkno; } else { if (bp->b_blkno == 0) com =| REW|GO; else { com =| SREV|GO; TMADDR->tmbc = bp->b_blkno - blkno; } } TMADDR->tmcs = com; return; } tmtab.d_active = SIO; TMADDR->tmbc = bp->b_wcount << 1; TMADDR->tmba = bp->b_addr; /* core address */ TMADDR->tmcs = com | ((bp->b_flags&B_READ)? RCOM|GO: hpcs1 & ERR) { /* error bit */ deverror(bp, HPADDR->hpcs2, 0); if(HPADDR->hper1 & (DU|DTE|OPI)) { HPADDR->hpcs2 = CLR; HPADDR->hpcs1 = RECAL|GO; ctr = 0; while ((HPADDR->hpds&PIP) && --ctr); } HPADDR->hpcs1 = RCLR|GO; if (++hptab.d_errcnt <= 10) { hpstart(); return; } bp->b_flags =| B_ERROR; } hptab.d_errcnt = 0; hptab.d_actf = bp->av_forw; bp->b_resid = HPADDR->hpwc; iodone(bp); hpstart(); } hpread(dev) { if(hpphys(dev)) physio(hpstrategy, &hpbuf, dev, B_READ); } ((tmtab.d_errcnt)? WIRG|GO: WCOM|GO)); } tmintr() { register struct buf *bp; register int unit; if ((bp = tmtab.d_actf)==0) return; unit = bp->b_dev.d_minor; if (TMADDR->tmcs < 0) { /* error bit */ /* deverror(bp, TMADDR->tmer); */ while(TMADDR->tmrd & GAPSD) ; /* wait for gap shutdown */ if ((TMADDR->tmer&(HARD|EOF))==0 && tmtab.d_active==SIO) { if (++tmtab.d_errcnt < 10) { t_blkno[unit]++; tmtab.d_active = 0; tmstart(); return; } } else if(bp != &rtmbuf && (TM# /* */ /* * RP04 disk driver * * This driver has been tested on a working RP04 for a few hours. * It does not attempt ECC error correction and is probably * deficient in general in the case of errors and when packs * are dismounted. */ #include "../param.h" #include "../buf.h" #include "../conf.h" #include "../user.h" struct { int hpcs1; /* Control and Status register 1 */ int hpwc; /* Word count register */ int hpba; /* UNIBUS address register */ int hpda; /* Desired address register */ in hpwrite(dev) { if(hpphys(dev)) physio(hpstrategy, &hpbuf, dev, B_WRITE); } hpphys(dev) { register c; c = lshift(u.u_offset, -9); c =+ ldiv(u.u_count+511, 512); if(c > hp_sizes[dev.d_minor & 07].nblocks) { u.u_error = ENXIO; return(0); } return(1); } ADDR->tmer&EOF)==0) t_openf[unit] = -1; bp->b_flags =| B_ERROR; tmtab.d_active = SIO; } if (tmtab.d_active == SIO) { tmtab.d_errcnt = 0; t_blkno[unit]++; tmtab.d_actf = bp->av_forw; tmtab.d_active = 0; iodone(bp); bp->b_resid = TMADDR->tmbc; } else t_blkno[unit] = bp->b_blkno; tmstart(); } tmread(dev) { tmphys(dev); physio(tmstrategy, &rtmbuf, dev, B_READ); u.u_count = -rtmbuf.b_resid; } tmwrite(dev) { tmphys(dev); physio(tmstrategy, &rtmbuf, dev, B_WRITE); u.u_count = 0; }t hpcs2; /* Control and Status register 2*/ int hpds; /* Drive Status */ int hper1; /* Error register 1 */ int hpas; /* Attention Summary */ int hpla; /* Look ahead */ int hpdb; /* Data buffer */ int hpmr; /* Maintenance register */ int hpdt; /* Drive type */ int hpsn; /* Serial number */ int hpof; /* Offset register */ int hpca; /* Desired Cylinder address register*/ int hpcc; /* Current Cylinder */ int hper2; /* Error register 2 */ int hper3; /* Error register 3 */ int hppos; /* Burst error # /* */ /* * DM-BB driver */ #include "../param.h" #include "../tty.h" #include "../conf.h" #define DMADDR 0170500 struct tty dh11[]; int ndh11; /* Set by dh.c to number of lines */ #define DONE 0200 #define SCENABL 040 #define CLSCAN 01000 #define TURNON 07 /* RQ send, CD lead, line enable */ #define TURNOFF 1 /* line enable only */ #define CARRIER 0100 struct dmregs { int dmcsr; int dmlstat; }; /* * Turn on the line associated with the (DH) device dev. */ dmopen(dev) { register struct tty * tmphys(dev) { register unit, a; unit = dev.d_minor; a = lshift(u.u_offset, -9); t_blkno[unit] = a; t_nxrec[unit] = ++a; } bit position */ int hppat; /* Burst error bit pattern */ int hpbae; /* 11/70 bus extension */ }; #define HPADDR 0176700 #define NHP 8 struct { char *nblocks; int cyloff; } hp_sizes[] { 9614, 0, /* cyl 0 thru 23 */ /* cyl 24 thru 43 available */ -1, 44, /* cyl 44 thru 200 */ -1, 201, /* cyl 201 thru 357 */ 20900, 358, /* cyl 358 thru 407 */ /* cyl 408 thru 410 blank */ 40600, 0, 40600, 100, 40600, 200, 40600, 300, }; struct devtab hptab; struct buf hpbuf; char hp_openf; /* Drtp; tp = &dh11[dev.d_minor]; DMADDR->dmcsr = dev.d_minor; DMADDR->dmlstat = TURNON; if (DMADDR->dmlstat&CARRIER) tp->t_state =| CARR_ON; DMADDR->dmcsr = IENABLE|SCENABL; spl5(); while ((tp->t_state&CARR_ON)==0) sleep(&tp->t_rawq, TTIPRI); spl0(); } /* * If a DH line has the HUPCL mode, * turn off carrier when it is closed. */ dmclose(dev) { register struct tty *tp; tp = &dh11[dev.d_minor]; if (tp->t_flags&HUPCL) { DMADDR->dmcsr = dev.d_minor; DMADDR->dmlstat = TURNOFF; DMADDR->dmc# /* */ /* * KL/DL-11 driver */ #include "../param.h" #include "../conf.h" #include "../user.h" #include "../tty.h" #include "../proc.h" /* base address */ #define KLADDR 0177560 /* console */ #define KLBASE 0176500 /* kl and dl11-a */ #define DLBASE 0175610 /* dl-e */ #define NKL11 1 #define NDL11 0 #define DSRDY 02 #define RDRENB 01 struct tty kl11[NKL11+NDL11]; struct klregs { int klrcsr; int klrbuf; int kltcsr; int kltbuf; } klopen(dev, flag) { register char *addr; register struct tty *tive Commands */ #define GO 01 #define PRESET 020 #define RECAL 06 #define RCLR 010 #define OFFSET 014 #define READY 0200 /* hpds - drive ready */ #define PIP 020000 /* hpds - Positioning Operation in Progress */ #define ERR 040000 /* hpcs1 - composite error */ #define DU 040000 /* hper1 - Drive Unsafe */ #define DTE 010000 /* hper1 - Drive Timing Error */ #define OPI 020000 /* hper1 - Operation Incomplete */ /* Error Correction Code errors */ #define DCK 0100000 /* hper1 - Data Check error */ #define sr = IENABLE|SCENABL; } } /* * DM11 interrupt. * Mainly, deal with carrier transitions. */ dmint() { register struct tty *tp; if (DMADDR->dmcsr&DONE) { tp = &dh11[DMADDR->dmcsr&017]; if (tp < &dh11[ndh11]) { wakeup(tp); if ((DMADDR->dmlstat&CARRIER)==0) { if ((tp->t_state&WOPEN)==0) { signal(tp, SIGHUP); DMADDR->dmlstat = 0; flushtty(tp); } tp->t_state =& ~CARR_ON; } else tp->t_state =| CARR_ON; } DMADDR->dmcsr = IENABLE|SCENABL; } } p; if(dev.d_minor >= NKL11+NDL11) { u.u_error = ENXIO; return; } tp = &kl11[dev.d_minor]; if (u.u_procp->p_ttyp == 0) { u.u_procp->p_ttyp = tp; tp->t_dev = dev; } /* * set up minor 0 to address KLADDR * set up minor 1 thru NKL11-1 to address from KLBASE * set up minor NKL11 on to address from DLBASE */ addr = KLADDR + 8*dev.d_minor; if(dev.d_minor) addr =+ KLBASE-KLADDR-8; if(dev.d_minor >= NKL11) addr =+ DLBASE-KLBASE-8*NKL11+8; tp->t_addr = addr; if ((tp->t_state&ISOPEN) ==ECH 0100 /* hper1 - ECC hard error */ #define CLR 040 /* hpcs2 - Controller Clear */ #define FMT22 010000 /* hpof - 16 bit /word format */ /* * Use av_back to save track+sector, * b_resid for cylinder. */ #define trksec av_back #define cylin b_resid hpopen() { if(!hp_openf){ hp_openf++; HPADDR->hpcs2 = CLR; HPADDR->hpcs1 = RCLR|GO; HPADDR->hpcs1 = PRESET|GO; HPADDR->hpof = FMT22; } } hpstrategy(abp) struct buf *abp; { register struct buf *bp; register char *p1, *p2; bp = abp; p1# /* */ /* * LP-11 Line printer driver */ #include "../param.h" #include "../conf.h" #include "../user.h" #define LPADDR 0177514 #define IENABLE 0100 #define DONE 0200 #define LPPRI 10 #define LPLWAT 50 #define LPHWAT 100 #define EJLINE 60 #define MAXCOL 80 struct { int lpsr; int lpbuf; }; struct { int cc; int cf; int cl; int flag; int mcc; int ccc; int mlc; } lp11; #define CAP 01 /* Set to 0 for 96-char printer, else to 01 */ #define EJECT 02 #define OPEN 04 #define IND 010 /* Set to 0) { tp->t_state = ISOPEN|CARR_ON; tp->t_flags = XTABS|LCASE|ECHO|CRMOD; tp->t_erase = CERASE; tp->t_kill = CKILL; } addr->klrcsr =| IENABLE|DSRDY|RDRENB; addr->kltcsr =| IENABLE; } klclose(dev) { register struct tty *tp; tp = &kl11[dev.d_minor]; wflushtty(tp); tp->t_state = 0; } klread(dev) { ttread(&kl11[dev.d_minor]); } klwrite(dev) { ttwrite(&kl11[dev.d_minor]); } klxint(dev) { register struct tty *tp; tp = &kl11[dev.d_minor]; ttstart(tp); if (tp->t_outq.c_cc == 0 || tp->t_ou = &hp_sizes[bp->b_dev.d_minor&07]; if (bp->b_dev.d_minor >= (NHP<<3) || bp->b_blkno >= p1->nblocks) { bp->b_flags =| B_ERROR; iodone(bp); return; } bp->av_forw = 0; bp->cylin = p1->cyloff; p1 = bp->b_blkno; p2 = lrem(p1, 22); p1 = ldiv(p1, 22); bp->trksec = (p1%19)<<8 | p2; bp->cylin =+ p1/19; spl5(); if ((p1 = hptab.d_actf)==0) hptab.d_actf = bp; else { for (; p2 = p1->av_forw; p1 = p2) { if (p1->cylin <= bp->cylin && bp->cylin < p2->cylin || p1->cylin >= bp->cylin 0 for no indent, else to 010 */ #define FORM 014 lpopen(dev, flag) { if(lp11.flag & OPEN || LPADDR->lpsr < 0) { u.u_error = EIO; return; } lp11.flag =| (IND|EJECT|OPEN); LPADDR->lpsr =| IENABLE; lpcanon(FORM); } lpclose(dev, flag) { lpcanon(FORM); lp11.flag = 0; } lpwrite() { register int c; while ((c=cpass())>=0) lpcanon(c); } lpcanon(c) { register c1, c2; c1 = c; if(lp11.flag&CAP) { if(c1>='a' && c1<='z') c1 =+ 'A'-'a'; else switch(c1) { case '{': c2 = '('; goto tq.c_cc == TTLOWAT) wakeup(&tp->t_outq); } klrint(dev) { register int c, *addr; register struct tty *tp; tp = &kl11[dev.d_minor]; addr = tp->t_addr; c = addr->klrbuf; addr->klrcsr =| RDRENB; if ((c&0177)==0) addr->kltbuf = c; /* hardware botch */ ttyinput(c, tp); } klsgtty(dev, v) int *v; { register struct tty *tp; tp = &kl11[dev.d_minor]; ttystty(tp, v); } && bp->cylin > p2->cylin) break; } bp->av_forw = p2; p1->av_forw = bp; } if (hptab.d_active==0) hpstart(); spl0(); } hpstart() { register struct buf *bp; if ((bp = hptab.d_actf) == 0) return; hptab.d_active++; HPADDR->hpcs2 = bp->b_dev.d_minor >> 3; HPADDR->hpca = bp->cylin; rhstart(bp, &HPADDR->hpda, bp->trksec, &HPADDR->hpbae); } hpintr() { register struct buf *bp; register int ctr; if (hptab.d_active == 0) return; bp = hptab.d_actf; hptab.d_active = 0; if (HPADDR->esc; case '}': c2 = ')'; goto esc; case '`': c2 = '\''; goto esc; case '|': c2 = '!'; goto esc; case '~': c2 = '^'; esc: lpcanon(c2); lp11.ccc--; c1 = '-'; } } switch(c1) { case '\t': lp11.ccc = (lp11.ccc+8) & ~7; return; case FORM: case '\n': if((lp11.flag&EJECT) == 0 || lp11.mcc!=0 || lp11.mlc!=0) { lp11.mcc = 0; lp11.mlc++; if(lp11.mlc >= EJLINE && lp11.flag&EJECT) c1 = FORM; lpoutput(c1); if(c1 == FORM) lp11.mlc = 0; } case '\r': lp11.ccc = 0; if(lp11.flag&IND) lp11.ccc = 8; return; case 010: if(lp11.ccc > 0) lp11.ccc--; return; case ' ': lp11.ccc++; return; default: if(lp11.ccc < lp11.mcc) { lpoutput('\r'); lp11.mcc = 0; } if(lp11.ccc < MAXCOL) { while(lp11.ccc > lp11.mcc) { lpoutput(' '); lp11.mcc++; } lpoutput(c1); lp11.mcc++; } lp11.ccc++; } } lpstart() { register int c; while (LPADDR->lpsr&DONE && (c = getc(&lp11)) >= 0) LPADDR->lpbuf = c; }/* * Read in the block, like bread, but also start I/O on the * read-ahead block (which is not allocated to the caller) */ breada(adev, blkno, rablkno) { register struct buf *rbp, *rabp; register int dev; dev = adev; rbp = 0; if (!incore(dev, blkno)) { rbp = getblk(dev, blkno); if ((rbp->b_flags&B_DONE) == 0) { rbp->b_flags =| B_READ; rbp->b_wcount = -256; (*bdevsw[adev.d_major].d_strategy)(rbp); } } if (rablkno && !incore(dev, rablkno)) { rabp = getblk(dev, rablkno); if (rabp-_flags = B_BUSY | B_RELOC; bp->b_back->b_forw = bp->b_forw; bp->b_forw->b_back = bp->b_back; bp->b_forw = dp->b_forw; bp->b_back = dp; dp->b_forw->b_back = bp; dp->b_forw = bp; bp->b_dev = dev; bp->b_blkno = blkno; return(bp); } /* * Wait for I/O completion on the buffer; return errors * to the user. */ iowait(bp) struct buf *bp; { register struct buf *rbp; rbp = bp; spl6(); while ((rbp->b_flags&B_DONE)==0) sleep(rbp, PRIBIO); spl0(); geterror(rbp); } /* * Unlink a buffer from the av lpint() { register int c; lpstart(); if (lp11.cc == LPLWAT || lp11.cc == 0) wakeup(&lp11); } lpoutput(c) { if (lp11.cc >= LPHWAT) sleep(&lp11, LPPRI); putc(c, &lp11); spl4(); lpstart(); spl0(); } >b_flags & B_DONE) brelse(rabp); else { rabp->b_flags =| B_READ|B_ASYNC; rabp->b_wcount = -256; (*bdevsw[adev.d_major].d_strategy)(rabp); } } if (rbp==0) return(bread(dev, blkno)); iowait(rbp); return(rbp); } /* * Write the buffer, waiting for completion. * Then release the buffer. */ bwrite(bp) struct buf *bp; { register struct buf *rbp; register flag; rbp = bp; flag = rbp->b_flags; rbp->b_flags =& ~(B_READ | B_DONE | B_ERROR | B_DELWRI); rbp->b_wcount = -256; (*bdevsw[rbpailable list and mark it busy. * (internal interface) */ notavail(bp) struct buf *bp; { register struct buf *rbp; register int sps; rbp = bp; sps = PS->integ; spl6(); rbp->av_back->av_forw = rbp->av_forw; rbp->av_forw->av_back = rbp->av_back; rbp->b_flags =| B_BUSY; PS->integ = sps; } /* * Mark I/O complete on a buffer, release it if I/O is asynchronous, * and wake up anyone waiting for it. */ iodone(bp) struct buf *bp; { register struct buf *rbp; rbp = bp; if(rbp->b_flags&B_MAP) mapfr# /* */ /* * indirect driver for controlling tty. */ #include "../param.h" #include "../conf.h" #include "../user.h" #include "../tty.h" #include "../proc.h" syopen(dev, flag) { register *tp; if(tp = syttyp()) (*cdevsw[tp->t_dev.d_major].d_open)(tp->t_dev, flag); } syread(dev) { register *tp; if(tp = syttyp()) (*cdevsw[tp->t_dev.d_major].d_read)(tp->t_dev); } sywrite(dev) { register *tp; if(tp = syttyp()) (*cdevsw[tp->t_dev.d_major].d_write)(tp->t_dev); } sysgtty(dev, flag) { register *->b_dev.d_major].d_strategy)(rbp); if ((flag&B_ASYNC) == 0) { iowait(rbp); brelse(rbp); } else if ((flag&B_DELWRI)==0) geterror(rbp); } /* * Release the buffer, marking it so that if it is grabbed * for another purpose it will be written out before being * given up (e.g. when writing a partial block where it is * assumed that another write for the same block will soon follow). * This can't be done for magtape, since writes must be done * in the same order as requested. */ bdwrite(bp) struct ee(rbp); rbp->b_flags =| B_DONE; if (rbp->b_flags&B_ASYNC) brelse(rbp); else { rbp->b_flags =& ~B_WANTED; wakeup(rbp); } } /* * Zero the core associated with a buffer. */ clrbuf(bp) int *bp; { register *p; register c; p = bp->b_addr; c = 256; do *p++ = 0; while (--c); } /* * Initialize the buffer I/O system by freeing * all buffers and setting all device buffer lists to empty. */ binit() { register struct buf *bp; register struct devtab *dp; register int i; struct bdevsw *bdp; tp; if(tp = syttyp()) (*cdevsw[tp->t_dev.d_major].d_sgtty)(tp->t_dev, flag); } syttyp() { register tp; tp = u.u_procp->p_ttyp; if(tp == NULL) u.u_error = ENXIO; return(tp); } buf *bp; { register struct buf *rbp; register struct devtab *dp; rbp = bp; dp = bdevsw[rbp->b_dev.d_major].d_tab; if (dp == &tmtab || dp == &httab) bawrite(rbp); else { rbp->b_flags =| B_DELWRI | B_DONE; brelse(rbp); } } /* * Release the buffer, start I/O on it, but don't wait for completion. */ bawrite(bp) struct buf *bp; { register struct buf *rbp; rbp = bp; rbp->b_flags =| B_ASYNC; bwrite(rbp); } /* * release the buffer, with no I/O implied. */ brelse(bp) struct buf *bp; { regis bfreelist.b_forw = bfreelist.b_back = bfreelist.av_forw = bfreelist.av_back = &bfreelist; for (i=0; ib_dev = -1; bp->b_addr = buffers[i]; bp->b_back = &bfreelist; bp->b_forw = bfreelist.b_forw; bfreelist.b_forw->b_back = bp; bfreelist.b_forw = bp; bp->b_flags = B_BUSY; brelse(bp); } i = 0; for (bdp = bdevsw; bdp->d_open; bdp++) { dp = bdp->d_tab; if(dp) { dp->b_forw = dp; dp->b_back = dp; } i++; } nblkdev = i; } /* * Device startter struct buf *rbp, **backp; register int sps; rbp = bp; if (rbp->b_flags&B_WANTED) wakeup(rbp); if (bfreelist.b_flags&B_WANTED) { bfreelist.b_flags =& ~B_WANTED; wakeup(&bfreelist); } if (rbp->b_flags&B_ERROR) rbp->b_dev.d_minor = -1; /* no assoc. on error */ backp = &bfreelist.av_back; sps = PS->integ; spl6(); rbp->b_flags =& ~(B_WANTED|B_BUSY|B_ASYNC); (*backp)->av_forw = rbp; rbp->av_back = *backp; *backp = rbp; rbp->av_forw = &bfreelist; PS->integ = sps; } /* * See if the bl routine for disks * and other devices that have the register * layout of the older DEC controllers (RF, RK, RP, TM) */ #define IENABLE 0100 #define WCOM 02 #define RCOM 04 #define GO 01 devstart(bp, devloc, devblk, hbcom) struct buf *bp; int *devloc; { register int *dp; register struct buf *rbp; register int com; dp = devloc; rbp = bp; *dp = devblk; /* block address */ *--dp = rbp->b_addr; /* buffer address */ *--dp = rbp->b_wcount; /* word count */ com = (hbcom<<8) | IENABLE | GO | ((rb# /* */ #include "../param.h" #include "../user.h" #include "../buf.h" #include "../conf.h" #include "../systm.h" #include "../proc.h" #include "../seg.h" /* * This is the set of buffers proper, whose heads * were declared in buf.h. There can exist buffer * headers not pointing here that are used purely * as arguments to the I/O routines to describe * I/O to be done-- e.g. swbuf, just below, for * swapping. */ char buffers[NBUF][514]; struct buf swbuf; /* * Declarations of the tables for the maock is associated with some buffer * (mainly to avoid getting hung up on a wait in breada) */ incore(adev, blkno) { register int dev; register struct buf *bp; register struct devtab *dp; dev = adev; dp = bdevsw[adev.d_major].d_tab; for (bp=dp->b_forw; bp != dp; bp = bp->b_forw) if (bp->b_blkno==blkno && bp->b_dev==dev) return(bp); return(0); } /* * Assign a buffer for the given block. If the appropriate * block is already associated, return it; otherwise search * for the oldest non-busy p->b_xmem & 03) << 4); if (rbp->b_flags&B_READ) /* command + x-mem */ com =| RCOM; else com =| WCOM; *--dp = com; } /* * startup routine for RH controllers. */ #define RHWCOM 060 #define RHRCOM 070 rhstart(bp, devloc, devblk, abae) struct buf *bp; int *devloc, *abae; { register int *dp; register struct buf *rbp; register int com; dp = devloc; rbp = bp; if(cputype == 70) *abae = rbp->b_xmem; *dp = devblk; /* block address */ *--dp = rbp->b_addr; /* buffer address */ *--dp = rbp->b_wgtape devices; * see bdwrite. */ int tmtab; int httab; /* * The following several routines allocate and free * buffers with various side effects. In general the * arguments to an allocate routine are a device and * a block number, and the value is a pointer to * to the buffer header; the buffer is marked "busy" * so that no on else can touch it. If the block was * already in core, no I/O need be done; if it is * already busy, the process waits until it becomes free. * The following routines albuffer and reassign it. * When a 512-byte area is wanted for some random reason * (e.g. during exec, for the user arglist) getblk can be called * with device NODEV to avoid unwanted associativity. */ getblk(dev, blkno) { register struct buf *bp; register struct devtab *dp; extern lbolt; if(dev.d_major >= nblkdev) panic("blkdev"); loop: if (dev < 0) dp = &bfreelist; else { dp = bdevsw[dev.d_major].d_tab; if(dp == NULL) panic("devtab"); for (bp=dp->b_forw; bp != dp; bp = bp->b_forcount; /* word count */ com = IENABLE | GO | ((rbp->b_xmem & 03) << 8); if (rbp->b_flags&B_READ) /* command + x-mem */ com =| RHRCOM; else com =| RHWCOM; *--dp = com; } /* * 11/70 routine to allocate the * UNIBUS map and initialize for * a unibus device. * The code here and in * rhstart assumes that an rh on an 11/70 * is an rh70 and contains 22 bit addressing. */ int maplock; mapalloc(abp) struct buf *abp; { register i, a; register struct buf *bp; if(cputype != 70) return; spl6(); locate a buffer: * getblk * bread * breada * Eventually the buffer must be released, possibly with the * side effect of writing it out, by using one of * bwrite * bdwrite * bawrite * brelse */ /* * Read in (if necessary) the block and return a buffer pointer. */ bread(dev, blkno) { register struct buf *rbp; rbp = getblk(dev, blkno); if (rbp->b_flags&B_DONE) return(rbp); rbp->b_flags =| B_READ; rbp->b_wcount = -256; (*bdevsw[dev.d_major].d_strategy)(rbp); iowait(rbp); return(rbp); } w) { if (bp->b_blkno!=blkno || bp->b_dev!=dev) continue; spl6(); if (bp->b_flags&B_BUSY) { bp->b_flags =| B_WANTED; sleep(bp, PRIBIO); spl0(); goto loop; } spl0(); notavail(bp); return(bp); } } spl6(); if (bfreelist.av_forw == &bfreelist) { bfreelist.b_flags =| B_WANTED; sleep(&bfreelist, PRIBIO); spl0(); goto loop; } spl0(); notavail(bp = bfreelist.av_forw); if (bp->b_flags & B_DELWRI) { bp->b_flags =| B_ASYNC; bwrite(bp); goto loop; } bp->b while(maplock&B_BUSY) { maplock =| B_WANTED; sleep(&maplock, PSWP); } maplock =| B_BUSY; spl0(); bp = abp; bp->b_flags =| B_MAP; a = bp->b_xmem; for(i=16; i<32; i=+2) UBMAP->r[i+1] = a; for(a++; i<48; i=+2) UBMAP->r[i+1] = a; bp->b_xmem = 1; } mapfree(bp) struct buf *bp; { bp->b_flags =& ~B_MAP; if(maplock&B_WANTED) wakeup(&maplock); maplock = 0; } /* * swap I/O */ swap(blkno, coreaddr, count, rdflg) { register int *fp; fp = &swbuf.b_flags; spl6(); while (*fp&B_BUSY) { *fp =| B_WANTED; sleep(fp, PSWP); } *fp = B_BUSY | B_PHYS | rdflg; swbuf.b_dev = swapdev; swbuf.b_wcount = - (count<<5); /* 32 w/block */ swbuf.b_blkno = blkno; swbuf.b_addr = coreaddr<<6; /* 64 b/block */ swbuf.b_xmem = (coreaddr>>10) & 077; (*bdevsw[swapdev>>8].d_strategy)(&swbuf); spl6(); while((*fp&B_DONE)==0) sleep(fp, PSWP); if (*fp&B_WANTED) wakeup(fp); spl0(); *fp =& ~(B_BUSY|B_WANTED); return(*fp&B_ERROR); } /* * make sure all write-behind blocks * on dev (or NODEV for all) * a0200,0200,0000, 0000,0200,0200,0000,0200,0000,0000,0200, 0200,0000,0000,0200,0000,0200,0200,0000, 0200,0000,0000,0200,0000,0200,0200,0000, 0000,0200,0200,0000,0200,0000,0000,0201 }; ttstart(tp = &dc11[dev.d_minor]); if (tp->t_outq.c_cc == 0 || tp->t_outq.c_cc == TTLOWAT) wakeup(&tp->t_outq); } /* * DC11 receiver interrupt. */ dcrint(dev) { register struct tty *tp; register int c, csr; tp = &dc11[dev.d_minor]; c = tp->t_addr->dcrbuf; /* * If carrier is off, and an open is not in progress, * knock down the CD lead to hang up the local dataset * and signal a hangup. */ if (((csr = tp->t_addr->dcrcsr) & CARRIER) == 0) { if ((tp->t_state&WOPEN) == 0) { tp->t_addr->re flushed out. * (from umount and update) */ bflush(dev) { register struct buf *bp; loop: spl6(); for (bp = bfreelist.av_forw; bp != &bfreelist; bp = bp->av_forw) { if (bp->b_flags&B_DELWRI && (dev == NODEV||dev==bp->b_dev)) { bp->b_flags =| B_ASYNC; notavail(bp); bwrite(bp); goto loop; } } spl0(); } /* * Raw I/O. The arguments are * The strategy routine for the device * A buffer, which will always be a special buffer * header owned exclusively by the device for this purpose dcrcsr =& ~CDLEAD; if (tp->t_state & CARR_ON) signal(tp, SIGHUP); flushtty(tp); } tp->t_state =& ~CARR_ON; return; } if (csr&ERROR || (tp->t_state&ISOPEN)==0) { if (tp->t_state&WOPEN && csr&CARRIER) tp->t_state =| CARR_ON; wakeup(tp); return; } csr =& PARITY; if (csr&&(tp->t_flags&ODDP) || !csr&&(tp->t_flags&EVENP)) ttyinput(c, tp); } /* * DC11 stty/gtty. * Perform general functions and set speeds. */ dcsgtty(dev, av) int *av; { register struct tty *tp; register r; tp * The device number * Read/write flag * Essentially all the work is computing physical addresses and * validating them. */ physio(strat, abp, dev, rw) struct buf *abp; int (*strat)(); { register struct buf *bp; register char *base; register int nb; int ts; bp = abp; base = u.u_base; /* * Check odd base, odd count, and address wraparound */ if (base&01 || u.u_count&01 || base>=base+u.u_count) goto bad; ts = (u.u_tsize+127) & ~0177; if (u.u_sep) ts = 0; nb = (base>>6) & 01777; /* *# /* */ /* * DC-11 driver */ #include "../param.h" #include "../conf.h" #include "../user.h" #include "../tty.h" #include "../proc.h" /* * Base address of DC-11's. Minor device i is at * DCADDR + 10*i. */ #define DCADDR 0174000 /* * Number of DC's for which table space is allocated. */ #define NDC11 14 /* * Control bits in device registers */ #define CDLEAD 01 #define CARRIER 04 #define SPEED1 010 #define STOP1 0400 #define RQSEND 01 #define PARITY 040 #define ERROR 0100000 #define CTRANS = &dc11[dev.d_minor]; if (ttystty(tp, av)) return; if (r = dcrstab[tp->t_speeds.lobyte&017]) tp->t_addr->dcrcsr = r; else tp->t_addr->dcrcsr =& ~CDLEAD; if (r = dctstab[tp->t_speeds.hibyte&017]) tp->t_addr->dctcsr = r; } Check overlap with text. (ts and nb now * in 64-byte clicks) */ if (nb < ts) goto bad; /* * Check that transfer is either entirely in the * data or in the stack: that is, either * the end is in the data or the start is in the stack * (remember wraparound was already checked). */ if ((((base+u.u_count)>>6)&01777) >= ts+u.u_dsize && nb < 1024-u.u_ssize) goto bad; spl6(); while (bp->b_flags&B_BUSY) { bp->b_flags =| B_WANTED; sleep(bp, PRIBIO); } bp->b_flags = B_BUSY | B_PHYS 040000 #define RINGIND 020000 struct tty dc11[NDC11]; struct dcregs { int dcrcsr; int dcrbuf; int dctcsr; int dctbuf; }; /* * Input-side speed and control bit table. * Each DC11 has 4 speeds which correspond to the 4 non-zero entries. * The table index is the same as the speed-selector * number for the DH11. * Attempts to set the speed to a zero entry are ignored. */ int dcrstab[] { 0, /* 0 baud */ 0, /* 50 baud */ 0, /* 75 baud */ 0, /* 110 baud */ 01101, /* 134.5 baud: 7b/ch, speed     | rw; bp->b_dev = dev; /* * Compute physical address by simulating * the segmentation hardware. */ bp->b_addr = base&077; base = (u.u_sep? UDSA: UISA)->r[nb>>7] + (nb&0177); bp->b_addr =+ base<<6; bp->b_xmem = (base>>10) & 077; bp->b_blkno = lshift(u.u_offset, -9); bp->b_wcount = -((u.u_count>>1) & 077777); bp->b_error = 0; u.u_procp->p_flag =| SLOCK; (*strat)(bp); spl6(); while ((bp->b_flags&B_DONE) == 0) sleep(bp, PRIBIO); u.u_procp->p_flag =& ~SLOCK; if (bp->b_flags&B_WANTED) wak 0 */ 0111, /* 150 baud: 8b/ch, speed 1 */ 0, /* 200 baud */ 0121, /* 300 baud: 8b/ch, speed 2 */ 0, /* 600 baud */ 0131, /* 1200 baud */ 0, /* 1800 baud */ 0, /* 2400 baud */ 0, /* 4800 baud */ 0, /* 9600 baud */ 0, /* X0 */ 0, /* X1 */ }; /* * Transmitter speed table */ int dctstab[] { 0, /* 0 baud */ 0, /* 50 baud */ 0, /* 75 baud */ 0, /* 110 baud */ 0501, /* 134.5 baud: stop 1 */ 0511, /* 150 baud */ 0, /* 200 baud */ 0521, /* 300 baud */ 0, /* 600 baud */ 05t% j10 & 6  w R%@7x%%@7h% b% L 71 P% L 70_<%&  _ B\fWmdW70`W0%^W 0e0 00 %%j10 j%707`0 0Wv0 j%WE7tVWt7WWt7WWt7WWeE7Z'  .VZ'  VZ :    /(' 7 /jW/ >?/% 6/ /ȋ [  & [ ewW/ j%% V_~%V_%Ueup(bp); spl0(); bp->b_flags =& ~(B_BUSY|B_WANTED); u.u_count = (-bp->b_resid)<<1; geterror(bp); return; bad: u.u_error = EFAULT; } /* * Pick up the device's error number and pass it to the user; * if there is an error but the number is 0 set a generalized * code. Actually the latter is always true because devices * don't yet return specific errors. */ geterror(abp) struct buf *abp; { register struct buf *bp; bp = abp; if (bp->b_flags&B_ERROR) if ((u.u_error = bp->b_error)==0) u.u_31, /* 1200 baud */ 0, /* 1800 baud */ 0, /* 2400 baud */ 0, /* 4800 baud */ 0, /* 9600 baud */ 0, /* X0 */ 0, /* X1 */ }; /* * Open a DC11, waiting until carrier is established. * Default initial conditions are set up on the first open. * t_state's CARR_ON bit is a pure copy of the hardware * CARRIER bit, and is only used to regularize * carrier tests in general tty routines. */ dcopen(dev, flag) { register struct tty *rtp; register *addr; if (dev.d_minor >= NDC11) { u.u_error = E_#'_tjWX/ w b *7Z D/4 %$|#/t# &/ Z m`#Y/7V# /7 Y /.7Y .%%4# %rxY  .w . *ZTYPY   . m"6Yw " r e%A! y Y   YX""d _ x%+'  "_1'55 Xe  55&5' Ve @"_5 |Xe  5 hXe  5 TXe  55&9' e !w &X  E='  !eXC'error = EIO; } NXIO; return; } rtp = &dc11[dev.d_minor]; rtp->t_addr = addr = DCADDR + dev.d_minor*8; rtp->t_state =| WOPEN; addr->dcrcsr =| IENABLE|CDLEAD; if ((rtp->t_state&ISOPEN) == 0) { rtp->t_erase = CERASE; rtp->t_kill = CKILL; addr->dcrcsr = IENABLE|CDLEAD|SPEED1; addr->dctcsr = IENABLE|SPEED1|STOP1|RQSEND; rtp->t_state = ISOPEN | WOPEN; rtp->t_flags = ODDP|EVENP|ECHO; } if (addr->dcrcsr & CARRIER) rtp->t_state =| CARR_ON; while ((rtp->t_state & CARR_ON) == 0) sleep(&rtp->t_rawq, TTIPRI)  ] W  E % Z W    &  E Z/& W %&  I' R %K'   O'   ,ww ,,7&W ,W f W7 Www Nf   ^, \wrw `% %~NQ'NU'  wBw 0 7 V7 rW+7 R5 3 ^W_ + +ȥ:  5 @pJWRW %~Q  +JW   + 7Q  0+*9~+& V7 zQ0/* */ char partab[] { 0001,0201,0201,0001,0201,0001,0001,0201, 0202,0004,0003,0205,0005,0206,0201,0001, 0201,0001,0001,0201,0001,0201,0201,0001, 0001,0201,0201,0001,0201,0001,0001,0201, 0200,0000,0000,0200,0000,0200,0200,0000, 0000,0200,0200,0000,0200,0000,0000,0200, 0000,0200,0200,0000,0200,0000,0000,0200, 0200,0000,0000,0200,0000,0200,0200,0000, 0200,0000,0000,0200,0000,0200,0200,0000, 0000,0200,0200,0000,0200,0000,0000,0200, 0000,0200,0200,0000,0200,0000,0000,0200, 0200,0000,0000,0200,0000,; rtp->t_state =& ~WOPEN; if (u.u_procp->p_ttyp == 0) { u.u_procp->p_ttyp = rtp; rtp->t_dev = dev; } } /* * Close a dc11 */ dcclose(dev) { register struct tty *tp; (tp = &dc11[dev.d_minor])->t_state = 0; if (tp->t_flags&HUPCL) tp->t_addr->dcrcsr =& ~CDLEAD; wflushtty(tp); } /* * Read a DC11 */ dcread(dev) { ttread(&dc11[dev.d_minor]); } /* * Write a DC11 */ dcwrite(dev) { ttwrite(&dc11[dev.d_minor]); } /* * DC11 transmitter interrupt. */ dcxint(dev) { register struct tty *tp; n+ 0X+9P+PQupwHQ>+e7`*  00*9(*  w:w ( * w*w  %rT  w %fxT%dpT55 TT  LT  557 U )Nf 5\WTX' %  fe  c'  @e5 ef  h'  n'  fe  5%2hTbT OZ\VT PTp[ f  5_rw  PS  HS  7 T (%&  e  %2SS ~NZ\S S[   7 X(wtw bNq'   5N  %t0W %t0W5&&|' Re %ww v% m&' % Z%\W'  '  ' e%%Ԃww  fe  & F F(wF7 F .wFef/B J ӕ- R r f e0 @ >pF ҋ D~8// NFӕ0 $f v Le0 9eFF F  FF 7Ewe&  mE E Z~  Z  Z~ w7 E E E0   EWp `e0f|E ,rEP hE bE @f FE ^74E /^*E"E-EEf B\BB\  7Bterminated. %s 4, 8,0<,@@,PD,`H,L,? O,?@ S,? W,? [,? _,?@ c,? g,? k,? o,?@ s,? w,? {,?@,?,?@,?,?,?,?@,?,?,? ,? ,?,?@ ,?@,p,r,t,v,,,,,,,,,,,,-- -----!-%-+-0-5-:-e  %  &e  %  E?%  ,' wF ` Z?M7 M7 M&  %  %%e%e &e  `w  LQ>&7 y R  tVt5V Q8t-LLV|EQ e7 $LtVt&VQ et0 Vt0 V_ %  \Q  tVt5V-bP_ %  t Vt Be0# @aє 6a    BA   W 6ae B@e0am* C` aeȐ9 ȕ0 aȕ1 PC JC8+,,,  zzz%.1o%.8s+%dmovcmpbitbicbisaddsuclrcomincdecnegadcsbctstrorrolasrasljmpswabldfpsstfpsststclrftstfabsfnegfsxtmtpimtpdmfpimfpdmuldivashashcbrbnebeqbgebltbgtblebplbmibhiblosbvcbvsbhisblohaltwaitrtiiotresetmulfmodfaddfmovfsubfcmpfmovfdivfmoveimovfimovfomoviemovifmovofcfccsetfsetisetdsetljsrxorrtscflgsflgemtsysmarksobsploctindirexitforkreadwriteopenclosewaitcreat  ww r  tVe t V\ N e%w , etN e5`e-MetVtUV 6N etVN e "' tV '  % w w   Ne -M%  % & M e7 M'   @E%@E7H %'  ' 7!BU@6B 2B RaE UUa6BBB linkunlinkexecchdirtimemknodchmodchownbreakstatseekgetpidmountumountsetuidgetuidstimeptrace27fstat29smdatesttygtty33nicesleepsynckillswitch3940duppipetimesprofil45setgidgetgidsignal495051525354555657585960616263r0r1r2r3r4r5sppc%.8s: %sb b , , %d %s {}; %.1o*$%s(%s)*(%s)+*-(%s)*(%s)(d~oxxfeVcds4lr^ 0 %ew6> WtAx% mv  %  ~wr w ` 6G  N>W 4  "w>   ~FRW>W 4 F  ~F%FN>W 4  w %F%F FF3 [mF*%vF  p-Z\ -K %RF  p-Z\  [2F @`e7DFwX -Kw < DCe Ԥ w. w   x5 E@E!%E-E_ ^DE b w w C KR J  e55  J a; a66  aAa `&e  a   aBAe!`!Z!P!##"!"b!,!H$t"!!`"!! " . > N ^  e@tEWt@P56<W%" e  %fe  j%%;<5 ^J-PF RJrImBF  @J`I  -,F$Fm"F`  e %fe j%% @w w ~~j1C jd %w w n Z V wj C>W%HW7C0 ej1-C >W  j%% w  >W\WĔ D-%FW%dWCCCCww  Z  ww N ZD-N&, \W+,  0,  ww w>:a  U>w:a > w:a >w>w>w  7 > >a >U>>W 8UHa W 8E<> a h h   Wp `e0eӕ?f& ,P   @f  p27l "p2-f@w fw(w$"wfww  b"wfw7R fw #JA 7 fAW,f B@ 8 @&61fA   @ @e7X 1@# 1wfw: w6 #w fT.Y..vs.cOdc.cNpartab.cMbio.cLsys.cKlp.cJdhdm.cIhp.cHkl.cGtm.cvt.cErk.cDdh.cCdhfdm.cBtty.cAhs.c@dp.c?dn.c>tc.c=ht.c<pc.c;rp.c:rf.ccat.cndos.c7mem.ca.outdos.odc.odh.o7Z* Wp Aa1Wp Aa1 %2!R0  9!T0  A!V0  G!X0  M!Z0  T!\0  B#)7 )7 )@eT7)7 ))$  1|$Y!  '-))  z)) f #T ) n)d)& f ĔT) f : B)8)& f Ĕ()  ) ) #w`w N-(( (((?( n%#_ _ _ %a%z %A%Z%__$ ( d %a%z%A%Z%0%9%_ d f(%% t(w w #wfw A#Q  OfA  ^ y   F y @0fA  @9 fA @e&7~ wz 7t @ #w7 fAW @wD fr41r478 5 e&w$ &# 5& w&FL&@H&:D&4@&.<&(8&"4&0&,&(& $& &&&&& &&&f& fwH ,#wdhdm.odhfdm.odn.odp.ohp.ohs.oht.okl.olp.omem.opartab.opc.orf.ork.orp.osys.otc.otm.otty.ovs.ovt.of ȋ `% J( F(  % wh% $( D f 5 t%C-'_ _ _ _ -'-'-'-' ' ' ' 'i! 0 w! 0   % %_ l'@d' %   %'%"V d  ' &%   d %\ n d d 7 & &_&%. &_&?& 8%  -&&! 0 &f $ N! 0 _,l&f&_, d %  f "& w }f@fA w, w" e"w" ew" @lw" Alew &@t`e @& HADCBF7F+L T \ d   & (38:')1.x.pdh *  ( d0/lib/c0/lib/c1/lib/c2/lib/crt0.o/lib/mcrt0.o/lib/fcrt0.o/lib/fc0/lib/fc1/lib/crt2.o/lib/crt20.o/usr/c/c0/usr/c/c1/usr/c/c2/tmp/ctm0a%s: c0-Pc1c2as-/bin/asa.outa.outmove failed: %s ld-X-l2-lc-l/bin/lU.Y..5iget.c4slp.c3sys1.c2sys2.c1rdwri.c0main.c/clock.c.fio.c-malloc.c,nami.c+sysent.c*pipe.c)sig.c(sys3.c'alloc.c&trap.c%prf.c$subr.c#text.c"sys4.ca.outmain.oclock.ofio.oiget.omain.omalloc.onami.opipe.oprf.o_r d %_,! 0 _,w xf =4wjw X&!  Nf   @ % %w6w $%%e!! 0 T%e!%e7%w w % %%B#%! 0 lw w %/2 R%/ p%* D /w  R%/-0%,% ,% f $% *: 7 yw D wD w 2  w. 7 $$ -$$$ $$$ f $   w D 55um5A 7ruWp BddefineincludeendififdefifndefunixCan't creat %s If-less endifUndefined controlNested 'include'Missing file %sControl syntax%d: Line overflowToo much definingtoo many definesExcessive define loopingdefine recursion loop Can't find %s Try again Fatal error in %s defined function requires argumentsdefine argument mismatchdefine prototype argument errornon-terminated stringdZoTxfe2c@slrp2  0 rdwri.osig.oslp.osubr.osys1.osys2.osys3.osys4.osysent.otext.otrap.om\$2Dԋ@e! f wr e Wp m$ @ ! 0 #ʋ CԒ e!w %1% % %! 0 % %w w w#1%z# v#%d" 0 w @f ` ̋ d  ~ ̥(  ~ %12%׆ ,%(% D ̋ ~ w B C %/ ”% %ӥ.w w N @ԥ/̋tw w  X57Nf  N"   Ne @-@ %ewW.Y..ymkconfwc.cvl.sl.outmkconf.cql.odata.spc.osysfixlm40.oa.outl.outm40.om40.sm45.sl.outsysfix.ca.outE5% %N9"  @tE %." wZ w H C Ȕw< w * C F %o  w @e” ̋Cw  w N w :@e5@ A H@e55  Ne .A Aa1n@e50 5% %(L" 0 w` N D 5  Ne0 A Aa1Fu-p"@ 5  N ~ @e25.}. .}. . @ 4 =.5 @ @anfe2 `   & 6  w  % @ % @ @m  @ @m u-w$w   f ( 7N     5   N   ww  %d @ 5he@--\ N   w` BNef  w*5 @ A Aap %d@w  f h%f F%5%N!  f0 % wX._..fc1errorsu-u-@ @aF@e25..@. . ~ w Z@5@ %) wB@ȥ  u@5%,%) 4 }- N  " 0 @ w 5 u %)_ w%\ 5@- %\@ ȕ\@ H0%\E 5%" %\@ ȕ\@ H@%"%'u%'@ ȕ' V5@-% " 0 %'@ ȕ'@ H%( %) 5%,%) @ Nw ~wDe   % w7 z7 zׯp- h f(wZ7 \ .wPeHB J ӕ- R r f e0 @ > ҋ D~8pt ӕ0 $f v Le0 9e  7we&  mf d ~    ~ w7 8 . *0   Wp `e0eӕ?f ,P   @f  7Y._..WconfurunUkenTdmrodos.hyoldbox1!proc.h file.hinode.huser.htty.hsystm.hparam.hlib1lib2buf.hconf.hreg.hfilsys.htext.hlow.oldmailboxmch.oconf.oseg.hino.hbox2 D @_w %a%z %A%Z%_wj w TN  %0%9w> w ( @5 A @  w w ~wDe   % @w7 7 ׯ-  (w7  .wxe"B J ӕ- R r f e0 @ >$ ҋ D~8"" ӕ0 $f v Le0 9e  7we&  m  @~  @  x-f@w fwNwJ~wzf@w2w.wXf@www6 f$f@@& HADCBF7F/dev/rk2/dev/rp0%s cannot open %s %l bad free count bad free block (%l) read error %d count = %d; errno = %d fdoxfecsrlrZ._.. bjcheckerscubictttttt.kwumppsychchessskymoo[._..x`...ctm0actm4actm1actm2actm5actm3aatm2aatm3actm0cctm3bla04170atm2batm3bctm5cctm3ce...dumparasbascatRccQcdbpasswd chmodchown clri cmpcpdate db dcSdfdswduechobhostrdexit6fcgotoifshkillldlnlogin\._..stmaaastmbaastmcaastmdaastmeaastmfaastmgaaa...lsmailmkdirmvnmodoprprpsrewrmrmdirxsizesortstripsttysusumsynctimetpttyuniqddwhowriteedrestoryefile]._..Ulib.baignatabcignctabsaltw2006ratrofsuftabubookratfor~unitsetabeigntmac.rtmgntmgatmgbxtmgctmac.squizlib.bobtmgccrontabtmac.sb...crt0.oc0fc0qfcrt0.ofilib.afr0.oc1liba.a~libf.ac2|libs.a{liby.atmgbylibp.axmcrt0.ofc1vas2filibtlprfc0fc1fc2libd.afc0libo.amlibc.aoas2ncheckdcheckichecknewgrpchgrp^._..kchk$cryptwsabcrtblcolcomm}creflcrpostrmesgfediformcuchksnospeaktmanupostjtryaccniceovsplinerathole sleepplot splittyponohupproofc...mtablpdoinitinitggettyfglobinit#mkfs"mknod!ttys mountcronnidgetpasswdrcupdateumountdpdutmpdtabgorkspdgroupmotdwallcnewsndpdvogettyvvogetty & 6  hw V%  @eeeN % # # !"*"   "- z "&e  "&  7  F%ww  C˥*˥?˥[ӋK & z ?e X!= L  N  Q  F% B4$ $%%+ "6$ F 6$& z ?e "/  O &  ӕ N ww D & X e-,e"e!ww Cbcdpfespdatem6manpwdotapomtcalskymazeeqncatsimfactorgrepnroffptiroffnfsplogibmtssptxtabsindexgraffindaplspellproflookteed...ddosfrk1`rk0akmem_rrk0cmem^rrk1enull]ttyrhs0mt4mt5rp1rp2rrp1rrp2rp3rmt0xxrrk1rrp0rrp1tap0tap1tap2tap3tap4tap5tap6tap7D&  %&" _   %" wXw Fg  F% &w:w (.. w Nf p w DCE 5 7n y5 #%]  & p w%-  5 @5  5    & & w HNf  p  w(w DCԢӋ w@w D %" E ӕ/D%" z HDwf@w fww neqnwchypacdiffcolgsiindtmgcpallfsendslavefsclcunitsfsfgetratforfscnvlxyaccm11l11bobb11quizcallusortorestorhcatsimquotbannerpinheadtty8runrf2rf3rf4rf5rf6rf7rhp0rhp1rhp2rhp3rhp4rhp5rhp6rhp7rhs0rhs1rhs2rhs3rhs4rhs5rhs6rhs7rk0rk1rk2rk3rk4rk5rk6rk7> z wfwrwn wnf@wVwR wLf@w:w6 w*f@@& HADCBF7F" *?[ Arg count No match /usr/bin/Command not found. ./No directory /bin/shArg list too long loupepdgencbisendpigcryptnumberkmantcatsimsearchcpircigetjststktekstarekaaishuprimesrevtacctlazarusvt0gsipteklexkrofffdbagenlogoutrmt0rmt1rmt2rmt3rmt4rmt5rmt6rmt7rp0rp1rp2rp3rp4rp5rp6rp7rrf0rrf1rrf2rrf3rrf4rrf5rrf6rrf7rrk0rrk1rrk2rrk3rrk4rrk5rrk6rrk7" & 6  zw h0%@ e%T %T  7x 7 s 7p 7f 7 a  & :   & : j 0#4 @/ 7* 8 U . U $ E  & :     e zw 7 7 7   & %  zE  wZ  X%%a%z %Z |e Ԑ  X% \&%A%#%  %@ % % % $%   X%w D &  _...^bin]lib\tmp[admZgamesYsysXfortmdecsourcelpdpubmkenjsrchostrd.cl.outhostrd.oa.outrrp0rrp1rrp2rrp3rrp4rrp5rrp6rrp7tap0tap1tap2tap3tap4tap5tap6tap7tty8xX%̋wfw@e7 wf@ww wjf@wz wN f@w`w\ w*f@@& HADCBF7BF0T ea 0p --z 11e 22@ ;login: :login: login: login: :login: ;login: /bin/loginlogin alpha A A | beta B B | gamma \ \ GAMMA G G | delta D D | DELTA W W epsilon S S | zeta Q Q | eta N N THETA T T | theta O O | lambda L L LAMBDA E E | mu M M | nu @ @ xi X X | pi J J | PI P P rho K K | sigma Y Y | SIGMA R R tau I I | phi U U | PHI F F psi V V | PSI H H | omega C C OMEGA Z Z | nabla [ [ | not _ _ partial ] ] | integral ^ ^ e6 f r   ,e7 &      &e " LLeJpL@11     L  wOut of space. x LeJpLeJ@BlR s3 BJJ& F 1L1 JpL f&7 L`CKeJ GBxe, 2eJ BeJ, 2 J 4lB4 4NJ0NAeJ  0 & 6  w %T N @-6E#@e5%% x N b@x@ 7|e 5  @ @m&  5Nf  N p u-  ww 65 @  u-@eZ55 u-P N =  x6 tAZ   -Hu=@eZ5@  f  5 ' $ 55 fNaeNQTWZ]ILOJ ,Out of headers.      @ @W nW J0W,W,@@& ,Be "LeJ  r &r J7 d & L 7B 74  * J@  eJ UnJ7 e e B02 L  leJ2   JLJA eJJ  bwpwJcannot opef  % _D@@m w @@a @  f ~ NNaef ~ 5` @@ap% d   @@a u u-@  ~u=@eZ5@  f  _&@  f ~ NNaef ~ 5` @@a u u-@ 8   & 2%  Nfe& 2%_&w p  u  }@@wRw @    }w( w  j    D 0jz f`` z0*Hcannot open output file formaletter77 h S  S  vrh& \  R  r N e0 6 e0 , w08AGMQV[blt}JanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecembern output file form.m Z  f %7:2 w& Nw  @  @me5'5@ RA @l 5 } @  N u@ RA @l 5@A 1`  }  ww @ @  w @  @ &R@ &P %A @, @ 0 w ~wDe   % w7 7 ׯv- n l(w`7 b .wVeB J ӕ- R r f e0 ( w w  w w{  } 7  w 6 w w  p j   2 &f VV\[{]V}Q  A  Hw  f 80 9 ] }  NN6         f rt  rlw T @N z F@w@. X$ `&n p7  ,   F  & 6  w  72 7& 7* 7 7" 7 *7 7 +e@ȥ-#@7 y   ~e@ȋ e w%@75 @PAPpP % ",@EPP x55 @P@pP %@0PP5 @0P %!P x5 )X x5u@EpP@EP f@5 @EPX x5v5 @P0P  @ > ҋ D~8 ӕ0 $f v Le0 9e  7we&  ml j ~    ~ w7 > 4 00   Wp `e0eӕ?f ,P   @f  7 -f@w fw>w:wnf@w"wwLf@www*f@<7    @ [w  ]w  B 7   t   wf n0  Nf \ 7 J T &D ~7 *7 ,&[w  e0w ]w  Lp &:w w w    w    B 6  &f   "&   z e q,  78  w :   H w@0P %7 T 7R    @EPE5 -EP@7 r` p5 ,wvw d @ @De@H,[_ N 5=@0 N * a x"N 5@-UA@ ȥ]L@p@w@0 55 @e0@-AupAmeu@ @5%0A@ ȥ]  @p + % N w A@ 5%\6 55@@& HADCBF7Fd : X v ffffffff Usage: crpost [-d] file1 file2 ... -d: 0 < d < 10 read error doxVfdecslrrfBBb2 W"f&@w  w        v$p t  \V z PJ l :  :4 T     q,   &J   7   7 eJ&J " q,  n7q,  Z7eJ &fCC  j @q o  5%0%7@t@me5 @ % u A@ 5 A1@@Ew|f ,P   @f  p 7 8p -f@w  f@)wfw*>JA 7 8fAW,f B@ 8 @&61fA   @ @e71@D 1wHf@wwJw*f@@& HA\_`cfiloruadgjmpsvbehknqtwx{~y|z}&F  6`( &   w`&  Bl~error on copy f1N1N1N1&0tC  BZqqq&qq, qf& @l1 11 1  D ( & qf7 q,@ @  b@  ȝv q,q >DCBF7fFcds~Bad string p mgetpw.o # Dw    7 w &  %5 5 EB ҐNe % B %:% %:%0%9Wp D`eD- /etc/passwd(h_getpw"~getpwL2bppbufcnbuq,@      f7 q,@ @  T 8 @  \ȝ   x f   Wv Ee&    2 2 2  7 4 f& Wv Ee&  @E7 2 we2 @` & w2 f  2 2 Wv E@`e& & ! , e : loop if $1x = x exit icheck $1 dcheck $1 shift goto loop fuidpwfcsv L3L4_open L5,L20000$L1(cret _seek L6NL8ZL20002T_getc L11vL16L13zL17mon.oo #48w  & & & e  & % R %5 w }@p@p w|A Wpu`A Wpu '@@ E5!  & f % f@ &f ewmon.out(Ix_monitor"~monitorL2L3highpcsbufssizbufsiz cntsiz obuflowpccsv L4F_profil L5_creat _write _close L1_nargs L6.prstr6ffltpr.o "< eӕ?pfloat"pscien"putchr.o ",p0fr ,hP ^ X @f < |7,* p| - |_putchar"_flush"._fout$vfl:getchr.o +"B0f   7 7 7 )_mount"cerror nice.o "Tf"w _nice"cerror nlist.o " <fwA@ e  X O-m- e7|-| -t-l) l"  @ 7"B7,<7,6 7,0,( e TL7_ldiv L8cret perror.o #Hw - N rf % % r& % %ww Dԋ@ wvUnknown error:  (  _errno _sys_ner _sys_err _perror"~perrorcnscsv L2())())))_getchar"_errno _fin badret4atof.o !Llw Wf&  C% - 0    0  ~ 5  ע- 0 Wp `  BW@ &  W B~  VVw0\ B@e_nlist"donebufcdonecountopen.o "pfwww_open"cerror pipe.o "h$f*wBJ _pipe"cerror pipe*prof.o "x$ fwwww $,L3_strlen"rL4H_write L5L6cret ~strlenrsstrL8zrin.o.o $$w 5    %9  5 BC@C5  %-%.%0 555 B5 !5wti9_rin"~rincdfn)_atof"csv cret digitone@outhugeten Bbig\chdir.o !dfww  _chdir"cerror chmod.o !t fww w _chmod"cerror chown.o !t fww w _profil"putc.o " lfwAQ  OfA  ^ y   F y @0fA  @9 fA @e&72w.7(@wD7 @IY_putc"\_putwcsv L2:L20001L20003L20005L6XL7&_getchar L3F_exit L8fL9zL20007lcret fltused alloc.o !f&UUDe .E ' $ 7?%7e-Ue?z7tnUh55 ` ć `7@ 84U ef@e7E_chown"cerror close.o !Tf@w _close"cerror creat.o !pfwww_creat"cerror dup.oo !\$f@)w)dup)_dup"cerror execl.o !lfw@e7 w _execl""_fflush"_fcreat"cerror _errno badretgoodretflqsort.o $Dw w wAupNNmf , ww @@5 _~ fA rBpEu@@`55DCN&  f& d%5 2`D--`f  $`f& %`Df %5 D-&  C-D-%@@AA@ Nf` , u_8Nf , @`5_8f %Cw~w zH_allocs#_allocp#_alloct#_alloc"_sbrk L6L7&tL11L12fL8L20001L13_free"fltpr.o "H7  ӕ- ӕ0B~ӕ.  ӕ0~ B~7  ӕ-ӕ. B~ӕe cerror execv.o !(0fw w  (w )_execv"cerror __exectr rttfork.o "d$fw7 _fork"cerror _par_uid$fstat.o "lf@ww _fstat"cerror getc.o $" `fwJA 7 fAW, tDCԒ wZw VNDCB5ҒS w*   ӕ- ӕ+ r e0e0S99Y999I9pfloat"pscien"Nfltused"_ndigit ecvt fcvt printf.o "0 ,w ~wDe   % w7 7 ׯ-  (w7  .w~eB J ӕ- R r f e0 @ >* ҋ D~8f B@ 8 @&61fA   @ @e7"1@ 1wXYIindir_getc"d_getw"_fopen"cerror _errno badretfillgetcsw.o 1"0 f&_getcsw"getgid.o 9"< f/_qscmp _qses _qsort"~qsortfc esancsv _qs1",cret ~qs1,eshplpacijlnL38L2~L4L20001_qsexc"L20003L9 L20008L20005L20007_qstexc"L20010L12 L14bL15F~qsexcrirjc ӕ0 $f v Le0 9e  7we&  m  ~    ~ w7 f \ X0   DWp `e0vdoxfecsl$rI8Ygetgid/_getgid"getuid.o E"0 f_getuid"gtty.oo K"lf@ww  _gtty"cerror kill.oo Y"0fw %_kill"cerror kill%indirlink.oo m"t fww w  _link"cerror makdir.o "ijnL20~qstexcrirjrkcijknL24read.o "x"f@ww"w_read"cerror sbrk.o "H<fD@wm:Hw.wm(fwHww ))_sbrk"_e)888_printf"pfloat pscien _putchar csv cret formplooprjustndigitgnumtwidthndfndswtabdecimalvoctalhexfloatsciencharacstringlogicalremote$prbufdfww _makdir"cerror mdate.o "t"fwA@A"w _mdate"cerror mknod.o "&$fwww&w _mknod"cerror mknodmount.o "&f&w nd cerror ndL_brk"(seek.o "|$f@ww$w _seek"cerror setgid.o #`$f@.w )setgid._setgid"cerror setuid.o #Tf@w _setuid"cerror signal.o #(HfAW @w f17 5 eXw 5& w&L&H&D&@&<&8&4&0&,&(&z$&t &n&h&b&\&V &P&J&Df& 0)rtt_signal"cerror NSIG  %ew_nargs"jsrsdltstipcmpiradditjmpixbri|reset.o " Hw www w)99_setexit"_reset"csv cret sr5 spc"ltod.oo z"p$f =f 5= _ltodraceindir_ptrace"cerror _errno atoi.oo #|\w B 5  ʥ ʥ ʥ- ʥ9 Wp @@`eʥ0  wy_atoi"~atoiapcfnpcsv L3L10000L6DL20004,L7JL8Vcret cerror.o !D7FdvecttvectXsleep.o #Df@#_sleep"sleep#stat.oo &#t fww w _stat"cerror stime.o /#\f@Aw _stime"cerror stty.o 6#lf@ww _stty"cerror sync.o =#< f"_dtol"ldfps.o f"4 fu_ldfps"ladd.o _"D0w BB BJww BBdb@ BJw)9)9_lsub"_ladd""csv cret ctime.o # `w N  ww DeL@4 &  0w/%J %K  t5 t5N 5N 5  B-cerror"_errno $_sync"sync$time.o D#H f BR_time"times.o L#Tfw +_times"times+umount.o R#|0fw _umount"cerror indir_errno unlink.o Y#dfww  _unlink"cerror wait.oo a#t $B-%B-B-% &  0 ww DC%: e`m e rfww p@&f % r<R r< r<R r< rWtC` re rwF   !7 %n@    0!" 7 ww HԔAA WpCebԔԔԔ BeWpCexԔԔԔ&  ed&  ed&  ed&  e@ &  wRw Nr0 7 75 5 5 Der Z  Talloc.d t  --fatal 5C  nr d 5E r  7bad address in parsingH І 5' b5E    F@e DEC55 DECwf&  @! C ef5 Clw^ Lttte!uw7stack overflow  f & w })_wait"_nargs cerror write.o h#x"f@ww"w_write"cerror abort.o !< f_abort"ioterrlst.o #pDL[u#5>Tfr 2?Ud!Error 0Not super-userNo such file or directoryNo such processInterrupted system callI/O eA r nw8mw .D % A r  r e0@ԕ A r e0@wPF@DM:/ESTEDTDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecxx&@D f @D @5C g 5E r    7bad address in translationHuue ue” uACeu  7not a bundle e 6& & e-& ,ȋ 1 wW & 7 A &ECA@lAU xrrorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough corePermission deniedError 14Block device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken PipeX9IXXXhxxh (XhhxxXh9IX_cbuf _dmsize#_timezon#0_tzname#2L1@L2D_dayligh#6_daytab#8_ctime"~ctimeatcsv _localti"_asctime" cret ~localtictdaylbegittimdaylenddaynocopyt_dpadd _gmtime"0L10000jL5_sunday"L6L10001L10002~shHhXxH(hxHhH(  99(9 9htracingfgisefclfbfsbfcflush":obuild"putch"iget"Pkput generate"cfile dfile ofile input main"succ"~fail"_sys_err#L1DL2LL3[L4uL5L6L7L8L9L10L11L12L13L14#L155L16>L17TL18fL19rL20L21L22L23L24L25L26L27L28 L29L302L31?L32UL33d_sys_ner#Bexit.oo "0 undayatdtadL8_dysize"~gmtime0L10tptimd0d1xtime_ldiv _ldivr L11L20001L14L15L20003~asctime cptptncpL21HL19L22bL23x_ct_numb"~dysizeyL25L24~ct_numbcpacpnL27L28getpid.o >"< errcom"\pbundle"parse"Jdiag"Dalt"salt"stop"rgoto"tables start"rend stkb stke ktab trswitch trace x si j k n g1 env advsucccrsretcontincontinctfailcvfret8advcxek ep ek.fs ep.fs fs ktat .tp"gcontin$badadrVgfvgcxgkf@_exit"hmul.oo R"0 6p_hmul"locv.oo t"j $f&jCB  ԕ- j e0fv   vA W  ~_locv"bufjdividNnargs.o "`lTfA w,\w"Ve"w"Lew"B@lw":Alew- &@t`efgetpid_getpid"abs.o.o !L 6_abs"_fabs" csv.o.o !`@& HADCBFcsv"cret"mcount.o "d eH  mcount"countbas ptrace.o ",<fw(ww@ 7 ,wI9ptlfile outb outt outw <0 & 6  9(savr5$fptrap _exit _main startw$ 7 &  .w e B J ӕ- R r f e0 @ >  ҋ D~8   ӕ0 $f v Le0 9ep j b \ 7L we&  m0  .  V~  V  V~ w7   0   Wp `e0eӕ?f  , P  @f  (7X  (v n -h ` f@w fww %lw@ݪ#E   m#m#few e& & !*&p#j#7 h# ԋ! w*  w^-V5Ke'D& C N h"#F* U"E   w r   mt j  Uw 2&e*w 8(ew `o w Rx-" w <r&5w V2& w N8(ee" f&%w:"%@7p:"6  r e0H~0 R~ & 6  >w , r40&   % >%5& #@y& 5 % > % >wzfw4w0wn fwwwN f@ww$w*f@@& HADCBF7Ff@  x" "*@ $$ttyЋ7@ /dev/ttyxcannot swfw@e7 wfw JA 7 fAW,f B@ 8 @&61fA   @ @e7h1@  1wffw@w< w fw&w" wf@w w wf@ww" w fAW @w f(1(7 5 e w( 5& w"&~ L&x H&r D&l @&f <&` 8&Z 4&T 0&N ,& @% &!!< T$&# ,7" !=[!:7! N% " -L }L w!!*w $x%E   w mE]7!!-w pf! &ȝ7   < W l E n d^    $ w h. w ZrEE б! ! w! !;!e &t&0 eD t& AE@`e@efBJ b &w eB$tat was y was n cannot change mode /devH (&B $&< &6 &0 &* &$ & & & & f& fw. wX f@ww2 w4f@f@& HADCBF7F/usr/lpd/tfaXXXXX/usr/lpd/cfaXXXXX/usr/lpd/lfaXXXXX/usr/lpd/dfaXXXXXcmrCannot open %s Cannot remove %s Cannot rename %s /etc/lpdlpdCopy file is too large pdp::::m0000,m000:$ ident Cannot create %s /etc/passwddpojxfeHcVs&lrwD8 E`w8U ( w( > 7  $!!eF"el7  ph8# 7\8#ew \!D!<wP     w "&& H %7 T#P#xbnh^ 8 < @ ^ ^ ^ R8 %   ѕ  "" "" | r " #"w xUU %E BCw2 & " $  p" d" \ #Algeria:Alg[iers|er] Botswana:Gaberones Burundi:Bujumbura Cameroun:Yaound['e|e'|e] Central Africa[n Rep[ublic|]|]:Bangui Chad:Ndjamena Congo:Brazzaville Dahomey:Porto Novo Ethiopia:Addis Ababa Gabon:Libreville Ghana:Accra Guinea-Bissau:Bissau Guinea:Conakry Ivory Coast:Abidjan Kenya:Nairobi Lesotho:Maseru Liberia:Monrovia Libya:Al Bayda['|] Malagasy[ Rep[ublic|]|]|Madagascar:Tananarive Malawi:Zomba Mali:Bamako Mauritania:Nouakchott Morocco:Rabat Mo[z|,c|c,|c]ambique:Louren[,c|c,|c]o Marques Niger:Niam(  0 e`vep 8 x h_ \ T v  P b!# w }e  @!w n5    EU w b   Pw  D   @  &U  \!, 2 PE 8 :5R -J   : v ! !,  E& % w l2&w f8(e4 w 2&ew 8(7% 7 !& Z V 5U  & !(>ey Nigeria:Lagos Rhodesia:Salisbury Rwanda:Kigali Senegal:Dakar Sierra Leone:Freetown Somali[ Rep[ublic|]|]:Mogadis[cio|hu] Sudan:Khartoum Swaziland:Mbabane Tanzania:Dar es Salaam Togo:Lom['e|e'|e] Tunisia:Tunis Uganda:Kampala United Arab Rep[ublic|]|Egypt:Cairo Upper Volta:Ouagadougou Zambia:Lusaka Za["i|i"|i]re:Kinshasha [Rep[ublic|] of |]South Africa:Pretoria [The |]Gambia:Bathurst chdir ken cc -c -O *.c ar r ../lib1 rm *.o chdir ../dmr cc -c -O *.c ar r ../lib2 rm *.o chdir ../conf as m40.s mv a.out m40.o : as m45.s : mv a.out m45.o : cc sysfix.c : mv a.out sysfix cc mkconf.c mv a.out mkconf mkconf rk tm tc done cc -c c.c as l.s ld -x a.out m40.o c.o ../lib1 ../lib2 : as data.s l.s : ld -x -r -d a.out m45.o c.o ../lib1 ../lib2 : nm -ug : sysfix a.out x : mv x a.out cmp a.out /rkunix cp a.out /rkunix mkconf rp tm tc done cc -c c.c as l.s ld -x a.out m40.o c.o ../lib1 ../lib2 : a!-X!$k!*w !(   U0U  UE U W!%|7U > !+  U8  NU UU |!(7L- h h >UU P U w * *ww a W     w je!)w \) rW  b& Xw  fEtWt18%*W fE WtA8%Vt 7 *f+  ^w " bw u 7 d & 6  w   L 5Z L  L 5Z L  L 5Z L 5  "7 %"@̥- 7h  y+ e-X  ,%^ Z%-F  & MeD%+ ̥/ &   F   U    &  5. N N %-  Z 5>   +    5  P  ` js data.s l.s : ld -x -r -d a.out m45.o c.o ../lib1 ../lib2 : nm -ug : sysfix a.out x : mv x a.out cmp a.out /rpunix cp a.out /rpunix mkconf hp tm tc done cc -c c.c as l.s ld -x a.out m40.o c.o ../lib1 ../lib2 : as data.s l.s : ld -x -r -d a.out m45.o c.o ../lib1 ../lib2 : nm -ug : sysfix a.out x : mv x a.out cmp a.out /hpunix cp a.out /hpunix rm mkconf c.c l.s a.out *.o : rm sysfix  VS!a @%I& D$  y+b -b *b /b &b b b b %b [ ^b v p !b +   (!]w ] # Z}+ - *: /F 0 &$   % ^ !X >   w vHt4w lH r*w XB`%w N$B w DHA B@w 8HBPw .HBpBw "H rw HA B`+wX&PEEE & W%$   Uf7 ~ (Wp @e@` w rV E7 > Z  k b %< Fww  F   U   "55 5 N f  %5N f t %um% -o N  ww Nu5 } _} @ 5 NeN. t %ww N &  _< 5 @   ԥ: %:,N> RS5%:L  > M  ww  5  X e A r Be78    ? a.outn@ 8 0 nZ*f xxxx ^ d       "0  0 @ P ` 0A r 5 %7*ww f   N  @mw^w L L  L  L   Z a   Z a   Z a   Z a  ww      7  w &  ( % 5 5 EB ҐNe z% B %:% %:%0%9Wp D`eD- w ~wh De^  X  % Vw7 D 7 D ׯ: - 2 0 (8"0 0 w$#F* 2"e 2 & "  E   e    wV%`%`%7 ^%  e  w)  d-w\7 7 %%w D 7%7 %  n) |Evn Ewdb EXC$$`$$ eRHC@6F* ew ) w b2&w X8(N @w h2&  w 2&w |8(\$7R$7 J$w 2&F* #w &2& w 2& w 2& w 2&@w 2&@w 2& v rw 2&wEw# @ @ @ @ @ @ @    @    @ tvpprtvrx ~#w% p w D 7jw F 7Zw H 7X7Nnw ^t7RwAWpqL,fAWpL,L,AWpqP,fAWpP,P,%  5  %w w N 85 f < &@& , &@&  &@&" @e w w ~ A r e0C r te0Pwf w T  j "  7X Tw:  & B %85 5 EB ҐNe F% B %:% %:%0%9Wp D`eD- 7. $ ӕ- ӕ0B~ӕ.  ӕ0~ B~7 0 `&e  ,   ,ebww5Q$  f   EU P5h   PfPPQ7 Ƈ5    5 C B A  `5  5  5  eE  "$ $5 $$ 5j  5R  5@:  wL   w>  (  ӕ-ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw ~wDe   % w 7 7 ׯ- ѷ (w7  .wуe"B J ӕ- R r f e0 @ >l ҋ D~8## Jӕ0 $f v Le0 9e F  7we&  m  ~    ~ w7  з 0   Wp `e0fx   5@   B     Uw  w www  7 d `a NURZW 8U W 8Efc     ` - a h h    a  ! p R B W !W e UETR5l  5Z  ULwp      7 r@r@  e J!0 & 6  w  n %U@-Oe @@mȋA@@m r eN!A! y6 #  # # # # # # # z#@@me7  f# b# b# 7|% ! p :# _x eN p # , #_5 AWp>,i5 AWpAm@?>, %AWp%F,N%! 7AWppslF,F,AWpqH,fWpH,H,AWpqL,fzWpL,L,AWpqP,f ,nP d ^ @f B j70 #j&-Їf 88  7 ߲ͷ ͅ7 7 ͅf@w fwVwR#wf@)wxfw*#JA 7 ,fAW,f B@ 8 @&61fA   @ @e71@# 1wfww #ww w wAupNNmf  wtw bZ@@5  JW!W! 57 e  , ¸® f    $ $$$& N & N  N N S C B A  eW!Շ w^ m2$ rf5e        W!P    0&d& dN & dN dC N eN e-Z!d!n!x!!!     ~/usr/adm/sha***other/usr/adm/shm/usr/adXWpP,P,AWp1>, % 55QAWp>,H5 AWpAmCpCm>,>, %AWpCpF,F,AWpqH,CpsH,AWpqL,CpsL,AWpqP,CpsP, % b!X  !  5>$f %N !  5! @ AWpN>,f %N    5" @N     Z d  f>, e"" @ 7J&7@&76&7>&_& fA rBpEu@@`55DCN& * f& ͖%5 2`D--`f * $`f& N%`Df ͖%5 D-& * C-D-%@@AA@ Nf`  u_Nf  @`5_f N%Cww  DCԒ ww DCB5ҒS wf@ww&#wf@ww|,#w fAW @wZ fj1j7N 5m/shtCan't save Can't truncate %8s%-8.8s%-8d%-8s%5l %7.2f %6.0f%7s%6.2f%%%6.1f%9.2f%9.2f%7s%6.2f%%Only 1 file with -s Can't open %s %3d %.8s /usr/adm/sht/usr/adm/shm**junk**%.8s--%3d %c%c%c %d/etc/passwdd oxHfVecsldrj0PFf#j#M:/ESTEDTDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec> \d6 e 5 9AWp>,0AWpqF,uAWpNe>," @ AWpqP,fAWpqL,fAWpqH,f5& e u- ww  t >$6Nez& "Cez˥ ˋ ˥: Nez#" @ t0B$pC&t&>$(" B e %w:w (5&3" e 75="9" @ C5w&>" e 7&5 &5& e 7&5&5& be7&5 7vwv&55&5& 2e b5 uu&F" Ve  ew:2# 5& w:&HL&BH&$Ne &fe pC&tpB$VpB$@@&77Ne 5Wp F,Ne 5pC&55&AWpH,H,5&7R7LNe 5&AWpL, &   R w4w "DC%: e`m e rfww p@&f %^ r<R r< r<R r< rWtC` re rwF   !7 %nD   >#  0!>#&  7 |ww <n#ԔAA WpCe#<ԔԔԔ BeWpCe#ԔԔԔ&  ed&  ed&  ed&  e@ &  5u w N v 5N v 55u   w5u w w@0qw  "  5GWNe 55&7`7ZAWpqF,5&747.w FD % A r  r e0@ԕ A r e0@w@& HADCBF7Ff5w X * f5w B }7 .&ʦW&f 7 @% @A&@7 @L> Be0# @є     BA   W e B@e0m ~` eȐ9 ȕ0 ȕ1 LH F`0VV6rw"ɇ6r@f@  P`Hm`  F FɷD70AWpuqH,5&77AWpuqL,5&77AWpuqP,fef ~%%N  "  5 >$f ~%N w w 5 5 AWpBBm`u % @ 5A ruWp>,5 AWpAmBBm>, %@w. 5  %AWpAmBBm>,A w " 55 AWp>,mAWp-F,eAWpNe>," @ v 5%yMAWp1>,AWpCpslF,F,AWpqH,fAWpH,H, PP7 EDE!wEED5!5! w |#W!wwh  #wW! B  w w wzwh  # E7\EUE@U@ E UU   BE? eCE e@E x$5xe5f5@NeY H e 5@(> *; ,66  ,Bmtmpnam.om 2 lw *ea " &4f e@wpl%d%cIYx_IEH0958#2_tmpnam"~tmpnamscsv _getpid L24_printf cret printf.om UL4w F@e7@e5% zwe   % uewe_Vf@& %_V%ue-dl Xr0J0 5 h5., & T55 5 5  r eA! y"N J Z@YN ?N :u6@E? -@e5=5e@ffe& e 5 @e5 f@& % ?F@e5N 55 @5@@5rff %@ f@& %@ ff %@ @e7 5_%f& %ww | 0l hwd5  @A tE5 @e0?, (nL10L10000L10001__Iscan"cret L10005L22"L21L10007L10008L17(L13L186L27\~_Iscanchfileidnmatchformatlistp__Isfil#L122L10009 L20003L10002.__Isfrm"__Inxch __Ichar"j~_IcharjchcptrL30L29L20005__Iflot"~_Iflottemplengthfptrx__Inodg"__Isstr L33w @t5E @E5% e7@e0? ww 5 %9AWp Ameu5 %0 @ww | xwtw p @e5 @ -N JA r }eA r 5 @e@-= e 0@? @e@-w&2@H!"%(!&!VDV(2DV(2<<Vy )_ftoa"~ftoaiendigprecformatfstyleikxystr csv _nargs L2L3`_IEHzap L10000&L10001:L100024L10004NL4VL5ZL6|L8L10L20001L20003L12L13L20005L16 L17pL18RL19hL20007ZL22L20009vL10005L10006L2L32L20007_atof L10011L10012L20008L37~_Inodgch__Idigt L36L35L10013 L10027L10028L73L74.L10034L10035L10036L10037L10038L10039L10040 L81lL79dL59`L62L64L61L76@L66L60|L77TL49ZL67L63~_Isfrmchspeclengthlflagpo)))))))   ))5L26XL27L28L20011L31RL20013 cret fltused dummy.om 0ndigit"_ieh305i"clenf.om $`w 5  @ ȋ@wIy__clenf"~_clenfnscsv L2L20001 cret scan1.om sw 5 %w5 @ @a58 % 5  interL45,L44L10033RL10014L20011L10015__Iint L20009__Iestr L10020L20015L10021L10022L10023L20013L10029 L10024 L10025$__Ilong L75B_printf L20014<__Imtab __Ispnd L80\__Ierr L82{fltused scan2.om z txw 555 5+  x @ @- AupAmuf %N 5& 5y  y y)))yy __ptrb%@%*@ @aAAm Aap Ne@ @a& f& %w w w5 @5 7 y x @wNefe   ߃  A@ w 5 wz }w dPffe %  wE @ 5- dA r 5u-A 5re0= A 5ruA r 5 = wftoa _scanf"~scanfipnpptrsjkflpp1p2p3p4 csv L2@__Iinpt L6 __Igstr __Igetc __Iungs __Iungc L7,L8L4TL3Z_cgetc _ungetc L20001L50fltused scan3.om |Bw  Nf f fff e   ww @ȥ^5 5 @pB % @AB pB@ 5%]wRw N H D 5  @w$w @7 yw w @B ww ww w ERROR  9999__Ierr"~_Ierrgicalprbufspacesbufprevput.om i("xw  ed-( wunprint producing too many chars9IIYI_IEH3rev"~IEH3revccsv _IEH3out _IEH3out L1$L3(_IEH3err cret maktab.om Bnw @ȥ^5 5 @pn % @An pn@ 5%]w_copen"L10001L10002L5L9jL7PL6JL4L8dL10x~copenfnfilenametypecsv L10003_open L20001(L2.L12B_IEH3mbu cret _creat L11_IEH3err cputc.om 08w % %@wAWp eu@ N @ f A@ HA1`@A@,@ & f abc d emessagecsv L2_printf _cputc _cgoof _cexit cret __Iendm#B__Imtab"@~_Imtab@chnormaliformatpL4`L20001dL8L20003|L10000L10001__Inxch"~_InxchchL11__Isfil __Igetc L12__Ispce"L13L10L10003L10004L19L15~_IspcecL1y_IEH3end#n_IEH3mta"~IEH3mtachnormaliformatpcsv L2 L20001$L6VL20003<L10000NL10001Rcr%@ @@p&f % @N+ @@0 cputc cputc: %d not opencputc: writing %diy(HX_IEH3fpt d_cputc"~cputcchfn0005L14__Ispnd"~_IspndchL10006L20__Iinpt __Iungc __Igstr" ~_Igstr __Iungs"0~_Iungs0chnodig.om L@2w @  w@27 y +-.Ee,y_IEH3nod"L100012L10002<L20000L3,~IEH3nodchcsv _IEH3dig L2L1cret L10003$gets.om et nexch.om G 6w  5@ @w9Yh_IEH3nxc"~IEH3nxcchcsv L2_IEH3sfi _cgetc L3"_IEH3spc L40L1,cret unget.om ,|,w %| AWp eu@  f @Aep N A1@H@ wungetcungetc/unprintf: buffer full file %diyfpcsv _nargs L2L3_IEHzap L10000&L4.cret L5VL6_IEH3err L7n_IEH3mbu L9_seek _write L10L11L12+_cout#makbuf.om =Dw ,AWp eu@Ap@A p N %xNef %( = % $ !Ned 5%.@ p@Aedp@=@p @A ,Rw %R u   =%  w=@gets IY _gets"~getspscsv _nargs L2L3R_IEHzap L4*L20001 L5<_cin _cgetc L6HL1Dcret puts.om `Vw  %V u@& @ 5  _IEH3fpt d_ungetc"~ungetcfnfpccsv _nargs L2L3|_IEHzap L4<_IEH3mbu L5\L6_IEH3err cret getch.om 'xHw  w)9HY_getchar"~getcharcsv _cin _cgetc cret cgetc.om pZep@=@%  @t5pw8Xx_IEH3fpt d_IEH3bsz#_IEH3mbu"~IEH3mbufnfpblocbxsizetypecsv _ttyn L2NL20000FL3 @wputs iy_puts"~putscfpstrcsv _nargs L2L3V_IEHzap L42L20001"_cout _cputc cret cwrd.om P w @@5A@puNff %5wA 5rw @@5A@puNff %5w|A 5rw % %N$ AWp eu@ NB @  f @9 Gfe@&@p&f Te  x@N] @@@ @ A@ wcgetc cgetc: %d illegal file numbercgetc: %d not open to readcgetc: error on %dXv_fstat L4pL6zL7_alloc L8_IEH3olb L1_IEHfbak L10000L10001 cret cflush.om w % ?%;AWp eu@  ff %@p@Ap@ @ &f %w`cflushYiX_cwrite"~cwritefn buffunitlennwrbuffp1csv _write L10000<L18cret _cread"H~creadHfn buffunitlennrdbuffp1_read L10002L2unprnt.om fwDe   % && e 7 x7 nׯn-_IEH3fpt d_cgetc"L10003L13L16~cgetcfnfpcsv _nargs L2L3_IEHzap L10000&L44L5$_IEH3err L10001PL6^L7BL8t_IEH3mbu L9L2_IEH3fpt d_cflush"~cflushfnfpcsv _nargs L2L3_IEHzap L1L4v_write _seek cret ceof.oom tw AWp eu@ w w AWp eu@@ w YY_IEH3fpt d_ceof"~ceoffnfpcs f d.7 \ .|B Jdofecsl ӕ- 6 r f e0 $C~ fWtE Ee0    & `w t phΟd ^  V  J B w7 0 & "0  Wp `e0[HY0000L1L20002_read L10L14L15]cret _cin#putch.om [Tw @& w9IXi_putchar"~putcharccsv _cout _cputc cret cerror.om X@ w B Nf f fff e   wERROR _IEH3err"~IEH3errabc dv L2.L1*cret _cerr"2~cerr2fnfpL4VL5pL3lcexit.om *lw 5 N % N wIhx_cexit"~cexitircodecsv L20001 _cclose _exit cret cclose.om w ]%YAWp eu@  @   x& f %@ff %@)9HHH_unprint"ndigix$pfloat pscien _IEH3rev _IEH3bck formplooprjustgnumwidthndfndswtab|decimaloctalfloatsciencharacstringlo emessagecsv L2B_printf _cputc _cgoof#@_cexit cret copen.om 0,w @7 y 5  f 5 Nf @wf 5f N arwjPJdxcopen: bad file %sHYhAp@0 @ @%@  @ 0 N w6@ &f \L(8I_IEH3fpt d_cclose"L10002L7L6\L5L~cclosefnfpcsv L1L100004L2r_seek _write L20000p_IEH3olb#L8_free _close cret getvec.om 1xHw N w9HY_getvec"~getvecncsv _alloc cret relvec.om dxHw N w9HY_relvec"~relvecptrcsv _free cret wdleng.om (`w 55 @wIy_wdlen H) ) )YY )) 9XTqqqqXHX8XH8Hrewind"create"fsfile"w r a l zero.oom u""H&qq, qH((XH(zero"putchar w r a l altch.om h"~f7t q,@ @  @  ȝ40 q,q  )g"~wdlenglengkcsv L2L20001cret system.om 46w  fA>6 eNe w/bin/shsh-cIY_system"~systemstatusstrcsv _fork L2(L5AL4>L36_execl _wait cret ciodec.om  _IEH3fpt dcalloc.om Tw AupN w)_yyval _yylval _yypv _yydebug#T_yyv ,_yystate#V_yychar#X_yynerrs#Z_yyerrfl#\_yyparse"L10003^L25L28L380L10005fL22L9L13L15L21~yyparse9YIiy altercha"plausibl stats allocate release copy bufchar getbuf swap w r a l w1 flag u1 fixct nchar|alloc.om f"<$& xCC  6 jq&  6`(  <  w`<  IXi_calloc"~callocnscsv _alloc cret cfree.om xHw N w9HY_cfree"~cfreeptrcsv _free cret alloc.om |w D m" a2  eweE !݃%%5 %Je w fDe!c bb! c33wpsnpsaccsv L2*L3HL4p_printf L5`_yypact _yyact L6tL1L10_yylex L11L10000L10001L16L17_yyr2 _yyactr _yyr1 _yypgo _yygo L18pL20001dL19xcret L26_yyerror L29 L20005L31L20003L34L35L36L37L39DL40Blerror on copy f < , Wv Ee<   f1N1N1N1f&@l1 11 1 ,    ,2 2 $2 4 7 f& Wv Ee< , @E7 2h w$e$2 ,@`&0 w2 ,f  2 2 $Wv E@`e< & 7! ,44 H_freelis#_slop#_alloc"~alloccpnpsizeasizecsv L2BL1>L20001L9 L200058cret L3JL5VL20003PL10000lL10001n_sbrk L10_free"~freezacc.oom >#P0w w)9_yyaccpt"~yyaccptcsv cret zerr.oom C#B\w N   %   w7. y  rblx %s, line %d, on input: %s \t \n $end %c    (i  e eD  q,@ p f  Z 4  f7\ q,@ @  8@  Jȝ ,   4f r4   ,44e&     & ZZeXpZ@11    Z Out of space. @ ZeXpZeXbBl s3 BXX& R 1Z1 XpZ f&7 Z`COeXcpnpaptrptrL12L20007L14L15L16L11iehzap.om 6XB,lw f %B %Z % w: argument count wrong That's all, folks 9HHHy_IEHzap"~IEHzapscsv _write L2BL3Z_exit cret _yyline _yyerror"L10001L10002L15rL11bL13lL17x~yyerrorscsv L2_printf L3&L4L5_yychar L6N_yysterm L7L20001DL1Jcret L10003ZL12L20002fL14L16L18zinit.om G#P0w w)9_yyinit"~yyinitcsv cret Klaltercha putchar lookchar w r a l ncharLlength.om r"H@@@@(H8Hlength"position" w r a l rewind.om s"ekchar"Dputchar"allocate"release"\stats$>w!r!a!l!bufchar"<copy"getbuf"~swap" fixct"^resetafiRb1"<badafoutTnbufw1",cleanwheadb1s"b1e"$u1"4flag$<getbnochncharXnbuf2hsznumbnumb2initl<log2NzzzfrlistZxxxhblkXfrendzwwwyyy d AWpNVf  I "@&f e 95 C , )C% "C  %%C   , @ @A@lH wX Jw <% ,AWpAVCplXCpɜZ@   _J   \ xH C5 WpNV B5WpAXu%> 6NWpfVf h%"f h%  "f h%  N% f h%collect~exp2dpreposteusefulPloop1loop2advance8headszloop3coalnocoal0strbufzbotchstrendXdatadrVdataszasmemerr2bgargsheaderszendZ &"f h%" B5 "f h% "  j N% f h%WpAXu%WpfVf h%<NvWpfVf h%f h% t" B5"f h%(WpAXu%WpfVf h%NWpfVf h% z"_ 7 V T7 tw w %b@ ;WpuV"e&"@7% 7@p" -% ""     #&7 w$ w  "N7N y % 7    "r"*\h#'"\T J d\>>6   , $ > Nw w n %* *2"j7 y */%" "%\  " "w  /*%" w % 7   7 rw w %d d7 Z  w _" 7 tw h dWpuV%= P: n 4BWpwX%78X: & 6  w %  d @-  5 5`u 5 R_F" A" >"2"M@ @m& F @ @m'  MM "!!B Bm p"m! " !% !!! R!  u-5  f  @  % M N6@EH5 5 @ T55Nef  L % &!KZ5 #%! /"__`p Rw@p" -% "" |7 w w c  w hrw Pw w 7 Dw w z  wx w f @-E_7EwE7 E7E7E7E@@muu AfAVpu @ %9 A 7r,EC r Eu& #@e5u @ A H @wAA` 7rDu@ mDmD5-DЇ E D-DD  @ mDD zD@m{5 % @ @aA pT $L @ @a0 Nef  xww  J :%B ": ~ % H(   & % ( > 8 "  t@` 5&@ 8 e&"^K  7%-JKFKBK>Kww  8J,K>L(K6:7 #&7    5  F@t&e&f %%   %N    5 |  -zD  ^DmdDH RD @  >DmDDH 2D@*D@&D w u@@mȕ @ A r 5 N ff N% @@mC r e0Ȑ @wVw D    }w, w % 7  7 2; 0; 7 _ |7 ;7 ww  d \w ~ w  @ XN@me5'5@ A @lXN 5 } @ XNN u@ A @lXN fef %%3%/Nf %@- 0   Nf %@- /  bN N  d . 5 .  . 5 .  . 5 . hI^I  7"WQ  PN  D  7 &*p p p p   7  7  7  7xwnw \Nq  wTw B L xHx <r <l <5@A 1`XN }  ww @ XN@ XNwA @PN PN%  9 N  ` A@ XN@ &@ & v%A @,XN@ 0 XN w Z~wADeA  A % bw<7 A7 AׯA- A A(wtA7 vA .wjAeB J ӕ- R r f e0 @ >A ҋ D~8 @ӕ0 $f v Le0 9e@@ @@ 7@we&  f <` < ww  5;Nf  N{   Ne V@-@E5%N  N  F@tE % wtw b@5_@ r ebA! y"@  >f6b.^7 [F R8N2 K$G D7  @ @m757 2 /T$ @ @m7F@ @m7  F _@w<w *.ZFnm@ ~@ b~  b  b~ w7 R@ H@ D@0   0@Wp `e0eӕ?f@ ,@P @ ? @f ? V7d? V??-??f@wH fw ww(fww H?&wfw7DA fwJA 7 >fAW,f B@ 8 @&61fA   @ @e7P1@" 1w<fplausibl"lookchar"wc"se F @e5H="f@efe e% AWp Ameu5 E 5%N  @Ae@%'  6 E =%E whw VPWpe&"VwFw 40&",Wpe&"pVX Wp@Z    " @"w w   (N  67 `WpeVu "@&f e5 (_r  b x> \ X ( N xD$"@&f ew2w.(w"f@ww.wfAW @w fX1X7 5 ew4 5& w&?L&?H&?D&?@&?<&?8&?4&?0&?,&?(&?$&? &?&?&?&?&? &?&?&?f& fw:w f D& w }f@ww>wf@fA w,w"e"w"ew"x@lw"pAlewc &@t`e @& HADCBF76<F ` 6bvlt  `(<fz/tmp/crt0a/tmp/crt1a/tmp/crt2a/tmp/crt3a/tmp/crt4a/usr/lib/aign/usr/lib/atabUsage: cref [-aceilosux] file1 ... Can't open %s /bin/sortsort-a-o/usr/bin/upostupost/usr/bin/crpostcrpost-4x-3Line too long: %d %s Illegal character: %o line %d Cannot open grammar table; see lem Bad grammar table. CannoA(Hhhhhhhh8hhHXhhhXHxxcsqrt."csqrt_rval8p z1_gmv8 z2_stsp ftrval8 call cabs. gmv4 c_rval4 sqrt. b_w9aint."temp one@retrn alog.om Z(H  ; 7ww XX)Y9Ialog."dlog."log retrn rerr temp alog10.om \2T  ; 77ww ?[7f(XX)Y9Idlog10."alog10."log retrn rerr temp const*amax0.om ^>0t open ignore/only file: %s Cannot read ignore/only file: %s Cannot read ignore/only file: %s Can't create user's temp file. Error %d Can't find %s Try again Fatal error in %s t = %d Unrecognized flag: %c /usr/lib/ctab/usr/lib/cign/usr/lib/etab/usr/lib/eign/usr/lib/ctab/usr/lib/cignIgnore/only symbol too long < D d >  "'/<\J@|^"'*\00 Too many symbols. Too many characters in symbols. `N`P`R`TWraparound temp file %d &d|ovxfeTa_atan2. c0rdv4 cos. rmp4 sin. retrn d0basedummy_dccos.om 6h@A(Hhhhh(8HhhhxHH    Y@  www8899)amax0."max0."retrn temp amax1.om `H<    Y@  wwwHHHII9amax1."dmax1." max1."retrn temp amin0.om b>0    Y@  www88cbs2lrV 0  %ewdccos."dccos_rval16p z1_gmv16 z2_stsp ftrval8 b_call dexp. gmv8 c_c0rdv8 d_a_dsin. rsb8 rmp8 c1dcos. rad8 c2rval16 retrn d0basedummy_dclog.om r0zrtrrtvrrtrz(99)amin0."min0."retrn temp amin1.om dH<    Y@  wwwHHHII9amin1."dmin1." min1."retrn temp amod.om f8H  /;{@7ww HHI)Yamod."dmod."retrn on,/25!$'*-036"%(+.1478;>ADGJMHhhhhhhhH((dclog."dclog_zrval16p z1_gmv16 z2_stsp ftrrval16 call dcabs. gmv8 c_rval8 b_a_datan2. dlog. retrn d0lbasexdummy_dcsin.om 6he@temp rerr atan.om h<  ; 7wHH)I9atan."datan."atan retrn temp atan2.om j0H  / ;{ 7ww HHYI)9atan2."datan2."retrn rerr temp atan2 cabs.om l X`  Q 7ww f@@&@V@ VXmccos.om oh@A(Hhhhh(8HhhhxHHccos."ccos_rval8p z1_gmv8 z2_stsp ftrval4 b_call exp. gmv4@A(Hhhhh(8HhhhxHHdcsin."dcsin_rval16p z1_gmv16 z2_stsp ftrval8 b_call dexp. gmv8 c_c0rdv8 d_a_dcos. rsb8 rmp8 c1dsin. XY9I)cabs."dcabs."sqrt retrn rerr temp hypot*one@cexp.om q<` 7 77 77ww 8Y9i99y99)Icexp."rval8p retrn temp rerr exp sin cos cmplx.om v0<  /  YQww 8 c_c0rdv4 d_a_sin. rsb4 rmp4 c1cos. rad4 c2rval8 retrn d0basedummy_clog.om trzrtrrtvrrtrz(HhhhhhhhH((clog."clog_zrval8p z1_rad8 c2rval16 retrn d0basedummy_dcsqrt.om 0DA(Hhhhhhhh8hhHXhhhXHxxdcsqrt."88)Icmplx."dcmplx."retrn temp rerr conjg.om xx077w899)conjg."rval8p retrn temp cos.oom z<  ; 7wHH)I9cos."dcos."cos retrn temp dble.om Th(h8HXdble."rval4p lval r4r8 gas8 gmv8 z2_stsp ftrrval8 call cabs. gmv4 c_rval4 b_a_atan2. alog. retrn d0lbasexdummy_csin.om }h@A(Hhhhh(8Hdcsqrt_rval16p z1_gmv16 z2_stsp ftrval16 call dcabs. gmv8 c_rval8 dsqrt. b_a_datan2. c0rdv8 dcos. rmp8 dsin. retrn d0basedummy_tanh.oom LRLNLVHVZVZVZR@(H(hxtanh."taretrn temp dim.om *0/ ;;7ww ()9dim."retrn temp rerr dimag.om l0 V7w89)dimag."rval16p retrn temp exp.oom (H  ; 7ww XX)Y9Iexp."dexp."exp retrn rerr temp float.om hhhxHHcsin."csin_rval8p z1_gmv8 z2_stsp ftrval4 b_call exp. gmv4 c_c0rdv4 d_a_cos. rsb4 rmp4 c1sin. rad4 c2rval8 retrn d0basedummy_csqrt.om Dnh_Rstsp ftLrval4p a_call exp. gmv4 b_Vrval4 c0Hrdv4 c_Zrsb4 rad4 retrn basePabs.oom Tx0  ;7w889)abs."dabs."retrn temp aimag.om Vl0V7w89)aimag."rval8p retrn temp aint.om Xl0;@wTh(hH8Xfloat."rval4p lval gas4 i4r4 retrn temp iabs.om `$ ;7w()iabs."retrn temp idim.om .0 / ;{7ww 89)idim."retrn rerr temp idint.om \$ ;7w()idint."retrn temp ierr.om pl(ltz7 d -^w xeNH ePwz"e7 "e&&pwwz)99ierror."erret#lrerr retrn zeroterrbufzcerrpxeerbufonepifix.om `x(xX8Hhifix."int."lval r4i4 ga<?BEHKN:=@CFILOPSVY\_beQTWZ]fw@ 7 f&f:ЕЕ zP :Cx :: 0 rB`E \  6\ : !: :E R:S: Z 0 & s>e0W!9eW!ZeT!ᇅ @ @  ))s4 rval4p retrn temp isign.om .0 / ;{7ww 89)isign."retrn rerr temp mod.oom 2< /;{@7ww ()Imod."retrn temp one@rerr real.om t0  ;7w889)real."dreal.mget.oo H^,$fA7X^ fA @e7R1@  1 @ www &w Ugetc" getw#dfopen"put.oo |(<fA7v|  fA & 9 &fA @e&7Bw>8@w crypt"_crypt"savr5 key:wheelcod:cagecode:wheeldiv0shift cagewheelwordecvt.o Q: ,f5w 2 * f5w  }7 2*W&fD 7 @% @A&@l7@L> Be0# @Dє l    BA   W le B@e0"retrn temp sign.om 4<  / ;{7ww 889)Isign."dsign."retrn temp rerr sin.om <  ; 7wHH)I9sin."dsin."sin retrn temp sngl.om Th(h8HXsngl."rval8p lval r8r4 gas4 retrn w&w w putc""putw#flush"Bfcreat"flRatan.o : zf5 f5u 7d@ h& `!7J& @ Ae 875775VVfW@H77 wf@@ 7`7PwL 7RXCDmZ ` DeȐ9 ȕ0 Dȕ1 P" J`0DDVV> _ndigit#Becvt">fcvt"8_ecvt"_fcvt"eflagnbufDsigntemp sqrt.om &H  ; 7ww XX)Y9Isqrt."dsqrt."sqrt retrn rerr temp ctime.o e,$ 7 7 7Hww7w())))))ctime."retrn temp setfil.o e<TAw w pw  ѥ !wX)HiH9setfil."X   B:BJRZbjrZ@@!hI@!hAy1?ϑy"?D{Av#OP#C!+C|]2CU*j 4xBJh{CW*RsCL~Szlzerone@lssgtrrbuftopltenth:epsilonL>ten Bpaddigit1digitoutoutoutpow.o (\`f5u @AfW@V fW@V  V)9pow"_pow"log exp badXone@bad1Vhalf@exp.o Y|@f@getbuf chkunit retrn utable temp rerr nice.oo el$ "w(nice."retrn temp getarg.o e,p</ AH  `A T  ԕ 5  wb7 w8I)89I9)getarg."iargc."^retrn temp argp atan""_atan"atan2"<_atan2"savesatanret~pi2sq2m12arctansq2p1*onepi4"p4pp4:p3Bp2Jp1Rp0Zq3bq2jq1rmesg.o t& &@w Ջ@@ 7& Emesg"sin.oo Pf5 f5 & Wf&&7rW?W Wf@@67f@f @AdVHB`R@7^&e# 7V # VVE=sMBԝ`=B.pF:|+eiD(/zC@;\)@3dexp"_exp"ldexp stexpone@outlog2erand.oo e T TXL FwX : w4 ., w$ H7wWp3e @E))rand."srand."retrn valueXseed1VfirstTranDuio.oo X& &q8,_^2L|Evw22-~7A@mW@ @ V@hZL>0BhZL>VV "@NnDOLX2xة3I䔶TX]1 D!L%dIgN5&GbqhDK-?sin"&_sin"cos"_cos"frpi2fourthhalf@P2P1P0Q1Q0sqrt2biglog.o dHf5 @Wf&7V @W@@`RD6B^PBVwVV5@3e1@rzlB#"3h@?ØGe@lB,k$aXUv  8^7V  >787 w  read."write."$seek."Hseek0."nopen."?fourAone@p4p3p2p1p0q3q2q1q0switch.o L fA  AEswitch"sqrt.o Z$f5 @&E@f& e@ B@~VVsqrt"_sqrt"half@ttyn.o Hl*Tf@log"_log"ldexp stexpbignegsqrt2o2one@p3p2p1p0q2q1q0log2ldiv.o x"$6rw6r@_ldiv"_ldivr$"_lrem"dpadd.o JP f@  P`Hm` _dpadd"fp.o.o }pXf 7Pcreat."close."errno."indirtemp rval4p i4i2 lvalp reterrorDretrn   x r"Pl@r r$$ttyЋ7:@ 0/devttyn"_ttyn"namebufrer1ddevler`rand.o *<$7fWp3e @7Erand"srand"_rand"_srand"ranx*crypt.o C .P7 EDE!wEED5!5! w |pW!ww  wW! B  w w ww  E7,EUE@U@  E UU  hBE? eCE e@E x5He565@eY H e 5@> ; "66  "& `&e  "   "ebww5Q$  f   EU P58   PfPPQ7 5    5 C B A  `5  5  5  eE  "$ $5` $$ 5:  5"  5@   wL   w>  (   8mod0mod1mod2mod3mod4*mod5:mod6Jmod7Zbadi1fmod0rssp checkjpctmp&setabtasignsetabsignnormaregsaret2aexpxofloRretahretbVbregunfloovfloi.mulbexpxorsignXac4ac5 gamma.o  0f5 W7 f@3B VVVV& W@-f@)wfwTvJA 7 ^fAW,f B@ 8 @&61fA   @ @e71@| 1w&f@@& HADCBF7F&Jf:t Illegal flag: %c Argc = %d %s%s Can't open %s Zdoxfecsflr  5@   B    ~ Uw j w VwZwRw  7 4 0a U"*W 8U W 8Efc     ` - a h h    a  ! p R B \W !W e UETR5<  5*  Uwp      7 r@r@  e  J7W@V&fA&  7p l hb7T P&@ XHA A&@&@ @ @&A &0 BX  tld\TL|ǹ-q'k@?%CIA!hIIxT0W \A  hw ҕ ZZ r fw e0Runtime error 8YIImain temp"hrerr"fptrap erret argp mesgZW!W! 57 e  , ~ f    $ $$$& N & N  N N S C B A  eW!Շ w^ m rf5e        W!P    0&d& dN & dN dC N eN e-lvbZ :\VL^(Dp\*:JZYIgamma"_gamma"signgam$_signgam$log sin ha[^adghknqtwz}ilorux{~jmpsvylf@one@twoAeightBlargenegativeasymptotJregularlret.ret6erret>goobiep5ppip4p0p6tp5lp4dp3\p2Tp1Lp0|q6q5q4q3q2q1q0s5s4s3s2s1s0floor.o gD<f5 f5 @@W@@@ mio.om %t x  7  e  7  err iill7    v w 7 j b w V 7 z 7 V 7 7 7 d  X V w f, J  (w 0j7 | w D% % w "w ia^fvegd|idlhhJxTp-l0t1t2t3t4t5t6t7t8t9t,/( )"@ w z  x w n7    ^ w w \w b   72 H w d w (kw _floor"_ceil"floor"ceil":one@fmod.o mdf55 @u 5_fmod"one@savr5.o  savr5$ 0 * " w  P7 _   w l4 7  w  $3   .  )& w z7 w Z7lw   .6w B7X e :e w f 7 ~   wP zww mww @ @ 0 @#w ef r @Pe007w $ q 5w fw w0 | 0 Ћ     0 @e:6@ 0 8W w 4d- , & 6  w Lb ^ Z%@- _le % N   D@&   @&   7 Ne  Ne   fe $%Ne  fe $% Jw x X P@mRȕ ?B 6.@m. A1`@ȋ_Z@1 Ń@  Nefe T   xfe  Ne  7w f  - 7w g  f & 9 f @e&7 @l7@ 'f` @e71@ w Bh 1 @  B ~ f w 4 0 Wp `@ A   y  f\7  %  &  w 7 w  7  w w w w 7 w`nw Rw 2w @: 6  2,"rtibptm.extm.lngi@fptrap"ac0$ac1$ac2$ac3$reenterspc"spsNe   fe $%Ne  __fe  Ne  _fe _fe  Ne  __w (  %= w N ~=w @  x  N@ &+ %w l fw Nf  Nf   x rww t D C ̢̋ wZ̢w > 2 ,w@w .-@= Nf  % N1   ww ~ww ee(ed w ~emw -w ,` w  0w @ w ~.w  0w ~@w ~w -w  +w r e0w @e0w & 7 :& w ve   mXcm ` 7 -w  0w @w ~ .w    0w ~@w ~7 n ׭pr׭g ׭]?V P ׭G?@?:$w P w d$sr0sr1trapinsbadinsfpsrclass3class2hi.cfcci.setfi.seti i.setdi.setlfsrctmod0rxmod242mod0fmod24fsret i.ldfpsi.stfpsi.clrx:i.tstx\i.absxVi.negxLmod0ramod24imod24dfregbi.mulxi.modxi.addxi.ldxi.subxi.cmpx^i.stx(i.divxDi.stexppi.stcxji.stcxyi.ldexp\i.ldcjxi.ldcyxretDe   % w7 7 ׯ- x v(wj7 l .w`e@B J ӕ- R r f e0 @ >  ҋ D~8hl ӕ0 $f v Le0 9e  7we&  mv t ~    ~ w7 H > :0   &Wp `e0eӕ?f ,P   @f   7 p  xw ow 0  "w > P w   w rww  w Jfҋ tw ~w& w  w   ѕ  HH w  t  T 1 ,7 ? 7 7 w 8׭r׭׭ ??׭?   & w %    + - w %  00 @ e0 .    d  + - ew J 2 `  &    ,% w n&  +  -w 0 + - w 0 u p `e0  ,w & w "w }zw D~w \ w |!7 tw MJw D~\ w 1 @0  \\fortxx "~chkunit"creatf"openf"unit utable$ btable$0 filnam buffer bufp fputc.flush1`fflushRfgetcnlflgb fputccBnspace spacesgetargnflg ilen twidth fgetcnV storin gcflg gatofB atoi iowu"l ioru" rewi" enfl" ftable$X _end r1.om +d\\ \&\e&&&&\&&\H`" \ E`f\\call"callp"retrn"stsp"8rc.om B \e \  C  C   rCCf&\  T@E@DD@CDD@ED@BD \VEH    &&\ Vf&\    Ef\   @    p`B `$"% \%\  a  \   \ \w P)gas1" gas2"gas4"gas8"stop"lval" rval4"4rval8"$do1"Zdo12"Bdo14"Zdo2"Tdo22">do24"Tgoto"~cgoto"cagoto"agoto"rerr gotoer2.o CDB &@f&wf&\c8c16"c16c8"i4c8"r4c8"r8c8"i4c16"      m -d N!#! B 6 *      \ \%H#pU\  \ %%%%%%ilt4"ile4" ieq4"ine4"$ige4"0igt4"<lan2"hlor2"dlnt2"pieq2"vile2"igt2"ige2"r4c16"r8c16"cad8",csb8"<cmp8"Pcdv8"ncng8"cad16"(csb16"8cmp16"Lcdv16"jcng16"rval16"rval16p"gas16"ceq8"cne8"ceq16" cne16"cpi8":cpi16">one@abcdefgargsargddivideprd.om D.0Pp~R \ \d b\898slist1"sl leq2"vine2"ilt2"|lne2"leq1"lne1"comparRoneHzeroNr3.om 00H \ \ V    \lif2"lif1"rif4"iif2""iif4"rif8" r4.om 24e\\Vpf\ r\ \ \ \&\&\iad2"isb2"imp2"idv2"i2i4" i1i4ist2"slist3"$temp re.om FFl 6 . &      \& \ Hrle8"rlt8"req8"rne8"rge8" rgt8"(compar:one0zero6rf.om HFl 6 . &      \& \Hrlt4"rle4"re " i4i2"i4i1"ing2"&rval2"*rval1".l2l1"2r5.om 38` @  @ @ @f\ VH 6  \iad4"isb4"imp4"idv4"ing4".rerr load"storer6.om 5|     V&\ \ &\  &\  &\q4"rne4"rge4" rgt4"(compar:one0zero6rg.om JT`\\\ \ \`\`\`\ `\ `\gmv1"gmv2"gmv4"gmv8"gmv16"stst"gmv1p"&gmv2p".gmv4p"6gmv8p"Bgmv16p"Nrh.om L      Xrerad4"rad8"rsb4"rsb8" rmp4"rmp8"rdv4"*rdv8"&rng4":rng8"6r4r8"Dr8r4"@i4r4"Zi2r4"Vr4i4"rr8i2"di2r8"Lr4i2"ni4r8"Pr8i4"hrerr store2r7.om 8e&\e&\e&\e$&&\ e&\w 2&N`\w &ew ` f\bf~\  ePp~ f #e\w  #e&\ #e\   e$&&\ #؆e&\   ʆePf&\achkgal1"gal2"gal4"gal8"gal16"$gar1"@gar2"Pgar4"`gar8"xgar16"rerr rx.om N ecore$rr endio"rio4"Brio8"<iio2"Niio4"Hlio2"Tlio1"Zcio8"cio16" ecvt fcvt _ndigit slcnt ilval itype iowf"viowp"liorf"formp$ setiordflg binflg itmfnd^ scale\ itmflg pbuf ppar llpcnt fmtchr&llp crackngflg` repZ itemswitchmswitchafmt^ffmtvefmtgfmtdfmt|ifmt Pp~N w fMw e&N`\achklvalp"rval1p"rval2p"rval4p"rval8p"&alval"2alvalp"arval"Larvalp">rerr getsubhr8.om 9l(  \  pApf\ipi2"r9.om ;X0 & 6  )savr5$_exit _main startdlfmthhfmtJxfmtTscalminuslnumbtslashlpar rparquote@gnumelist_nocr$d eorec1eorecngetitm0crack1 width err1ndig cvswgflg iocviicvlocvPlicvfocvficvdocvdicvgocvgicveocveicvaocv aicvzxocvxicvhocvhicvqocvqicvgetbuf< 66w f\ w f\%W@  @@ W@ @ Mw Ione@ipi4"rpi4"rpi8"rerr ra.om =0H V f  &\Aw )9Irpr4"rpr8"log exp rerr error*rb.om ?<0`&&\ 2*D! w chown uid f1 ... eCע0ע9w 7$w w DCan't open /etc/uids w w Who?  : w  ʋw :w XPw ww'77 Ћ w ?  }  0 Wp ` /etc/groupfA7~ fA @e7x1@  1 @ &@wLՋ@@ 7B Ewww &w ~UL & 6  w %L p  e  p p r  J @Ӌ%Ң  @ p &   p $ E J  J  !  Ӌ     J  %N7  `] p& `  E &   & ~% &   p %ʥ ӋҢӋˋ%,L#$  J   @%"L, @.%@N   **e`   +  +  +  ++  +  +  ++  +  +  j+ @ w<w *B55  L+wE%@ B+ 0+5_$ &+  ` 0 +  `& T "fe `& |%  @a   @a& T % %  *  T fe |% % @a 0 n*  @a& T "fe @a&,w@w .B %9 Wp D`e%0ww ~wr*Deh*  b* % w7 N*7 N*ׯD*- <* :*(w.*7 0* .w$*e6B J ӕ- R r f e0 @ >) ҋ D~8^b )ӕ0 $f v Le0 9ez)t) l)f) 7V)we&  m:) 8) ~    ~ w7 ) ) (0   (Wp `e0eӕ?f( ,(P      p w w % wN 7  w Ce %,%:   N %  7ww  %9Wp D`eN %0Rwdw R    % *w>w ,- ` N Xf % % X& %  %ww Dԋ@ ww ~wDe   % "w7 t7 tׯj- b `(wT7 V .wJe B J ӕ- |%  @a $  @a& T %  %_ `  6  `& T w D ) )'e!-'N)&C ewhEttE 0@. Nz)&_ e j) P@.  0! NJ)&{ e  %  w  ''%d  " $, &fe& |%w&   Aap$, %dww pf( %Nf( t %@-N  f( 7 X(D @e!ww %d2&( ( @f ( .7L( f.(x(-r(j(fwwlwf@wwrwfwmxwwmfwxww f@ww~wX f$f@w|wxw*f@@& HADCBF7V#FispF/dev/rrk2/dev/rrp0Bad flag cannot open %s %s: Not enough core %5l arg; %l/%.14s entries link  R r f e0 @ > ҋ D~8, 0  ӕ0 $f v Le0 9e  7|we&  m` ^ "~  "  "~ w7 2 ( $0   Wp `e0eӕ?f ,P   @f  $7 4 $-fw@e7: wfw@ JA 7 @fAW,f B,&  @a p$, %d7 &Nef : % %p$,ww f' %f' %%N  ww rB %9 Wp D`e%0wVw D7 r%7 8&7&7&7& V% N%e!, : :' @ wEtWtE A@.@0 w ~wGDeG  G % w7 F7 FׯF- F F(wF7 F .wFe B J ӕ- R r f e0 @ >xF ҋ D~8  cnt %l %d %d Monstrous directory %l read error %d write error %d dox,f:ecslHr.0@ 8 @&61fA   @ @e7 1@F  1wff@wL w f@wwP wf@.w f@wl f@w~V wN f@wdw`Z w*f@@& HADCBF7 Ffw @ 7 f&f$ЕЕ dP $Cx $$  rB`E \ \  !$ $E R$S$ VFӕ0 $f v Le0 9e"FF FF 7Ewe&  mE E ~    ~ w7 E E E0   EWp `e0eӕ?fzE ,pEP fE `E @f DE TN72E TN(E E-EEf@w fww wf@ww wzf@wpwl wX f$f@wHwD w*f@>8~_ & 6  w  f7b%B> bw .+3e@ȥ-'t7 y +D@  e %j N w T f z 7*N  [N  v  `%lt7a Wp1 + %ae  7 a " z &e `% -aa |at&ez  n %e-\aTa % Veww t5@E%@a \ wZw H 55@E%@. f  D 0 & s>e0W!9eW!ZeT!ᇅusage: newgrp groupname /etc/groupcannot open group file %s: not a valid group name /etc/passwdcannot open password file password: setgidSorry /bin/sh-Unknown error: d<o6xxfec"slr$    ! 3 E U a s   # 7 K \ k z !Error 0Not super-userNo such file or directoryNo such processInterrupted@& HADCBF70DF@ J bsf</dev/rrk2/dev/rrp0Bad flag cannot open %s %s: free%l dups in free missing%5l spcl %6l files %6l large %6l huge %6l direc %6l indir %6l indir2%6l used %6l free %6l indirectdata (large)indirect2nd indirectdata (very large)data (small)%l bad; inode=%l, class=%s %l dup; inode=%l, class=%s %l arg; inode=%l, class=%s bad freeblock read error %d No update write error %d dox&f4ecsl %e   \   `5 %@mAmp ww 5?@E%@8 .e * )  "D"e %D" D  0`  e D f  wPw >D..w$ w %% f \  D%  N&  e D ww A rWpDe+L- we%b+   %   n Lw LCB5_R%_^  system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough corePermission deniedError 14Block device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken Pipe @ @BrTN 35 %t `  b `%tE bd& `%Eedww f' %Nf& %@- N  jw~w lf& %f& %% N  &w:w (B %9 Wp D`e%0w w  aNff D%]a ww ~waDea  a % w7 pa7 paׯfa- ^a \a(wPa7 Ra .wFae( B J ӕ- R r f e0   R8(( & 6  w  7n*%?R X*w D*0e@ȥ-$7 yX@  e %~ $N w p f F 7) N $ wZ7 )N $ ( n%'t7)7 )z) % $ b)Z) P)a -N)  &e n% -.)() ")te  %e-))7 ( -(( &e n% -(( (te f %ew < C@ >` ҋ D~8P T  `ӕ0 $f v Le0 9e`` `` 7x`we&  m\` Z` ~    ~ w7 .` $` `0   `Wp `e0eӕ?f_ ,_P _ _ @f _ f7_ X f__-__f@)wfww^ wf@wwd wzf@wwj wX f$f@ 6D & 6  w %?  .w -0e@ȥ-$4 7  y @ z e %2 T N w B p- f V 7Z- N^  U^-_Nn  7 2-7 0-7 .-7 ,-7 *-7 (-7 &-7 $-7 "-7 "-@. %@N , |%*t7,   e |% -,, ,te  %e-,,7 , , |% r, _ R s  T  b, `, Z,x  U55E%@/ &e "5 @ "X el( $e @ %XD(b  ww D&(5(`ȋ&(` ' $ 'E'`&E' $ewdw RCB5_`%_' $ 35 %t `  * n%tE *,& n%Ee,ww f' %Nf' d%@- N $ pww rf& %f& %% N& $ w|wxp w*f@@& HADCBF7ZF DaisrxH/dev/rrk2/dev/rrp0Bad flag cannot open %s %s: %d /%.14s ???.../%.14sOut of core-- increase NDIRS Monstrous directory %l read error %d write error %d do xLfZecslhrf(  & 6  w @- \ @ R e%ww .Nef  2 \_@Ej 7 y? I T \NE@t&EZ \%_ f  7 l   %7 .z 7~ yy _~ _~ _~ _~7   ]7 c # _  -d 7   _Z 5. _F Z %_2 _ ph@% _~- PJ F  b &  & 6  w  b% @  eu/@  r e$A! yk @5 J H e w . ^   l 7777772t& 5t  7 &  e@ @r _L xR5 5   r5 A5%0 5u- N e Nf %e %< 5  5  @ 5 /%J %K  t5@ t5BN  5N  5  B-B-%B-B-% &    w4w "DC%: Le`m e rfww p@&f %" r<R r< r<R r< rWtC` re rwF L  L!7 L%n  H  0!H 7 N"ww xԔAA WpCeԔԔԔ BeWpCeԔԔ2# L % 5 7{-  5 %; _ ;    @ %_8-T _8(   _~  @ %_8- f_8\) N J @ %_8-*_8 {  _ , %_l _ @  _ @  M  7 S : -X  -:    5n.  bZ % #@  4 t@- N  x % d @7  7 ~ 4 l   T5 M-HMfe  5+ P%e    l See N   e %͂fe ( - ( 5 5 5% % -l N  5 =N 5 @ 5e  t@-@ m N@ Ԕ& l ed& l ed& l ed& l e@ & l wxw fA r nw^mw FD % A r  r e0@ԕ A r e0@w@& HADCBF7 F6rw6r@f@  P`Hm` `:*4>39:<14;LJLLLt/dev/mt0bad character in key %l%l-%l ,%l- no filesystem name can not open %s last chance before scribbling on %s %l files not rest2 F > "-5IL U \-   c   %7v7 -l r   \H ~w~w l    5 @5 b @ @m@m5 AA @ @   { / ww @ @m  w   5%   4 -H<* ,e* / v\ eh b-\eR-LD/ 8m%N$T%   r _6 (5 @ p- @ 5%5 @ ^  5S%ON b 7D   l %   %N r%,r@   R  r t@-_0 H wt w b D5 S a I5?Ne a&   @a *% Ne @a&  @ @a @ @a  @a ored - small ilist %l not in range %l not dumped %l does not exist the epoch disk read error %l disk write error %l checksum error change tapes skip %d tapes tape read error %l can not open %s %s bad freeblock out of freelist d d o x f e c sp l r "PFptM:/ESTEDTDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec  T  ww /    - w  -zw ~wr Deh  b  % w7 N 7 N ׯD - < : (w. 7 0  .w$ e B J ӕ- R r f e0 @ > ҋ D~8   ӕ0 $f v Le0 9ezt lf 7Vwe&  m: 8 ~    ~ w7   0   a w w D5 _  a0  %%  J a1 C-E_  @a0 % 8%  a1%  Aa1  1 %% a& @a& (  % >% 2 a1%  Aa1  j 1 C- 0  %% a& @a& ( %Ne& ( Uw4 w "    & ( w w @ 7N  w w f Wp `e0eӕ?f ,P   @f  7b x-rjf@w fww wlf@ww wJfww w, f@@& HADCBF7F      $ ( @`m $ ,functionsubroutinecommondimensionblockintegerrealdatadoublesysmovtstclrjmpintcharf N%f %% NB pw w f N%f r%% NV ,wX w F Nf   Bd % 3 k < w w   -\ _7   B k{     v % 7   f % |-xt-plb`j N%PPfR %%4  @   @m %ww  %0 %9Wp D`e@ @T  & 6  Dw   7N'  7:'e%@ȥ-7 q   e % DX! & n7$   5$   & ww  & 7 &p$7v$7p$_V7 h$7 f$b$^$ J 7L$ %;,7.$%, ,$($$$ r e A! y4 \ # J  #e   7% f7 ##r b % 7 X!    @ Xloatdoublestructexterngloblbyteeventextdatabsscomm%s: cannot stat characterdirectory block special (%d/%d) cannot open executable pure executable separate executable archive data c programdata c programfortranassembler programroff, nroff, or eqn inputassembler programroff, nroff, or eqn inputassembler programdata commandsprobably text with garbage with garbage d(o"xdfrecslrww ffE %  ww    7   H x ԋwbw Pf r* %x % w%y `%  T%     w  f& %N& 5 f& %e0= =@ww   %d B  , j &  ^V    p %dw&w %d. ( ,   p %d7 f (  pww x# %a%z 8   L#Up*_ _ 2#"#e7$# ## ,%  f #  -"""7 %_  $    ! . 7$ R ,7 $"h J ,_  N$ _ _  . !  7d$   @"0" E76$  _ t_ww   +%9.5 AWp ue5` (%0%9 ! @ 5@ ` %05    r e A!  <[1234567890-_]^\ >qwertyuiop@ asdfghjkl;: zxcvbnm,./ <[1234567890-_]^\ > @ ;: ,./ <{!"#$%&'() =_}~| >QWERTYUIOP` ASDFGHJKL+* ZXCVBNM,.? <{ !"#$%&'() =_} ~ | >QWERTYUIOP` ASDFGHJKL+* ZXCVBNM,.? ~wDe   % w7 7 ׯ-  (w7  .weB J ӕ- R r f e0 @ >4 ҋ D~8  ӕ0 $f v Le0 9e  7we&  m  ~    ~ w7 p f b0   NWp `e0eӕ?f6 ,,P "  @f   7. y b!  N!%/e-B! 8!-.!,!&  -!! ! L%a%z - 臀 Up *e  wL `- - Lw   7 7 - &w w  | j e7l b h -X Z P X ww  J ww -, 4 -( . ww  d% %p%l  "%l " >% wpw ^7 ! $% % X!̋`!#% L % % 6! % nX! -f   7 ߊ 7x 7 vfwwwf fwwwF f@w0 fwtwp$wfw\wX*wf@w@w<0wf,(wm"6wwmfw6ww f@ww<wf f@wwBwBf@w N  ww DeL@4 &   w!Ԕww r! h!   ww $    w 7 .! 7 !& & %7 ! ! 7 ! *% %   w@w .7   7|7 7hwV!& L% EJw !h % %  7 wE %#.v w x! l% L% 7wVl%%#^E   % # w  l%Ne  l%l%n "%l% T LԔ -<چl%l%6 "%ww 5 w)-  n%e V5 eee# J  @w2w  N H         e <   Ne  %  ! w w r  e 7 -7wd w R ! f N !E  ef N !!w w  !f $*.[\~"">6HH,+r?/bin/shsh-t!/tmp/exxxxx T,0  %ew d & 6  w _ @m7 :  (7 Z :  7 O :  7D :  7~9# : bb/' : NP%+ :  721 :  78 : %k  B-%5 S   O:> : @ : G : M : US : UpY : U\^ : UHf : U4 7N ,x    N !E̔ԥ $`n!e E7`Zw ~ef N D!w DuEC E% 7 !-|!w]  "'` %7 7RL'& %e'w& -6  * ") %7e)w f %f e% w w  7 8!(7 , t e Ee0$te!    . 7N 777e7w w    ~h%  m 7 w ;5ND  (57 x  c Х   ew~0  5 h -! 67 H-  <Lwz?? /bin/sh-tArg count Cannot open utmp ! ... /etc/utmpEOT not logged in.    7     77%     n D 7  D 7%%  67 7 7 r 5* 0BV " % * &_7 . *m(- 5 m#-   " %7 %  5  7   `ȋ -   -x  5r d  n r E5P  5S~D 4 B B 7 8 4 0 _ Ԏ  4 %  De % %%\ % ԕ\Ԑ@e!ԕ E- - &  @-Ue-5 E@e7 2e-w6 w $ v-&  $U       J  ` 7`He-@І w w n%  # T%\ HU% !Ґ%$~ "7%g7  wH w . !w* Ԕ7  w !l%#-Message from Permission denied. f@  x "@ $$ttyЋ7@  /dev/ttyx/devw   -        %-   7 ww  @ ȋ T wr 7 w T  ̥9 Wp @@`e̥0 7^ y t  t 7B &VpCww D5 %a%ze5 %A%Ze  ww   -   ww  @ P  !%       -  7 | 7 w6w $D5L %a%ze54 %A%Ze  E * % - 0@E%l'(z%& E%1%6@ n+@ &d+ %5,e!l%7%l'!l%Ԕwhw VDCB Ԕ%l'^wBw 0  n @ z  ex J pe - a7Xe & \  \ & \ w7*e \  \  w DC !wzw h-wfe w B$D@e55 !ʋ:7 %^  z%*_db & 6  w %@5 f H 5   N 47"  % 5lf f%5 >%  % ll %@@-^%W5 @@mȋ@@mȕ @@m  %5 @  %@ Ne 5@@m  % % : ef ,P   @f    $  -   w  - 7 w   ww    %   %     wZw Hfe %w>w , -( | N f %. % & %1 %ww Dԋ@ ww ~w De   % zw7 7 ׯ - (w 7  .w e4B J ӕ- R r f e0 @ >\  ҋ D~8\`_ !ҕ w%* 7 y %(%_} ҕR Z%) @e@-Vҕ RJҕ% DIҕA p3 7!*ҕ *ҕ %^ % Ґ %X% %]@pҕҐ%X%_7w   6 .!l%ԔN7L -N 7 4$ 7"&  &  7wfœԋ˥&  ԋw , DC ^ x  wԋ̋7 7  ~-xpf@w f@)wfw~wzwf@wbw^wdf@wFwBwBf@w N  ww DeL@4 &   w/%J %K  t5 t5N  5N  5  B-B-%B-B-% &    w4w "DC%: be`m e rfww p@ : ӕ0 $f v Le0 9e   7we&  m  z~  z  z~ w7   0   vWp `e0eӕ?fwwdwf@)wfw^wZjwf@wBw>pwf.*wm$vwwmfwvwbw fAW @w f4147 5 e w| 5& w&JL&& % ` & %  0+ 0+ԋԢ  & % ` -&   z w RDCË wNԠ@~ w "  %77 r  e0 ww D7 ~ ̋ ww  C R N%HH7 Bԕ\ԕ % >%<ԕ-ԕԐ%+~ ++ "%% % ԕ\te0Ee0e% %,Ճ7* w,f@w* fw* w& !&f b%  r<R r< r<R r< rWtC` re rwBF b  b!"7" b%nT    0!6 7  ww l ԔAA WpCe*l ԔԔԔ BeWpCe@ԔԔԔ&  ed&  ed&  ed&  e@ &  l wxw fA r nw^mw FD % A r  r e0@ԕ A r e0@w@& HADCBF7DH&>D&8@&2<&,8&&4& 0&,&(&$& &&&&& &&&f& f@www*f@@& HADCBF7@F    [.<(+!&]$*);^-/|,%_>?`:#@'="abcdefghijklmnopqr~stuvwxyz{ABCDEFGHI}JKLMNOPQR\STUVWXYZ0123456789w fw @e7 !wfw7 fw w !wf@w w !wf wm &!wx wm fw &!wVwz f@wj wf ,!w, fAW @wD f&,1&,78 5 e2w$ 2! 5& w&L&H&D&@&<&8&4&0&,&(&$& &&&&& &&&|f& fwFf@  x  "f@   $$ttyЋ7t@ j6rwZ6r@f@  P`Hm` /etc/utmpcannot open wtmp Nobody. tty PF M:/ESTEDTDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec/dev7-./% <=2&?'@O{[lP}M]\Nk`Kaz^L~no|JZ_myjС !"#$()*+, 01345689:;>ABCDEFGHIQRSTUVWXYbcdefghipqrstuvwx*bkwxibs=obs=cbs=bs=if=of=skip=count=conv=,ebcdicasciilcaseucaseswabnoerrorsyncbad arg: %s cannot open: %s cannot create: %s counts: cannot be zero not enough memory readwritenot a number: %s %l+%l recordH 8!w f D& w }f@w w w mode uid gid tapa size date time name w  w ]@^@ w   w tEND  B ҋfABR&e E7 7w Out of core w@ @  E7h=\@ \@P=\z= ~fe N 7 4=  4/=7@=\8=5 \0f & d~S<   e fe N e@Ee~ <w "Directory checksum <w  v<commandd@flua@parg@swtabuseerroptapPsetbflm`@tapsiz@ndirent@tcmtfio@ndentd8@dir\edir@mesgdonefsetcomnoflagdcofHdccRdcd^dcfXdcifdcmldcr~dctdcurdcvdcwdcxtcxmtxflc]@flf^@cmdfli_@cmtflvb@flwc@cmxLrdD~  & 6  w  _ @&  5 @X F wt:@9 @ 7@7:@-+ 7 e% 7%@&  5 @h F w 7           B  7 Z V       B  7 w n  wj}  5% = w 8 H7^ \0@  8 n;Pf;@h;$ T;Vw Tape seek error w w ::+ f@ X:w X t x jw  y V  L w  -:.: -: ::e:dir.gettapeRdeletewrdircheckbclrdirgetfilesupdateDtaboc check1bxtract usage< encoderdecodepstrputcch\@getcclrentsumf@rseektreadttapeb\0bitmap wseektbootmboottwritetrderrrseeka@twrerrwseeka@seekerr@verifyZname@calloutvexpandfserrPcatlbr@statb@name1@numbnumbx y 7  z F 7 N @ 5 ww  N 5N 5@ 5 @ @-  <ww  55@ -@ -      @w* w 5 % AWp Amu@e5  @ww ~wP DeF  @  % w7 , 7 , ׯ" -   (w 7   .w eB J ӕ- R r f e0 @R |@%&r@  X:@t@W.Ћ &/Е/P 0@ zw -- Cannot open file w@@^:E @\&  New 9w ,Directory overflow ww aw @w @@@Ӌ k9 w, 9'w, 9#w Lr9U9909797 9999 9 \& w &@-"9@9ˋ ʋ/f  ew 8߇ -8 8 $w , not found 8e8-8 w d >f& f&@numb2,numb1*sizeh@bitcalc map\0setmap update1mss@phserrp emap\@maperr$ nentrj@nusedl@lusedp@nfreen@pmod crterr crterr1 smdatectime.o L1L2~ctime at~localti ctdaylbegittimdaylenddaynocopytL100004 L5P L6 L10001 L10002 ~sunday atdtadL8@ >  ҋ D~8 ӕ0 $f v Le0 9eX R J D 74 we&  m    ~    ~ w7  0   Wp `e0eӕ?f  , P  @f z 7th  ^ V -P H f ZTL  7< 8 47. 7 $f@w| fwww\f@)wHr@ ~@W#00 @N7Lf r f e0 T\ )5% *8 BCeB v77 t \0~ 8 ew 7Ї 0\&  5N,Nvew 7 Ew7B 7w @@  @- r7 \0!   N7* l7   `\0 w@f@ Xw ` -- Phase error 1 \0  \@\ 5  ew 6퇇BCeB vB  ~gmtime L10Atptimd0d1xtimeAL11L20001vL14L15L20003~asctimecptptncpL21L19L22L23~dysizexyL25L24~ct_numbcpacpnL27L28csv.oldiv.odpadd.o _localti" _end$A_cbuf$B_dmsize#_timezon#_tzname#_dayligh#_daytab#_cfwww*f@@& HADCBF7Fcdu cannot open %s cannot create %s %4d do xNf\ecsljr\0\0 ~ 6E&t6tEw Tape overflow w* \\  6e @686 :6 ,6 \0 55 55 ~5w Rw H entries 5w :w 0 used 5 5w w  free 5w w last t5_@&t5 t5 5 @w  @w @w @w fe  w /  w r/ vw ^w R: Vw > B@ w $ s5x-5w-5rtime" csv"_asctime"cret"_dpadd" _gmtime" _sunday" _dysize"x_ldiv"_ldivr$A_ct_numb"_lrem" * 7{f@  x "V@ $$ttyЋ7@@ 6ttyx /dev-   w4 Cw @xC@ @wBr8 N4  (\0$ ! ,4  x7 ww~@ fA  f @ w ( -- create error w N  ww DeL@4 &   w/%J %K  t5 t5N 5N 5 f B-B-%B-B-% &    w4w "DC%: xe`m e rJ8# w H z+@p<7lwjw  realw Jw userw <w sys w .+ w Try again. 0 5w Command terminated abnormally.   VҔ    V%x/usr/bin/ V% V%w6O. JTw Command not found. w w w w 0ԕ !r& r<ww z w t:w h w b:w X w R w L 0:ԕ !fww p@&f %2A r<R r< r<R r< rWtC` re rw2F x  x!272 x%n    0! 7 F2Aww BԔAA WpCeBԔԔԔ BeWpCeԔԔԔ&  ed&  ed&  ed&  e@ &  Bwxw fA r nw^mw FD % A r  r e0@ԕ A r e0@w@& H w 8.V re07>Hw  f re0dwH E/bin/sh:/< @~@V@O@ -n@d@`@ R  T  A L@ @ B>@.@*@@-?7??Wtw??Wpe\w?w *Tape open error w-? w?@ȋw Bad usage wn0H1H2H3H4H5H6H7HcRd^fXifmlr~turvwxwDwI??w h>>>w P7>w Dw <>>w (Lw .`@]@^@->w& lw  Jw >> J $  ADCBF6rw16r@f@  P`Hm` w 4w @w ~x \0@\0@@/dev/tapx/dev/mt0/usr/mdec/tboot/usr/mdec/mbootPFM:/ESTEDTDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDeca.outnamepmodeuidgidsize0size1time0 time1 tapeadirsizmdirentrnarg@narg@cmrT & 6  .w  w"f$f@@& HADCBF 7  &oprd  @  zaE ~ &P @? &fA  r f e0 iou|00 000    @@@ee  @2Kn,X` %05075110134134.515020030060012001800240048009600extaextbeven-evenodd-oddraw-rawcooked-nlnlecho-echoLCASElcase-LCASE-lcase-tabstabshup-hupcr0cr1cr2cr3tab0tab1tab2tab3nl0nl1nl2nl3ff0ff1bs0bs133tty3337tty3705aw  : b 0rw w O b N b [ b w w -\J DP   -,0 wz w h  Z 5_X AWpe<uDC %f& %5 f& %f %5 f %@  u5_    @5̥-  ˥- @ 5B- 5 @ B  u- @ B  u-uu5   @  & 6  `w N& G7 ԋ@̥: ̥:=F&  EF& B  ~Ӌ8 J %  UF& B  ~ :  ,  %  ww z ^    7L H w` & 6 %, 5 5 EB ҐNe % B %:% %:%0%9Wp D`eD- w ~wDe   % Vw7 7 ׯz- r p(vt05tntn300titi700tekekerasekillunknown mode: %s input speed output speed speed erase = '%c'; kill = '%c' even odd raw -nl echo lcase -tabs hup nltabcrffbs %s%d %s%d baud dox,f:ecslHr A@555!5! 0 Y X TT 0 9D̥. C˥. D-C-_T  B _T ӥ0 $ B C- B @5 ABp@ Aԥ0 @w, ̋@mȋ ˋ@mȋD-̥ C-$˥ !@C-˥ @_ @mAmA@AA -_DC ̥ ̢˥ @˥  w RC@ @m wD˥ < ˭      wd7 f .wZeB J ӕ- R r f e0 @ > ҋ D~8  ӕ0 $f v Le0 9e  7we&  mp n V~  V  V~ w7 B 8 40   Wp `e0eӕ?f ,P   @f  h 7 $h -f RzrR  7b    7 w open error: 7aw W zw Pcan't create temp file for 7z7 zp-j\-bV-ZP w improper format: <m:e 7 44w- mB w unexpected EOF: 7 w rcan't rewrite: w7w Ncan't read temp file for: 7vr7 dVRwZwL Ew2/tmp/stma ˥  @   @ @m˥   w %9%0 ww  f  %w|w j\WpBe<  % wVw D:WpDe<E@7 y    w  Ne T A a1 . Ne T A a1ww  D5 AWp `eu B =@wtw b% % wX f@wR fww^w2f@)^ Z7T 7 Jfw@e7*wbfw0JA 7 fAW,f B@ 8 @&61fA   @ @e71@6 1wf@wd<w fwNwJ@wf@w2w.Fw` f@wJ f@wLw, f@@& HADCBF7Ffw@ 7 f&fhЕЕ P hCx h h   wfwddJA 7 fAW,f B@ 8 @&61fA   @ @e71@j 1wrfwApQ  OfA  ^ y   F y @0fA  @9 fA @e&7>w:74@vw7 w w w AupNNmf wtw bZ @@5 _ fA rBpEu@@`55DCN&  t rB`E \P z\T ~ !h hE Rh Sh   0 & s>e0W!9eW!ZeT!ᇅpassword: bad password file /bin/sh-cannot execute shell sorry /etc/passwddpojxfeHcVs&lrh   @ @   f& %5 2`D--`f  $`f& %`Df %5 D-&  C-D-%@@AA@ Nf` u_ Nf @`5_ f %Cww   DCԒ ww  DCB5ҒS wf>:wm4|w(wm"fw|ww fAW @w f17 5 ew 5& w8& L& H& h & 6  4w "   %_: Z 4_:ew  R #@ R e@7~  R e@7a 5 @th R @t7j2 @t h5 AWpN R AWpAw@AWpAwP AWp   $   ww   5 @mAAmH@mv ȋ7 jww ]ZT+  E98G  +$&N $%5 x & 6  w  4 %k P w|^u @7d y@-IJ DmB? 0 ew& mH%e@ȥ-ȥ+ $%  b    e@& <!WpBe<  ` H, %  ` AmH % - ^ X RmP :72 b% be E7 r7t7 m7 XD& @& <&8&4&0&,&(&$& &&&&& &&&f& fwwwh fwwN f@www*f@@& HADCBF7F  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~i $5@o $5 t $5y $5~ $5 $5 $5 $t&  t&  t&  t&E  t&E   $ww tE Nf $%wdw R@ f $%wDw 2fe %w(w ~wDe   % w7 7 ׯ-  (w7  .weB J ӕ- R r f e0 @ >2 ҋ D~8azt b  |  j  X  5T  D2 8 \ "   e&  ee-- 2&  7  vw"w 5 5  m <m!6$ " v -#N 57 T f N 0 \ %     & d e -  F & ԥ -  w w   mo^~abdnrtP   -Too many keys -/usr/tmp/stmXaa/tmp/stmXaaCannot locate temp Can't create temp Can't create output Can't open "0  ӕ0 $f v Le0 9e  7we&  m  ~    ~ w7 n d `0   LWp `e0eӕ?f@wwl f@wwN f@www*f@@& HADCBF7F     $ ).38>@B@G K P W[^c 5 B) 5 4ef N 0@ 0 $  e B-B d e 0 & ӥ   $   e%߆e  3B e-    B-  w w CeD \ w %  w J " & ' b (w w n -,@ m ȥ- @ m wJ @ mA rea?C re~ & 6  |w ju%f ]N  Ue f < 5fef Z%% % %N  '%N  Nff e@@m@m5f %N & ww ~~w"De   % w`7 7 ׯ-  (w7  .weB J ӕ- R r f e0 @ > ҋ D~8 ^ӕ0 $f v Le0 9e*$  7we&  m  ~    ~ w7   0   Wp `e0eӕ?f ,xP n h @f L B7": B0(-"f@wl fww"wLf@ww(w*f@@& HADCBF7Fa.out%s not found Bad format: %s %s: %l+%l+%l=%l (%o) zd ^  & 6  N w < l%#@5@  7  y         > "   (   %@&1 * 07 >_D  VM    7F[ >  . %  %   %L  % @ 5 E5 c  >5 AWp@ _zAWp  M_z5 AWpB , @J59 -j AWpf LF & 6  w ,$ 7$ p 5l *5 _Le@ȥ-Me@h ; x%Wew N ($Ke@ 7@e@ 75e@ȋ7#* #& ##N 7 @ȥ+ e@ 7# Nf  # %    w w l#f# P  w w | $l# 2B#1NeV#  @E7$## P wH w 6 $ "7   - ox fecsl(rBN % < %5 @ - @ AWpp  - ?AWpA Euu  _z u-N >  > NAWpA A fAWpA f >eAWpN  > V5AWpA eWtNAWpf AWpA f >eAWp AWpN  >  >AWp@  >N  > %2_ ww *  5 > ` fef %N  d > &B H %H -  6 %  "N "  7r 7"   e7 v"v v l 7 f b"5   f ` 7 _Ne  7 | Ne h w` Ne 22!7 F  0w< p2$ !Y ^V  Y ! 2$ %02$ 0$2$7 !&C e F e H  K P! R  B! -8  $! (! ! ! h b p7 P w< w * D#%" WpP w R 7 [<WE%@P. I/E. >/:6@<  ׭. ׭. F@@ҕ/ҕ.ҕ. " 2   -- directory not empty ? Vwp%@a0 De@e!҆ It#tyNe&e . ,2J p " Ne&e . @E%` -r  &e  7 ew @ A Hww  5 5 AWp AWpu @ AWpu , AWpA eu`@t5`@Et5ff %ff %Ff %%A =%>eˋ 5 %F5ʕ % %~ %ҕ  ʕ?  J Ne0   1$ % V % w w -  _Z% %     % _ZZ 72$ N b  p0$2$<  %   -  - @ -  40% - % 7!&    4    m 7!   - ww  0$% ~ %˕a%0$0˕ wpw ^B (#WpNe0  $ $  w6 %  : & 6  w >5 5 # @fr  eu-Nff z% ww .Nef h N_@E%@V N j5%N_  @-_N  N < 5  =f 8;52-# e N? < NLH ; EA@ u=( %x"Nf[ <% h55u  N5% %y N  Nh <  > w^F%Fw @ *w>w ,f w(w ~wRDeH  B % (w7 .7 .ׯ$-  (w7  .we B J ӕ- R r f e0 @ > ҋ D~8B F  ӕ0 $f v Le0 9eZT LF 76we&  m  (~  (  (~ w7   0   Wp `e0eӕ?  e2$E% JE% %0$0 w  7 N  w7 y 5  L 7 %   w fC Ĕw^w LC r   r Ne0 w.w C   % J *G7 y   97 7  'U- 7  7  r 7 l %d ^  R%   w|w jB %9 Wp D`e%0wNw <-N w6f , wrw `fe %wVw D fe& F%% w2@w ~wDe   % w7 z7 zׯp- h f(wZ7 \ .wPezB J ӕ- R r f e0 @ > ҋ D~8 ӕ0 $f v Le0 9e  7we&  mf d ~    ~ w7 8 . *0   Wp `e0eӕ?ffwRJ wp f@wZ ffwA@ e  N X OHR@-88>,m*-0 e7- --)T "  @ 7"7,7, 7, e fwLwHZ wTfw4A` Q  OfA  ^ y   F y @0fA  @9 fA @e&7w7@f w7 f@P   @f  %7B f%-fwwlw f@w f@)wf@wrwr fwvJA 7 fAW,f B@ 8 @&61fA   @ @e781@| 1wfwwwf@wwwfAW @w f'1'7 5 e w 5wwt fw@e7wRfwD7 ff@wbw^wfwJwFw fw0w f D& w }f@wwwf@fA w,w"e"w"ew"@lw"Alew &@t`e @& HADCBF7hFf@  x~ "L@ $$ttyЋ76@ ,wxwtl wnf@w\wXr wL fwBw>x w, f@@& HADCBF7 Ff@  xF " ~ @ $$ttyЋ7 @ akltxRjdX^n/devcannot change to /dev _proc_swapdev/unixNo namelist /dev/mem/usr/sys/coreNo mem TTY F S UID PID PRI ADDR SZ WCHAN COMMAND TTY PID COMMAND %c: %3o %c%4d0SWRIZT%6l%4d%5o%4d%7o /devcannot & w,&L&H&D&@&<&8&4&0&,&(&$& &&&&& &&&f& f BRf@wwwBf@w N   ww DeL@4 &   w/%J %K  t5 t5N 5N 5  B-B-%B-B-% &    w4w "DC%%s: non existent %s: try again %s: cannot chdir /etc/globglobrm-r-f**%s: no glob %s: directory %s: %o mode %s: not removed doxDfRecsl`r   %ew&/devopen /dev no swap device %.16s %.64sd oxFfTecslbr /dev: e`m e rfww p@&f %*.' r<R r< r<R r< rWtC` re rwF   !7 %n    0! 7 J.'ww $ԔAA WpCe$ԔԔԔ BeWpCeԔԔԔ& ed& ed& ed& e@ & $wxw fA r nw^mw FD % A r  r e0@ԕ b%  W mw@ȋN w5ȋ XbL? /dev/tap0/dev/mt0  A r e0@w@& HADCBF7Ff@  x @'" @@' @'$$ttyЋ7@ 6rw6r@f@  P`Hm` HB=  p  V$V/dev/ttyxVery funny. Page Too many args. %0PFM:/ESTEDTDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec/devz_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z _z_z_z_z@ER7 y  _zw ~wDe   % ^ w7 7 ׯ-  (w7  .we$B J ӕ- R r f e0 @ >N ҋ D~8LP ,ӕ0 $f v Le0 9e  7we&  mww wf|wmv wxjwmdfwT wVwF f@w6w2 w, f@@& HADCBF7F6rw6r@Vttt\ttttttPtpthttba.outcannot open input bad format no name list %c UATDBCuatdbc%.8s %c%c dvopxfeNc\s,lr  F4 & 6  w @ @m 5 0%)5 @ F@mȋ Ne@ &H @ F@mAAAmHe@ FN@ &D Y %wbfww nwHf@wxwttw*f@@& HADCBF7@FLP-lp/lib/lprcan't start daemon   ^ ~  ^   ^ ~ w7   |0   hWp `e0eӕ?fP ,FP < 6 @f  7 T-f@)wfwpwlZwpf@wTwP`wNf@w8w4fw, f@@& HADCBF74F6rw.6r@rrrrrrrrrf *<N`& \ & 6  w ^zu%  % @55( @&   % E%@p( @&   % J@55 @ ȋ  % }@ ȥ/  % @ ȥ/   %  ._%"_  r, f  _E%@5| @ A H@/@55 @ ȥ/u@"%~v~(2:DLV@3s&&fY LT0NT *HT$BT<T6lrprtvx. 6 > F N 33ff x $0.@....U.../*.j...*/   2 " : J  * B R fpx 03#33f&ff) , b ^ j  r  V z  Z cannot open %s jsrsobbrbnebeqbgebltbgtblejmp A H| , f  f- -  H %  E@  E@ w=#Ef^ 6% v55  b5% %y BN  k % Nf 0 j 5%   %  Ne @-8@e55@ A Hu@ A H ff e % 5  % D  :N   % w N & 6  F w 4  7e%Fu-?@ 53a  x U"-wUUUUU  e %@ȥ+ f 7 N _e %N Tfb5 ! 5 J@ pl u- @ 5@u -  (   -  Pwwwwm  2Nlfe Z%  "swabclrcomincdecnegadcsbctstrorrolasraslmarkmfpimtpisxtflagrtssplhaltwaitrtibptiotrsetrttmov cmpbitbicbisaddmuldivashashcxorbplbmibhiblosbvcbvsbhisbloemtsysclrbcombincbdecbnegbadcbsbcbtstbrorbrolbasrbaslbmfpdmfpdmovbcmpbbitbbicbbisbsub???" dx or x f eP c^ s. l rw fe %w|w j fe& P%% wX@w @~wDez  t % w"7 `7 `ׯV- N L(w@7 B .w6eB J ӕ- R r f e0 @ > ҋ D~8 ӕ0 $f v Le0 9e ~x 7hwe&  mL J ~    ~ w7   0   Wp `e0eӕ?fw ^ w` w N  7  Z%w< w * n f %\ @& % ^ w w =7 N "5 5 'N@ @m&  @ @- 5 % ^  ^ u-um wj w X @ 7  y  .f %w4  .  .N  . .N ^ ^ @t ^ .fE % ^ @t&Ew  65% wv 58 & 6  xw f 0@-*e@c  x J  B  B  : ` 0 e@ȋ    ef  7    %%% %    T% T%% T%zp T% l& %5  AWp N 74AWp N&$ %   f e 7 5 _ 5 _ _a5 @e7wfw7 f/ffwwwL f@ww w(f@w fwvwr w fw\ w f D& w }f@w"w wf@fA w,w"e"w"ew"@lw"Alew &@t`e @& HADCBF7(FUsage: mv name1 name2 Source file non-existent Directory target exists. ?%5 @t@]w D -l %7jw* 7 Z ^-^ X P7 NBE 6w E%%%\  ^ N ^ w\ ^ @ 7<  y0n\t?w ~ )N fff& e& %Nf& %5% eWNe0 ^ w0w  u ^ -Dw w u@ ȋ@@ 55 @b @.  5 5 @@m5%0 %9 Awp`e@mAmH %0E5% l  V , J" ) : N.5 4 ; @m0  B  e  u- ww 5 @Ap, Awp@w@Ap, 5 %@@mAAmH @@mAAmH w 0 10H  5 @tEe0K  @t5 %ww ~w De   % \w7 7 ׯ-  ?? Directory rename only Directory rename only values of B will give rise to dom! Files are identical. %s: %o mode Cannot remove target file. Try again. /bin/cpcpno cp ? Cannot unlink source file. dox>fLecslZr   %ewu @@%5 @@m5%0 %9 Awpn`eu @@ AwpJAmu5 5 @ e-$ 5 e  -   @-f " %- -  (%wtw bN 855 N ^ @ 5 ^ %w&w @E r eZA! y*@E 7 yw@E 7v y@E? r eA! y.(w7  .weN B J ӕ- R r f e0 @ >j ҋ D~8v z  Hӕ0 $f v Le0 9e  7we&  m  \~  \  \~ w7   0   Wp `e0eӕ?fl ,bP X R @f 6  7$ ~  - f@w f@)w7 @D /ѕ/ѕ.  D E#6'F$Ct www ѕ.  @77 Ћ . ?  "&+05@E7" y9@E7 y>_zB_z@ _ xF_zK_zP_zT_zX_z\_za_ze_zj_zn_zr_zv_zz_z@E7 y ~_z_z_z_z_z@E r eA! y_z_z_z_z_z_z_z_z_z_z@E? r eA! y"_fww ww jw wAupNNmf @ wPw >p@@5 _ fA rBpEu@@`55DCN&  f& %5 2`D--`f  $`f& %`Df %5 D-&  C-D-%@@AA@ Nf` @ u_LNf @ @`5_Lf %Cww DCԒ ww DCB5ҒS wf@(+.147:=).@ & 6  w j% %@- Nf  n .  7h %x %x0 J n 5&! N *ҥ "*ff %*f P %% pE  3!ff %w b  A =   y% %xh $7  @%y tn  y $   $wL w : 7 87 6Ne Ne fead.letter/etc/passwddox,f:ecslHr0 PFM:/ESTEDTDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec/dev * %Cww ~ LDCԒ wlw Z&DCB5ҒS w<f2.wm(!w0wmfw!ww f@ww!w fww!w f BRf@f&&CB  ԕ- & e0fv   vA W  ~w N  |ww DeL@4 &   w/%J %K  t5  t $%  D   eN 8  :w w F ~N&  &  .  &\ N $  %x   $.  wH w 6 <  f  \   f  8     f   w <     j  Xw v v   d ` Z Z 7 X  & N r %wL w : J   w8 %Ԑ d%  J/258;>*-035 N b 5N b 5  B-B-%B-B-% &    w4w "DC%: e`m e rfww p@&f %\ ' r<R r< r<R r< rWtC` re rwF   !7 %nZ  !  0!!< 7  'ww ^$!ԔAA WpCe!^$ԔԔԔ BeWpCe"ԔԔԔ& > ed& > ed& > 7H N7> N 7. N 7 N7 N7  N7<w D̋w ̥:w . <  w w p  ^ 5 @Ee05@p.@p<@t5 %w, w  DCԢӋw w D Dww ~wDe   % w7 z7 zׯp- h f(wZ7 \ .wPeB J ӕ- R r f e0 @ >  ҋ D~80( & 6  w l$ 7$Ne @e 7# >@-8e+@a # x # # # # # #f  # # # #e@ȋ  t#  `#7 `#7 ^#7 \#7 x# P# P#  f f 7   5 ef f LU u-' r&' e'E5 " "6% r b  "J r& e "z" r -  ed& > e@ & > ^$wxw fA r nw^mw FD % A r  r e0@ԕ A r e0@w@& HADCBF7F6rwZ6r@f@  P`Hm` '' rxd@b c-r-w-s@x- r-w-sx-r-w-x-t 6 F N V b j r ~ ./etc/passwd/etc/group %s: total %d %5d %2d %-6.6s%-4 ӕ0 $f v Le0 9e    7 we&  mf  d  ~    ~ w7 8  . * 0    Wp `e0eӕ?f  , P  @f  7   8  -  f       7 ߘ 7 7 f@w fww>wfwDJA 7 . fAW,e e Hww vC%_F " r !f F r Ĝ !ĜED$& J D$  r 5`E&E r%&   r e p -`! ee r%e! (!&  ! r 5!#! r wL w : - w6  &  %7 5 5 5 ( %: 0 @@mH % AWp Ameu(" " 5% u-6d%3d,%3d%7s %-7.7s %-4.4s %-12.12s %4d %s %.14s %s unreadable %s not found d>o8xzfec$slr$'PF!!M:/ESTEDTDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecf B@ 8 @&61fA   @ @e71@J 1wffwwPwfwAVQ  OfA  ^ y   F y @0fA  @9 fA @e&78w47.@\w07 f@wwbw f@wwhw fAW @w f17 5 e wn 5& w&@@m ww x ff %5 %et`wP w > w  d% w2 w C4e  $ w w z$CԔˋԕ/C Ԕ % z$w w ("f _N*! r _b7 j$ (" "  %  ".% $f \%& f % %`Ȝ$  w0 w  $e- Z e~xer4 4   _Nef N9! r 55 5  w 8 & 6  hw V     > &  7 %x   F%  D &  # @ D &  4 %@ˋԔ%< 5 %< ԕ &  F% 5h%   t%< ThNez4  _Nez @˥:P lE D &   -  F%Dep  h @ex!Th 5h% wlD &  8  F%Nep Ԥ_:_ @5 f AfWp @@`e5f˥ L& H& D& @& <& 8& 4& 0& ,& (& $& & & & & & & &~ &x f& f BRfwtw f@w N  ww DeL@4| &    w/%J %K  t5p t5rN 5N 5  B-B-%B-B-% &     w>w ,DC%: e` tE@E%`E @E%@E`UE5UEtttttt5` ttt ttN@&  7`w DC h5E}%'E}%' 3- 3-3-3- wp@wp E}% 55@5upw  ~wpDef  ` % $ w7 L7 LׯB- : 8(w,7 . .w"eH!B J ӕ: 5 d AdWp @@`e5d˥:  @ @   :  F%_> 0H T 5j$5n%a'n @net&fj %4 fj F%Nj R T 5j& fj %4 fj F%Nj  ` T 5j fen F%fenfj r% Nj J j    p  F%Nf  Nd Nf ˋ    %   F%  _>w   T 7$DC Sm e rfww p@&f %  r<R r< r<R r< rWtC` re rw F   !n 7n  %n  x  0!x 7 4 w$w ԔAA WpCeԔԔԔ BeWpCeԔԔԔ& ed& ed& ed& e@ & ww pA r nwhmw PD % A r  r e0@ԕ A r e0@- R r f e0 @ > ҋ D~8p!t! ӕ0 $f v Le0 9exr jd 7Twe&  m8 6 $ ~  $   $ ~ w7   0   Wp `e0eӕ?f ,P   @f  $7 x!$~v-phf@w f@)wfw~!JA 7 xfA ~5% CԤ @e!:5 H 7 @7 >7 <@w@w .D ԋ   F% ̥:wf v v   7  7 7 fw w fww w f@w fw@e7 wnf@w wV f"w@ fw|wx w f@w`w\ wf@wDw@ w f@.w f@w fAW wf@& HADCBFw B 5  ʥ ʥ ʥ- ʥ9 Wp @@`eʥ0  w7Ff@  x "p@ $$ttyЋ7Z@ P6rw@6r@f@  P`Hm` /tmp/maxxxxx/tmp/mbxxxxx/etc/utmpWho are you? .mailSave?.mailmboxSaved mail in 'mbox' .mailNo mail. From %s %s/.mailCan't send to %s. dead.letterLetter saved in 'dead.letter' dW,f B@ 8 @&61fA   @ @e7:1@! 1w>fww!w$w w wAupNNmf ww @@5 _  fA rBpEu@@`55DCN&  f& :%5 2`D--`f  $`f& * %`Df %5 D-&  C-D-%@@AA@ Nf` u_ Nf @`5_ f@w fz 1z 7 5 e<w 5& wR&8L&2H&,D&&@& <&8&4&0&,&(&$& &&&&& &&&f& fww w f@w wd f BRf@ww w*f@@& HADCBF7Ff@  x  " @   $$ttyЋ7@ fwh@ 7 \f&fЕЕ P Cx L   * rB`E \ 0 \ 4  ! llE R S  LLl 0 l& s>e0W!9eW!ZeT!TᇅL/dev/ttyxSorry. Name: Password: No directory /etc/utmp/usr/adm/wtmp/etc/motd.mailYou have mail. /bin/sh-No shell. Login incorrect. /etc/passwdBad /etc/passwd  0.! B 7"7- " *D! x K!& B D^ffr& 4 eFBm@ &Nmf|& 4 eBN6JA e &Nmfr& 4 e &mNmf|& 4 eHP p>*f R t> *NR  %w w C D   1 W- 7 0@ 0 p `   % ܆   r f  e07(: not found non-numeric arg zP& & 6  Fw 4% z $% F%@ԋ/@0! @0@&  NE%@  $% F@@&   $% F Fwzfwwwn fwwwN f@www*f@@& HADCBF7ZFUsage: ln target [ newname ] No directory link Can't link ~x `x`rr&  ~wl w Z DC N& J ~wL w : DBtEBmE b" <h$ 7 b" *   -b"|= %eh= % 55 s! B @ `e % @ E4@44 wbw PD   & & & 4 e      B  n&eww D7̥-l  a!7h< &  7X<! B 77 77zn&7Np & 6  w % h %_        !  7,   7 _%  _ R   R  %_@  R  %:ʋ R_%:@ ҋ % "@   B&  ʋ:    R  %0 %9Wp D`e a%: E 7!5LORUADGJMPSVB7t& & r& 4 e f  B r&  %m wJw 2 5 *@ @`5%*E rD e2B*%* e%F.B ww *f R 7  ww N%.B! B * R  e ww n 7~ ym;m ; m; x!pw>w , ::! x (&! x ! xN! x  Z:ww CBtEF  e ! B ww ffr& 4 eTT  7E %  %     R >X J    767 %  wlf@wj fwxwtPwJfw`VJA 7 fAW,f B@ 8 @&61fA   @ @e71@\ 1wffwwbwzfwAhQ  OfA  ^ b.4 & 6  ^w V  6 5  6 % ^BeK7 I˥-= r e( A! y D-  B  5 #f  PI LI JI FI :I >I  :I  6I X,I  D- F TBe&˥-Z 74 y e H  D- w(w D  & & %ew r& 4 e $& e % @8e2$e `& %! B ~ E7t 7:j E` 79X E7Nw.w DCe  ww ~wCDeC  C % *w7 C7 CׯC- C C(wC7 C .wCe!B J ӕ- R r f e0 @ >2C ҋ D~8"" Cӕ0 $f v Le0 9eBB BB 7Bwe&  mB B *~  *  *~ w7 nBy   F y @0fA  @9 fA @e&7w7@nw7 Lf@wwtwfAW @w f 1 7 5 ewz 5& w8&L&H&D&@&<&8&4&0&,&(&$& &&~&x&r&l &f&`&Zf& fwwwh fwwN ftE`Ew nNf  HHmHHmG H5  Fd$E%  & B w$8$m6$e5`.$ffr& 4 e> GL(7e 3 . * ' @ x   '7- '  "' '' r#  m#Gm|#Gmx#FwmFw* %Fw * 7F 7F 7F F*- 5 2-vF/-nF,-fF) jF7 nF7 hF7 hF7 ^F \F NFN*-L    E %`e  dB `B0   LBWp `e0eӕ?f4B ,*BP B B @f A hT7A ""hTAA-AAfww("w f@w fwVwR."wfw>w:4"w fw$w :"wffw A@"Q  OfA  ^ y   F y @0fA  @9 fA @e&7w~7x@F"w7 h@@www*f@@& HADCBF7Ffw@ 7 vf&fЕЕ 6P Cx v    rB`E \ \  ! E R S  vv 0 & s>e0W!9eW!ZeT!~ᇅvR\/tmp/ptmp/etc/passwdUsage: passwd user password Temporary file busy -- try again Cannot create temporary file Cannot open /etc/passwd User name not foune  FF "EF EE #EE EE $EE E EEe?E?7EEE EEeE7E ~E7 EEmxE5`7zE5 *-X8   xf UZE 2E   x  x e mE mE mE $tm  D D7 D`DD r 7Dw*w   7D  B & Ee0$t%! aFPremature EOF on %s&*/tmp/lxyyyyy. < D d in password file Permission denied Urk Cannot create /etc/passwd Password file illformed 0  @ @   D  D D D C * r Wp mC@7` 7 ^ 7 \ C 7L &6J  %ww w  =  B ww D `3 ̋D-/   & 0 (r& 4 e& & e 0 e%ewPw >Nf  BBmBBmBBFe8fm*m(fr& 4 eV BS |BP xBL #I *NR  %?  * : " j ! B " %J,2679<49:lu:2H "  "#$ (> (0Bad 'use'No relocation bits_etext_edata_endUndefined: %.8s l.outCan't create l.outCan't create tempinternal error: symbol not foundLocal symbol overflow%.8s: Multiply definedRelocation errora.outl.outa.outl.outa.outNo pages/lib/lib?.acannot openSymbol table overflow%s(%.8s): %s Local symbol botchBad formatdDo>xfec*slrhT\ & 6  w @ @m ww% V    \ %& & V%ww -nj w^ XmXw  .5h &   @]wv @w Z 25k &   AA @@w: @w n \&     w   w 5 "_4p&   *5r &  U@_t&    &  _w&  z&    ]}&  - & Ne z l&   <:   % ( $5f   & f   &   ww Nf 8 5 wv w `wfw T @aAaH wJ@m ȋw &h   f   @ap :5 f   @w @a0 fef % @m @`@`0 fefe %fef %f@w  Wp `e0eӕ?f ,P  @f  7 -zrf@@& HADCBF%s%cd.o(xjfxecslr777^ W5|9  W w xW ~ E L E бw .*!;!  7! 6w Vxw Nx  Xw w 0f ! !;!efh7" " " " & &  ~ 7 |4 > ` Ґ7b4 lrve6+W 6+e" `7D $$$$4 `7&e7!e2   7& 9 9 rev  re  f  dw b09 0Wq `Wt` b f  .A\ fww w.fw 7 fwwwf@wlwhw f D& w }f@w.w*wf@fA w,w"e"w"ew"@lw"Alew &@t`e @& HADCBF7Fno command -o-a!()-r-w-c{}=!=if error }}/usr/bin/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  %ewV( nw  -a s  7 ($(V( ΀w Ef5 ` (P   w e%@$ w ~ &f # ! -.-.. ѕ/W/   De  w  L p d ZfpĝkeD wW!feweD&f  s f e0 w ( .fA7vV   7h3@@ ea be e63703 8565 25E3$) 75$)52725 4w Hiw4 77426 w ? w724&f l4D ` V47 4  < ( !y@ DhbFZD 6ыD//<>%72W 0W 9w` T  | v& pU74 3    w "g< |7 3 $ U f 3 X< >  24 & 6  2w @% f%x   %& * & & % 7Ne  @fe J  0& %ww 5 5w~%: %   5 5% %  @@mH h5%  V5% @@m w 5 @@mAAmHw@@m ȋ w D wf h bZ   7J F B7< 7 2f@)wpffA & 9 &fA @e&7Bw>8@xw w&w w   \  &&ҋ  > w <w*n t e0r apw  <w re* w & r xn*6BXZLvvvLL   e !,  e !,  en  d!, mL2P FE@ | w ~U  2! z!, p *+7+ 7! U @!, 6 w x!('!-6!$G!*M !(   e@wwwN f@www*f@@& HADCBF7Ff@  x "@ $$ttyЋ7p@ fgoto error label not found /dev% ZiFE @b[7]@R P : ׬/ӕ/Z95`ҋ  ׭  ׭  ׭ ׭x׭y .?   ev p!+  !(781- t \ 8 `e r!*w R* :7`w Ba    w "e!)w ) "f+7 0  w H[!a!k * Ow fK  H4 D$   R0 | y+l -l *l /l &l l l l %l [ ^l z !l + 0/ V 2!]w 2] / # Y}+ - *> /J 4 &(   % !\ ^ =  & 6  Rw @& & .%w<f@wLwHw, f@@& HADCBF7F/* * KT-11 addresses and bits. */ #define UISD 0177600 /* first user I-space descriptor register */ #define UISA 0177640 /* first user I-space address register */ #define UDSA 0177660 /* first user D-space address register */ #define RO 02 /* access abilities */ #define WO 04 #define RW 06 #define ED 010 /* extend direction */ /* * structure used to address * a sequence of integers. */ struct { int r[]; }; int *ka6; /* 11/40 KISA6; 11/45 KDSA6 */ /* * address to access 11/70 UNIBUS map */ #  w tt3w jf rB*w XB`%w NB w DA B@w 8BPw .BpBw "f rw A B`+wd&PEEE &     U.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~9^= H S gj7$f xxxx 9/tmp/atm1a/tmp/atm2a/tmp/atm3aj79...r0r1r2/* * Inode structure as it appears on * the disk. Not used by the system, * but by things like check, df, dump. */ struct inode { int i_mode; char i_nlink; char i_uid; char i_gid; char i_size0; char *i_size1; int i_addr[8]; int i_atime[2]; int i_mtime[2]; }; /* modes */ #define IALLOC 0100000 #define IFMT 060000 #define IFDIR 040000 #define IFCHR 020000 #define IFBLK 060000 #define ILARG 010000 #define ISUID 04000 #define ISGID 02000 #define ISVTX 01000 #define IREAD 0400 #define IWRITE 020define UBMAP 0170200 r3r4r5sppcexitforkreadwriteopenclosewaitcreatlink unlink exec chdir time makdirchmodchownbreakstatseektellmountumountsetuidgetuidstimefstatmdatesttygtty nice"signal0mov movb cmp cmpb bit 0bitb bic0 #define IEXEC 0100 nZ]`cfilopsv @bicb bis Pbisb add `sub brbnebeqbgebltbgtblebplbmibhiblosbvcbvsbhisbecbccblobcsbesjbrjnejeqjgejltjgtjlejpljmijhijlosjvcjvsjhisjecjccjlojcsje< & 6  w r u-  @ @m& b% u-w:w (~wzDep  j % w 7 V7 VׯL- D B(w67 8 .w,eB J ӕ- R r f e0 @ > ҋ D~8 ӕ0 $f v Le0 9e| tn 7^we&  mB @ ~    ~ w7   0 @ $ w( ZL7j7B7?7;7w rS D 9 @ ^ ^w ? = H S /lib/as2-g&7 ԋ 7 w &D7~ 7z$   zw ? 6&f@ 8 &8? 8w t8700  r e0H~*  @% 88! ?0e*-&j9j75j7 | 8t 7! 7 7& N!=9!:77 T!!w x̵w mݬ7 $+ 7sclr clrb com @ comb @inc incb dec decb neg negb adc @ adcb @sbc sbcb tst tstb ror rorb rol @ rolb @asr asrb asl aslb jmp @swab jsrrtssys clcclvclzclnsecsevsezsencfccsetfsetd setisetl clrf negf absf tstf @movf movif movfimovof movfoaddf subf mulf divf cmpf modf movie moveildfps @stfps fr0fr1fr2fr3fr4fr5alstalscvmpypmulpdivrashtashcvdvdrxorxsxt mark sob~.byte.even.if.endif.globl.text* %% &- 7 wnw \ 5 fe& | %  % w<w * %0 %9Wp D`e@ ww ffE %  ww b @ 7* R O   T: ԋww @ H @ ȋwx w b~w0De&   % wD7 7 ׯ-  (w7  .we`B J ӕ- R r f e0 @ > ҋ D~8 lӕ0 $fY#C _w w @w W w7 L7@!  0 9e a ze A Zet# 1 W x#  < - - < eeW z# - - eW N. w out of symbol space   1 1    7"& Q -4  "New wb  #deQ  ew 0label not found z# W@PPW  7 "8j.  T 1 .data.bss.comm0 0P@W- 7 7nwlw = 7Fw H 7? wv  fDa~ rve6+ 6+e" Ke W (ᇇ v Le0 9e82 *$ 7we&  m  ~    ~ w7   0   Wp `e0eӕ?f ,P | v @f Z T7H T>6-0(f@wP fwNwJw0fw6w2wf@wwwfwmwwmfwww f@w ~!Mw out of code space _4-"_ 7 "M J-D   _4!Q w Tout of code space 7dMw#  w 0   # T H  z  , y&hhxLh >fr  _e J B    f   T _ _D  _ &  _ ^  "   ̔" _eE  t ?ww f$f BRf@w~wzwBf@w N l  bww DeL@4F &   w/%J %K  t5 t5N H 5N H 5  B-B-%B-B-% &    w4w "DC%: e`m e rfww p@&f %T r<R r< r<R r< rWtC` ree    -" w if...else...fi imbalance  & -" e Q X  w /bin/ed-         F & & =  7%T@     t 7   w for/next imbalance @7~ D $ @ J "l ( " @ x x   L " = < "  w D . & |  |qtwz} rwdF   !D7D %n    0!n 7 Tww &ԔAA WpCe&ԔԔԔ BeWpCeԔԔԔ& $ ed& $ ed& $ ed& $ e@ & $ &wxw fA r nw^mw FD % A r  r e0@ԕ A r e0@w@& HADCBF7 F6rw6r@f@  P`Hm` '8J12 w    w   ,& &  @     > <  = ע=  ע> (  ע=   ע= 0 fe . + -  J w :T  : w *Z  . * /   w b   w h   ^ w p   _ w   (  ` )*  .  w j   w ,reserved name !Q T7 > 0 J (  >w  ) [  w f 7  ]l(  & 6  L w R1  % @  euw@  r eA! y:   ~ ewX d@ @Wp we @ @7 ( 77`T@ @t5e  - w %P  < d ^ 53Df | %N * 5 @AWpfeD  AWpwTFAWpwV: % @340149:Pdi/dev/rp0/etc/dtab/dev/mt0bad character in key no file system specified %s: cannot open %s incremental dump from No memory %l big; not dumped. %l files %l blocks %l.%l tapes %l phase errors cannot create %s %s full date updated the epoch special read error %l change tapes write error can not open %s ~ d o x f e c s l, rThPFM:/ESTEDTDay Mo T  &f@ @ @@  V& ע) N ,T[v\S \f\#\X V r@w" &  D\   H j.\ 7  0,Cannot create b.out b& 7`  -V# H%82* \   Z " N Ft\ :7h\Sw \  \w 4\w \ w b\ "w T E\ X w out of space 7\Sj   @& ^ 7 @o  $     @  t& t t  7%  5 t& t 55 5 Ofe  %? *-@%-8-2&E t 5%   N   e  umT -Nf  % ~ & %f& %5 r NA r &  % H`^\Z  drt& t 5* en 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec$K!SK   |  t  l d8@5@1eU) ( $ !S S  w L %f ;d#0 @7" 0"7 H#aw # W z  7*# ` Tmp file? 7"n"#   w [  zCannot open file 0 w Rw ready "7 " # L=w   5Q@  e X w too many lines @"D"8" # ( 7`$"7v$"#j # &   #w 0[ W i#  Z7 Zw Y7 Y ! `# @@ :w Y7 `e0  .Wff&  } - } 0  ~  } 0  ` 5w f0B`W@ &  W B~  e0VV \ B@e 7-}      e}  wmmB W0  .} 0}  j .} }  Wf"" ;}   V7  77B@e0}  f -}  r f e0} &$e 5 =w 4w  w \ 7.7*t# &l#e E  [w @ w @]w zfA76  fA @e701@!  1 @ f5 f5u 7d@ h& `!7J& @ Ae 87 57 7 5VVfW@H7 7 wp @@ 7j 7Z wV  7\ !XCX jr"D>4zF,XD"2B  Bf5 f5 & Wf&&7H W?WA@mW@ @ V@> 0 "   B> 0 "  VV f5 @&E@f& e@ B@~VV 7 f Wp3e @7 Ef5w * f5w }7 HxHW&f] 7 `H@% TH@A&@]7& @L> Be0# @]є ]    BA   W! $-7 j77XT  & 4 / machine language assist / for 11/45 or 11/70 CPUs .fpp = 1 / non-UNIX instructions mfpi = 6500^tst mtpi = 6600^tst mfpd = 106500^tst mtpd = 106600^tst spl = 230 ldfps = 170100^tst stfps = 170200^tst wait = 1 rtt = 6 reset = 5 HIPRI = 300 HIGH = 6 / Mag tape dump / save registers in low core and / write all core onto mag tape. / entry is thru 44 abs .data .globl dump dump: bit $1,SSR0 bne dump / save regs r0,r1,r2,r3,r4,r5,r6,KIA6 / starting at abs location 4 mov r0,4 mov $6,r0 mov r1,(r0)+ mo W ]e B@e0]m G` ]eȐ9 ȕ0 ]ȕ1 G G`0]]VVf5u @AfW@V fW@V  Vf@ Wf@@67 f@f @A B @7 &e# 7 # VVf5 @Wf&7  @W@@ x j B v VwF VV \  disk offset J7> tape offset 07& count  T      0 Wp `@ illegal digit \-  ^ e*ȋ5 5&D9ȋ5@*&e  (: 7 $ r t@P PNɋv r2,(r0)+ mov r3,(r0)+ mov r4,(r0)+ mov r5,(r0)+ mov sp,(r0)+ mov KDSA6,(r0)+ / dump all of core (ie to first mt error) / onto mag tape. (9 track or 7 track 'binary') mov $MTC,r0 mov $60004,(r0)+ clr 2(r0) 1: mov $-512.,(r0) inc -(r0) 2: tstb (r0) bge 2b tst (r0)+ bge 1b reset / end of file and loop mov $60007,-(r0) br . .globl start, _end, _edata, _etext, _main / 11/45 and 11/70 startup. / entry is thru 0 abs. / since core is shuffled, / this code can be executed but once start: iRFPF7 D^; F^66  F^/* * fix system image for I/D space * Move data down to 0; move text to 4K. * Also put the data at the start of the * file and the text after it. */ int tbuf[259]; int rbuf[259]; int obuf[259]; int txtsiz; int datsiz; int bsssiz; int symsiz; int txtrel 8192; int datrel; main(argc, argv) char **argv; { register word, rel, s; if (argc<3) { printf("Arg count\n"); exit(1); } if ((tbuf[0] = open(argv[1], 0)) < 0) { printf("Input file\n"); exit(1); } rbuf[0] = open(argv[1], 0); if ((fcnc $-1 bne . reset clr PS / set KI0 to physical 0 mov $77406,r3 mov $KISA0,r0 mov $KISD0,r1 clr (r0)+ mov r3,(r1)+ / set KI1-6 to eventual text resting place mov $_end+63.,r2 ash $-6,r2 bic $!1777,r2 1: mov r2,(r0)+ mov r3,(r1)+ add $200,r2 cmp r0,$KISA7 blos 1b / set KI7 to IO seg for escape mov $IO,-(r0) / set KD0-7 to physical mov $KDSA0,r0 mov $KDSD0,r1 clr r2 1: mov r2,(r0)+ mov r3,(r1)+ add $200,r2 cmp r0,$KDSA7 blos 1b / initialization / get a temp (1-word) stack / tNDJ^ `&e  F^   F^De Dbww5Q$] ] f   EU P5tC   P]fPPQ7 &C5    5 C B A  `5C  5B  5B  eE]  "$ $5B $$ 5vB  5^B  ]5@FB  wL   w>] ]reat(argv[2], obuf)) < 0) { printf("Output file\n"); exit(1); } if (getw(tbuf) != 0407) { printf("Bad input format\n"); exit(1); } putw(0407, obuf); txtsiz = getw(tbuf); datsiz = getw(tbuf); bsssiz = getw(tbuf); symsiz = getw(tbuf); getw(tbuf); getw(tbuf); if (getw(tbuf) != 0) { printf("No relocation bits\n"); exit(1); } putw(txtsiz, obuf); putw(datsiz, obuf); putw(bsssiz, obuf); putw(symsiz, obuf); putw(0, obuf); putw(0, obuf); putw(1, obuf); datrel = -txtsiz; /* * Copy ouurn on segmentation / copy text to I space / clear bss in D space mov $stk+2,sp mov $65,SSR3 / 22-bit, map, K+U sep bit $20,SSR3 beq 1f mov $70.,_cputype 1: inc SSR0 mov $_etext,r0 mov $_edata,r1 add $_etext-8192.,r1 1: mov -(r1),-(sp) mtpi -(r0) cmp r1,$_edata bhi 1b 1: clr (r1)+ cmp r1,$_end blo 1b / use KI escape to set KD7 to IO seg / set KD6 to first available core mov $IO,-(sp) mtpi *$KDSA7 mov $_etext-8192.+63.,r2 ash $-6,r2 bic $!1777,r2 add KISA1,r2 mov r2,KDSA6 / set upB (    5@A  A B    A UAw] A w] AwAwAw  7 pA lAa ZAU^AfAW 8U] W 8E]fc     ` ]^-A A a h h   ] ]a  ! p ]]R B] @W !W e UETR5x@  5f@  UX@wp   ]]   7 @r@]r@]  t data first */ tbuf[1] = 0; seek(tbuf[0], 020+txtsiz, 0); seek(rbuf[0], 020+txtsiz, 0); seek(rbuf[0], txtsiz, 1); seek(rbuf[0], datsiz, 1); s = datsiz >> 1; while (s--) { word = getw(tbuf); rel = getw(rbuf); if (rel&01) word =- datrel; word =+ getrel(rel); putw(word, obuf); } /* * Now to the text. */ rbuf[1] = 0; tbuf[1] = 0; seek(rbuf[0], 020+txtsiz, 0); seek(rbuf[0], datsiz, 1); seek(tbuf[0], 020, 0); s = txtsiz >> 1; while(s--) { rel = getw(rbuf); word = getw(tbuf); supervisor D registers mov $6,SISD0 mov $6,SISD1 / set up real sp / clear user block mov $_u+[usize*64.],sp mov $_u,r0 1: clr (r0)+ cmp r0,sp blo 1b / jsr pc,_isprof / set up previous mode and call main / on return, enter user mode at 0R mov $30000,PS jsr pc,_main mov $170000,-(sp) clr -(sp) rtt .globl trap, call .globl _trap / all traps and interrupts are / vectored thru this routine. trap: mov PS,saveps tst nofault bne 1f mov SSR0,ssr mov SSR1,ssr+2 mov SSR2,ssr+4 mov $1,SSR0 e  JW!^W! ^ 5?7 ?e  , ??? f]    ]]$ $$$]& N & N  N N S C B A  eW!]Շ w^ m>?0? ,? rf]5*?e        W!]]P    0&]d& dN & dN dC N eN e->>>> /tmp/btmab.out/dev/vt0listdoneqrunprinpromifgotoretufornextoctasaveif (rel&01) word =- txtrel; word =+ getrel(rel); putw(word, obuf); } /* * The symbol table. */ tbuf[1] = 0; seek(tbuf[0], 020+txtsiz, 0); seek(tbuf[0], txtsiz, 1); seek(tbuf[0], datsiz, 1); seek(tbuf[0], datsiz, 1); s = symsiz; while ((s =- 12) >= 0) { putw(getw(tbuf), obuf); putw(getw(tbuf), obuf); putw(getw(tbuf), obuf); putw(getw(tbuf), obuf); rel = getw(tbuf); putw(rel, obuf); word = getw(tbuf); switch(rel&07) { case 2: word =+ txtrel; break; case 3: cajsr r0,call1; _trap / no return 1: mov $1,SSR0 mov nofault,(sp) rtt .text .globl _runrun, _swtch call1: mov saveps,-(sp) spl 0 br 1f call: mov PS,-(sp) 1: mov r1,-(sp) mfpd sp mov 4(sp),-(sp) bic $!37,(sp) bit $30000,PS beq 1f .if .fpp mov $20,_u+4 / FP maint mode .endif jsr pc,*(r0)+ 2: spl HIGH tstb _runrun beq 2f spl 0 jsr pc,_savfp jsr pc,_swtch br 2b 2: .if .fpp mov $_u+4,r1 bit $20,(r1) bne 2f mov (r1)+,r0 ldfps r0 movf (r1)+,fr0 movf (r1)+,fr1 movf fr1,fr4 movf (r1)dumpfielseeditcommdispdrawerasargexplogsincosatnrndexprintabssqrwww &w U@!H!P!X!`!h!p!x!`!@@!hI@!hAy1?ϑy"?D{Av#OP#C!+C|]2CU*j 4xBJh{CW*RsCL~Sz"@NnDOLX2xة3I䔶TX]1 D!L%dIgN5&GbqhDK-?> E=sMBԝ`=B.pF:|+eiD(/zC@;\)@3d5@3e1@rzlB#"3h@?ØGe@lB,k$aXUse 4: word =+ datrel; } putw(word, obuf); } fflush(obuf); close(obuf[0]); exit(0); } getrel(r) { switch (r&016) { case 02: /* ref to text */ return(txtrel); case 04: /* ref to data */ case 06: /* ref to bss */ return(datrel); case 0: return(0); default: printf("Bad relocation %o\n", r); return(0); } } +,fr1 movf fr1,fr5 movf (r1)+,fr1 movf (r1)+,fr2 movf (r1)+,fr3 ldfps r0 2: .endif tst (sp)+ mtpd sp br 2f 1: bis $30000,PS jsr pc,*(r0)+ cmp (sp)+,(sp)+ 2: mov (sp)+,r1 tst (sp)+ mov (sp)+,r0 rtt .globl _savfp _savfp: .if .fpp mov $_u+4,r1 bit $20,(r1) beq 1f stfps (r1)+ movf fr0,(r1)+ movf fr4,fr0 movf fr0,(r1)+ movf fr5,fr0 movf fr0,(r1)+ movf fr1,(r1)+ movf fr2,(r1)+ movf fr3,(r1)+ 1: .endif rts pc .globl _incupc _incupc: mov r2,-(sp) mov 6(sp),r2 / base of prof with base,leng,off,scale mov 4(sp),r0 / pc sub 4(r2),r0 / offset clc ror r0 mul 6(r2),r0 / scale ashc $-14.,r0 inc r1 bic $1,r1 cmp r1,2(r2) / length bhis 1f add (r2),r1 / base mov nofault,-(sp) mov $2f,nofault mfpd (r1) inc (sp) mtpd (r1) br 3f 2: clr 6(r2) 3: mov (sp)+,nofault 1: mov (sp)+,r2 rts pc .globl _display _display: dec dispdly bge 2f clr dispdly mov PS,-(sp) mov $HIPRI,PS mov CSW,r1 bit $1,r1 beq 1f bis $30000,PS dec r1 1: jsr pc,fuword mov r0,CSW mov (sp)+,PS cmp r0,(sp)+,r1 mov (sp),r0 br 1f _retu: spl 7 mov (sp)+,r1 mov (sp),KDSA6 mov $_u,r0 1: mov (r0)+,sp mov (r0)+,r5 spl 0 jmp (r1) .globl _spl0, _spl1, _spl4, _spl5, _spl6, _spl7 _spl0: spl 0 rts pc _spl1: spl 1 rts pc _spl4: spl 4 rts pc _spl5: spl 5 rts pc _spl6: spl 6 rts pc _spl7: spl HIGH rts pc .globl _copyseg _copyseg: mov PS,-(sp) mov 4(sp),SISA0 mov 6(sp),SISA1 mov $10000+HIPRI,PS mov r2,-(sp) clr r0 mov $8192.,r1 mov $32.,r2 1: mfpd (r0)+ mtpd (r1)+ sob r2,1b mov _runrun beq 2f bic $340,PS jsr pc,_swtch br 2b 2: tst (sp)+ mtpi sp br 2f 1: bis $30000,PS jsr pc,*(r0)+ cmp (sp)+,(sp)+ 2: mov (sp)+,r1 tst (sp)+ mov (sp)+,r0 rtt .globl _savfp, _display _savfp: _display: rts pc .globl _incupc _incupc: mov r2,-(sp) mov 6(sp),r2 / base of prof with base,leng,off,scale mov 4(sp),r0 / pc sub 4(r2),r0 / offset clc ror r0 mul 6(r2),r0 / scale ashc $-14.,r0 inc r1 bic $1,r1 cmp r1,2(r2) / length bhis 1f add (r2),r1 / base mov nofault,-(sp) mov $$-1 bne 2f mov $120.,dispdly / 2 sec delay after CSW fault 2: rts pc / Character list get/put .globl _getc, _putc .globl _cfreelist _getc: mov 2(sp),r1 mov PS,-(sp) mov r2,-(sp) spl 5 mov 2(r1),r2 / first ptr beq 9f / empty movb (r2)+,r0 / character bic $!377,r0 mov r2,2(r1) dec (r1)+ / count bne 1f clr (r1)+ clr (r1)+ / last block br 2f 1: bit $7,r2 bne 3f mov -10(r2),(r1) / next block add $2,(r1) 2: dec r2 bic $7,r2 mov _cfreelist,(r2) mov r2,_cfreelist 3: mov (sp)+,r2 mo(sp)+,r2 mov (sp)+,PS rts pc .globl _clearseg _clearseg: mov PS,-(sp) mov 4(sp),SISA0 mov $10000+HIPRI,PS clr r0 mov $32.,r1 1: clr -(sp) mtpd (r0)+ sob r1,1b mov (sp)+,PS rts pc .globl _dpadd _dpadd: mov 2(sp),r0 add 4(sp),2(r0) adc (r0) rts pc .globl _dpcmp _dpcmp: mov 2(sp),r0 mov 4(sp),r1 sub 6(sp),r0 sub 8(sp),r1 sbc r0 bge 1f cmp r0,$-1 bne 2f cmp r1,$-512. bhi 3f 2: mov $-512.,r0 rts pc 1: bne 2f cmp r1,$512. blo 3f 2: mov $512.,r1 3: mov r1,r0 rts pc .globl _ldi2f,nofault mfpi (r1) inc (sp) mtpi (r1) br 3f 2: clr 6(r2) 3: mov (sp)+,nofault 1: mov (sp)+,r2 rts pc / Character list get/put .globl _getc, _putc .globl _cfreelist _getc: mov 2(sp),r1 mov PS,-(sp) mov r2,-(sp) bis $340,PS bic $100,PS / spl 5 mov 2(r1),r2 / first ptr beq 9f / empty movb (r2)+,r0 / character bic $!377,r0 mov r2,2(r1) dec (r1)+ / count bne 1f clr (r1)+ clr (r1)+ / last block br 2f 1: bit $7,r2 bne 3f mov -10(r2),(r1) / next block add $2,(r1) 2: dec r2 bic v (sp)+,PS rts pc 9: clr 4(r1) mov $-1,r0 mov (sp)+,r2 mov (sp)+,PS rts pc _putc: mov 2(sp),r0 mov 4(sp),r1 mov PS,-(sp) mov r2,-(sp) mov r3,-(sp) spl 5 mov 4(r1),r2 / last ptr bne 1f mov _cfreelist,r2 beq 9f mov (r2),_cfreelist clr (r2)+ mov r2,2(r1) / first ptr br 2f 1: bit $7,r2 bne 2f mov _cfreelist,r3 beq 9f mov (r3),_cfreelist mov r3,-10(r2) mov r3,r2 clr (r2)+ 2: movb r0,(r2)+ mov r2,4(r1) inc (r1) / count clr r0 mov (sp)+,r3 mov (sp)+,r2 mov (sp)+,PS rts pc 9: v _ldiv: clr r0 mov 2(sp),r1 div 4(sp),r0 rts pc .globl _lrem _lrem: clr r0 mov 2(sp),r1 div 4(sp),r0 mov r1,r0 rts pc .globl _lshift _lshift: mov 2(sp),r1 mov (r1)+,r0 mov (r1),r1 ashc 4(sp),r0 mov r1,r0 rts pc .globl csv csv: mov r5,r0 mov sp,r5 mov r4,-(sp) mov r3,-(sp) mov r2,-(sp) jsr pc,(r0) .globl cret cret: mov r5,r1 mov -(r1),r4 mov -(r1),r3 mov -(r1),r2 mov r5,sp mov (sp)+,r5 rts pc .globl _u _u = 140000 usize = 16. CSW = 177570 PS = 177776 SSR0 = 177572 SSR1 = 17$7,r2 mov _cfreelist,(r2) mov r2,_cfreelist 3: mov (sp)+,r2 mov (sp)+,PS rts pc 9: clr 4(r1) mov $-1,r0 mov (sp)+,r2 mov (sp)+,PS rts pc _putc: mov 2(sp),r0 mov 4(sp),r1 mov PS,-(sp) mov r2,-(sp) mov r3,-(sp) bis $340,PS bic $100,PS / spl 5 mov 4(r1),r2 / last ptr bne 1f mov _cfreelist,r2 beq 9f mov (r2),_cfreelist clr (r2)+ mov r2,2(r1) / first ptr br 2f 1: bit $7,r2 bne 2f mov _cfreelist,r3 beq 9f mov (r3),_cfreelist mov r3,-10(r2) mov r3,r2 clr (r2)+ 2: movb r0,(r2)+ mov pc,r0 mov (sp)+,r3 mov (sp)+,r2 mov (sp)+,PS rts pc .globl _backup .globl _regloc _backup: mov 2(sp),r0 movb ssr+2,r1 jsr pc,1f movb ssr+3,r1 jsr pc,1f movb _regloc+7,r1 asl r1 add r0,r1 mov ssr+4,(r1) clr r0 2: rts pc 1: mov r1,-(sp) asr (sp) asr (sp) asr (sp) bic $!7,r1 movb _regloc(r1),r1 asl r1 add r0,r1 sub (sp)+,(r1) rts pc .globl _fubyte, _subyte .globl _fuword, _suword .globl _fuibyte, _suibyte .globl _fuiword, _suiword _fuibyte: mov 2(sp),r1 bic $1,r1 jsr pc,giwor7574 SSR2 = 177576 SSR3 = 172516 KISA0 = 172340 KISA1 = 172342 KISA7 = 172356 KISD0 = 172300 KDSA0 = 172360 KDSA6 = 172374 KDSA7 = 172376 KDSD0 = 172320 MTC = 172522 SISA0 = 172240 SISA1 = 172242 SISD0 = 172200 SISD1 = 172202 IO = 177600 .data .globl _ka6 .globl _cputype _ka6: KDSA6 _cputype:45. stk: 0 .bss .globl nofault, ssr nofault:.=.+2 ssr: .=.+6 dispdly:.=.+2 saveps: .=.+2 .text / system profiler / /rtt = 6 /CCSB = 172542 /CCSR = 172540 /PS = 177776 / /.globl _sprof, _xprobuf, _probuf, _probsiz, _mov r2,4(r1) inc (r1) / count clr r0 mov (sp)+,r3 mov (sp)+,r2 mov (sp)+,PS rts pc 9: mov pc,r0 mov (sp)+,r3 mov (sp)+,r2 mov (sp)+,PS rts pc .globl _backup .globl _regloc _backup: mov 2(sp),ssr+2 mov r2,-(sp) jsr pc,backup mov r2,ssr+2 mov (sp)+,r2 movb jflg,r0 bne 2f mov 2(sp),r0 movb ssr+2,r1 jsr pc,1f movb ssr+3,r1 jsr pc,1f movb _regloc+7,r1 asl r1 add r0,r1 mov ssr+4,(r1) clr r0 2: rts pc 1: mov r1,-(sp) asr (sp) asr (sp) asr (sp) bic $!7,r1 movb _regloc(r1),r1 asd br 2f _fubyte: mov 2(sp),r1 bic $1,r1 jsr pc,gword 2: cmp r1,2(sp) beq 1f swab r0 1: bic $!377,r0 rts pc _suibyte: mov 2(sp),r1 bic $1,r1 jsr pc,giword mov r0,-(sp) cmp r1,4(sp) beq 1f movb 6(sp),1(sp) br 2f 1: movb 6(sp),(sp) 2: mov (sp)+,r0 jsr pc,piword clr r0 rts pc _subyte: mov 2(sp),r1 bic $1,r1 jsr pc,gword mov r0,-(sp) cmp r1,4(sp) beq 1f movb 6(sp),1(sp) br 2f 1: movb 6(sp),(sp) 2: mov (sp)+,r0 jsr pc,pword clr r0 rts pc _fuiword: mov 2(sp),r1 fuiword: jsmode /_probsiz = 7500.+2048. / /_isprof: / mov $_sprof,104 / interrupt / mov $340,106 / pri / mov $100.,CCSB / count set = 100 / mov $113,CCSR / count down, 10kHz, repeat / rts pc / /_sprof: / mov r0,-(sp) / mov PS,r0 / ash $-11.,r0 / bic $!14,r0 / add $1,_mode+2(r0) / adc _mode(r0) / cmp r0,$14 / user / beq done / mov 2(sp),r0 / pc / asr r0 / asr r0 / bic $140001,r0 / cmp r0,$_probsiz / blo 1f / inc _outside / br done /1: / inc _probuf(r0) / bne done / mov r1,-(sp) / mov $_xprobuf,r1 /2: / cmp (r1)+,r0 / l r1 add r0,r1 sub (sp)+,(r1) rts pc / hard part / simulate the ssr2 register missing on 11/40 backup: clr r2 / backup register ssr1 mov $1,bflg / clrs jflg mov ssr+4,r0 jsr pc,fetch mov r0,r1 ash $-11.,r0 bic $!36,r0 jmp *0f(r0) 0: t00; t01; t02; t03; t04; t05; t06; t07 t10; t11; t12; t13; t14; t15; t16; t17 t00: clrb bflg t10: mov r1,r0 swab r0 bic $!16,r0 jmp *0f(r0) 0: u0; u1; u2; u3; u4; u5; u6; u7 u6: / single op, m[tf]pi, sxt, illegal bit $400,r1 beq u5 / all but m[tf], r pc,giword rts pc _fuword: mov 2(sp),r1 fuword: jsr pc,gword rts pc giword: mov PS,-(sp) spl HIGH mov nofault,-(sp) mov $err,nofault mfpi (r1) mov (sp)+,r0 br 1f gword: mov PS,-(sp) spl HIGH mov nofault,-(sp) mov $err,nofault mfpd (r1) mov (sp)+,r0 br 1f _suiword: mov 2(sp),r1 mov 4(sp),r0 suiword: jsr pc,piword rts pc _suword: mov 2(sp),r1 mov 4(sp),r0 suword: jsr pc,pword rts pc piword: mov PS,-(sp) spl HIGH mov nofault,-(sp) mov $err,nofault mov r0,-(sp) mtpi (r1) bne 3f / inc (r1) / br 4f /3: / tst (r1)+ / bne 2b / sub $4,r1 / mov r0,(r1)+ / mov $1,(r1)+ /4: / mov (sp)+,r1 /done: / mov (sp)+,r0 / mov $113,CCSR / rtt / /.bss /_xprobuf: .=.+512. /_probuf:.=.+_probsiz /_mode: .=.+16. /_outside: .=.+2 sxt bit $200,r1 beq 1f / mfpi bit $100,r1 bne u5 / sxt / simulate mtpi with double (sp)+,dd bic $4000,r1 / turn instr into (sp)+ br t01 / simulate mfpi with double ss,-(sp) 1: ash $6,r1 bis $46,r1 / -(sp) br t01 u4: / jsr mov r1,r0 jsr pc,setreg / assume no fault bis $173000,r2 / -2 from sp rts pc t07: / EIS clrb bflg u0: / jmp, swab u5: / single op mov r1,r0 br setreg t01: / mov t02: / cmp t03: / bit t04: / bic t05: / bis t06: / add t16: / sub clrb bflg t11: / movb t12: / cmpb t1br 1f pword: mov PS,-(sp) spl HIGH mov nofault,-(sp) mov $err,nofault mov r0,-(sp) mtpd (r1) 1: mov (sp)+,nofault mov (sp)+,PS rts pc err: mov (sp)+,nofault mov (sp)+,PS tst (sp)+ mov $-1,r0 rts pc .globl _copyin, _copyout .globl _copyiin, _copyiout _copyiin: jsr pc,copsu 1: mfpi (r0)+ mov (sp)+,(r1)+ sob r2,1b br 2f _copyin: jsr pc,copsu 1: mfpd (r0)+ mov (sp)+,(r1)+ sob r2,1b br 2f _copyiout: jsr pc,copsu 1: mov (r0)+,-(sp) mtpi (r1)+ sob r2,1b br 2f _copyout: jsr pc,co3: / bitb t14: / bicb t15: / bisb mov r1,r0 ash $-6,r0 jsr pc,setreg swab r2 mov r1,r0 jsr pc,setreg / if delta(dest) is zero, / no need to fetch source bit $370,r2 beq 1f / if mode(source) is R, / no fault is possible bit $7000,r1 beq 1f / if reg(source) is reg(dest), / too bad. mov r2,-(sp) bic $174370,(sp) cmpb 1(sp),(sp)+ beq t17 / start source cycle / pick up value of reg mov r1,r0 ash $-6,r0 bic $!7,r0 movb _regloc(r0),r0 asl r0 add ssr+2,r0 mov (r0),r0 / if reg has been psu 1: mov (r0)+,-(sp) mtpd (r1)+ sob r2,1b 2: mov (sp)+,nofault mov (sp)+,r2 clr r0 rts pc copsu: mov (sp)+,r0 mov r2,-(sp) mov nofault,-(sp) mov r0,-(sp) mov 10(sp),r0 mov 12(sp),r1 mov 14(sp),r2 asr r2 mov $1f,nofault rts pc 1: mov (sp)+,nofault mov (sp)+,r2 mov $-1,r0 rts pc .globl _idle _idle: mov PS,-(sp) spl 0 wait mov (sp)+,PS rts pc .globl _savu, _retu, _aretu _savu: spl HIGH mov (sp)+,r1 mov (sp),r0 mov sp,(r0)+ mov r5,(r0)+ spl 0 jmp (r1) _aretu: spl 7 mov / machine language assist / for 11/40 / non-UNIX instructions mfpi = 6500^tst mtpi = 6600^tst wait = 1 rtt = 6 reset = 5 .globl trap, call .globl _trap trap: mov PS,-4(sp) tst nofault bne 1f mov SSR0,ssr mov SSR2,ssr+4 mov $1,SSR0 jsr r0,call1; _trap / no return 1: mov $1,SSR0 mov nofault,(sp) rtt .globl _runrun, _swtch call1: tst -(sp) bic $340,PS br 1f call: mov PS,-(sp) 1: mov r1,-(sp) mfpi sp mov 4(sp),-(sp) bic $!37,(sp) bit $30000,PS beq 1f jsr pc,*(r0)+ 2: bis $340,PS tstbincremented, / must decrement it before fetch bit $174000,r2 ble 2f dec r0 bit $10000,r2 beq 2f dec r0 2: / if mode is 6,7 fetch and add X(R) to R bit $4000,r1 beq 2f bit $2000,r1 beq 2f mov r0,-(sp) mov ssr+4,r0 add $2,r0 jsr pc,fetch add (sp)+,r0 2: / fetch operand / if mode is 3,5,7 fetch * jsr pc,fetch bit $1000,r1 beq 1f bit $6000,r1 bne fetch 1: rts pc t17: / illegal u1: / br u2: / br u3: / br u7: / illegal incb jflg rts pc setreg: mov r0,-(sp) bic $!7,r0 bis r0,r2 mov (sp)+,r0 ash $-3,r0 bic $!7,r0 movb 0f(r0),r0 tstb bflg beq 1f bit $2,r2 beq 2f bit $4,r2 beq 2f 1: cmp r0,$20 beq 2f cmp r0,$-20 beq 2f asl r0 2: bisb r0,r2 rts pc 0: .byte 0,0,10,20,-10,-20,0,0 fetch: bic $1,r0 mov nofault,-(sp) mov $1f,nofault mfpi (r0) mov (sp)+,r0 mov (sp)+,nofault rts pc 1: mov (sp)+,nofault clrb r2 / clear out dest on fault mov $-1,r0 rts pc .bss bflg: .=.+1 jflg: .=.+1 .text .globl _fubyte, _subyte .globl _fuibyte, _suibyte .globl _fuword, _suworksr6 = sysu mov $usize-1\<8|6,(r1)+ / initialize io segment / set up counts on supervisor segments mov $IO,(r0)+ mov $77406,(r1)+ / rw 4k / get a sp and start segmentation mov $_u+[usize*64.],sp inc SSR0 / clear bss mov $_edata,r0 1: clr (r0)+ cmp r0,$_end blo 1b / clear user block mov $_u,r0 1: clr (r0)+ cmp r0,$_u+[usize*64.] blo 1b / set up previous mode and call main / on return, enter user mode at 0R mov $30000,PS jsr pc,_main mov $170000,-(sp) clr -(sp) rtt .globl _ldiv _D  disk offset J7& tape offset 07 count  T      0 Wp `@ illegal digit Dr-l  P eP5Ћ 4R`ȋ  `e `R7 $ r t@P hfɋd .globl _fuiword, _suiword _fuibyte: _fubyte: mov 2(sp),r1 bic $1,r1 jsr pc,gword cmp r1,2(sp) beq 1f swab r0 1: bic $!377,r0 rts pc _suibyte: _subyte: mov 2(sp),r1 bic $1,r1 jsr pc,gword mov r0,-(sp) cmp r1,4(sp) beq 1f movb 6(sp),1(sp) br 2f 1: movb 6(sp),(sp) 2: mov (sp)+,r0 jsr pc,pword clr r0 rts pc _fuiword: _fuword: mov 2(sp),r1 fuword: jsr pc,gword rts pc gword: mov PS,-(sp) bis $340,PS mov nofault,-(sp) mov $err,nofault mfpi (r1) mov (sp)+,r0 br 1f _suiword: _suwldiv: clr r0 mov 2(sp),r1 div 4(sp),r0 rts pc .globl _lrem _lrem: clr r0 mov 2(sp),r1 div 4(sp),r0 mov r1,r0 rts pc .globl _lshift _lshift: mov 2(sp),r1 mov (r1)+,r0 mov (r1),r1 ashc 4(sp),r0 mov r1,r0 rts pc .globl csv csv: mov r5,r0 mov sp,r5 mov r4,-(sp) mov r3,-(sp) mov r2,-(sp) jsr pc,(r0) .globl cret cret: mov r5,r1 mov -(r1),r4 mov -(r1),r3 mov -(r1),r2 mov r5,sp mov (sp)+,r5 rts pc .globl _u _u = 140000 usize = 16. PS = 177776 SSR0 = 177572 SSR2 = 177576 KISA0 = 172]l`< wwp7ZZU7T(U7N*7HY7BX7<p\* |z7#^ EfF E50 UaE x U0 %  2pv Er bڝԝI 2 ĝZURE@LBE   5 e E&a"aord: mov 2(sp),r1 mov 4(sp),r0 suword: jsr pc,pword rts pc pword: mov PS,-(sp) bis $340,PS mov nofault,-(sp) mov $err,nofault mov r0,-(sp) mtpi (r1) 1: mov (sp)+,nofault mov (sp)+,PS rts pc err: mov (sp)+,nofault mov (sp)+,PS tst (sp)+ mov $-1,r0 rts pc .globl _copyin, _copyout _copyin: jsr pc,copsu 1: mfpi (r0)+ mov (sp)+,(r1)+ sob r2,1b br 2f _copyout: jsr pc,copsu 1: mov (r0)+,-(sp) mtpi (r1)+ sob r2,1b 2: mov (sp)+,nofault mov (sp)+,r2 clr r0 rts pc copsu: mov (sp)+,340 KISA6 = 172354 KISD0 = 172300 MTC = 172522 UISA0 = 177640 UISA1 = 177642 UISD0 = 177600 UISD1 = 177602 IO = 7600 .data .globl _ka6, _cputype _ka6: KISA6 _cputype:40. .bss .globl nofault, ssr, badtrap nofault:.=.+2 ssr: .=.+6 badtrap:.=.+2 1 UE@B ``  5 ``   H䜂ٜԜ ͜ }] ` f EA` `  NtExTTTTTTLXXXXXT7X@ExP@P555@EWtU& @ U7 @D7@t z@ r525/E*@tE` mʛ5 5 5 5&e \e V55 %&EPtEr0 mov r2,-(sp) mov nofault,-(sp) mov r0,-(sp) mov 10(sp),r0 mov 12(sp),r1 mov 14(sp),r2 asr r2 mov $1f,nofault rts pc 1: mov (sp)+,nofault mov (sp)+,r2 mov $-1,r0 rts pc .globl _idle _idle: mov PS,-(sp) bic $340,PS wait mov (sp)+,PS rts pc .globl _savu, _retu, _aretu _savu: bis $340,PS mov (sp)+,r1 mov (sp),r0 mov sp,(r0)+ mov r5,(r0)+ bic $340,PS jmp (r1) _aretu: bis $340,PS mov (sp)+,r1 mov (sp),r0 br 1f _retu: bis $340,PS mov (sp)+,r1 mov (sp),KISA6 mov $_u,r0 1: mX & 6  2w  %  "@& P  ww uuNn& T @ 5 @@% @@w` Au #?@AuAWpeZuNf ew <5 5 @@m5t= AWpUAmAm@ȝ % % ww 5 5 AWpUAmAm@H %T %ww 5 AWpUAm1TSAWpUAmAm@ȭ  AWpUAmAm AWpUd5 5   ЇE660H ("E Bv EE (&v  6  jUdI  BU<& &~  P ~ & ~X J&  *4.EUPEIUUvEzIErU jEdU\E@VUNE HU@:0, ov (r0)+,sp mov (r0)+,r5 bic $340,PS jmp (r1) .globl _spl0, _spl1, _spl4, _spl5, _spl6, _spl7 _spl0: bic $340,PS rts pc _spl1: bis $40,PS bic $300,PS rts pc _spl4: _spl5: bis $340,PS bic $100,PS rts pc _spl6: bis $340,PS bic $40,PS rts pc _spl7: bis $340,PS rts pc .globl _copyseg _copyseg: mov PS,-(sp) mov UISA0,-(sp) mov UISA1,-(sp) mov $30340,PS mov 10(sp),UISA0 mov 12(sp),UISA1 mov UISD0,-(sp) mov UISD1,-(sp) mov $6,UISD0 mov $6,UISD1 mov r2,-(sp) clr r0 mov $8192.,r1 NNm  %w:w (~wDe   % w 7 7 ׯ-  (w7  .weB J ӕ- R r f e0 @ >n ҋ D~8" Lӕ0 $f v Le0 9e   7we&  m  ~    ~ w7   0   Wp `e0eӕ?fp ,fP \ V @   P ~xr|0pLF  & C~6RmH   W W @57`PP4R`0  ȋ `5 a~tEķ Xc  h  0 L&  6r 6r@@A6v@@& ADCBFw 7 ^Ve B   ^*d /% %FU %> Wt pmov $32.,r2 1: mfpi (r0)+ mtpi (r1)+ sob r2,1b mov (sp)+,r2 mov (sp)+,UISD1 mov (sp)+,UISD0 mov (sp)+,UISA1 mov (sp)+,UISA0 mov (sp)+,PS rts pc .globl _clearseg _clearseg: mov PS,-(sp) mov UISA0,-(sp) mov $30340,PS mov 6(sp),UISA0 mov UISD0,-(sp) mov $6,UISD0 clr r0 mov $32.,r1 1: clr -(sp) mtpi (r0)+ sob r1,1b mov (sp)+,UISD0 mov (sp)+,UISA0 mov (sp)+,PS rts pc .globl _dpadd _dpadd: mov 2(sp),r0 add 4(sp),2(r0) adc (r0) rts pc .globl _dpcmp _dpcmp: mov 2(sp),r0 mov 4(sp),rf : <7 ( &<-f@@& HADCBF,!&)& !?!!>!>!!>! !>!!!!>? > ?? > ! '!!!?!!!!!"<$"! ?!3-!!!!1)%#!!!!!>!!> !!%">!!>"! !!!!!!!!!! !!!-3!! ! ??  ???, -24   "  X missing argument 0 ed^WpWtN^ " ^ "^ "^ "_ "(^ 2 7^Uf]] %`]] %4_ (T]]]]nfM] `F @ U n 7\\U n 7RL X   & & e& ^ % wLw <%(NT%`#ж %(T%#5 ww %(S_T N d %_T N d &f  e%_T 1 sub 6(sp),r0 sub 8(sp),r1 sbc r0 bge 1f cmp r0,$-1 bne 2f cmp r1,$-512. bhi 3f 2: mov $-512.,r0 rts pc 1: bne 2f cmp r1,$512. blo 3f 2: mov $512.,r1 3: mov r1,r0 rts pc .globl dump dump: bit $1,SSR0 bne dump / save regs r0,r1,r2,r3,r4,r5,r6,KIA6 / starting at abs location 4 mov r0,4 mov $6,r0 mov r1,(r0)+ mov r2,(r0)+ mov r3,(r0)+ mov r4,(r0)+ mov r5,(r0)+ mov sp,(r0)+ mov KISA6,(r0)+ / dump all of core (ie to first mt error) / onto mag tape. (9 track or 7 track 'binary') %s doxf&ecsl4r<N d &f ` &f T ee%_T @@m@me-2\_T  j% e  @teU %z  % e  @teUDm%z   %  Dm% #  @tU"e# jz%z%  ݴww @etww RRt ]%R E  H>_ (& !% zG7jZRbZ4447mov $MTC,r0 mov $60004,(r0)+ clr 2(r0) 1: mov $-512.,(r0) inc -(r0) 2: tstb (r0) bge 2b tst (r0)+ bge 1b reset / end of file and loop mov $60007,-(r0) br . .globl start, _end, _edata, _main start: bit $1,SSR0 bne start / loop if restart reset / initialize systems segments mov $KISA0,r0 mov $KISD0,r1 mov $200,r4 clr r2 mov $6,r3 1: mov r2,(r0)+ mov $77406,(r1)+ / 4k rw add r4,r2 sob r3,1b / initialize user segment mov $_end+63.,r2 ash $-6,r2 bic $!1777,r2 mov r2,(r0)+ / / l45.o needs to be in data space / to get l45.o; as data.s l.s .data Y7Yww t N ^e   I  `5?Nf %  !Nf E de !% zG2e hNf H  Iw2 ND_ J a w N ^&e  Nf& % ; 4 %d#Nf H d&e !%4  F4e h apww DCe - NM_ J w w N ^&e  *  a5Nf n  e e wD   5 5 KNef E 5 @ ` %5 @tp-Ll@tp-Nl %d ap%de% zG%d 5#4e h NW_ J _w LN ^%d  apw$w @f L-%d%d Ne_ J 4 4  e%^fڂo_ (ww VQ V@f *# nfʥ  X NH >8J j  ^w,w 5 7 I Inf̋ 5-I e%jD_ (̕I  4%@ J HD7,C*d Z/ 5˕t H & & 2!%˕ܢ wt N f  w 5tu- NmfN*d /%? HN*d Z/  HNE%  r2d e%jۂ2:7,:`f h@E%@e 7”  Dؓ ww  Be 4 e e   !tt_ww C % w 9 w pD̵Ee he h E& P- w2w "DEa74 yfWp ]% wft ]w DEa73 y-JfWp ]f & 2!% 5  Nm  u-f*d /% j w6w &@55ˡS@5/5LN C5 @ @m@ @m0  %@0 .G@U@t55@ @mBN 0 wh@ @mN  .G@ @m7 G%@ @m7F@ @m0f E %4@tEe5 `N 5 zG@ `AH .G  zGt ]%-J)wpw `DC% ^%!̵  %@5I 7 ґt7 Ǒt0 ww  z2 60   7     ww nw] w   ?$w؄ %1w f   04 4 wLPze%p}a "ߐw CK-smK ewe  w BD e D-m tm@m-*4c &e4 H 4UU& !% Fe%^f΂Jl̵ e&   v4e %x7 V 4Lww  &   Jl5-(5-$̵̵@f2!e%^fv_ (}_ "M w e %xɂtt̕fe L f E 5 zG fe X tl5eSee  zGw D  4 & & e&   v4 4  v4wf E 5D@E5 `N 5@ `N .G .G zG7 F%@ `7Fw ğğ Ÿ Ÿ w@ \ j w ~ğp n n f ^EwHJ Bj5w n)wpw `whw XDCB~wPw @D 5etd Z/ _ ( n# f& Ke _ (  f*d /%4D7Dbf hww `$0  n#4@m- tLm  LewLw < %/h5& n  %/     _<2 _:2E%@@& . H  k %VҐ %/%V %/97 @7 :(5 & L 75 $ N zG% & . 7 @e7֎5Ȏ N zG L & L & E 5X@&|E` !%ej b v Vw BʵL ^Ee5f L  E 5f X tA@lee ʵJSHSeʵTeTN Fww D5 pe5[ U5HN& E e5 1e@-%& E 5e5  N& @p- zG& ,ȃ zGN& = e@-E4 4 ww Ȭ  w@U4l g  w @7lZ54 et&d /%  wTw D _j# j e %Jl t-ҝ0a_ (4 t:e?tEetd Z/ _ (e  & & e^\7 RN D e& Ke3C    H H  2!% L ww D  &*d /%ww @E%U@e 7R@  x`9@` " NeJ`HZH` %V N zG% & . _0wB5 f n _0_0w E ww ԍ Ѝ B%jww + # X(Z JLH@ʕ2˕3̕w3@ 0  w bD% 4 3 5Ee h v4 Ue   N4, 7 Ȍ7Č  v4ww D N4  v47  v4 o l % w% UHԔ%V>.X0V N w`w PCe 1 @ %%B %d%l%o %o   %s eww Nf L N&  Nf X e0 ww D x 5t t tv%     twZw Jwe N_ " w (@@&f_ "eww D _ J Nf&_ "eww B _E% Wp ] _B f 5 " NT` " b` ( & %   | wNNe %  7ϛENe Ete`%`)N e E?%?Ete` "e  1  N  1e "ěP %d_$U5 _$ _$ % _0$_$C l  $( _$ _$w  H 7ww dww ww nft-N& % e%jww % v4e  7 6 2* 2 7  v45Ee hw $D&  ̵w w D̵ hww  z2 60  _7e  %0 0 H5@ . _75`_7@5 5 $ %_7eN B%_7 %_7 t 55 ʊƊ7 Ɗ7  7_75 %"Om7 e?tE5me?tE5Nff 5LE5<N 2 E%`# &E beH 2 N L 59@ 7O @- Of& 4F%N& E 5rff LeN zGk nww BE% Wp ] _ 0_B f E5 N 2 5E%`  L X%& H& E 5 fff LeN zG 5N dGN .Grl &E be D t̥d̕d̥ wfw VĜ   Ĝ  w: 5w  h˕ H  % nf, e%j jww 2 57u%% 0 <e $(*&e  &  0E xh`7  eștQ7p w"w 7Ϙ`f2 60  I C . 55`1- 7 7 xtd `e & && e _77    ."De$ % ˵ _7% |%tۉ_7؉a  % & f& e7 :e70 w(w$ w  e@@ A @e5 pNf  @ ef  & \ ҋ@ fe  5 ʈ ˆ 5 5 e% ` mh %`\0  %6 N zG%-e h -w5 F B + .wjw Zu-@wV@w @u-@w<@w &C@Dmҧ*Q]Ч5# & & %jw`B T      j w F %   t̕t j@M7:M`f h   ^w< `t̕t ( Pw Cnf2  e~ww D4 ̕L^IL 7Lbf hww DEted`%e7 Ft7>70  ! wdw N t@-@@ & L 톘e |v`nh e  w` @l6 &     ` w \Rnf̥ -җ >0- e%j!: TTp}  7 S   0S  ;$SS S e%%6   % "` m e URERR_)R_) F R_)w M; x :2e e  5# :e  &  e e 3ee3@E%  • f V  Ɣ 6:%<0:_h,5f<: : : -: :-::e h5947e hnfʋ e%j (2  _9 wdw Tnfˋ e%j   ? Ȇ7 7 7 7 7 7  1`ww @e?tE @4 d t   e` ` e ` T`܅&   N wd ` &      w  |;ww  |;ww C ,>̰ 8($7̵ % 3  37v7n%  ڄL&e T Ƅ8? wrw b z2 60    & <%wHw 8z2 60 pE  & <%ww CB%5 . 5 . E%@ie'   v4 "E E - % @ 0  wVw F ,փ 0  -w2w " ,D̵ǂ=T%Ht 5<t5%E "5    xa5mfe T ttwtt ] &  55@ h `EHEwNw >%5- U >I F L-5%6z ww Ds5_M5s_Mms _M teE5 t5 tEB-_Mm^stEAms@ s _M U@&  5@ U t E4 sWt @`E@`t4`tE4B f 4r E 4 4r&  &  5nr5@ h EH U@`--U   UU TR TV5 PRww J R(5Z5P| w q :7b*%5@P2UB<77 :7.7$ nIT 0: wpw `N n]f([ |LeA 7cw>w .N n] f([ |Le7 bww DB f  :  Jw(!!V c!!!!!!ZZ([c!XX c!!!!!!!!!NTTTUU!! E5` w h z2 60 A 6E%@ +~z2 60 с ǁ0-   ww  z2 60 o i   ww  &&fe T &&ff be  RwJ&&&|& be Nff&`& be wN&wJ&Ze w  ,*& ? ww  z2 60  & ?  ww ef  @7Lr Nj5rw|w lD57rrw\w LCe Nqr&  e&  e&  ww Rr 7Hre 7*\***core%7:\;l;<,=9:< >C4,DB>DD~:?P=bC@ABCB(%?%%nN&N%C>tC2EB%%@2EE%(CJCD%%%%%%%%%%%%%%% `--- `-..no file out of swap=====unlink -- igetblkdevdevtabA~*Jl 5-'~e %x& f@t ]% 3  zGw2w " z2 60 E%`}-F6} ww xt~ww #f~b~ #ww H~"B~7"e hww ğ(~7H} 78}8}07.}wrw b"}}}}wZw Jğ}7} 7|7|w8w (|}}|w w |? }ww Bww }%  (  |0ww z2 60 3 v4| n a (E%@ Zeb5 E B xhbʋ=ʊ;tE5%ʋt&e  % tE5% U@%  e &U  wԴ5@tE5%% w D Rww tB &5"e %bEP4 ER l,%ww D  O   e  j wܳw ̳D#  R@&e  %2   JQ |#`{}@~ABCDEFGHIJKLMNOPQRSTUVWXYZRRRRbRRR({)}!|^~'`BZZYtrap"start"dump"call" _klrint"ZU_klxint"(U_clock"*_tcintr"Y_rkintr"X_tmintr"p\_trap"#nofault$\ssr$^_runrun$c_swtch"_savfp"T_display"T_incupc"V_getc"_put F|X:|6|7 J|   wVw F z2 60 E%@{ @& . { 7{ v4ww E{E*|&|E4P ww   { {  ww {%% 3{ ?| {{!{0wPw @ 5 {znf    ,%fz7z J{& % e%j܂ zww  {  e{%ww zE7D{z@{z<{z E70{w  Rww pDC 33wV N w $k8Cteڞk sDuepeeH3 #@UCU@ww Dueڞ N4ww ~@teڞ hSwtw d@teڞ SwZw JDueڞ R % e hw(w BteڞU53& P ww DueڞN& T wԱw ıAB f rjE үc"_cfreeli$ c_backup"l_regloc#`_fubyte"B_subyte"\_fuibyte"B_suibyte"\_fuword"_suword"_fuiword"_suiword"_copyin"_copyout"_idle"6_savu"H_retu"j_aretu"^_u!_spl0"_spl1"_spl4"_spl5"_spl6"_spl7"_copyseg"_clearse"_dpadd"T_dpcmp"b_end$h_edata#c_main"_ldiv"L_lrem"X_lshift"fcsv"vcret"_ka6#]_cputype#]badtrap$d_bdevsw#]_nulldev"!_rkstrat"Vw Nf H 5wpU &@t ]  Iw >B N G N H 5 U &@t ] #N G N H 5 zG U @t ] N E w Iw DE & t ] 5 I zG5 NwTw DD t]%c% dGU zGww DU Fww D5@ h5@2E@26z h5 >z EH0 6zww D@t]tE mE@` B__ Vj j w>w .i7 i7aiB T wB f iE .i tE mE@` \ __ w ~ D5 J e5AWp-U nI4  \ 7  07  t ww D e5 5N X 5N L  r f r tUAWt @Pww 4 (  & ~ &_rktab$ c_nodev"!_tmopen"Z_tmclose"Z_tmstrat"([_tmtab$c_tcclose"X_tcstrat"X_tctab$ c_cdevsw#]_klopen"NT_klclose"T_klread"T_klwrite"U_klsgtty"U_mmread"U_mmwrite"DV_rkread"`X_rkwrite"X_tmread"]_tmwrite"D]_rootdev#^_swapdev#^_swplo#^_nswap#^_canonb$*c_coremap$*d_swapmap$d_rootdir$e_execnt$e_lbolt$e_time$e_tout$e_callout$e_mount$@f_mpid$^f_runin$`f_runout$bf_curpri$df_maxmem$ff_lks$hf_updlock$jf_rablock s-3! wz  w ^@-0a (6z v%6z2<U@16z  2 @t]a ( t-t-  5U@&  >IwԾ μ1 >I5U F0003t tw bD &  5 R NwDw 4D \00Uww D5  bKU5 zGE@ hww н@ ~wȽw 6z7v07p07j07d0 WpDex Wpe & RJeww p ( 7 & n%5 U7 7  nI zw"w fV |Leww  fV |Leww ԮN 4L@E0wȮw D5 J%B EU nI4  * 7$  07   hw`w P 7 ˕U nI ' EE @ ˕   tUC5U ww ح| 565 & n%5 E7I EA U76 76 $lf_proc$nf_text$j_inode$Jl_icode#^_mfree"/_printf""_min"2_panic"(_cinit""O_binit"I_iinit"z _iget"n_newproc"V_expand"_estabur" _sched"_sureg"6 _nseg"d _nblkdev$x_nchrdev$x_buf$x_bfreeli$6z_bread"E_getblk"H_bcopy"!_brelse"zG_alloc" _getfs"^_sleep"_badbloc" _wakeup"h_clrbuf"I_prdev"J_free" _bwrite"F_ialloc" _iput"_ifree"&_update"_iupdat"_prele"v4_bflush"4L_itrx}t6z802007*0 zG % ] @ e |.w0w DCL @ tEWt@PUA5UUww ּDC%F L EtUA5U8U0ww %F5 U@P  5PUP fBU  e%   e%0w w E 5@FP h7 8Pww  U@&  5@ U O@t 7OwO@t7O@tE7O! ,!5 E U˕Cwf  xbߕ nI - -؂"" Et5 @PUA e-w D2e 2 0 : Jw¬w D42 & Z & Z ww e  5R@t@]U`RwZw JD eJ - - U I nI!55 4  & 707  ww ҫ U7j nI`W 5 :@25RtEWt@Punc"_maknode"_wdir"_writei"_panicst$Nz_putchar"_printn"_deverro"n_readi"_bmap"L_breada"4F_iomove"L_bawrite"dG_bdwrite".G_max"_cpass" _passc"j _file$Pz_issig"&_setrun"_setpri"_malloc"Z/_xswap"2!_swap"K_xccdec"n#_xfree"!_xalloc"."_sysent#`_psignal"%_psig"&_trap1"%_grow"$(_nosys"%_nullsys"%_ipc$p}_signal"%_stop"V&_procxmt")_exit" 8_core"`'_schar"f2_namei"60_access"._ptrace"(_rexit"7_fork":_read"\;_write"l;_open"<_close",=_wait"9_creat":<_link" >_unlink"C_exec"4_chdir",D_gtime"B_mknod">_chmod"D_chown"D_sbreak"~:_stat"?_seek"P=_getpid"bC_smount"@_sumount"A_setuid"B_getuid"C_stime"B_fstat"?_stty"nN_gtty"&N_nice"C_sslep">_sync"tC_kill"2E_getswit"B_dup"@_pipe"2_times"E_profil"E_setgid"(C_getgid"JC_ssig"D_timeout"l,_getf5 0D,D50D,D BC00D `DD !7!4!100D `DD!&!#BC00D `DD !!!00D `DD!!  0D5 ,DZ5,DT5,DN5,DH5,DB50,D<50,D65 ,D0w f w ^w V w Nw w w zw r5 0D,D50D,D BC00D `DD !7!4!100D `DD!&!#BC00D `DD !!!w j'-,00 -0j07 /@ 5@2e2 A rd A rd5 @ AWpd/p@ W-5@ @ D @ $.5@ W-N/W->/ -+./7 (/wx&w f& */t5/E5Pff % . N x v+7 .N 3.-.w&w % @7,.5 @ A Am ,D  W-@@ w%w %5 t@t @aAt pDv tW-t@T.5 D.r<.  5",_closef"-_closei"P-_openi"-_owner"._uchar"z2_suser"._ufalloc"._falloc" /_readp"3_plock"N4_writep"3_rdwr"|;_open1"<_stat1"?_getmdev"PB_buffers$x}_swbuf$_httab$_iowait"I_incore"G_geterro"N_notavai">I_iodone"nI_mapfree"bK_devstar"RJ_rhstart"J_maplock$_mapallo"J_physio"|L_partab#b_maptab#a_cfree$_sgtty"N_wflusht"N_flushtt"bO_canon"O_ttyinpu"P_ttyoutp"JQ_ttstart"R_ttrstrt"R_ttread"hS_ttwrite"S_tty00D `DD!! D.E=?d x*8>5  w z@e7 f:w f5 w R@e 7 >:w > 0w 05) &w  !w  w w w "w w 0 w 0w #) $=w w w w w w w w w w w w w w ~ w vw nw > w 6w . w &w w  w w L5@c  @P<@ @`R &L5DtW-tW-t .  .,Nevfr\ %@w,%w %`V   } 5% = w$w $ 7 -5 fe& :%  j- w$@w $ 5 5 H P- R-Ne18N    5-  @ 5D@ A* @   ,@  ,A&A x8MA x8w#w #)OA x8 ,TA x8N  w#w #@t5@E5 H, N NAlabama|Ala|AL:Montgomery:AL Alaska|AK:Juneau:AK Arizona|Ariz|AZ:Phoenix:AZ Arkansas|Ark|AR:Little Rock:AR Cal[if[ornia|]|]|CA:Sacramento:CA Col[o[rado|]|]|CO:Denver:CO Conn[ecticut|]|CT:Hartford:CT Del[aware|]|DE:Dover:DE Fl[orid|]a|FL:Tallahassee:FL Georgia|Ga:Atlanta:GA Hawaii|HI:Honolulu:HI Idaho|Ida|IO:Boise:IO Ill[inois|]|IL:Springfield:IL Ind[iana|]|IN:Indianapolis:IN Iowa|Ia:Des Moines:IA Kans[as|]|Kan|KS:Topeka:KS Kentucky|Ky:Frankfort:KY Louisiana|La:Baton Rouge:LA Maine|Me:Augusta:ME Maryland|Md:CcDc  (<D R  @<D R w ,3 "( w03w 35 -;@w3;5W-W-e -*< -$< @`Wp u`-< -; @`t5`-; ; -; ; w V2 5 57-; -;-;e57-; -;-~;eW-(-R7-P;-D;-L; -6;->;e(-7- ;-;-"; - ;-;e(@w1w ~16:, _ &,N x N 3 55+ , x@@ D / N F+ x + /- N F ( q )  e p  +  Z+$ #o - o - o p  wP"w >" @ 5@YA5 w&"w "@t5A ru%q  k @5@aA5  *Ne18N w!w !A rNea 8@t w~!w Annapolis:MD Mass[achusetts|]|MA:Boston:MA Mich[igan|]|MI:Lansing:MI Minn[esota|]|MN:Saint Paul|St Paul:MN Miss[issippi|]|MS:Jackson:MS Missouri|Mo:Jefferson City:MO Mont[ana|]|MT:Helena:MT Nebraska|Neb|NB:Lincoln:NB Nevada|Nev|NV:Carson City:NV New Hampshire|NH:Concord:NH New Jersey|NJ:Trenton:NJ New Mexico|NM:Santa Fe:NM New York|NY:Albany:NY N[orth|] Carolina|NC:Raleigh:NC N[orth|] Dakota|ND:Bismarck:ND Ohio|O|OH:Columbus:OH Oklahoma|Okla|OK:Oklahoma City:OK Oregon|Ore|OR:Salem:OR Pennsylvania|Pa:Harrisb5@ ,DN '  wV1:u 5 w-9eNe 3N '5 * w9@ w 0 ,( w099.6,6 D 7@9D3D2 D6 x 8 R   3 DD709 e5^ P[e9 `Ue2 9 pOeq9D78 Ev5= ;Ej57 f5E\5    8F97 F978   8$97 978 t8|8 7l8 `8 j87V8P874747F8788 DDl!@   xA * r  7 *fe 2;%w2! )w !NffA x8%w!w ! )1 )0-D&  6& r e0 "& r Ne0 .  N  h) w -`) w ~  0)  .)  ),NZ   w@ w .  ( 7( N 5 ( 7(@7 ( w5 (u- N  r( v( uN  w-$tA x8 8(<(  urg:PA Rhode Island|RI:Providence:RI S[outh|] Carolina|SC:Columbia:SC S[outh|] Dakota|SD:Pierre:SD Tenn[essee|]|TN:Nashville:TN Texas|Tex|TX:Austin:TX Utah|UT:Salt Lake City:UT Vermont|Vt:Montpelier:VT Virginia|Va:Richmond:VA Wash[ington|]|WA:Olympia:WA W[est|] Virginia|WVa|WV:Charleston:WV Wisconsin|Wis|WI:Madison:WI Wyo[ming|]|WY:Cheyenne:WY sD x   2 > 487 8487 84D3 DDw / 7 w/ 77 :%5  ufe7 :%N B 5wv7w .N  d7N x N 3  27* *7$7 :%fe7 :%N B 5@- @E76 6 w6. 7 6w . uu@w.w - -66665 H7 6 5e-6 @7~67|66w-u r6 7d6+eN x  5 N h65u-70( w(w T (  wL'uu ' A >e 'N 3N x ' T$ F F$   '4$  *$ F }e v' 8 ew-V'wN'u* J'N 3N x N <5 &'  w'w'_ew-&w&_w &u &  N@e-&0 . , )e &N x N 3N 5 z&  6 wZ& wew-H&w@&w x 25    !$'*-"%(  , uu ew-5 -5@5 5 75w5w5@w ,-5J2N w, 5555 5f @# H$ n5%eN x 2  N h655 5 u-ew-,5 05w 5W-H j 5 @w @, -514w:,4555 >@ e57 404e@-)AWt AD A@ rdtCE D @ rdP=e}eew-R4u-wB4J4 B4Nf @# 7 &  &&@ 5D * " ,  R %  %   %A x8 % @ 5D@@5Ne ;NAA r<& @ uA 7r!%-!-!W--!W-<-,%W-<-!_ !_w N 7% P5 55w-$e@e5"w$N w A x8w$w #  $,  @ $ 0 Lz$,  p$  ,7 P$ ( t`VN$A ! A ! A ; & 6 % w D;C5@$ D! D-D      &  *%5@@'-0D# *D  &D "D      &  *% Du!ueN x ?  }e}ee w-BwBwB:w 0:@ p=0D NNmf R w:w :@ Dw:@ D @B?BeB@t@]?Be~B@ D w 9bB5>$ bC! ^C-ZC< F = F  w$4u&4'eN x 0  N &75Hu-u u-ew-3 3w3@_. Cw  w w "w w 0 w 0w w w w w tw bw P w >w , p50DAe N Jefp50DAe 2q50DAe D &    %eq%DTw ) @ x8 0E<2M8222e!  ZA !  $ 7#A !  -  #A !  A !  A ! % # 1`D#A 2 #A 2 5z# NA x8 A !  _A ! A ! :#,_5 ,#  N # _ 05 "@w07 " 5A x8_w  &5 5" w@t@]w "5 a h r"5 1 8eX"8@t@me5ww v0"> F & < %5>'-C# C  B B: F ; F < F & < % +u!ueN 3:> F }e}ee <2w-fAw^Aw8w 8@ p=0D NNmf  w8w p8@ Dwj8"AA AD @@?Ae@@t@]?@e@@ D  0D5 ,DZ5,DT5,DN5,DH5,DB50,D<50,D65 ,D0w f w ^w V w Nw w w zw r,2$2e2 @ : 71 D1 :%5 @ D@ D@ D@ D@ D@ D@ D@ D@ D@ E@ A AD p E@ @@ C r @Bt @tPp0D@  w:(w ((A r NA r  rfA r<&f@ x8ew'w '@-  6- F w' w ' zz0 1`D p0 , f0 7X0w'w ' L0 7>0 ,w|'@ 5 @ @- wXw"w : v%A x8 ! !  \w-!   !BBB x8 n@ww  7 ! !  57!ww  T! 7 h!Ne :   *:N ^: *: ^ *:N ^:N *: :B5B+B r:e SBNB@B r:e w, C 4 EC`fC K"e  "@@ b(C C @@ b(Ce 050#050$0000w&0$   &f2 2@22w  ZB @: dB x8_j%D& 2;%D& 2;%@& 2;%D& 2;%zM 5fe& 2;%$D& 2;%(D& 2;%*D& 2;%@& 2;%@& 2;%@& 2;%@& 2;%@& 2;%D& 2;%@ M& 2;% *:ww   xB : B x8_&D& :%D& :%@& :%D& :%fe& :%@ eM7.  3 DD7  _ 0\ V2 PqD7 ~EV > p;EH 7 F E: x >  7 7| :  zr7 h7^ ReZ 7J > H74.7 7 7$7 DDsD x5(5.505B5T5`5  7 < 7 <n D3 DDw  -5  7  5e- @7r7pzwu f 7X+eN 3 5 N arzjbt  HL> R , ^  H  D 5 D   \ H    :e&  ee-- &  7 w w 5 5 |vn ml <fm^!6$ " 8 H -P#N 57  Zf N Z %    & P e - ,  ̋ `& ԥ -` | H w$D& :%(D& :%*D& :%@& :%@& :%@& :%@& :%@& :%D& :%@ M& :% *:ww r55 : j V @e-J(@wNe 3 N= ue Ne x \= w-f @# w  55 55`@ 5@@ ww  55 55`@ 5@@ ww  @ 5DPu L ` .w-23e\5u-  , uu ew-  - @5  7 w w @w - > N &7w  55  f @#  $ b %eN 3 F N \55 5 u-ew-  $ w W-  ^ 5 @w 4 -  w. 555 =uew- 0 e2@-)AWt AD A@ rdtCE D @ rdP=e}eew-H u-w8 @  8 N w r5 B) 5 | 4ef N @ 0Z   e B-BZ P e5 % Zˋ Z   @ A pZX u-   BB X% eV &eX  `& ӥ  X    eZ%Z͆e  3 B H e-   ^  H B-`  H w w  CeD w%  w ` " &@Ee55 @t5N $.&@ &D  %wA A@ r<ww w  f )%f )% f )% f )%f )% f )%f )%f )% & f )%wjw X@ p=0D  AAm 1`CwBw 0$555555555 B ! B ! 5 VB ! B ! @Nefefefe +e<5 4 *f @# w u 'eN 3 F N 5 u-u u-ew-  w @_:7w ~wHDe>  8 % w7 $7 $ׯ-  (w7  .weBB J ӕ- R r f e0 @ > ҋ D~8BB ӕ0 $f v Le0 9ePJ B< 7,we&  m  ~    ~ w7  8   `ww -d@ mXȥ- @ mF w@ m.$A rea?C reaw . ` 8   0 w w  N   ww - |  r -dh ww D C ̢̥  w@w tC@ @m wf˥ < ˭      0  0 ˥  @   0 @ @m˥   w %9% xNefefefe +eW-- Nefefe ,% 5  + 5   w55   "55 55je@t 5D fN x N 3H5Nfff.&f V-e /Nffff& V-e  Ff -   u  ue  X t w-w   B x8_l* @_l*@_l*w  X5 P q= N fff  0   Wp `e0eӕ?f@w@ fwwBw f@)w fwl@e7dBwfw fwBw>Bww *wBJ wf@w wBwf@wwBw` fwBf@wwCw*f@@& HADCBF7FF 0 ww  f  %ww b~WpBe  % wxw f\WpDeE@7" y~  b  w  Ne A a1 . Ne A a1ww  D5 AWp `eu  =@ww % % wz w dw Z wV AupNNmf | wJw 8 . @@5 _  fA rBpEu@@`55DCN& f& %5 +eHW-kW-p   W-n4ׯp A r}      @e=ׯ/  N ff ,%wW-bW-r lw  `5 X q= W-kNff ,% ,(W-r= W-nW-bW-0 W-9@e= ww A ru@t5 @5W- @55 Nf - Nf - Nf - Nf -      X00:122.< j H| d,, @< Chess /usr/lib/book%s: %d:%d%d 00 kqrbnp PNBRQK a b c d e f g h q q q q k k k k r n b b n r %d. ... ppnbrqkrnbtime = %d/%d forced mate Resign Illegal move saveremoveexitmanualresignfirstrestoreclockwhiteblackscorehint %d repeateh? Draw by repetition White wins Black wins Stale mate /bin/ 2`D--`f $`f&  %`Df z %5 D-& C-D-6@e5@eu-@@AA@ Nf` | u_ Nf | @`5_ f  %Cww   DCԒ ww  DCB5ҒS w~f@w| fww w\f@)wHfw&JA 7  fAW,f B@ 8 @&61wr w \  wX N $.@-w 6 @ w4 @D.E?d xd./j/H/&/.d.5  w z@ 7 :w f5 w R@7 w > 0w 05) &w !w  w w w "w w 0 w 0w #) w w w w w w w w w w w w w w ~ w vw nw > w 6w . w &w w  w w L5mailmailchess/usr/bin/mailmailchesschess.outcannot create file chess.outcannot open file o-o-ooooo-oooambiguous 8dD9o>9x9f9e9c*9s8l9r +fA   @ @e71@, 1wfwA2Q  OfA  ^ y   F y @0fA  @9 fA @e&7hwd7^@8w7 f>:wm4>w(wm"fw>ww fAW @w f17 5 e wD 5& w8& L& H& D& @& <&8&4&0&,&(&@c  (@@ @`R &L5CcDc D R  @D R w   w w@@ 5 @w w 5 -j@w -d -^ @`Wp u`-: -0 @`t5`-  -  w 5 5p- --e5J- --eW-(-:-j-^-F -P-8e(->-:-4-. #&),/$& &&&&& &&&f& fwwJwh fwPwN f@wwTw*f@@& HADCBF7F  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~ -&-e(@wZ w H ,5@ ,DN '  w u 5 w-eNe x N '5 > w@w  @@ 0 C@ -P@ @ A 1l@C@  .5  5  \(@5 @ 1A ACWpduN n5 A B r5@ 5C@ 5@A 5r5`@ w   D 7@`D3D2 D x3t44X4443x & 6  w  4~ %- w>^u @v7& y@-I  m?  ew& mH%e@ȥ-ȥ+ %    @ e@& N !WpBe  ` H,b %  ` AmH % -^   m 7 $ % $ e E7 r7t7 m7 Xzmo^~abdnrtz-Too many keys -/usr/tmp/stmXaa/tmp/stmXaaCannot locate temp Can't create temp Can't create output Can't open 0 1,2,3,4,5,6:7{(integers)}:integers|[natural|counting] numbers 1,2,3,5,8,13:21{(Fibonacci)}:Fibonacci{ seq{ence}| numbers} 1,2,4,8,16,32:64{(powers of 2)}:powers of 2|2[**|^]n 1,2,6,24,120,720:5040{(factorials)}:factorials|n! 1,3,5,7,9,11:13{(odd nos.)}:odd [integ|numb]ers 1,3,6,10,15,21:28{(triangular)}:triangular{ numbers}|C(n,2) 1,3,9,27,81:243{(powers of 3)}:powers of 3|3[**|^]n 1,4,9,16,25:36{(squares)}:squares|n[**|^]2 1,4,16,64:256{(powers of 4)}:powers of 4|4[**|^]n 1,5,25,125:625{(powers of 5)}:powe_w   ww   wf&UUDe .E ~' x$  7X ?f%7\e-B UL6 e?. 7<6U055 ` ć `7 U ef@e7Ew ~w De   % w7 7 ׯ - | z (wn 7 p  .wd eB J ӕ- R r f e0 @ >  ҋ D~8 ӕ0 $f & 6  0w @ w x7 B wtx7v7&j7 x %d7 r hh+ B 7\7Z+47& x + x +7&+ x %7+6&6 +6&6& x e6+6&6&6&+ x e 6 +|6&t6& l6& d6& r &+P6& x e_<+TN @ &_+8 &66&+ &5++5&_+5&_rs of 5|5[**|^]n 1,8,27,64,125:216{(cubes)}:cubes|n[**|^]3 2,3,5,7,11,13:17{(primes)}:prime[ number]s 2,4,6,8,10,12:14{(even nos.)}:even [integ|numb]ers|multiples of 2|2n 3,6,9,12,15:18{(3n)}:multiples of 3|3n v Le0 9e    7 we&  mz  x  ~    ~ w7 L  B > 0   * Wp `e0eӕ?f  , P  @f  7     -  f@w fwJA 7 ^ fAW,f B@ 8 @&61fA   @ @e7H1@ 1wf@+5&5&+_+++5&5&+_+++x5&p5&+_`57_<+_+_B5:5& r +(5& 5& _5 5&5& x %4> r +4&4&_44&+4& 4& x e4 r +4&4&+v4& x e_<b4++_<+_<+_<+_<+z_<+p_<47b_< $_<4_+3&3&_+++9<?BE147:=w&w"wfwm wwmfw ww f@ww&wZ fAW @w f17 5 ew, 5& w& L& H& D& @& <& 8& 4& 0& ,& (& $& & & & & & & & & f& f BRff@@& HADCBF7F ]|}NN`+++_+++3&+_++++3 +_j3,^3&+_N3,B3&,_23,&3& ,_3, 3&,_2  ,2&,2& &,2& x e _<2 (,2&$,2& &",2&x2 0,f2&,,Z2& h &*,D2 8,22&4,&2& 4 &2,:,_@,_F,_L,_R,_X,_^,_d,_j,_Z & 6  w    %@  *@\  =% wB@  % =@%T   7% w  ww 5%w  \ w 5 N 5%w7 y@AA @@@] Zu]5  w@ %,7b y  w 7R y* #  Np]|}[\]{|}<[\]{|}...itrToo hard for me Too many facts about one thing I've forgotten some of it /usr/lib/quiz/indexNo info Right! What? Rights %d, wrongs %d, extra guesses %d, score %d%% Subjects: - For example, quiz asks you a and you answer the quiz works the other way around Type empty line to get correct answer. Bad info %s I don't know about that ~ d o x f e cp,_v,_|,_,1&  &,_,1&  &,_x1,_h1,_X1,L1&,_,81&,_,v_<1,_1,_0,0&0&0&,_",_,_0,_,_,_,0&0&,_,_,_,r0&j0&,_,_,_,F0&>0&,_,_,_,_0 ,_? _<B_4/?/?f \ %  N 5]%w    ~N 5}l%w N X wH @ &2&  % " w  AZ@w @U w w w w (7F  y5   N     w w x u5 u@ @m5'e# *@@%d#\ @ } } :  :=@ ȥ @  % e s l, r0  ?   _</ 7,~/,z/ 7 0 _<b/ _<R/H/ _<8/./ 7r_<w  N5N >5% % %z_ %a_ 7%a_z %z_z %i*%f'%h#%o  5%a%zw@_v %w%f%s%q%r%en%b%rV%d%e>%s%c&%b  w w 5 u-/5 %@ @m@ @m& 5%  @ @m H  u-  wR w :  2 5f ff e w w 7 7h H    4%   w w 5 d $ A 1 % w w Ne @EU7L*@-(H7  y%@5e e%f @ %  *%N  v @large|big:small on:off standing up:sitting down inside:outside high:low old:new|young hot:cold out:in heavy|dark:light daytime:night[time| time] stop|come:go top:bottom floor:ceiling near:far run:walk empty|hungry:full backwards:f[or|ront]wards big|large:little|small fat|thick:thin|skinny bright|light:dark|dull right:wrong|left give:take|receive|get buy:sell shiny|bright:dull dawn:dusk fall down|go to bed:[get|stand|rise] up asleep:awake up:down open[|ed|]:close[d|] smile:frown|cry happy|glad:sad hard:soft%a%o%b %d%i %a %u _8 %q%u  P %Fw w: @ 7 %0%9%A@ r eA! y .74 7  y _X =+ + %--< => !  7 %*_X  t%* j7p %/d _* f   @5%"?  _v w 7$ @-@w  @m N fe p  z * p @ %  -  5 @ &4. R%@ 6@ 4  % 2    @    5 0       @ & pwmn  0 5% %   , fee%-ZZ T   @ p w  uf& %  u-@|easy boy|woman|lady:girl|man fast:slow wet:dry covered|hid[den|]:uncovered|open good:bad always|sometimes|now:never|sometimes beautiful|pretty:ugly rough:smooth hairy:bald||smooth above:below yin:yang sweet:sour if:unless from|fro:to with[|in|]:without|against after:before together:apart plus:minus  @w  @ 5 * +-+++e-+ p 7~+x+  j+ mf+&  7\+ - w< w *  5j f Nf"- (%@e5%E> <- . e( e@ ?  e w @w w NT- ( %9%E  Ne N (wr w ` N 9 a- (/n 3j j f wB w 0 c- (N Ne- ( B 34 w w Nk- ( /   7  7  9( 3ww )ft- x %  u-@   =@@ww p TWp5 EwHWt 7rw~5  t-nn 7 h  Tw*w     %     Wpd  m r  ww   Y  f @ % ~  2   )  T 3  F 5  4 B  & W   b   d    w   2 5   @   u-258;>ADGHKNQTWZ]ILORUX[^ )x-fv-) x e)ww )f{- x %)-f~-z) x el)w`w N N " wV) wH) 7B) 8)&  7,)- )ww - ( rww @ eDww @ exww %/@-)deN f T @l- ( @-Ne  p  N N N Nf T <  N N N  --- eww 47 7 7 @e5E'  . (eee'' z% e5@5eE5@t _\ x. f  d  7Z/ ( J 7@:@-ew$NJ   N,/ ( @ *( 5@ *( 7&&7N @ 4' * e )5 e}/@7_ wT  x. r7/ f-@ z% e5%'e@t% & @fD/ (%%@e@-͆-' *( /) %* ^+ ) 0+& -' *( /) %* ^+ 0+& -' *( /) %* ^+ 0+& -' *( /) %* ^+ ]0+& -' *( /) %* ^+ `0+& -' *( /) %* ^+ c0\0+& -' *( /) %* ^+ 0+& -' *( /) %* ^+ 0+& -' *( /) %* ^+ 0+& -' *( /) %* ^+ 00 -                 { ( ~ ? _ 0( ; +& -' *( /) %* ^+     < > 20r0S0Y0+& -' *( /) %* ^+ ) +& -' *( /) %* ^+ ; ;" ! u0y0=  hDm{'8.@Z*-rrrlhhetalsisipiytotaniniciathinmlibililhfdiaaiorororararuararoarariararararoooooonentanananololieliiaiaitetrererevleDalce%edede$edduceeteaeaarzanzalzrdzelvnivievCuoninuuuquatuttatatortentatouslosisisasr$urigr#rtoror@E7_ o/ ( _4w z~w4Dev4  p4 % w\7 \47 \4ׯR4- J4 H4(w<47 >4 .w24e/B J ӕ- R r f e0 @ >3 ҋ D~8// 3ӕ0 $f v Le0 9e33 z3t3 7d3we&  mH3 F3 ~    ~ w7 3 3 30   2Wp `e0eӕ?f2 ,2P 2 3 4 5 6 7 :0O0- s     @ A ?  ( ~B ? _ - >     @ A ?  ] ( ~B ? _ 0+& -' *( /) %* ^+ ] +& -' *( /) %* ^+ W0+& -' *( /) %* ^+ X0+& -' *( /) %* ^+ ^0+& -' *( /) %* ^+ _0+& -' *( /) %* ^+ a0+& -' *( /) %* ^+ b0+& -' *( /) %* ^+ d0+& -' *( /) %* ^+ e0)0) +& -' *( /) %* ^+ 0+& -' *( /) %* ^+ ] +& -' *( /) %* ^+ ] [0&0 -     herrrrcopyntonhononen$nn%ainlininomomimllllillcklllllalfalaltablbllalalalikgagiagergmgkgdgifnifereeidididuenclunc&esncerncinc%ancerncarncancalncincusicticieclacrooeli$ieoontintrinrinpinninminlinlinlin%sinrinlinnlinkinlinlinlinlinlinyhineethnehingindinbinnoutortittiseispisrisnislisuislisbi 2 2 @f 2 F72 /F22-2x2f v#7p#h#7  7X# T# P#7.2 7 @#f@w& f@)wfw@e7/wfw73 fww/wf*wBJ fAW @w fH1H7 5 ezw|/ 5& wH&F3L&@3H&:3D&43@&.3<&(38&"34&30&3,&3(& 3$&3 &2&2&2             { ( ~ ? _ 00?0A0j0l0   :0) +& -' *( /) %* ^+ ) +& -' *( /) %* ^+ ,0+& -' *( /) %* ^+ -0+& -' *( /) %* ^+ .0+& -' *( /) %* ^+ /0+& -' *( /) %* ^+ 00+& -' *( /) %* ^+ 10@0B0} ;" ! % +& -' *( /) %* ^+ 0+& -' *( /) %* ^+ 00;" ! , v00000w05:=JKbcf<ENQVWZ]`abcdejknopsgisdissraporugurgicaairhifedsciorarooalracacuselelheltaltaalvukthtchadua#uaur%gaonaiaia%ririiiiaaea$eaciaiaaaaoiuoi#i#eivsisiisals$es$asoooaithithowowurpoooooo alaioaiolioio%sioionoioiooooiiiiiiteiaightomeoekeeee#aomaiaia$eaiaialeaea#eacrouhieearro#o&2&2 &2&2&2f& f@fA w,w"e"w"~ew"t@lw"lAlew_ &@t`e @& HADCBF7/F/300N+Q+T+W+Z+]+`+c+f+i+l+p+t+x+|+0@<<,~ 28>ZhpxXfpz<<<"(.4:PlBv &BRb~Z4<D`hp<<@kn{"%2ANSTUby/25NOPQ`otuv $1>?BO^mno   #0189:;<=   $iizovoevomut%useost%cerit%ise%ese%asetearert%meaeropaewn$seonrmelldleleknheaheeihethshhechdgrdoundldiducncBa&aca&eca&ica&ega$uuiouiouiou$iueoueoueubesesb%pibCeCeDshDchionsinsalslishtsisgesgsdesdsasearooironrinenieninrighrighligheighhifraf$dgoaoaoahaui$es%quii%osiinni(failailailili&<Xhr< ,,,,,,,,,,,,,,,,,,,,,,---- -%*+-/=^   X H V X ` & : j 90@ -                  { ( ~ ? _ 0;" ! % s0+& -' *( /) %* ^+ 00=, / 0 2 3 4 5 6 7 [- (1 V0 0(8 =: - >   < = @ A ?   N #M 9 C HT_&f'g(h)i*j+k,l-m.n1r8t:v;w?{@~ADEIJQ`axyz|}urouar$urenaionrirnlglalfalalbllk&gahleeckeodtudeedaa2 3 4 5 6 7  ( ~B ? _ f0=D - >   F G @ A ? 2 3 4 5 6 7  ( ~B ? _ g0=I - >   K L @ A ? 2 3 4 5 6 7  ( ~B ? _ h0 -                 { ( ~ ? _ 000q0R S - >     @ A ?  ( ~B ? _ U W X V Y [ \ Z ] Q0 _ U0Z0(` (a b m0n0o00*0+0)c ,d t0[e x0;0>0- s    r. ; E J?}@AzPQOo^]qd$!#4---------.. . ....".).1.6.<.B.G.L.R.X.^.d.j.n.s.{................... 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14ps.[]Ps:ls;:QQ0QkkKkiiIiooOofc s.s. S+-*/%%^=><!=!>!< 0!=+- 0  @ A ?  )p ( ~B ? _ 0!0"0#0$0%0- >     @ A ?  )u ( ~B ? _ +& -' *( /) %* ^+ 0U W X V C0Y [ \ Z E0=y / 0 2 3 4 5 6 7 [x (1 V0=| - >   < = @ A ? 2 3 4 5 6 7  ( ~B ? _ f0= - >   F G @ A ? 2 3 4 5 6 7  ( ~B ? _ g0= - >   K L @ A ? 2 3 4 5 6 7  ( ~B ? _ h0 +& -' *( /) %* ^+ 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.ldslds?vLdkdkKdkdidiIdidodoOdoKIOlabcdefghijklmnopqrstuvwxyz.cannot open input filebundle %d elements at %o bundling space exceededroutput(%o) []s%s c[%s]pc SLs.0SLs.cannot open input filequnrecognizable argument /usr/lib/lib.b/bin/dcdc-errorUMINUSLETTERDIGITSQRT   U W X V G0Y [ \ Z I0+& -' *( /) %* ^+ 0U W X V K0Y [ \ Z M0} ;" ! (0'0( - >     @ A ?  ( ~B ? _ = \0( 50[ <0D0H0L0[ =0F0J0N0 _ T0R0+& -' *( /) %* ^+ ) p0{ % ] *( /) %* ^+ 30*( /) %* ^+ 40^+ 60^+ 70^+ 80^+ 90+& -' *( /) %* ^+ 0+& -' *( /) %* ^+ ] +& -' *( /) %* ^+ 0) , P0i0+& -' *( /) %* ^+ k0=y / 0 2 3 4 5 6 7 [ (1 V0+& _IFFFFEQ_WHILE_FORNELEGEINCRDECR_RETURN_BREAK_DEFINEBASEOBASESCALEEQPLEQMIEQMULEQDIVEQREMEQEXP_AUTODOTQSTR$acceptstartstattaildefdargsdlistslistdletseEQOPCRSBLEVrefprefixcargsconseoraconstantlorap||`vZstate %d, value %d, char %d character %d read reduce %d syntax errorerror recovery pops state %d, uncovers %d error recovery discards char %d dox0f>ecslLrF 0 %ewauto break case char 4 continue default do double 4 else extern 2 float 4 for goto if int 4 long register return static struct 3 switch while manco capac:sinchi roca sinchi roca:lloque yupanqui lloque yupanqui:mayta capac mayta capac:capac yupanqui capac yupanqui:inca roca inca roca:yahuar huacac yahuar huacac:viracocha viracocha:pachacuti pachacuti:tupa inca yupanqui tupa inca yupanqui:huayna capac huayna capac:huascar huascar:atahuallpa our discontent:\ Made glorious summer by this sun of York:\ {King }Richard III{ I-i}:\ {King }Richard III There['s| is] a divinity that shapes our ends{,}:\ Rough[-| ]hew them how we will{.}:\ Hamlet{ V-ii}:\ Hamlet There is a tide in the affairs of men:\ Which{,} taken at the flood{,} leads on to fortune{;}:\ Julius Caesar{ IV-iii}:\ Brutus Never{,} never{,} never{,} never{,} never{.}:\ Pray you undo this button{.}{ Thank you{,} sir{.}}:\ {King }Lear{ V-iii}:\ {King }Lear I grow{,} I prosper{\:}:\ Now{,} g ! "W N  @ &   / e&7 J  j De Ԥ!@eW  8m RW et ZEWue T!eD @5 &     7 = ߋpH@E A Ze      @7@ eE "   r f rv!b`ɋfiloruadgjmpsvods{,} stand up for bastards{!}:\ {King }Lear{ I-ii}:\ Edmund The better part of valour is discretion{;}:\ in the which better part I have saved my life{.}:\ {King }Henry IV{,} Part I{ V-iv}:\ Falstaff Asses are made to bear{,} and so are you{.}:\ Women are made to bear{,} and so are you{.}:\ {The }Taming of the Shrew{ II-i}:\ Full fathom five thy father lies{;}:\ Of his bones are coral made{;}:\ {The }Tempest{ I-ii}:\ Ariel She lov['|e]d me for the dangers I had pass['|e]d{;}:\ And I lov['|e]d her that shhknqtwx{~The quality of mercy is not strain['|e]d:\ It droppeth as the gentle rain from heaven:\ {The }Merchant of Venice{ IV-i}:\ Portia Friends{,} Romans{,} Countrymen:\ lend me your ears{;}:\ Julius Caesar{ III-ii}:\ {Mark }Antony Neither a borrower nor a lender be:\ For loan oft loses both itself and friend{.}:\ Hamlet{ I-iii}:\ Polonius To be{,} or not to be{\:}:\ that is the question{\:}:\ Hamlet{ III-i}:\ Hamlet Alas{,} poor Yorick{!}:\ I knew him{,} Horatio{;}:\ Hamlet{ V-i}:\ Hamlet Double{,} double toil ane did pity them{.}:\ Othello{ I-iii}:\ Othello Uneasy lies the head that wears a crown{.}:\ Many good morrows to your Majesty{!}:\ {King }Henry IV{,} Part II{ III-i}:\ Mislike me not for my complexion{,}:\ The shadow['|e]d livery of the burnish['|e]d sun{.}:\ {The }Merchant of Venice{ II-i}:\ Morocco Cowards die many times before their deaths{;}:\ The valiant never taste of death but once{.}:\ Julius Caesar{ II-ii}:\ Caesar O{h}{!|,} Pardon me{,} thou bleeding piece of earth{,}:\ That I am meek and gentle ^K0@ & 6  w ,% @- e `d%@^    ,   F^ 7 >^E! Ne @  @aAap  % 555 `4&, e @5&3 e  _: Ne TNe T7 _ Ne @  _J w b D &a Xe   `& %P % 5/ h   ` & %P %  h w w 05- h @ Zd trouble{;}:\ Fire burn and cauldron bubble{.}:\ Macbeth{ IV-i}:\ Witch{es} By the pricking of my thumbs{,}:\ Something wicked this way comes{.}:\ Macbeth{ IV-i}:\ Out, damned spot! out, I say!:\ :\ Macbeth{ V-i}:\ Lady Macbeth [Second |2nd |]Witch Unbidden guests:\ Are often welcomest when they are gone{.}:\ {King }Henry VI{,} Part I{ I-ii}:\ She is a woman{,} therefore may be woo'd{;}:\ She is a woman{,} therefore may be [won|screw'd]{.}:\ Titus Andronicus{ II-i}:\ Demetrius Such duty as the subject owewith these butchers{.}:\ Julius Caesar{ III-i}:\ {Mark }Antony The play's the thing:\ Wherein I'll catch the conscience of the king{.}:\ Hamlet{ II-ii}:\ Hamlet How sharper than a serpent's tooth it is:\ to have a thankless child{.}:\ {King }Lear{ I-iv}:\ {King }Lear Had I but served my God with half the zeal I served my king:\ He would not in [mine|my] old age have left me naked to [mine|my] enemies{.}:\ {King }Henry VIII{ IV-ii}:\ {Cardinal }Wolsey It seems she hangs upon the cheek of night:\ Like a rich @ ZfNeai  %Ne0 h w  w v D `0 %   @ 5 5 Be  r e\A! y"@e Bef& e5P%/ % @w Ґw D@5N  A  Ku  % &`&`p  5&   `&`ep % %2 %9   w<  &u@A H ȋ Wp qf55@ 5 Wp uus the prince{,}:\ Even such a woman oweth to her husband{.}:\ {The }Taming of the Shrew{ V-ii}:\ Kate Who is Silvia{?} what is she{,}:\ That all our swains commend her{?}:\ {The }Two Gentlemen of Verona{ IV-ii}:\ Thurio Tu-whit{,} tu-who[ - | |--]a merry note{,}:\ While greasy Joan doth keel the pot{.}:\ Love's Labo{u}r Lost{ V-ii}:\ Winter My only love sprung from my only hate{!}:\ Too early seen unknown{,} and known too late{!}:\ Romeo and Juliet{ I-v}:\ Juliet But{,} soft{!} what light through yonder winjewel in an Ethiop's ear{.}:\ Romeo and Juliet{ I-v}:\ Romeo Where the bee sucks{,} there suck I{;}:\ In a cowslip's bell I lie{.}:\ {The }Tempest{ V-i}:\ Ariel O brave new world{,}:\ That has such people [in't|in it]{!}:\ {The }Tempest{ V-i}:\ Miranda Why{,} then the world's mine oyster{,}:\ Which I with sword will open{.}:\ {The }Merry Wives of Windsor{ II-ii}:\ Falstaff A goodly apple rotten at the heart{\:}:\ O{h}{,} what a goodly outside falsehood hath{!|.}:\ {The }Merchant of Venice{ I-iii}:\ Antonio  @ @- s=_Nn  w DCԢӋw| w f bG5 5ԕ*@eaԕ*N r@ @m %   2@ _$n%bG_P     Te%/ ^5% % _$5% /% +T *5% N  ds 5 @mAmp %  RN  B @r5 @ :5 @m5%.  ) % @ Z@dow breaks{?}:\ It is the east{,} and Juliet is the sun{!}:\ Romeo and Juliet{ II-ii}:\ Romeo What's in a name{?} That which we call a rose:\ By any other name would smell as sweet{.}:\ Romeo and Juliet{ II-ii}:\ Juliet Good night{,} good night{!} parting is such sweet sorrow{,}:\ That I shall say good night till it be morrow{.}:\ Romeo and Juliet{ II-ii}:\ Juliet A plague o['|n] both your houses{!}:\ They have made worms' meat of me{.}:\ Romeo and Juliet{ III-i}:\ Mercutio This royal throne of kings{,} thiI never kill['|e]d a mouse{,} nor hurt a fly{;}:\ I trod upon a worm against my will{,}:\ Pericles{ IV-i}:\ Marina Golden lads and girls all must{,}:\ Like chimney sweepers{,} come to dust{.}:\ Cymbeline{ IV-ii}:\ Guiderius You blocks, you stones, you worse than senseless things!:\ O you hard hearts{,} you cruel men of Rome{.}:\ Julius Caesar{ I-i}:\ Marullus A horse[!|,|] a horse[!|,|] my kingdom for a horse[!|]:\ :\ {King }Richard III{ V-iv}:\ {King }Richard III My salad days,:\ When I was green in judg[e 5 %  @ pXN  45_bGf % Z_wtw b5 % % %0+%.7  %+%-5 %-  %0%  @5) %%95 BD@5  h%9Wp Cae5 B5  55555%| &5wv7Y5w ZY7 zY wT^ R  XW  w " C Wp9@@`eˋY& 0%WpDen wf 0 s scepter['|e]d isle{,}:\ This earth of majesty{,} this seat of Mars{,}:\ {King }Richard II{ II-i}:\ John of Gaunt Not all the water in a rough rude sea:\ Can wash the balm from an anointed king{.}:\ {King }Richard II{ III-ii}:\ {King }Richard II I'll put a girdle round the earth:\ In forty minutes{.}:\ {A }Midsummer[-| ]Night's Dream{ II-i}:\ Puck I can call spirits from the vasty deep{.}:\ Why{,} so can I{,} or so can any man{;}:\ {King }Henry IV{,} Part I{ II-iv}:\ There are more things in heaven and ea|]ment, cold in blood[,|]:\ Antony [and|&] Cleopatra{ I-v}:\ Cleopatra Age cannot wither her, nor custom stale:\ Her infinite variety[.|]:\ Antony [and|&] Cleopatra{ II-iii}:\ Enobarbus Give me some music\: music, moody food:\ Of us that trade in love[.|]:\ Antony [and|&] Cleopatra{II-v}:\ Cleopatra 'Tis better playing with a lion's whelp,:\ Than with an old one dying[.|]:\ Antony [and|&] Cleopatra:\ Enobarbus The barge she sat in, like a burnished throne,:\ Burned on the water[.|] The poop was burnished goe%bGnw  Xw7   ӕ- ӕ0B~ӕ.  ӕ0~ B~7   ӕ-ӕ.r B~ӕe ӕ- ӕ+ r e0e0Sw ~w XDeX  X % h w7 W7 WׯW- W W(wW7 W .wWeB J ӕ- R r f e0 @ >~W ҋ D~8 \Wӕ0 $f v Le0 9e(W"W F WW 7Wwrth{,} Horatio{,}:\ Than are dream[t|ed] of in your philosophy{.}:\ Hamlet{ I-v}:\ Hamlet The time is out of joint{;} O cursed spite{,}:\ That ever I was born to set it right{!}:\ Hamlet{ I-v}:\ Hamlet Once more unto the breach{,} dear friends{,} once more{;}:\ Or close the wall up with our English dead{.}:\ {King }Henry V{ III-i}:\ {King }Henry V Was ever woman in this humour woo['|e]d{?}:\ Was ever woman in this humour [won|screw'd]{?}:\ {King }Richard III{ I-ii}:\ {King }Richard III Now is the winter of ld[;|.|]:\ Antony [and|&] Cleopatra:\ Enobarbus e&  mV V h ~  h   h ~ w7 V V V0   VWp `e0fV ,VP vV pV @f TV `74 BV `8V0V-*V"Vf@w fw JA 7 UfAW,f B@ 8 @&61fA   @ @e7r 1@ 1w@fAW @wH fb1b7< 5 e w(  5& w&WL&WH&VD&V@&V<&V8&V4&V0&V,&V(&V$&V &V&V&V&V&V &V&V&Vf& f@fu@& HADCBF7TFf5w * f5w }7 .V&VW&f$c 7 V@% V@A&@Lc7 @L> Be0# @$cє Lc    BA   W Lce B@e0$cm4 ~U` $ceȐ9 ȕ0 $cabilities ability able about above absence absent absentee absenteeism absolute absolutely abstract abstracts academic academically academician accept acceptability acceptable acceptably acceptance acceptances accepted accepting accepts access accessed accesses accessible accessing accession accessions accident accidental accidentally accidents accompany accompanying accomplished accomplishment accomplishments accordance accorded according accordingly account accountability accountable accountancy accountantch be bear bearer bearing became because become becomes becoming been before began begin beginning begins begun behavior behavioral behind being belief beliefs believe believed believes bell belong belonging belongings below beneath beneficial benefit benefits bent besides best better betterment between beyond big bigger biggest bill billed billing bills binary biometrika bit bits black blank blanks block blocked blocking blocks blue board boards body bold bond bonds book books borrow borrowed both bottom ȕ1 LU FU`0$c$cVV6rw"U6r@  `U^U7JUcPP7 TEDE!wETED5!5! w |W!w0w   wW! B  w0 w" w w   (:TE7vTE*TU"TE@TU@T T jcE UUcTTT S BE? encCE ec@E xH5Se5Sts accounted accounting accounts accumulated accuracy accurate accurately achieve achieved achievement achieving acknowledge acknowledging acknowledgments acquired acquiring acquisition across act acting action actions activated activates activation active actively activities activity acts actual actually actuate actuated acute acutely adapt adapted adaption add added adding addition additional additions additive address addressed addresses addressing adds adequacy adequate adequately adhesives adjacent adjbottoms bought bound boundaries boundary bounded bounds box branch branches break breakdown breaker breakers brief briefed briefing briefly bring brings broad broadened broader broadest broadly broken brought brown bubble budget budgetary budgets build building buildings builds built bureau bureaucracy bureaucratic burning bus buses business busy but buy buyer buying buys by bypass bypassing cabinet cabinets cable cabling calculate calculated calculates calculating calculation calculations calendar caliber 5@hSeYc H enc 5@BS> c; c66  c\Sc `&e  c   cSeSbww5Q$Rc ^c f   EU P5R   PTcfPPQ7 4R5    5 C B A  `5R  5Q  5Q  eETc  "$ $5Q $$ 5Q udged adjunct adjuncts adjust adjusted adjusting adjustment adjustments administer administered administering administrate administrated administration administrative administrator administrators admit admittedly adopt adopted adopting adoption advance advanced advances advantage advantageously advantages adversary adverse adversely advise advised advisers advising advisors advisory affairs affect affected affecting affects affirmation affirmative affirmed aforementioned after afternoon again against age agcalibrated calibrates calibration california call called calling calls came can candidate candidates cannot capabilities capability capable capacity capital capitalization capitalize capitalized card cards care career careful carefully carried carries carroll carry carrying case cases casual casually catalog catalogs categories category cathode cathodes catholic caught cause caused causes causing cease ceases cell cells center centered centers central centrally centuries century certain certainly chain chai 5lQ  Rc5@TQ  wL   w>Rc TcQ (    5@Q  P B    P UPwRc P wRc PwPwPw  7 ~P zPa hPUlPtPW 8U`c W 8ETcfc     ` \chc-PP a h h   Tc \ca  ! p ^cRcR BRc OW !W e UETR5O  encies agency agent ago agree agreeable agreed agreement agreements agrees ahead aid aide aided aids aimed air alert algebraic algol algorithm algorithms all allocate allocated allocates allocation allocations allow allowable allowance allowed allowing allows almost alone along alphabet already also alter alteration altered alternate alternating alternation alternative alternatively alternatives although always america american among amount amounts amplifier amplitude an analog analogous analogy analyses anned chaining chairman chairmen chance chances chang change changed changes changing channel channels chapter chapters character characteristic characteristics characterize characterized characterizes characters charge chargeable charged charges charging chart charter chartered charts cheaper cheapest check checked checking checks chemical chemicals chemistry chief chiefs children choice choices choose choosing chosen circle circles circuit circuitry circuits circumstances cited cites citing citizens city ci5tO  UfOwp   Rc^c   7 (Or@Tcr@`c  e  JW!vcW!c 5N7 Ne  , NNN fTc    Tc`c$ $$$`c& N & N  N N S C B A  eW!\cՇ w^ mLN>N :N rfdc58Ne        W!`cTcP    0&Tcd& dN & dN dC N eN e-MMMM"]'|:,̼o P1_p6A67jl;nO#=alysis analyst analysts analytic analytical analyze analyzed analyzer analyzing ancillary and angle animal announced announcements announces annual anode anodes another answer answered answering answers anticipated any anyone anything anyway apart apparatus apparent apparently appeal appealing appeals appear appearance appeared appearing appears append appended appendices appending appendix appends applicability applicable applicant applicants application applications applied applies apply applying appointevil claim claimed claiming claims class classes classification classified clean cleaning cleanliness clear clearance cleared clearing clearly clears clerical clerk clerks clock close closed closely closer closes closest closing closure clue cluster clustering clusterings clusters cm code codes codifying coding coefficient coefficients coffee coherency coherent cold collaboration collaborative colleagues collected collection collections collective collects college color colored column columns combination com p=ף> BCCzEtJ$tJ$nO(khTdpz /usr/lib/unitsattofemtopiconanomicromillicentidecidekahectahectokilomegameggigaterano table you have: you want: * %e / %e conformability underflow or overflow %e %s*%c*cannot recognize %s %l units; %l bytes %sredefination %s 6 d o x f ed cr sB l r`d appointment appoints appraisals approach approached approaches approaching appropriate appropriately appropriateness approval approvals approve approved approximate approximated approximately approximation april arbitrarily arbitrary are area areas argue argued argument arguments arise arisen arises arising arithmetic arose around arrange arranged arrangement arrangements arranges arranging array arrays arrival arrive arrives arriving art article arts as ascertain ascertained aside ask asked asking asks abinations combinatorial combine combined combining come comes coming command commands comment comments commerce commercial commercially commitment commitments committed committee committees common commonly communicate communicated communicates communicating communication communications communist communities community compact companies companion companions company comparability comparable comparative comparatively compare compared compares comparing comparison comparisons compatibility compatible compensate 0> ,:JZZZZZZBRZZzZZPh4 4>^jzspect aspects assembly assess assessed assessment asset assets assign assignable assigned assigning assignment assignments assigns assist assistance assistant assistants assisted associate associated associating association assume assumed assumes assuming assumption assumptions assurance assure assured assures asymmetric at atmosphere atmospheric atom attach attached attack attempt attempted attempting attempts attend attendance attendant attended attention attitude attitudes attorney attract attraction attcompensating compensation compensatory compete competence competency competent competently competes competing competition competitive compilation compilations compiled compiler compilers compiles compiling complement complementary complements complete completed completely completes completion complex complexities complexity compliance complicate complicated complicating component components composed composite composition compositions comprehend comprehended comprehending comprehension comprehensive comprisey|z}ractive attractiveness attributable attributes audio augment augmentation augmented augmenting august author authorities authority authorization authorizations authorize authorized authorizing authors automated automatic automatically auxiliary availability available average averaged averages averaging avoid avoidance avoided avoiding aware awareness away axes axis back background backgrounds bad badly balance balanced ball band bandwidth bank banking banks bar bars base based bases basic basically basis ba comprises comprising compromise compromised compromises computation computational computations compute computed computer computerized computers computes computing conceivable conceived concentrate concentrated concentration concept conceptions concepts conceptually concern concerned concerning concerns conclude concluded concludes conclusion conclusions condensed condition conditional conditionally conditioned conditioning conditions conducive conduct conducted conductivity conductor conductors conference conferences confidence confident confidential confidentiality configuration configurations confirm confirmation confirmations confirmed confirms confounded confounding confuse confused confusion congruent conjectured conjectures connect connected connecting connection connections connects conscious consequence consequences consequently consider considerable considerably consideration considerations considered considering considers consist consisted consistency consistent consisting consists constant constanectives directly director directories directors directory disagreement disagreements disappear disappears discharge discharges disclose disclosed discloses disclosure disconnected discount discounts discourage discouraged discourages discouraging discover discovered discovers discovery discrepancies discrepancy discrete discriminable discriminate discriminated discriminating discrimination discriminatory discuss discussed discusses discussing discussion discussions dispense dispensing display displayed dispexploratory explore explored exponential exponentially exposed exposure express expressed expression expressions extend extended extending extension extensive extensively extent external extinguished extra extracted extracting extreme extremely extremes fabricated face faced faces facilitate facilitated facilities facility fact factor factorial factors facts faculties faculty fail failed failing fails failure failures fair fairly fairness faith fall falls false familiar families family far fashion fast fastts constitute constituting constrain constrained constraint constraints construct constructed constructing construction constructs consult consultant consultants consulted consulting consults consumable consumed consumer consuming consumption contact contacted contacts contain contained containers containing contains contemplate content contention contents context continuation continue continued continues continuing continuity continuous continuously contract contractions contractor contracts contractual colaying displays disposal disposed dissimilar dissimilarities dissimilarity distance distances distant distinct distinction distinctions distinctive distinctly distinguish distinguished distinguishing distorted distortion distortions distractions distribute distributed distributing distribution distributions disturb disturbed disturbing diverse divide divided divides division divisions do document documentation documented documenting documents does doing dollars domain dominance dominant dominated done door er fastest favor favorable fear feasibility feasible feature features february federal federally feed feedback feel feeling feels feet felt female females few fewer field fields fifteen fifth fig figs figure figures file filed files filing fill filled filling fills film filter filtered filtering filters final finally finance financed finances financial financing find finding findings finds fine finely finish finished finite fire fires firm firmly first fiscal fiscally fit fits fitted fitting five fix fixed ntradicting contradiction contradictions contrast contributed contributions control controllable controlled controller controlling controls convenience convenient conveniently convention conventional conventions conversant conversation conversations converse conversely conversion convert converted converter convertibility converting convey conveyed convince convinced convincing cooperate cooperates cooperation cooperative cooperators coordinate coordinated coordinates coordinating copied copies copy core codoors doped dotted double doubling doubt doubtful down dr draft drafting drafts draftsman drastically draw drawing drawings drawn drew drink drinks drive drives driving drop dropped dropping drops dubious due duplicates duplicating duplication duration during dust duties duty dynamic each earlier earliest early earmarked earth ease eased easier easily east easy economic economical economically economics economists economy edge edges edit edited editing editor editorial editors educate educated educating eduflat flexibility flexible flip floor flop flops flow flowing follow followed following follows food foot for force forced forceful forces foregoing foreign forest form formal formally format formation formats formatted formed former forming forms formula formulae formulated formulation forth fortran forward found four fourth fraction fractions frame frames framework framing free freed freedom freely french frequencies frequency frequent frequently fresh friend friendly friends from front fulfill fulfilled frner corners corporate corporation correct corrected correcting correction corrections corrective correctly correctness corrects correlated correlation correlations correspond corresponded correspondence corresponding corresponds cosines cost costing costly costs could council councils count counted counter counting countries country counts couple coupled coupling course courses court cover covered covering covers create created creates creating creation creative creativeness credit crisis criteria criteriocation educational educationally effect effective effectively effectiveness effects efficiency efficient efficiently effort efforts eight either elaborate electric electrical electrode electrodes electron electronic electronically electronics electrons element elements eliminate eliminated eliminates eliminating elimination else elsewhere embedded embedding embodies embodiment embodiments embodying emergencies emergency emotional emotionally emotions emphasis emphasized emphasizes empirical empirically emplulfilling full fully function functional functionally functioning functions fund fundamental funded funding funds furnish furnished furnishes further furthermore future gain gained gainers gaining gains gap gas gaseous gases gate gates gather gathered gathering gating gauge gauges gave general generalist generalists generality generalization generalize generalized generally generals generate generated generates generating generation generator generators geographical geographically geometries geometry germann critical critically criticism criticisms criticize criticized critics crop crops cross crossovers cubic cultural culture cultures currencies currency current currently curve curves customer customers cut cutoff cuts cutting cycle cycles cyclic cycling daily dallas damage damaged damages damaging danger dangerous dark data date dated dates day days dead deal dealing deals dealt debug debugged debugging december decide decided decides deciding decision decisions declared decoded decoder decoding decompositioyed employee employees employer employment empty enable enabled enables enabling enclose enclosed encloses encode encoded encoding encounter encountered encounters encourage encouraged encouragement encourages end ended ending ends energy enforced enforcement enforcing engage engaged engineer engineering engineers english enhance enhanced enhancement enjoy enjoys enlarged enough ensure ensures enter entered entering enters enthusiasm enthusiastic entire entirely entities entitled entity entries entry envel germany get gets getting give given gives giving glance glass glasses global glow go goal goals goes going gone good goods govern governed governing government governmental governments gradually graduate graduates graduating grant granted granting graph graphic graphical graphics graphs great greater greatest greatly green gross grossly ground grounded grounds group grouped grouping groupings groups grow growing grown grows growth guarantee guaranteed guaranteeing guarantees guard guarded gudeance guess guon decrease decreases decreasing deep deeply defect defective defects defend defendant defendants defense define defined defines defining definite definitely definition definitions degree degrees delay delayed delaying delays delete deleted deletes deleting deletion deletions deliver deliverable delivered delivers delivery demand demanding demands demonstrate demonstrated demonstration demonstrations density deny department departmental departments departure departures depend dependency dependent depending ope environment environmental environments environs epitaxial equal equality equally equals equated equation equations equilibrium equipment equipped equitable equivalence equivalent equivalently error errors escape especially essential essentially essentials establish established establishing establishment establishments estimate estimated estimates estimation et etc evaluate evaluated evaluating evaluation evaluations even evening event events ever every everybody everyone everyones everything everywhere essed guesses guests guidance guide guided guidelines guiding habit habits had hair half hall halls hand handbook handle handled handler handles handling hands hang hanging hangs happen happened happening happens hard harder hardly hardware has have having hazy he head headings heads health healthy hear heard hearing heat heating heavily heavy height heights held help helped helpful helps hence her here herein hereinafter hers hesitate hidden hierarchal hierarchical hierarchy high higher highest highly hilldepends depicted deposit deposition deposits depth derive derived deriving descendant descendants descending describe described describes describing description descriptions descriptive descriptors design designate designated designating designed designing designs desirability desirable desire desired desires desiring despite destination detail detailed detailing details detect detected detecting detection detects determination determine determined determines determining develop developed developers developevidence evidenced evident evidently evil exact exactly exaggerated exaggerates examination examinations examine examined examines examining example examples exceed exceeded exceeding exceedingly exceeds excellence excellent except exception exceptionally exceptions excess excessive excessively exchange exclude excluded exclusive executable execute executed executes executing execution executive executives exercise exercised exercises exhaust exhaustion exhaustive exhibit exhibited exhibitions exist existed him himself hire hired hiring his historic historical history hold holding holds hole holes holidays home hook hope hoped hopefully hopes horizontal horizontally hospital hospitals host hot hour hours house houses housing how however human humanly humans hundred hundreds hypotheses hypothesis hypothesized hypothetical idea ideal ideally ideas identical identifiable identification identifications identified identifies identify identifying identity idle if ignore ignored ignores ignoring illness illustrate iing development developments develops deviance deviant deviation deviations device devices diagnose diagnosed diagnoses diagnostic diagonal diagram diagrams dial dialing diameter dictated dictates dictionary did die dielectric differ differed difference differences different differential differentiate differentiating differently differing differs difficult difficulties difficulty diffusion digit digital digits dimension dimensional dimensionality dimensions direct directed direction directions directive dir existence existent existing exists exit exiting exits expand expanded expanding expansion expect expectancy expectation expected expects expedite expeditious expendable expended expenditure expenditures expense expenses expensive experience experienced experiences experiment experimental experimentally experimentation experimented experimenters experimenting experiments expert expertise experts explain explained explaining explains explanation explicit explicitly exploit exploitation exploited exploration llustrated illustrates illustrating illustration illustrations illustrative illustratively image images immediate immediately impact impedance impede implement implementation implemented implementing implementors implications implicitly implied implies imply implying importance important impose imposed impossibility impossible impressed impression impressions impressive impressively improve improved improvement improvements improving impurities impurity in inability inaccessible inactive inadequacy inadequate inappropriate inches inclination inclined include included includes including incoming incompetence incompetent incomplete inconsistent inconvenience inconvenienced inconvenient incorporate incorporated incorporates incorporating incorporation incorrect incorrectly increase increased increases increasing increasingly increment incremental incremented incrementing increments incur incurred incurring indeces indeed indefinite independence independent independently index indexed indexes indexing india indicst look looked looking looks loop loops lose loses losing loss losses lost lot low lower lowest machine machinery machines made magnetic magnitude magnitudes mail mailed mailing mails main mainly maintain maintained maintaining maintains maintenance major majority majors make maker makers makes making male males man manage manageable managed management managements manager managerial managers managing manipulate manipulation manned manner manning manual manually manuals manufactured manufacturer manufacturerves out outcome outcomes outgoing outline outlined outlines outlining output outputs outs outset outside outsiders over overall overhead overlap overlaps overly overview overviews own owned owner owners owns package packages packing packs page pages paid pain painful pair paired pairs panel panels paper papers paragraph paragraphs parallel parameter parameters paramount part partial partially participants participated participating particular particularly parties partition partitioned partitioning partitionate indicated indicates indicating indication indications indicative indicator indicators indices indifferent individual individualized individuals industrial industry ineffective inefficiency inefficient inequalities inequality inexperienced infer inference inferences influence influencing influential inform informal informally information informational informations informative informed informing infrequently inherent inhibits initial initialed initialization initialize initializes initially initiate initis manufacturing manuscript manuscripts many map mapped mapping maps march margin marginal margins mark marked markedly market marketability marketing markets marking marks mask masked masking mass master mastered masters match matched matches matching material materials mathematical mathematically mathematician mathematicians mathematics matrices matrix matter matters maximizes maximum may me mean meaning meaningful meaningfulness meaningless meanings means meant measurable measure measured measurement meass partly parts party pass passage passed passes passing past patent patentable patented patents path paths patient patients pattern patterns pause pauses pay pays peak pension pensions people per perceived percent percentage percentages perceptible perceptibly perceptions perceptual perfect perfectly perform performance performed performing performs perhaps period periodic periodically periodicals periods peripheral peripherals periphery permanent permanently permissible permission permissions permissive peated initiating initiation initiative inner input inputs insert inserted inserting insertion insertions inserts inside insight insights insist instability install installation installations installed installing instance instances instant instantaneously instead institute instituted institutes institution institutional institutions instructed instruction instructional instructions instructor instructors insufficient insurance insure insured insures integer integers integral integrated integrating intellectuaurements measures measuring mechanical mechanics mechanism mechanisms media median medical medicine medium meet meeting meetings meets member members membership memberships memoranda memorandum memory men mention mentioned mere merely merge merged merging merit message messages met metal metallization metallurgy metals method methodological methodologies methodology methods metric microfilm middle might mileage miles military million mind minded minds minimal minimize minimized minimizes minimizing minimum rmit permits permitted permitting person personal personalized personally personnel persons pertain pertaining pertains pertinent perusal phase phased phases phenomena philosophy photocopied photocopies photocopy photocopying physical physically pick picked picking pickup pictorial picture pictures piece pieces pile piles pilot pipe piped pipes pitfalls place placed places placing plan planar plane planned planner planning plans plant plants plausible play played players playing plays pleasant please pleasel intelligibility intelligible intended intends intense intensely intensity intensive intent inter interact interacting interaction interactions interactive interacts interchange interchangeable interchangeably interconnect interconnected interconnection interconnections interconnects interest interested interesting interests interface interfaces interior interlocation intermediary intermediate internal internally international internationally interpret interpretable interpretation interpretations interpretminister minor minority minute minutes miscellaneous missed missing mistake mistakes mix mixed mixes mixture mode model modeling models moderate modern modes modification modifications modified modifies modify modifying modular module modules modulo moment momentarily money monitor monotone monotonic monotonically month monthly months moon moral more moreover morgan morning most mostly motivated motivation motor mount mounted mounting move moved moves moving much multi multidimensional multiple multiplicatid pleasing plots plotted plotter plotters plotting plurality plus point pointed pointer pointers pointing points polarity police policies policy political politically pollution polymers polynomial polynomials pool pooled pooling pools poor poorer poorly popular popularity populating population porter portion portions position positions positive possess possession possibilities possibility possible possibly post posts potential potentially power powerful practicable practical practice practiced practices praed interrelationship interrelationships interrupt interrupted interrupting interruption interruptions interstage interval intervals interview interviewed interviewing interviews intimate intimately into introduce introduced introduces introducing introduction introductory invalid invalidates invent invented invention inventive inventor inventories inventory inverse inversely inverted inverter invest investigate investigated investigation investigations investment investments invite invites involve involved on multiplied multiplier multipliers multiply multiprogram multiprogrammed multiprogramming multistage multivariate murder murray must mutually my name named namely names naming narrow nation national nationally nations natural naturally nature near nearer nearest nearly necessarily necessary necessitate necessitates necessity need needed needing needs negate negated negative neglect neglected neighbor neighboring neither net network networks neutral never nevertheless new newer newest newly news next nice cticing practitioners preassigned precede preceded preceding precise precisely precision predetermined predict predicted predicting prediction predictions prefer preferable preference preferences preferred premium premiums preparation prepare prepared preparing prescription presence present presentation presentations presented presently presents press pressed pressure pressurized presumably presumed pretty prevent prevented preventing preventive prevents previous previously price priced prices pricing primainvolvement involves involving ion ions irrelevant is isolate isolated isolation issue issued issues it item itemized items iteration iterations its itself james january jargon jersey job jobs john johnson join joined joint jointly journal journals jr judge judged judgment judgmental judgments judicious judiciously july jump jumps june just justice justification justified justify justifying keep keeping keeps kennedy kept key keyed keys kill kind kinds knew know knowing knowingly knowledge knowledgeable knonight nine no nobody node nodes noise noisy non none nonexistence nonlinear nonlinearity nonowners nonzero nor norm normal normality normalized normalizes normally norms north not notable notably notation note noted notes noteworthy nothing notice noticeable noticeably noticed notification notified notify noting novel november now nuclear number numbered numbering numbers numeric numerical numerically numerous object objectionable objective objectively objectives objects obligation obligatory observation obrily primary prime priming principal principle principles print printed printer printers printing prints prior priori priorities priority privacy private privilege privileged privileges probabilities probability probable probably problem problematical problems proc procedural procedure procedures proceed proceeded proceeding proceeds process processed processes processing processor processors produce produced produces producing product production productive productivity products profession professional profwn knows label labeled labeling labelled labelling labels laboratories laboratory lack lacking lacks lag laid land language languages large largely larger largest laser lasers last late later latest latter law laws lay layer layers laying layout layouts lays lead leader leaders leadership leading leads learn learned learning least leave leaves leaving led left leftmost legal legally legitimate lend lending length lengthening lengthens lengths lengthy less lessened lesser let lets letter letters letting leveservations observe observed observer observing obsolete obtain obtained obtaining obtains obvious obviously occasion occasional occasionally occupancy occupations occupied occupies occupy occupying occur occurred occurrence occurrences occurring occurs october odd of off offer offered offering offerings offers office officer officers offices official officially officials often oil old older omission omitted on once one ones only onto open opened opening openings opens operable operate operated operates operessionalism professionally professionals professor professors profile profiles program programmed programmer programmers programming programs progress progresses prohibited prohibitively prohibits project projected projection projections projectors projects promotion promotional promotions prompt prompting promptly pronounced proof propagate propagated propagating propagation proper properly properties property proportion proportional proportionate proportions proposal proposals propose proposed proposes prl levels liability liable liason liberal liberalized librarian librarians libraries library lie lies life light lighting lights like likely likened likewise limit limitation limitations limited limiting limits line linear linearly lines link linkage linkages linked linking links list listed listing lists literal literally literature little live lived load loaded loading loads loan loaned loans local locally locate located locates locating location locations log logged logging logic logical long longer longeating operation operational operations operative operator operators opinion opinions opportunism opportunities opportunity opposite optical optically optimal optimality optimistic optimization optimum option options or oral orally order ordered ordering orderings orderly orders ordinary organization organizational organizations organize organized organizer organizing orientation oriented origin original originally originals originated originating originator orthogonal other others otherwise ought our ourselospects protect protected protecting protection protects proters prove proved proven proves provide provided provides providing proving provision provisional provisionally provisions public publication publications publicly publish published pulse pulses purchase purchased purchases purchasing pure purely purpose purposes pushed pushing put puts putting qualities quality quantities quantity quantization quarter quarterly question questionable questioning questionnaire questionnaires questions quick quickly quiet quite quote quoted quotes radio raise raised random randomly range ranged ranges ranging rank ranking rankings ranks rapid rapidly rare rarely rate rated rates rather rating ratings ratio rational ratios ray rays reach reached reaches reaching reaction reactions read readable reader readers readily reading readings reads ready real realistic realistically realities reality realization realize realized realizing really rear reason reasonable reasonably reasons reassigned reassignment receipts receive r sequential sequentially serial series serious seriously serve served serves service serviced services servicing serving set sets setting settings seven several severe shall shape share shared sharing sharp she sheet sheets shift shifting shifts ship shipped shipping ships shop shopping shops short shortage shortages shortened shortens shorter shortest shortly shot shots should show showed showing shown shows side sides sign signal signals signature signed significance significant significantly signing simihereof these they thick thickness thin thing things think thinking thinks third thirty this thoroughly those though thought three threshold thresholds through throughout thus tight time timed timely times timing tip tips title titles to today together toggled told tolerance tolerances tolerant tolerated toll tolls tone tones too took tool tools top topic topical topics tops total totally totals touch toward towards trace traced tracing tracings track tracks trade traditional traditionally traffic train traieceived receiver receivers receives receiving recent recently recognition recognize recognized recognizes recognizing recommend recommendation recommendations recommended recommending record recorded recorders recording recordings records recover recovered recovering recovers recovery rectangular recurring recursive recursively red reduce reduced reduces reducing reduction reductions refer reference referenced references referencing referral referred referring refers reflect reflected reflecting reflection lar similarity similarly simple simpler simplest simplicity simplified simplify simply simultaneous simultaneously since single sit site sits situation situations six sixth size sized sizes skill skilled skills slide slides sliding slight slightly slips slot slots slow slower slowly slows small smaller smallest snow so social societal society soft softest software sole solely solid solution solutions solve solved solving some someone something sometimes somewhat somewhere son soon sooner sophisticated sort ned trainee trainees training transaction transactions transcribe transcribed transcribes transcribing transcription transfer transferred transfers transform transformation transformations transformed transforming transistor transistors transit transition transitions transitory translate translated translation translations translator translators transmission transmit transmitted transmitter transmitting transport transportation transporting travel traveled travelers traveling traverse traversed traverses trreflections refused regard regarded regarding regardless region regional regionally regions register registered registers registration regression regular regularly regulated regulations reinforced reinforces reinforcing reject rejected rejecting rejection rejects relate related relates relating relation relations relationship relationships relative relatively relay relayed release released releases relevance relevant reliability reliable relief remain remainder remained remaining remains remarkable remarkabsorted sorter sorters sorting sorts sought sound sounds source sources space spaced spaces spacing spatial speaker speaking special specialist specialists specialization specialized specializing specially specialties specialty specific specifically specification specifications specifics specified specifies specify specifying spectrum speech speed spell spelling spells spend spent sphere spherical spirit spite splitting spoke sponsor sponsored sponsors spot spots spread spring square squares stability stabilaversing tray trays treasury treat treated treating treatment treats tree trees trial trials triangle triangles triangular tried triggered trip trivial trivially trouble troubles truck true truly try trying tube turn turned turning turns twelve twenty twice two type typed types typewriter typical typically typing typist typists ultimate ultimately unable unacceptable unacceptably unaffected unaltered unassigned unauthorized unavoidable unaware unchanged uncommon uncover uncovered undefined under undergradualy remarks remember remembered remembers remote remotely removal remove removed removes removing rent rental rentals renting repair repaired repairing repairs repeat repeated repeatedly repeater repeaters repeating repeats repetitions repetitive replace replaced replacement replaces replacing report reported reporters reporting reports represent representation representations representative representatives represented representing represents reproduce reproducing reproduction reputation request requested reize stable staff staffed staffing staffs stage stages stand standard standards standing stands start started starting starts state stated statement statements states static station stations statistic statistical statistically statisticians statistics status stay steady step steps still stimulate stimuli stimulus stop stopped stopping stops storage store stored stores storing straight straightforward strange strangers strategies strategy stream streams street streets strength strengthened stress strict stricte underlying understand understandable understanding understands understood undesirable undetected undivided undocumented unduly uneasy unequal unexpected unfamiliar unfortunate unfortunately unidirectionality unidirectionally uniform uniformity uniformly unimportant union unique unit united units unity universal universally universe universities university unknowingly unknown unless unlikely unlimited unnecessarily unnecessary unofficial unpublished unrealistic unrelated unreliable unresponsive unsatisfacquesting requests require required requirement requirements requires requiring requisite requisition requisitions research researcher researchers resemblance resemble resembles reserve reserved reset resetting resident resist resistance resisted resistivity resistor resistors resolution resolve resolved resource resources respect respected respective respectively respects respond respondent respondents response responses responsibilities responsibility responsible responsibly responsive rest resting restoretest strictly strikes striking string strings strong stronger strongly structural structurally structure structured structures structuring struggle student students studied studies study studying style subject subjected subjective subjects submit submitted submitting subordinate subroutine subroutines subsequent subsequently subset subsets substantial substantially substantive substitute substituted substituting substitution substrate succeed succeeding success successful successfully succession successive tory unspecified unstable unsupported until unused unusual unwanted unwilling unwise unwritten up update updated updates updating upon upper us usage use used useful usefulness useless user users uses using usual usually utilities utility utilization utilize utilized utilizing vacation vacations valid validate validated validating validation validity valuable value valued values van variability variable variables variance variances variation variations varied varies varieties variety various variously vary restored restoring restrict restricted restriction restrictions restrictive result resultant resulted resulting results retrieval retrieve retrieved return returned returning returns reveal revealed revealing reveals reverse review reviewed revised revision revisions reward rewarding rewards rewritten rich right rights rigid rigidly rise risk risks roads role roles room rooms root rooted roots rose rotate rotation rotations rough roughly round rounded rounding route routed routes routine routines routing rsuccessively such sudden suddenly suffer suffice sufficiency sufficient sufficiently suggest suggested suggesting suggestion suggestions suggestive suggests suitability suitable suitably suited sum summaries summarize summarized summarizes summary summing sums super superior supervise supervised supervises supervising supervision supervisor supervisors supervisory supplement supplementary supplied supplier suppliers supplies supply supplying support supported supporting supports suppose supposed supposedly varying vast vector vectors verbal verification verified verifiers verifies verify verifying version versions vertical vertically very via viability viable vice view viewed viewpoint views vis visible vision visit visited visiting visitor visitors visits visual vital vocational voice voids voltage voltages volume volumes wait waited waiting walk walking walks wall walls want wanted wanting wants war warn warned warning warnings warrant warranted warrants warranty was washington wastage waste wasted wastefuloutings row rows rule ruled rules run running runs sacrificing safe safely safety said salary sale saleable sales same sample samples sampling san satisfaction satisfactorily satisfactory satisfied satisfies satisfy satisfying save saved saving savings say saying says scalar scale scaled scaling scan scanned scanning scans schedule scheduled schedules scheduling schematically scheme schemes school schooled schools science sciences scientific scientifically scientist scientists scope score scorers scores scrsure surface surprised surprising surround surrounded surrounds survey surveyed surveyors surveys suspect suspected suspects switch switched switches switching symbol symbolically symbols symmetric symmetrically symmetry system systematic systematically systems table tables tabling take taken takes taking talk talked talker talkers talking talks tape tapes target task tasks tax taxed teach teacher teachers teaching teachings team teams technical technically technician technicians technique techniques techno wasting water wavelength way ways we weak weakest week weekly weeks weight weighted weighting weights welcome welcomes well went were western what whatever when whenever where whereas whereby wherein wherever whether which while white who whole whom whose why wide widely wider widespread width will willfully william willing willingly willingness wind window windows wire wired wires wiring wise wiser wish wishes wishful with withdraw withdrawal withdrawals within without witnessed witnesses women word wordieen screened screening sea search searched searches searching second secondary secondly seconds secret secretarial secretaries secretary secretive secrets section sectional sections secure securely security see seeing seek seeking seem seemed seems seen sees segment segmented segments seldom select selected selection selective selectively selects self sell selling sells semiconductor send sending sense sensitive sensitivity sent separate separated separately separates separation september sequence sequenceslogical technologically technologies technologist technologists technology teeth telecommunication telecommunications telephone telephones telephoning telephony tell tellers telling tells temp temperature temporarily temporary ten tend tended tendencies tendency tends term termed terminal terminals terminate terminated terminates terminating termination terms test tested testing tests texas text texts than that the their them themselves then theorem theoretical theoretically theory there thereby therefore tng words work workable worked worker workers working works workshop workshops world worlds worry worse worst worth worthy would write writer writers writes writing written wrong wrote year years yes yet yield yielded yields york you young your yours zero zeros zone zones ants:colony|hill apes:shrewdness asses:pace|bunch badgers:cete bass:shoal bears:sloth bees:swarm birds:dissimulation brats:passel candidates:slate caterpillars:army cats:clowder cattle:drove|herd chickens:peep|flock crows:murder curs:cowardice dogs:pack doves:dule ducks:[pad|ba]dling earthquakes:swarm eggs:clutch elephants:herd elk:gang ferrets:business finches:charm firemen:brigade fish:school foxes:skulk geese in flight:skein geese on water:gaggle goats:trip hawks:cast hens:brood herons:siege horses:haras@  p ! "  %ZRNeF Dw "" *"  & Ne 0"  ;"R"   Ne Y"  e"}"   " @55 5 5%"_  +5 N @ 5@N T "  5_65_6Nf@   @&  5 @  " \@ =5@&  5 & f v%Cock Robin:{the }sparrow sleep|Duncan:Macbeth {the }cat:curiosity|care {John {F{.} }}Kennedy|JFK:{Lee Harvey }Oswald|{the }FBI|{the }CIA {Lee Harvey }Oswald:{Jack }Ruby|{the }FBI|{the }CIA {Martin Luther }King:{James {Earl }}Ray|{the }FBI|{the }CIA [Bobby |Robert {F{.} }]Kennedy|RFK:{Sirhan }Sirhan|{the }FBI|{the }CIA Christ:{the }Romans|{Pontius }Pilate {Sharon }Tate:{Charles }Manson Charles Lindbergh Jr{.}:{Bruno }Hauptman{n} {Mr{.} }{{and }Mrs{.} }Borden|{her }parents:Lizzie{ Borden} {Prof{essor} }{James|team hounds:kennel jellyfish:smack kangaroos|monkeys:troop kittens:kindle lapwings:deceit larks:exaltation|bevy leopards:leap lions:pride locusts:plague magpies:tidings maidens|quail:bevy martens:richness men:band moles:labor monkeys|kangaroos:troop mountains:range mules:barren|baren nightingales:watch operating companies:at&t|bell system owls:parliament partridges|grouse:covey peacocks:ostentation pheasants:bouquet plovers:congregation ponies:string prisoners:gang pups:litter quail|maidens:bevy rabbits:ne@&  5 @  "  N N 5 N N @ 5 @ N @ 5 @  5   "  5        %@@E4P  ~ 7pf \ ^@"Ne@&  "  f \ ?N@& " @ Ne N @  " >@5Ne :@ }Moriarty:{Sherlock }Holmes Achilles:Paris Abel:Cain {the }nurses:{Richard }Speck {J{.} |Julius }Caesar:Brutus{ et al.} Pompeii:Vesuvius {Abraham |Abe }Lincoln:{John {Wilkes }}Booth {Yukio }Mishima:{Yukio }Mishima {Alexander }Hamilton:{Aaron }Burr Cleopatra:{the |an }asp [Ann Boleyn|Catharine Howard]:Henry{ VIII} vaudeville:{the }movies|film {the }movies|film:TV|television st ravens:unkindness rhinoceroses:crash roebucks:bevy rooks:building seals:pod sheep:flock ships:fleet snipe:walk|wisp sparrows:host squirrels:dray starlings:murmuration stars:constellation storks:mustering swallows:flight teal:spring toads:knot turkeys:rafter turtledoves:pitying whales:gam|pod witches:coven wolves:route woodcocks:fall woodpeckers:descent {wild }swine:sounder @EU4PNef& %@@EU4PNfe& %_6@E5@t] @t] _6w rDe f  % "e&  "  D%    # (ww N   #  v & & v% ww D 8 ̋ww fe %ww  f& % T  f& 2%e0 8 wtw bD̋@-wX w BDCԢӋw8 w " ?# # Ne4j & 6  w n%   % @ @m/ӕ.  R  @m& e @ D-wfw$@e7wfw7 f D& w }f@wwwf@fA w,w"e"w"ew"@lw"Alewy &@t`e @& HADCBF7Farg count /bin/cpcp  %ew %.CE D- T #     5#  "# 5!N fw fw  ## %)#@ wpw ^,BNe Ne #fefe %#fefe %#fefe %ʥ/ ʋҋ @aˋ %uu`5 @& B& v% fe,& %wfw,#w f@wx fww0#wXf@)wDfw\wX /usr/lib/tmg $1.t $1.s as - $1.s ld /usr/lib/tmga a.out /usr/lib/tmgb /usr/lib/tmgc -ls p & 6  w   % %  7.# "#& %7#(e04r# Bd!q!" 7#5t!"  7"%47 "--c%"t"      w! -r"    e70"@ 7(" &" "  h7"" w ' "'"#!'!7"7!! R˥ '!(!!!  !!' 2 !!  ww 6#wfw 7 ffww<#wf*wBJ f@wwB#wf@wwH#w~ fAW @w f(1(7 5 ewN# 5& w &L&H&D&@&<&8&4&0&,&(&$& &&|&v&p&j &d&^&Xf& f BRfwT#f D& w. }.de HD .if t .tl '\(rn''' .if t 'sp \\n(m1-1 .if n 'sp \\n(m1 .ps 10 .ft R .if e .1e .if o .1o .ps .ft 'sp \\n(m2 .if \\n(:n .nm 1 1 2 .ns .. .wh 0 HD .de FT 'sp \\n(m3 .ps 10 .ft R .if e .2e .if o .2o .ps .ft 'bp .. .wh -7 FT (1inch) .de m1 .nr m1 \\$1 .. .de m2 .nr m2 \\$1 .. .de m3 .nr m3 \\$1 .ch FT -\\n(m3-\\n(m4-2 .. .de m4 .nr m4 \\$1 .ch FT -\\n(m3-\\n(m4-2 .. .m1 3 .m2 2 .m3 2 .m4 3 .de he .de 1e .tl \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 \\.. .de 1o .tl \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\!!e!  r e( A! y  Ġ(ĥ Z!7R!wU?8! 4!?.! *! 70!!& ?! !7! N!& ? w V @ 7` - !  w8w & ĝ 7 ` ĥ e ! -x t -l h , ` ĥ e N !U2ĥ$8 tĥ0+ĥ9(e-  m 7 ğ ċ7  2ĥ\ &ĥ  w^ĥ$r#Ew 6 % >   wf@w\wXX#wf@fA w,2w",e"w""ew"@lw"Alew &@t`e w jwZwVwjLJw\w JBB BJw:w (BBdb@ BJwf@& HADCBF7F6rw6r@ !!!*!:!A!H!O!V!]!0 8 D P   ) vLvLLLLvLLLL$8 \\$9 \\.. .. .de fo .de 2e .tl \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 \\.. .de 2o .tl \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 \\.. .. .de eh .de 1e .tl \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 \\.. .. .de oh .de 1o .tl \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 \\.. .. .de ef .de 2e .tl \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 \\.. .. .de of .de 2o .tl \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 \\.. .. .he '''' .fo '''' .de bl .rs .sp \\$1 .. .de n1 .nm \\$1 1 2 .nr :n 0 .if \\n(.$% fe& T%%  r l@w eu-!@& Nf r w w  5 DD-Bp 7 y e  5 f ( 33 %&UaN&e 2 3  Nf ( jw w  DD-0 7L y e   f  2N&e ( 22 wl Nf  w J 5 @ȥ)U5 5 5 5 5 5 DD-_5 &();()^|LTXXN()<>&P2 @ HangupQuitIllegal instructionTrace/BPT trapIOT trapEMT trapFloating exceptionKilledBus errorMemory faultBad system callSig 14Sig 15Sig 16Sig 17Sig 18Sig 19/usr/adm/sha% # : cannot opensyntax error '" ;&<>()|^ "'Command line overflow Too many argsToo many characters;& <>([?*chdirchdir: bad directorychdir: arg countshiftshift: no args login/bin/loginlogin: cannot execute newgrp/bin/newgrpnewgrp: can .nr :n 1 .. .de n2 .nm \\$1 1 2 .. .if n .ll 60 .if n .lt 60 .if t .ll 6i .if t .lt 6i  7 y  |e5 e 5eD->U eD-*!& %< 5 5 @ @m !  Nf r 3sssw |@ @m Ne 5 u-@ `A Amp w Be  &  w w p !f @w^ w L @EwN w <  9@ 2 x @ ! (not execute wait:try again : cannot open: cannot create/dev/null/etc/globglob: cannot execute /usr/bin/: not found/bin/shNo shell! : too large : -- Core dumped**gok()  0+ %ew4@ & 6  Vw D 7 7  * 5D *   ZRERUL 8 P M%%@5%%   F%N$ F 5%8   %9%7  (  F 5 8 w*w rv 8 w w @  5 @ p- @ N F 5%ww  F5   @ @m@ & ( N F @ @m5 F FwFw 4N F@  w(f ,|P r l @f P  7 >  4,-&f   7  7 7 f@)wtf@wwX fAW @wv f 1 7j 5 ewV 5& w&NL&HH&BD&<@&6<&08&*4&$0&,&(&$&  &&        e    4% m e7 x mv e7x l f \ \ e5L P mH  8> @ * < , m2 e7,  7 N   fN $w w   = c @m5[5 @ @m  Cf %5  @m & % Am 1 #@ @m  @ @m !@ @m & %A Am  @ @m  D-w0 w   5}@p@p@w w t0 & 6  w l%e@ȥ- e@P7 y >   ew& " w2w. @  ( O%   4t4 t  5* %5  %t5%0%9%a%z%A%Z  7@~B~   :ww '_ "_~  pC7|7_}7 _77&33e%7^77 @7(7w77&&& &&&f& f@wvw, f@@& HADCBF7LFABDWSN\Go^LEM[_@CZ]UFVHJPKYRITOXQ 6Dbh~4FVf~.@Tlrxc (B | o < / - - \<-n | ) /| - `c o|' ` '` \ ' '  C ` ! @m5u-u-w  w 5 @ m~  -j @ md AH@5 wd w R  @& Z  @& Z  55 ? ? 5 _  %   m Hj  %   m H  m  $ v 5&f p 5%  mf  D 5   mB H  m.   5   m H -  m _  % 77 7t7 8 f p2e %~@72 8ĝ.%a(0 %WpCe  Z ww  55 N F 2AWp qu&55 AWp qAWp qWpCfAWp fe &e %5  5pC& e ww N& Z e%ww  7:7 5 Aq55@7d5 5&@pVp@@50 ;= 55 @@m / \u, \ - - /- , ( /u uO - - o ` ` ` o/o[]/- '' []- '` - " " [] [] - o | o ~ > - - t ~~ O-O=c , c ` c , <  0   m H -  0 0@ww  @ȥ- 5 F7  @&  ?N  @&  ?< H ? L @ mB 6 p au-_( @ m A m A H  u-@ m 5@ 5 @ m  u-@ m 5@ mHNffff P e@ 5u^@ m^A mTA H @ m@  %@ m& 5@ 5 @ m  %@ m 5@AHt %%e %5 @@mAHt %}ww  hw  mT AWp `@ҋ % -* w 7 pD777w77@ w f W57 7 5 r 57 5557 5557547   r      0! r C  &8 (%w7    ӕ- ӕ0B~h ӕ.  ӕ0~ B~7F <   ӕ-ӕArgentina:Buenos Aires Bahamas:Nassau Barbados:Bridgetown Bolivia:La Paz Bra[z|s]il:Brasilia Canada:Ottawa Chile:Santiago Colombia:Bogot['a|a'|a] Costa Rica:San Jose Cuba:Ha[v|b]ana Dominican Republic:Santo Domingo Ecuador:Quito El Salvador:San Salvador Guatemala:Guatemala Guyana:Georgetown Haiti:Port au Prince Honduras:Tegucigalpa Jamaica:Kingston Mexico:Mexico Nicaragua:Managua Panama:Panama Paraguay:Asunci['o|o'|o]n Peru:Lima Trinidad[ and Tobago|]:Port of Spain United States|US{A}:Washington Uruguay mHNffff P e@ 5% N&  P e ww u-u- cNf . u-a u- dc N f .  ff x eu-u-   f f x e u-   ww u-N  u-N  u-N  wpw ^u= @ @m&f %@ @m@ @mf ef %5N  5 @ @m .$ B~ӕe ӕ- ӕ+ r e0e0Sw ~wDe   % w7 l7 lׯb- Z X(wL7 N .wBeB J ӕ- R r f e0 @ > ҋ D~8 ӕ0 $f v Le0 9e F  7twe&  mX V ~    ~ w7 *  0   Wp `e0f ,P  :Montevideo Venezuela:Caracas u- u-ww ~wDe   % w7 7 ׯ-  (w|7 ~ .wre$B J ӕ- R r f e0 @ > ҋ D~8LP ӕ0 $f v Le0 9e  7we&  m  ~    ~ w7 Z P L0   8Wp `e0eӕ?f  ,P   @f @f  7  -fw JA 7 ^fAW,f B@ 8 @&61fA   @ @e7@ 1@  1w`f BRf@f =f 5= @& HADCBF7tFf5w * f5w }7 ldW&f! 7 L@% @@A&@!7> @L> Be0# @  7P T-f@w f@)wfwZJA 7 ZfAW,f B@ 8 @&61fA   @ @e7z1@` 1wfw\wXfwf@w@w<lwf,(wm"rwwmfwrwxw f@wwxwN f@ww~w*f@@& HADCB!є !    BA   W !e B@e0!m ` !eȐ9 ȕ0 !ȕ1  `0!!VV 7N"PP7 \EDE!wEBED5!5! w |W!w B w\    2wW! B  w B  wr H w\ 0 w\   BE7EUE@xU@p l "E UUN"p|v 2 bN: & 6 t w @ E57` B%b f e|-xtww p f  %w\w J D- w8@56t@m5)tBm@,","@5ruJt5u-Ӈ D-w @  5@t@m @mAWtAmH u- @ @mA AmH u-ww.w @   N @ WtF7FfA7z fA @e7t1@  1 @ Out of space Cannot open Arg count Jackpot * --- . . %d%d,%df& w ^  vv`D D`D e    incomplete line omitted d o x f$ e c s l2 rwww &w UBE? e"CE eL"@E xb5e55@eYL" H e" 5@> X"; Z"66  Z"^" `&e  Z"   Z"|evbww5Q$"  " f   EU P5   P"fPPQ7 5    5 C B A  `5n  5V  5D  eE p @ @ & w w f Z %p fN f} f    2B 6 0wf w T  t @m0  D-0C- -t@mWtAmp,t@mWtAmp,t @mt @m0 D-@ t@m0  C- & @m WtAmA Ht@mWtAmp,  @m WtAmH @m wd w R % @- e% f  B7 7 7 @&  @ "  "$ $5 $$ 5  5  "5@  wL   w>" "n (    5@^  @ B    & U0w"  w" www  7  a UW 8U" W 8E"fc     `  ""-lv a h h   "  "a  ! p  ""R B" W !W e UETR5  5  Uwp   " "   7 r@"r@"  e  JW!$"W!4" 5N7 Fe  , 04& f"    ""$ $$$"& N & N  N N S C B A  eW! "Շ w^ m  rf"5e        W!""P    0&"d& dN & dN dC N eN e-- fe  2    w))IyYhyiputcall kput obuild seekchar getchar outb outw outt cfile lfile flush iget sptr generate succ getnam"ignore.o Bd < 5w9)fn succ iget ignore"inc.o.o toct trswitch#trace"trans.o T 0 w)gsucc iget trans"tx.o.o l<  w)igenerate obuild .tx".txs"unary.o p0   N w succ .ng".nt".cm"f.oy.o 3|06 w)9.f"succ seekchar  Ehlptx|dpwZt`xDJanFebMarAprMayJunJulAugSepOctNovDec/usr/adm/wtmpNo %s %-8.8s%6.2f total%9.2f %s %2ddox0f>ecslLr> |  X^" ( DV,Z G$T w w w w) ) succ .u update .ia" .ib".da".db"infix.o L8T c  S  N C 6xw .p sprv .a".s" .o".n".x"*lvrv.o W\$ww)).lv".rv"succ getword putoct.o |x"$&E@  e0  putch obuild putoct"arith.o td L ) >%% 6!w &&-  %w)9Y succ fail iget seekchar getword alterwor sprv"Pupdate",.l"".u".p"    mult.o \6< 6pv  r6  rvwIII9.m".q".r"".p sprv octal.o a `  w w)9iIYiputcall iget kput putoct generate succ octal"params.o fH  A1`w(8Ifiget env si .t".st"ctest.o "` & 7 9(Yfj classtab jget ctest"putcstr succ ctestc"cstr.o  7 w7 ~v rW 1 &\4 wN D >w 8 0W @  ~wv )y9Ymend.o . end"any.o lf w w8yi8YIifx j succ fail ctest iget any"append.o t0 &  w) succ putcstr iget append"bundle.o $`  @@e wI(9Yfgg1 succ params"push.oo l($ f && f   succ iget push"putcal.o q<` TA 1W 7translation overflow(((HX9fgk errcom ktab ktat putcall"kput" putdec.o vD$  &-  vr f @e0w<wIi)jget iget succ create rewind putchar getchar allocate smark"rewcstr" putcstr"getcstr"Lsize"~cstrwcstrrcstrtcstrbsympjget.o RT\ XA@E@7  D7` 0` @` p= W  9(Hfj n inputpbundle iget succ bundle"reduce"char.oo `  w&  w9yI(ifij jget iget char"succ fail copy.oo x`W B e 2 7translation overflow2E w wi8HXH8yfix k-32768  putch obuild putdec"px.ot.o 0N  >ff& > w5 %wI8(Y(8y8(8ifij n iget jget succ fail .px".pxs"litcLreln.oo <Zx -# - - -  classtab jget"jgetc\inptinpr$readc^inpb` ktab ktat putcall obuild errcom succ generate rewcstr getcstr scopy"decmal.o  `  w w)9iIYiputcall iget kput putdec generate succ decimal"discd.o $\0  w) 9release discard"iget succ emit.o )F`fe#W8@!q # u -  -w6 w .p sprv .eq".ne" .lt".le"$.gt"0.ge"<trueHfalseRshift.o d0  vvw .p sprv .sr".sl"stack.o |nw W8  Ae@fD W4P w8& #  w~6 & 6  w %U7 >  7D7> 727,5 /r& %!         %CF` % )%&@   p@ @m& $ @ @m  1%  j b% % @ @m   * ~ %vzz % u-_&%         ww  f  %ww @5 wX)9hhhIfgofile dogen succ g1 k emit"find.o 8P&  w& && ee 6e  &   *  ew |6 r n j b6 V R N F  >ew2 Yi(8 9ixI9iiYfigsucc pbundle goto iget g1 stack"unstack" gotab"Laccept" string.o T N& wY(I(9fij succ ctest iget string"table.o &H f w ~wDe   % w7 n7 nׯd- \ Z(wN7 P .wDe"B J ӕ- R r f e0 @ > ҋ D~8JN ӕ0 $f v Le0 9e  7vwe&  mZ X ~    ~ w7 , " 0   Wp `e0eӕ?f ,P   @f  7p Y iIilptr rptr sptr succ fail iget find"enter"seekchar getword getchar putword putchar alterwor getcstr rewcstr length rewind indextableptempwhichframelright left(nomorelfoundgetnam.o =j!   w)9Iallocate putword putchar iget succ table"tq.o.o ,@AuuA Ce5 wA 1`wh88X(Hhx8hfiek ep ek.fs ep.fs si x fs generate .tq"gpar"0gq"trace.o x<   )iputch puR-f@w fw,XJA 7 @fAW,f B@ 8 @&61fA   @ @e71@^ 1wf@wwdwf@wpwljwf@f& CB  ԕ-   e0fv   vA W  ~w @BB BJw0w BBdb@ BJw@& HADCBF7F: cannot open %7s %7s %s %7s %7s total bdoxfecsnlr&w & 7:< A A_p_@5@ 5P`5 @ 5a @ af f 5@ ; 1l__@ 5_ @ af f 5@ ; 1l__; pa;A - 9@ _@ P`Nm X@A @a  NA - @ a@m  *@ _@ P`Nm @A @a  NA - @ A @a   3NN@ lP` @ a@m  *NB - @A @a  NN@ lP` X /V: AAm -%w w  NG - RJ@ a NG - @ D7+G - J G -+ 0 P`+ _+ Ia 8@ IfG -%wjw X@ @A p\ @'NG - @ 5 @ \G - -?@ \G - ? ?p\ww G@ 5\5 u n? @ \G - @ \e5`-D?_| 55@@m55 .@ \ _@ \ P`f f 5@ \ P`f f 5@&),/25!$'*-036"%(+.1478;>ADGJM9<?BEHKN:=pP` N>: a4: &P`*: &_fff:B -eN  N  N w#w #  79@ 5_9 A AP`upP`NN f f 59 A p_~9 p-_p9 P`f96B - |f  N>B - |f   / 9 A Aa  ` pa xMNf8 &af8 &P`8 &_DB -e N w~"w l" N X5 N / *  u-N X w."w " 5@A7e5` u- > NffG -e@@m55 @ \ pP`@ \ AAmp_@e5` u- u-u5 5 -@ \Nm f @ \@m &\ H%@ @al)$f) 5la @e5` u- 7>) A$ p__,) A$ pP`P`) A Am epa =( a( &P`( &_ff(G -e (%H - 5 @ @-6HN@ @a&$.H -%@ @a$  u-7H -wW &  %7 B <AZW - AA& A  nA  8<'TALA&L :A2A&C$AA&RAA&-;R' ;@7B'7 <'@@& @@& @@& _B @ 0_ b;@&L H%p@7F;_ >;^@&C,;L@&R;:@&- ;&@@&@&fW -e@ ?? lapa@ 5_@ 5P`@ 5_@ 5P`NFV@ -% 5@@ 5@-uN XNd@ - N N f f E 1P`NN & f @m4E pP`@ 5@mAA@ @@@5N Nj@ - N XNNm f f "E 1_ / Y! E aE &_D &P`@ &fffDp@ -eN N w.w n. wDt 7D@ P`@ &P` f 5@ _@ P`@ &_@ P` f @m paa_NB - @ P` X@ a l@ P` w w55B - N %N %N *%N XNB - %@5 1P` %@t5 1`P` Id5 P`Z5 &_fffB -e ww  p7(5 0 P`5 _%quR%~FJ%^FB% F:Cf ' 5 5C+ 7O7ONf  %O N F %vO@m lO5`O04c4cN >V4 1a H&?& _" ??&?& _" ??&?& \_" ? ?&?& %7 %_  n?& d?& _" T?L?& _B >&>>& _B > 7%_ H%_ B%_ N$_ D$_ T$_ U$_ x>{$_ }$_ 69 09P>p\_ 9 98>p\_  _ >q _B >c=5BD 1_8D pP`,D A AaB lapa XD affffC@ -e NfC@ -eN N w~-w l-wCwp-w ^- 55%0%9 AWp Ameu@@m 5 W Nf@ -%@w-w ,w2Cw,w ,w$C WC@ - w,w , D7B@ 5_B A p_@ 5B A pP`P`B A Aaepa &WB aB &_B &P`fBA -e pB)A -  * F4 a<4 &_24 &P`f$4f+F -e N 4PF -%ww 5 ! %%%\\%\e%  @ 5@w`w N@C7J/ y@mnNȥ=bNp4c XNTN4c JNFN_4c 2 >K2 27g2 @ 2 p x27>%  :d2 t> :-::7 N2 !8 N0: : m:& x0 78: m:1[ %w w  5% % 7#W71 yKHE*B+?7 B&%\ 5%"vB\jf lBhBpjf ^B%XB jfE[ % 5%"2B0jfjfl"-P= w Njf | / u- @ a l@ a *N XN4A - N w+w + ,7A%- 5@@5 5@@m 5 555u@ \ 5l_@ \ af f 5 u-XA A upAmp_@A pa@ 5@ \ _@m5` u-A C r A A\ AP`AmAA pP` JU2N@;A -%u @ \PA - u-@ a@ &P`x@ &_VA -eb@gA - T@ P` 2M &M$M"Me &M &F -eF - L  / /  wL /%   /%  \dF - d 5HH.@N-L Lw J 5= % @-XL@-NL = @ww .%d 5%  dF &  %0 <A Aa1d@ @a&F -% \ @ K  @ @aKd 5-K A Aa1d@ @a&F -%5 @ @aF - @ @a& \bjf ' 5#% 1 1e[ % 00 A pbh0 0g0_%Ujf ' 5@ %dV @_%@ %dV d_%@ %dV _%@ %dV _%@ dVw & 7 &AM M I{E}A"=~9^5@-<0\ 5%"@@mȕ\ @@@mH @%@ N|[ % 5 {}"~ ^  @-|;@7`/@m8@wt w6 w $      @m`@X%R>@ a @ 5u-_` @ \ 5_@ \ 5P`@@77 yN @ \qA - @ \ a *NNNm wA - N @ \ a *@ \zA - NNNm AN F? aA A\ @a  @ \A - ? aA A\ @la  *NNNm A> _> P`Nm X%R> a  /u @ \  u-wD(w 2( 7l>@ 5_@ 5P`@ 5  u- / ww  DNF - @ 7_J@ 7P`JwJww  @w@ w u-@w@w r  A@]] @ %dNG %w@w .@0]w0w  wFwF F;F-5pF7l- ypF7J`F7I NFeJFvCE-F-R-B-S - F d07D  F& x0 7C @G %7 H d07OEEwBw 0w:w (7 B Cw*w  'G -tO /` @` w  @m w  5% % %  5 5@-'@@mH }% % @@mH 5% @@m@wJ w 8  |5% % jf & \bjf ' 5'7B> b - 3 * \b[ - jf ( 5 @jf, 9 95  @jf - 1\b5  \b@mAHjf N - 1b5   b@mAHjf 2f b\ &\b[ -%_@ 5P`@ 5_@ 5P`@ @m@5@@m@-@@5@ 5@mAA@ @@@5NNN& f &f & %e@m= 1_NNN& f @mx= 1P`@ a@ &a f A @laJ= 1aN<=A -%N XNA - @ a *NNm NA - N X@ A p,aa @ a@ a  / 2QNff<A -e Q< a< &P`x< &_A -eN N N wlOdO 7G -Nf - dEbEZE m\E&EG -e /wO  1ww  ,+N L5+ /N /@  wdw R ++N L5+ /+ /@  ww  r+n+5N L5N /@  ww  0+,+5N L5N /@  ww _ /@  wzw h @ 7aJ 7,hG - , |,  JapP`f, _ @ JfrGww  7$978 jf ( V<79O<7 9%o9%f%O8 %F8 7878ww  5% % jf & jf 7 787wxw f 7% %  7z87wRw @47 007 07 0@e5"h7 0 0R0[ -ee0e6,60 Q eH5@5eE5@t _:, x[ b0  `0  7V0[ - F0 7<060@-ew 00 0 0 0N\ - @ R 5@ R 7557JN @ 4R T eS5 e}/@7/_* w/  x[ n/\ b/-@ Q eH5%'e@t% "/ @f\ -%$5@e@-͆@E7._* ..I\ - .._+f&UT/UP/De D/.E 6/' 0/$ 0 7 00 0!  " # $ + - , * . % ' & ( )     " % & ' ( ) * , *E *F *G *H !  " # $ + - , * .   % ' & ( )     " % & ' ( ) * , "0*N P Q R S D0E0F0?0@0B0A0P Q R S *V K0L0M0N0O0P0Q0R0S0T0 0: ; !2 #9 $8 .? /A 0< 1@ 2= 3> 000&0H0I06070001020pilecpilerpileoversqrtabovesizefontromanitalicboldleftrightdelimDELIMDEFINEdefine.gsize.GSIZEgsizeGSIZEgfontGFONTHATDOTDOTDOTBARTILDEUNDERPRODINTINTEGRALUNIONINTERSUMFROMTOSUPSUPERSUBPILELPILECPILERPILEOVERSQRTABOVESIZEFONTROMANITALICBOLDLEFTRIGHTupUPdownDOWNfwdFWDbackBACKmarkMARKlineupLINEUPmatrixlcolccolrcolcolcan't open file %s quoted string %.20s... too longdefinitions nested > 9token %.20s... too long. define %s . name %s defin~w`;DeV;  P; % /w7 <;7 <;ׯ2;- *; (;(w;7 ; .w;er\B J ӕ- R r f e0 @ >: ҋ D~8\\ :ӕ0 $f v Le0 9eh:b: Z:T: 7D:we&  m(: &: /~  /  /~ w7 9 9 90   9Wp `e0eӕ?f9 ,9P 9 9 @f 9 fi7,x9 \304050.? /A 0< 1@ 2= 3> 0.? /A 0< 1@ 2= 3> 0#9 $8 .? /A 0< 1@ 2= 3> 0!  " # $ + - , * .   % ' & ( )     " % & ' ( ) * , !  " # $ + - , * . 0 1 % ' & ( )     " % & ' ( ) * , -g <0: ; !2 #9 $8 .? /A 0< 1@ 2= 3> '0: ; !2 #9 $8 .? /A 0< 1@ 2= 3> (0: ; !2 #9 $8 .? /A 0< 1@ 2= 3> )0: ; !2 #9 $8 .? /A 0< 1@ 2= 3ed as %s N,Z,Z,,>,T+++8,state %d, value %d, char %d character %d read reduce %d syntax errorerror recovery pops state %d, uncovers %d error recovery discards char %d l\j\l\l\`.d.o.x.f/e.c.sl.l/rfik0fin9f9-`9X9f f-~]`-X-~]  7H- D- @-7 9 7 0-f@w f@)wfw(,w$,\wf,,wm ,\wb+wm+fw+\w@w+ fAW @w+ ffk1fk7+ 5 e61w+\ 5& w&*:L&$:H&:D&:@&:<& :8&:4&:0&9,&9(&9$&9 &9&9&9&9&9 &9&9&9f& f> *0 n o p q C0U0V0W0X0G08090!  " # $ + - , * . 0 1 % ' & ( )     " % & ' ( ) * +r , ,0-0.0/0#9 $8 .? /A 0< 1@ 2= 3> 0#9 $8 .? /A 0< 1@ 2= 3> 0#9 $8 .? /A 0< 1@ 2= 3> 0: ; !2 #9 $8 .? /A 0< 1@ 2= 3> $0: ; !2 #9 $8 .? /A 0< 1@ 2= 3> %0w +v !  " # $ + - , * . 0 1 % ' & ( )     " % & ' ( ) * , =0w +x w +y F2 & 6  w $Ne  @E%  7(@& r  1FNe@&  @E%  e@ %    x& %  wJ2xx % w  V @55 &5 @@@-NNNfex@ &F % -umu-wfww\wf@wbw f@wwfwlfwwlwN @@& HADCBF7:7F-CLRV. b:bob: S%d <- S%d over S%d; b=%d,h=%d,w=%d .ds %d \*(%d\*(%d.ds %d "\*(%d\*(%d\*(%d. b:b shift b: S%d <- S%d vert %d S%d vert %d; b=%d,h=%d,w=%d . e:eb: S%d <- S%d S%d; b=%d,h=%d,w=%d .ds %d \*(%d\*(%d . numb: %s %d . shift: %d . sqrt: S%d <- S%d;b=%d,h=%d,w=%d .ds %d \e|\*(%d . S%d <- %c pile of: S%d;h=%d b=%d,w=%d .ds %d \ \*(%d\ \*(%d\ \*(%d\ .ds %d \*(%d\*(%d\*(%d. shift2 s%w +z !0P Q R S +| n o p q +~ 0* * * * 0000J000000:0;0 0+0#9 $8 .? /A 0< 1@ 2= 3> 0: ; !2 #9 $8 .? /A 0< 1@ 2= 3> #0!  " # $ + - , * . 0 1 % ' & ( )     " % & ' ( ) * , >0w + w + w + w + 0000>A|}!"#$%&'(3456789:;<=>UVWXYZ[\]^_`abo|3f@wvwrrw*f@@& HADCBF7<Fd <- %d %d %d h=%d,b=%d,w=%d BDHNTU6*h.ds %d \*(%d\*(%d\*(%d. from to: S%d <- %d f %d t %d; h=%d b=%d,w=%d .ds %d \*(%d. curly: h=%d b=%d n=%d w=%d l=%c,r=%c .ds %d ^ .ds %d ~ .ds %d .ds %d ...ds %d .ds %d .ds %d \*(%d\*(%d. %c diacrit: S%d <- %d; h=%d,b=%d,w=%d .ds %d \*(%d . move %d dir %d amt %d; h=%d b=%d D DDDDDD#D)D/D5D8D;DADFDLDRDXD`DfDlDsDwD}DDDDDDDDDDDDDDDDDDDDDDDDEE EEEE E(E/E6E:E>EBEFEJEPEVEXEZE^EbEfEjEnEsEwE{EEEEEJajklmnopqrTY^cdoz{~    IWwILOPSVY\_beQTWZ]`cfRUX[^adghknqtwz}ilorux{EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE<=>\ >=<=!=+-==cdotCDOTtimesTIMESSIGMApiPIalphabetagammaGAMMAdeltaepsilonomegaDELTALAMBDAPHIOMEGAlambdamunuthetarhosigmatauphiINFINFINITYinfinfinitypartialPARTIALzetaetaiotakappaxiomicronupsilonchipsiTHETAXIUPSILONPSIdelDELnothingNOTHINGapproxAPPROX>_<_/=+_=_8.98.9xxRJPAB\eGDSCWEFZLM@TKYIb/BC DJKLM2\3]4^5_6`I/W/b/tu/hh}ijFcGdHeaklms]t4 3f5_u67TU*X+Y,Z-[g{O 579=?OQSUW[]_acegikmoquwy{}5WWWWWWWWWWWWWWWWWWWWWXX XXXX#X*X0X6X+D;62(!1 -:".?:H5&  * $ <6:(E    -3$ =8 K  8-  G55K.'E IF%  ) >'  $#Uoooo]]QNikXouXVOXUH[[~=~=~\tconverted token %.20s... too long. %ctext: S%d <- %s; b=%d,h=%d,w=%d .ds %d "%s 8998~dfs22> I.tr ~ %s.ne %d .rs 'sp %d \*(%d 'sp %d .EN%smissing right delim (?) at %.20s.ds %d "%s .ds %d "%s\*(%d. answer <- S%d no strings leftcan't open file %sNEQN ERROR HEREfatal error: file %s, between lines %d and %d .ds %d " . mark %d as %d .ds %d "\*(%d .ds %d " . lineup %d at %d SYYY]YaYeYjYmYqYuY|YYYYYYYYYYYYYYYYYYYYYYYYZ ZZZ Z&Z,Z2Z8Z(-B    ,I 0,"/ *$4. %c 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, w=%d .ds %d "\*(%d%s  & , F \ j n |   !!.!F!V!z!!!!!$" D"j"n"""""""####(#2#<#F#P#Z#  d#n#d#x# ##      ## ####$$$$"$($  .$8$ !  " # $ + - , * .   % ' & ( )     " % & ' ( ) * , 0@!  " # $ + - , * . 0 1 % ' & NTABUPDOWNBACKFWDMATRIXLCOLCCOLRCOLCOLMARKLINEUPSUMINTPRODUNIONINTERLPILEPILECPILERPILEABOVEDEFINEDELIMGSIZEGFONTFROMTOOVERSQRTSUPERSUBSIZEFONTROMANITALICBOLDMQMQ1LEFTRIGHTDOTDOTDOTHATTILDEBARUNDER$acceptstuffeqnboxmatrixcollistcolumnlcollistccolrcolcolsboxsupersizefontlpilecpilerpilepilesubleftrightpboxfromtodiacritfwdupbackdowntextsupsupersub.ENsumfromtohatdotdotdotbartildeunderprodintintegralunioninterpilel75L 5 4'U;3 *;)G3K.S /( "-+7    K     ;,      .      %  2 -  8                        #        1        -2       5                               ;    '   -   !            @  >                1  %         &B      7         z40  & 6  w Ke'@ȥ-e@ȥl N@ȥa M@ȥv Mu e% f  5 N  Mf %%"M%M % M N MhMLmL7ZM%L NM HMef %   5 Mf J Nf %Nf %dNf %pL L Wp@7LLWpN2Ef %`L E7VLPL E7FLLN 7 @L;7 *LI         # L1M L% LK]LL%"!K E7K2LK7 K$LmKKHM K%KeL K L L K N XKeK2EKWpe2EA-(K-KK@eKA @ KAp~KApeefK&K e KKw K7 KN 7 J_8JJI 7J J_47J7J JH7J7J7J7J7J7J7J7JwJwJ7J7JxJ AwJ7pJ7 bJ=\JWp-^J 9LJWp-LJ+C ҋ D~8jn Bӕ0 $f v Le0 9eBB F BB 7Bwe&  mB B          n ~  n   n ~ w7 ZB PB LB0   8BWp `e0f@wrw` fwvJA 7 AfAW,f B@ 8 @&61fA   @ @e7 1@| 1wfwj wf wfwR AQ  OfA  ^ y   F y @0fA  @9 fA @e&7 w 7 @w7 x@      jmpsvy|w w l@wh@AupNNmf  ww @@@@5 _p fA rBpEu@@`55DCN& t f& ?%5 2`D--`f t $`f& %`Df ?%5 D-& t C-D-%@@AA@ Nf`  u_*Nf  @`5_*f %Cw@w . >DCԒ ww >DCB5ҒS wf@w w wf@w w w f@f&xNCB  ԕ- xN e0fv   vA W  ~f =f 5= @& HADCBF7=Ff5w * f5w }7 ==W&fN 7 =@% v=@A&@N7R @L> Be0# @Nє N    BA   W Ne B@e0Nm <` NeȐ9 ȕ0 Nȕ1 <x & 6  |w   Fww@7,@&   t@77 @ @m %  | J5  |w-   |Nff eww  H5 F5&  ^ f %w @w  H5 5&   f %w P@w d   |  5&  &V %w(  w   78  6 -f   7 ߬ 7 7 f@w fww p<wfw7^ fwxwtBwf@w\wXHwlf@w@w<NwJ fw&w"Tw* f BRf "& w }f@fA w,w"e"w"ew"@lw"Alew &@t`e  <`0NNVV <<7<NPP7  O; O66  O:O `&e  O   O:e:bww5Q$N N f   EU P5:   PNfPPQ7 95    5 C B A  `59  59  5z9  eEN  "$ $5>9 $$ 59  59  N5@8  wL5 @f_VEf d@b`c  5 f_VKf \ 5Q &  f_VSf  5W |&  f,_VNfY % |w w WpqrWpqtWpqvWp er@w w -pw | vmvw w^ Tq   @aȥ/@a 7, @aȋf@    tw w* w  @&@ t read %s ...--%s ~doxfecsl,r  %ew   w>N N8 (    5@8  v8 B    \8 Uf8wN H8 wN 48w88w08w  7 8 8a 7U88W 8UN W 8ENfc     ` NN-77 a h h   N Na  ! p NNR BN :7W !W e UETR57  57  U6wp   NN @&@ w w @&@ @&@ w w @&@  w w p @> wh w V .y  wN w < @@&,WpWtf %w w @@&WpWtf %w w @@&& %w w @p  w w @@&t& %w w v ĝcu\tEQ@@&& %wP w > @%-5 AA @@EA@, w   7 6r@Nr@N  e  JW!NW!N 567 |6e  , f6j6\6 fN    NN$ $$$N& N & N  N N S C B A  eW!NՇ w^ m55 5 rfN55e        W!NNP    0&Nd& dN & dN dC N eN e-J5T5@585u>(\EEa.outCan't find %s Bad format: %s mon.outNo mon.out No symbols: %s No time accumulated w EA@, w w @ w w 5 @ m&} % 5%y 5  @ wn w X +u-  AWpA-w< -u-w  p 55%f &f @ @a @ @ap@ m 5@ @a0  w D Ne \ANfef %5  @@mp @@m5@@m0 Nfefe %Nfef %.nr DO \n(.o .nr tm 0 . RT - reset everything to normal state .de RT .if !\\n(1T .BG .if !\\n(IK .di .ce 0 .ul 0 .if \\n(IP .in -\\n(IQn .if !\\n(IP .nr IQ 5 .if \\n(IP .nr IP -1 .ft R .if t .ta 5n 10n 15n 20n 25n 30n 35n 40n 45n 50n 55n 60n 65n 70n 75n 80n .if n .ta 6 11 16 21 26 31 36 41 46 61 56 61 66 71 76 81 .ps \\n(PS .vs \\n(VSp .fi .. . IZ - initialization .de IZ .br .if n .nr y 0-6 .if t .nr y -1i .nr x 0 1 .nr IP 0 .nr IQ 5 .nr PS 10 .nr VS 12 .ps \\n(PS .vs \\n(VSp .nr TB 0 .if t .CM .if t .nr L/dev/vt0Cannot open vt name %%time #call ms/call %8.8s%6.1f%6s %7.2f  dn oh x f eF cT s$ l r> $$$$$$ $$Df`V$$h2Nzf(4DTd |  w    7 5F @e5@ ȋ6 =%:=Nfe  5%:@e5 =%:=Ne 5 l76 @w0w DC ԋ w ̢̢w f & N  _ ff % E%@_  5 _ @@%@@5 f  5N  ff %Nfef % NN l _ t@a hL 6i .if n .nr LL 60 .ll \\n(LLu .nr LT \\n(.l .lt \\n(LTu .if n .tc ~ .if n .tr ~ .if n .ds CH "- % - .if t .ds CH "\(en % \(en .ds Ch \\*(CH .if n .ds CF "\\*(DY .wh 0 NP .if t .wh -1i FO .if n .wh -6 FO .if n .wh -3 BT .if t .wh -.5i BT .if t .nr EP 10.i .if n .nr EP 60 .. .de TM .pi /usr/bin/col .nr ST 1 .ds MN \\$1 .nr MM \\n(.$ .nr tm 1 .if \\n(.$-1 .ds CA \\$2 .if \\n(.$-2 .ds CC \\$3 .rm RP .rm S0 .rm S2 .rm AX .. .de RP .nr ST 2 .rm SG .rm CS .rm TM .. . TL - title and initialization .de TL .nr TVl  disk offset J7N tape offset 076 count  T      0 Wp `@ illegal digit lr-l  P eP5Ћ 4R`ȋ  `e `R7    0 rf rv@>1ɋt&Nae Zt&Nae Lt@a%K  @`A`pr@`/q@a/r  %  @a WtAa`pr@`0rN f@&fer e N  @t!eu-_Z ww .. wNf w C@57^ y 2x78 y , N f w@    A @@P5  D   Nf   w Nf 1 .di WT .na .fi .if n .ll 50 .if n .if \\n(tm .ll 30 .if t .ll 5.0i .if t .if \\n(tm .ll 3.5i .ft B .if !\\n(tm .ps 12 .. .de TX .rs .if t .sp .5i .if n .sp 3 .ce 1000 .if n .ul 1000 .ps 12 .ft B .vs 15p .ne 4 .WT .. . AU - author(s) .de AU .nr AV 1 .ad .br .di .br .nf .nr NA +1 .ds R\\n(NA \\$1 .ds E\\n(NA \\$2 .di A\\n(NA .ll \\n(LLu .if !\\n(tm .ft I .if \\n(tm .ft B .if \\n(tm .if n .ll 16 .if \\n(tm .if t .ll 1.4i .ps 10 .. .de AX .ft R .rs .ce 1000 .if n .ul 0 .ps 10 .vs 12p .if n .sp 2 .if t .sp .  ww ~w De   % w7 7 ׯ - (w 7  .w eB J ӕ- R r f e0 @ >T  ҋ D~8.2 2 ӕ0 $f v Le0 9e    7 we&  m   ~    ~ w7  0   n Wp `e0eӕ?fV  ,L P B <  @f A1 .if n .sp .if t .sp 0.5 .I1 .if \\n(NA-1 .if n .sp 2 .if \\n(NA-1 .if t .sp .A2 .if \\n(NA-1 .if n .sp .if \\n(NA-1 .if t .sp 0.5 .I2 .if \\n(NA-2 .if t .sp .if \\n(NA-2 .if n .sp 2 .A3 .if \\n(NA-2 .if t .sp 0.5 .if \\n(NA-2 .if n .sp .I3 .if \\n(NA-3 .if t .sp .if \\n(NA-3 .if n .sp 2 .A4 .if \\n(NA-3 .if t .sp 0.5 .if \\n(NA-3 .if n .sp .I4 .if \\n(NA-4 .if t .sp .if \\n(NA-4 .if n .sp 2 .A5 .if \\n(NA-4 .if n .sp .if \\n(NA-4 .if t .sp 0.5 .I5 .. . AI - authors institution .de AI .br .ft R .di .di I\\n(NA .nf .. . AB - begin an abstract .de AB .br .di .ll \\n(LTu .nr 1T 1 .nr IK 1 .di WB .rs .ce 1 .if t .ft I .if n .ul .ll \\n(LTu ABSTRACT .sp .fi .if t .ft R .nr oi \\n(.i .if n .in +\\n(.l/12 .if t .in +\\n(.lu/12u .if t .ll -\\n(.lu/12u .if n .ll -\\n(.l/12 .br .ps \\n(PS .if t .ti +5n .if n .ti +5 .. . AE - end of an abstract .de AE .br .di .ll \\n(LLu .nr 1T 0 .nr IK 0 .if n .in \\n(oi .if t .in \\n(oiu .di .ce 0 .if \\n(ST-1 .SY .rm SY .. . OK - "other keywords" for cover sheet. .de OK .br .di .dt. .de DS .KS .\\$1D .. .de CD .ce 1000 .nf .nr oi \\n(.i .if t .sp 0.5 .if n .sp 1 .. .de D .ID .. .de ID .nf .nr oi \\n(.i .if t .sp 0.5 .if n .sp 1 .if t .in +0.5i .if n .in +8 .. .de LD .nf .nr oi \\n(.i .if t .sp 0.5 .if n .sp 1 .. . DE - display end .de DE .ce 0 .if n .in \\n(oi .if t .in \\n(oiu .KE .if t .sp 0.5 .if n .sp 1 .fi .. . KS keep - for keep release features. As in IBM .de KS .if !\\n(IK .KQ .nr IK +1 .. . KQ - real keep processor .de KQ .br .di KK .nr TB 0 .. . KF - floating keep .de KF .n .ta \\n(IQ+1 .if t .ta \\n(IQn .ti -\\n(IQn \\$1\t\c .. . RS - prepare for double indenting .de RS .in +\\n(IQn .nr IP +1 .. . RE - retreat to the left .de RE .br .in -\\n(IQn .. . CM - cut mark .de CM .po 0 .tl '-''' .po .. . B - bold font .de B .ft B .if n .ul 1000 .. . R - Roman font .de R .ft R .if n .ul 0 .. . I - italic font .de I .ft I .if n .ul 1000 .. . TA - tabs set in ens or chars .de TA .ta \\$1n \\$2n \\$3n \\$4n \\$5n \\$6n \\$7n \\$8n \\$9n .. . SM - make smaller size .de SM .ps -2 .. . LG i OD .nf .ft B .. . CS - spew out cover sheet .de CS .br .di .if t .pl 15i .tr ~ .if n .sp 6 .if t .po 0.5i .if t .sp .5i .if t .lg .if t .ll 7.0i .nf \s24\(bs\s12\fB Bell Laboratories \s16\fRCover Sheet for Technical Memorandum .sp .if t \s6\l'7i' .fi .ps 9 .ft I .if t .sp 2p The information contained herein is for the use of employees of Bell Laboratories and is not for publication. (See GEI 13.9-3)\p .ft R .nf .if t \s6\l'7i' .sp .if t .ll 6.0i .if n .ll 30 .if t .po 1.0i .ps 9 .if t .ta if !\\n(IK .FQ .nr IK +1 .. . FQ real floating keep processor .de FQ .br .di KK .nr TB 1 .. . KE release - everything between keep and release is together .de KE .if \\n(IK .if !\\n(IK-1 .RQ .if \\n(IK .nr IK -1 .. . RQ real release .de RQ .br .di .if \\n(dn+\\n(nl-\\n(EP .if !\\n(TB .sp 200 .if !\\n(dn+\\n(nl-\\n(EP .if \\n(TB .nr TB 0 .nf .in 0 .if !\\n(TB .KK .in .fi .. . EQ default equation breakout .de EQ .if t .sp .5 .if n .sp .ce .ne 2 .ds EL \\$1 .if \\n(.$-1 .ds EL \\$2 .nr LE \\n(.$ .@\\$1 .. . Th- make larger size .de LG .ps +2 .. . NL - return to normal size .de NL .ps \\n(PS .. . DA - force date; ND - no date or new date. .de DA .if \\n(.$ .ds DY \\$1 \\$2 \\$3 \\$4 .ds CF \\*(DY .. .de ND .ds DY \\$1 \\$2 \\$3 \\$4 .rm CF .. .if \n(mo-0 .ds mo January .if \n(mo-1 .ds mo February .if \n(mo-2 .ds mo March .if \n(mo-3 .ds mo April .if \n(mo-4 .ds mo May .if \n(mo-5 .ds mo June .if \n(mo-6 .ds mo July .if \n(mo-7 .ds mo August .if \n(mo-8 .ds mo September .if \n(mo-9 .ds mo October .if \n(mo-10 .ds 0.5i 4.5i 4.9i .if n .ta 10 40 47 .mk Title- \fB\s10 .rt .if t .in 0.5i .if n .in 10 .WT .rt .ll \\n(LLu .if t .in 4.5i .if n .in 40 \s9\fRDate-\s10\fB .rt .if t .in 4.9i .if n .in 47 \\*(DY .sp .if t .ti 4.5i .if n .ti 40 .mk \s9\fRTM-\fB\s10 .br .rt .CT \\*(MN .rt .in 0 .sp .mk \s9\fROther Keywords-\fB .rt .if t .in 1.1i .if n .in 20 .OD .rm OK .rm OD .in 0 .if t .sp .7i .if n .sp 3 .ps 9 .if t .ta 1.8i 3.3i 4.3i .if n .ta 20 35 45 .ft R Author Location Extension Charging Case- \s10\fB\\*(CA .ps 10 .nf .mis nonsense permits recognition of .EQ L, .EQ I, .EQ C . by invoking macros @L, @I, and so forth. .de @L .ce0 .nr LE -1 .. .de @C .nr LE -1 .. .de @I .ce 0 .ti 10n .nr LE -1 .. .de EN .ce 0 .lt \\n(.lu .if \\n(LE .if n .sp -1 .if \\n(LE .if n .tl '''\\*(EL' .if n .sp 1 .if \\n(LE .if t .sp -1-\\n(.au .if \\n(LE .if t .tl '''\\*(EL' .if \\n(LE .if t .sp \\n(.au .if t .sp 0.5 .ns .. . EM end up macro - process left over keep-release .de EM .if \\n(TB .br .if \\n(TB  .if \\n(TB .NP .. . NP new page .de NP .ifmo November .if \n(mo-11 .ds mo December .if \n(dw-0 .ds dw Sunday .if \n(dw-1 .ds dw Monday .if \n(dw-2 .ds dw Tuesday .if \n(dw-3 .ds dw Wednesday .if \n(dw-4 .ds dw Thursday .if \n(dw-5 .ds dw Friday .if \n(dw-6 .ds dw Saturday .ds DY \*(mo \n(dy, 19\n(yr .IZ .rm IZ .rm mo .de FN .FS .. . FS - begin footnote .de FS 'ce 0 .di .da FF .ev1 .if !\\n+x-1 .fs .. . FE - footnote end .de FE .br .in 0 .ev .di .if t .if !\\nx-1 .nr dn +\\n(.v .nr y -\\n(dn .if n .ch FO \\ny .if t .ch FO \\nyu .if t .if \\n(nl+\\n(k .A1 .rt \\*(R1 \\*(E1 \fR\s9Filing Case- \s10\fB\\*(CC .if \\n(NA-1 .CB 2 .if \\n(NA-2 .CB 3 .if \\n(NA-3 .CB 4 .if \\n(NA-4 .CB 5 .ft R .if t .sp .4i .if n .sp 2 .WB .br .if t .sp |8.3i .if n .sp 5 .FF .rm FF .if t .sp |9.3i .nr x 50-\\n(nl .if n .sp \\nx .if t .po 0.5i .if t .ll 7i .nf .if t \l'7i' .if t .ta 1.4i 2.8i 4.2i .if n .ta 15 30 45 .if t .sp 8p Pages Text \\$1 Other \\$2 Total \\$3 .if t .sp 8p .if n .sp .if t No. Figures \\$4 No. Tables \\$5 No. Refs. \\$6 \b'|||||~~' .if n No. t .CM .if t 'sp 0.5i .if n 'sp 3 .ft R .lt \\n(LTu .ps \\n(PS .PT .ps .ft P .if t 'sp 0.5i .if n 'sp 3 .nr x 0 1 .if t .nr y 0-1i .if n .nr y 0-6 .if \\n(MF .fz .nr MF 0 .ns .os .ev 1 .if \\n(TB .nf .if \\n(TB .KK .if \\n(TB .fi .ev .nr TB 0 .mk .. .de PT .if \\n%-1 .tl '\\*(LH'\\*(Ch'\\*(RH' .. . FO - footer of page .de FO .nr FC +1 .nr dn 0 .if \\nx .xf .nr MF 0 .if \\n(dn .nr MF 1 .if t .ch FO -1i .if n .ch FO -6 .if !\\n(FC-1 .if \\n(NX .RC .if !\\n(FC-1 .if !\\n(NX 'bp .nr FC -1 .. . 2C - begin doubl.v-\\n(.p-\\ny .ch FO \\n(nlu+\\n(.vu .if n .if \\n(nl-\\n(.p-\\ny .ch FO \\n(nl+1 .. .de fs SEPARATOR .if n __________________________ .if t \l'1i' .br .. .de fz .FS .nf .fy .fi .FE .. .de fx .di fy .. .de xf .ev1 .nf .FF .rm FF .di .fi .ev .. .de FL .ev1 .ll \\$1 .ev .. .de HO Bell Laboratories, Holmdel, New Jersey 07733 .. .de WH Bell Laboratories, Whippany, New Jersey 07981 .. .if t .ch FO 12i .if t .wh -1i fx .if t .ch FO -1i .if n .ch FO 100 .if n .wh -6 fx .if n .ch FO -6 .ev1 .ll \n(LLu .if n .ll -\Figures \\$4 No. Tables \\$5 No. Refs. \\$6 .if t \l'7i' .ps 7 .if n .sp .tl 'E-1932-C (6-73)'SEE REVERSE SIDE FOR DISTRIBUTION LIST'' .if t .po 0.5i .ll \\n(LLu .fi .if t .sp |10.8i .if t .po 0 .ps 10 .if t .tl '-''' .if t .pl .bp 1 .if t .po \\n(DOu .. . CB - help with cover sheet .de CB .br .mk .A\\$1 .rt .if \\$1-1 .if !\\$1-2 \& \\*(R2 \\*(E2 .if \\$1-2 .if !\\$1-3 \& \\*(R3 \\*(E3 .if \\$1-3 .if !\\$1-4 \& \\*(R4 \\*(E4 .if \\$1-4 .if !\\$1-5 \& \\*(R5 \\*(E5 .br .. .de CT \\$1 \\$2 \\$3 \\$4 ..e column .de 2C .if !\\n(1T .if n .sp 4 .if !\\n(1T .if t .sp 2 .RT .mk .nr NC 1 .nr NX 1 .nr L1 \\n(.l .nr L2 \\n(.l*7/15 .if n .ll \\n(L2 .if t .ll \\n(L2u .if n .FL \\n(L2*11/12 .if t .FL \\n(L2u*11u/12u .nr RO \\n(L2*8/7 .ns .. .de RC .if \\n(NC-1 .C2 .if !\\n(NC-1 .C1 .nr NC \\n(ND .. .de C1 .rt .if n .po +\\n(RO .if t .po +\\n(ROu .nr ND 2 .nr x 0 1 .ns .. .de C2 .po \\n(DOu 'bp .nr ND 1 .. . 1C - return to single column format .de 1C .nr NX 0 .br .po \\n(DOu .nr ND 1 .if n .ll \\n(L1 .if t .ll \\n(L1\n(.l/12 .if t .ll -\\n(.lu/12u 'ps8 'vs10p .ev .br .em EM . S1 - tm style .de S1 .if n .sp 6 .if t .sp .75i .if t .ta 4.75i .if n .ta 47 .ll 80 .ps 36 .br .if t \t\(bs .vs .25i .ps 12 .br .ft B .nf \tBell Laboratories .ft R .fi .na .ps 8 .vs 12p .if n .sp 3 .if t .sp .5i .mk .fi .ll .if n .ll 40 .if t .ll 4.0i Subject: .ft B .ps .WT .ft R .br .if \\n(MM-1 \\s8Case- \\*(CA\\s10 .if \\n(MM-2 --\s8 File- \\*(CC\\s10 .br .rt .if n .ll 70 .if t .ll 6.5i .if t .in 5.10i .if n .in 52 .ps 8 .mk .ti -6n date: .ps \\n(PS .ft B .br .rt \\*(DY .sp .ft R .ps 8 .mk .ti -6n fru .bp .. . .de R3 . .ll 120 . .pl 102 . .nr LT \\n(.l . .. .de MH Bell Laboratories, Murray Hill, New Jersey 07974 .. .de BT .ft R .lt \\n(LTu .tl '\\*(LF'\\*(CF'\\*(RF' .ft P .. . PP - paragraph .de PP .RT .ne 2 .if \\n(1T .if t .sp 0.3 .if \\n(1T .if n .sp .if t .ti +5n .if n .ti +5 .. . SH - (unnumbered) section heading .de SH .RT .if \\n(1T .sp 1 .if !\\n(1T .BG .RT .ne 7 .ft B .if n .ul 1000 .. . NH - numbered heading .de NH .RT .if \\n(1T .sp 1 .if !\\n(1T .BG .RT .ne 7 .ft B .if n .ul 1000 .nr a \\$1om: .ps .br .rt .ft B .A1 .br .A2 .br .A3 .br .A4 .br .A5 .ft R .sp .mk .ps 8 .ti -6n .ft R .if \\n(MM TM: .br .rt .ps .ft B .hy 0 .ll 10n .if \\n(MM \\*(MN .hy .ll .ft R .ll \\n(LLu .in .sp .ad .ce .ft I MEMORANDUM FOR FILE .ft R .sp .ad .. . S2 - release paper style . SY - cover sheet of released paper .de SY .ll \\n(LLu .sp 6 .ns .if \\n(TV .TX .if \\n(AV .AX .ce 0 .nf .sp 3 .WB .fi .. . S2 - first text page, released paper format .de S2 .SY .rm SY .bp 1 .if \\n(TV .TX .if \\n(AV .AX .ce 0 .ft R .ad .. . .if !\\n(.$ .nr a 1 .if !\\na .nr a 1 .nr H\\na +1 .if !\\na-4 .nr H5 0 .if !\\na-3 .nr H4 0 .if !\\na-2 .nr H3 0 .if !\\na-1 .nr H2 0 .if !\\$1 .if \\n(.$ .nr H1 1 .ds SN \\n(H1. .if \\na-1 .as SN \\n(H2. .if \\na-2 .as SN \\n(H3. .if \\na-3 .as SN \\n(H4. .if \\na-4 .as SN \\n(H5. \\*(SN .. . BG - begin, execute at first PP .de BG .br .di .ce 0 .nr 1T 1 .S\\n(ST .rm S0 .rm S1 .rm S2 .rm OK .rm OD .rm TX .rm AX .rm WT .rm I1 .rm I2 .rm I3 .rm I4 .rm I5 .rm CB .rm E1 .rm R1 .rm R2 .rm E2 .de TL .ft B .sp .D & 6  &w @-  t5 5`u F5 %>?81R_N I&%>8 4/I(B Bm p  %00  ` u-  0@ @m&  @ @m8 > z7  H `GQV5 Nef  \Yhnt5  z @ @a& @ @a0 Nef  ww  8%+  S0- mike lesk conserve paper style .de S0 .ll \\n(LLu .rs .sp 6 .ns .if \\n(TV .TX .if \\n(AV .AX .ce 0 .nf .WB .fi .ad .. . SG - signature .de SG .nf .if n .in +2*\\n(.l/3 .if t .in +2u*\\n(.lu/3u .sp 2 .A1 .if \\n(NA-1 .sp 2 .A2 .if \\n(NA-2 .sp 2 .A3 .if \\n(NA-3 .sp 2 .A4 .if \\n(NA-4 .sp 2 .A5 .in \\$1 .br .. . Tables. TS - table start, TE - table end .de TS .br .RT .ul 0 .if t .sp 0.5 .if n .sp .nf .. .de TE .fi .if n .sp 1 .if t .sp 0.5 .. . DS - display. If .DS C, center; L, left-adjust; I, indenif n .ul 100 .ce 100 .LG \\.. .de AU .ft I .if n .ul 0 .ce 100 .sp .NL \\.. .de AI .ft R .ce 100 .if n .ul 0 .if n .sp .if t .sp .5 .NL \\.. .ds Ch \\*(CH .if n .sp 2 .if t .sp 1 .fi .ll \\n(LLu .. . IP - indented paragraph .de IP .RT .if !\\n(IP .nr IP +1 .if t .sp 0.3 .if n .sp .ne 3 .if \\n(.$-1 .nr IQ \\$2 .LB "\\$1" .. . LP - left aligned (block) paragraph .de LP .RT .if t .sp 0.3 .if n .sp .ne 3 .if \\n(.$ .LB \\$1 .. . IE - synonym for .LP .de IE .LP .. . LB - label paragraph .de LB .in +\\n(IQn .if  >  & >% n   t`@` 5p@  B>ep&/  7.%-// //ww  /. : | 5 > @t&epf %% >  %N `  %    %    %   h  ^ v 7 `FDp 4 v 7 Y2.7   | 5 > fef %%.%*Nf %@-& > XNf %@-E > 4N `wDN ` w $Nc > ww    ,2 ,  tww  5J f  % Nf  Nm >  &Ne @-@E5%N > N > @@tE %| >w6w $@5P@c  x@ > 8 57  @ @m7 & # (/tmp/crt0a/tmp/crt1a/usr/lib/eign/usr/lib/etabCan't open %s /bin/sortsort-o/usr/bin/upostupostcountcount/usr/bin/crpostcrpost-ELine too long: %d. Illegal character: %o line %d Cannot open grammar table; see lem Bad grammar table; see lem Cannot open ignore/only file. Cannot read ignore/only file. Cannot read ignor/only file. Error %d Can't find %s Try again Fatal error in %s t = %d Unrecognized flag: %c Ignore/only symbol too long.  Too many symecsl$r* 0 %ew @ @m7+@ @m7 0 @wj w X .B+  @e5H=f@efe e% AWp Ameu5 * 85%N  @Ae@%' > * 8=%* `w w @Wprepwt w b (7 V0pWpFepp 6Wp%EWpA u@e5 AZ } ( Wpffe e5bols in ignore/only file. i/o file too big; ssiz = %d d oxFfTecslbr3 0  %ew^.]..statemurdersincacollectivesxbardtmisspellspellpoetryindexamericaeuropepresseq-easyposnegsseq-hardsafricadeptWmidearthVsov   @ p w > AWpN&Wpf 0   Wp @:w * %H AWpACplCpɜ@  5_ WpAu%NvWpf | g |  | f % | 8 | %  Wpup-  WpA pluep5NNf |  |  | _7  ^ & 6  F w %@- d e%5  @ 7 @@  \ z 5 L Q  wv  5  " 4 d7 , < d2 5c  > (    } x n e        e    @- x  7 h   % @& z  5 @  zwR   ww  ! "W N, ~=    @ #D  D ҃TP  B ы e@W 0 ,"& 7   0ߋp@E A Ze      |@7x@ eE "  -x  ^f e*ȋ5 5&D9ȋ5@*&e  (: 7 p m  7 w w @-)7|)wx)7 z)7p)7l)7b)@@muu AfAVpu @ %9 A 7r)C r(u& #@e5u @ A H @wAA` 7r(u@ m(m(5-(Ї H ~(-x(x( > R@ m\(`( X(@m-N(H(  > 6(m4(H *( @  (m(H (@(@' w u@@mȕ @ A r 5 Tww _5 5 #u@0D  @D 5% u5 b 5%  %(% %  5 -v@ D -`@pD u5 @  @m5 AAD @   @D 5%   @ uN @D 5~ 5 @D 5 % u-N u- @D 5%  _$ |5_ww B e5_ 555( )%`w w x@ r E  y    w@  @Ջ E 7vf  r f  e0 t f2 w*Wp3e @7EA pw0w MOO w new game PѕW TPw P TW T7 w$w bad guess TW W Y H7 7 w ? TѕW YT 0 ԆT XP TW X ` TPR lN ff % @@mC r e0Ȑ @wzw h    }wP w :p fb  w&w   B w2   w  # p  F    p p  w7 T t@` pw t %$   $ 7     D Wp 6`ew w.w   $@me55#e15 } # u#e15wm# (-@pD %~u   5%  u u-'uu-  @ D    @@D @@e5`uX@@-)u@ <A@  @ D @- u- @D u @@5 %   u@D   u-   @D   u- f"   d5_ww @E% . .  fW X^ w bulls; F w cows -4 .wF& ^w guesses w}  ww  ##w |%v#1B %-d#7 ^# w Z~wd%DeZ%  T% % w<7 @%7 @%ׯ6%- .% ,%(w %7 "% .w%e(B J ӕ- R r f e0 @ >$ ҋ D~8PT $ӕ0 $f v Le0 9el$f$ ^$X$ 7H$we&  m,$ *$ ~    ~ w7 # # #0   #Wp `e0eӕ?.N ww ~w De   % w7 7 ׯ-  (w7  .we B J ӕ- R r f e0 @ >l ҋ D~8   Jӕ0 $f v Le0 9e  7we&  m  ~    ~ w7   0   Wp `e0eӕ?fn ,dP Z T @f 8f# ,#P # # @f # 37$|# X3r#j#-d#\#f@wH fww^w(fww "dwfw7$ fwjJA 7 "fAW,f B@ 8 @&61fA   @ @e71@p 1w<fwwvw"f@ww|wfAW @w f5157 5 e *7&  *-f     7  7 7 f@wd fww wDf@)w0fwh@e7` wfw7P fw:w6" wfAW @w f,1,7  5 eV w( 5& w&L&H&D&@&<&8&4&0&,&(&$& &&&|&v&p &j&d&N!%w  0h0h  7  ^"4  w +w 6 -s D h7 Zw  xtl  0"   ^ w<5#5e׭azw7^ 57ABwыwToo many files. w 5& w&#L&#H&#D&#@&#<&#8&#4&|#0&v#,&p#(&j#$&d# &^#&X#&R#&L#&F# &@#&:#&4#f& fww f D& w }f@w|wxwf@fA w,Rw"Le"w"Bew"8@lw"0Alew# &@t`e @& HADCBF7F6nt^ $ *^f& fw. w f "& w }f@fA w,w"e"w"ew"@lw"Alew &@t`e @& HADCBF7:F       " % ( + / 2 H/tmp/p.tmpaanandasforisofonorthetouparg count %s: cannot open cannot create %s try again /bin/sortsort-d-o/usr/bin/sortsort-d-osomeone moved sort cannot reopen %s %s: cannot open .xx " " "vdoxf7  77  | N  ,7+# E++7?w 7 7   | 9   7    _ B 0 9 A  Z a z  NB7 < 67    \ w VR  nw Dh  7 f hw`durxylt a@n#\\7894312fA@ ыW hW x@ H B\f & 0 Nw L P7 = @`7&(   (  ׬-˕-   ˋ w w`  w`  7 ŀ! #  7 7 p mn mt 7 7Z 7X 7V 7T BV -t t n j 7 H     %  \ ]       w.   & B d w v&w n&w f& m 6Bw B~ m  & rw ~` e Zw ~ & f  % N`  ^ $\ (X jN` .7 S f  7F &L ' ZSf $ Lw 2#H "w`Q *S "S f &7A  w D   w T  F   ~K   P %VE (  > 0K @F R&  VR7 &P BR dI P+ -0  478912fA@ ыW TW `@ E EEf Q Q7 Q QT Q Q7 Q QH%Q A Q ~; pQw lQ@w   ȋЭ7 h    e78  t 0 5-d 7 E"   7 7 :) |& " -l W   TwN& @& 2 0  !&w bj%&     v w`? - e-98734127n \& VSNE N  - xer^W$ ad bp$ br( N` w ~&  V%   f r  ve0 e  fr  v  r  N`   e t N` d N` #    7  2  ^ V 7 ȋ w w   &\ʋ .,()"'` ae a e  i o u y&  T S  7@ H 7 (7, |Qw SW  NN 7 JQTT@ @@`7`S@E (NwLQ I; &~|v  I,  I& -ȋ FDdLlL_w cc. ceF ds^ fij int ix li ll ls na ne nf pa$ blF plp sk sp ss ta ti tr ul un he> hx( foL ehZ ohb efj ofr m1z m2 m3 m4 hc hy n1 n2 nn* ni: joJ arV ro\ nxb po de ig tc mk      77 w  7  z   w B 77w B 7w &  7 H  w  7( L * " 7w  aw l ^ w Hw >7w 2 77 ̇-Հ &EE a B a p   B `De  Ep D C a ^"E8& jC1E`C`˜ E ^  CEC`ѵ 7 @w VՀ  &:  $J E  J 0 "!S3"#`p`Аp@РP`p"! #!4!@``Pp`FP>V>wN>w T_7 F DL7VR7 FL,L4L TL_7 `F7 L L7 >L7 *R7 LCannot open: & AW `R3AwQw KK=E=Q$VDQ@e@7PK=@NQ x=N-NP @UNNPP7 PU@NNPPw PEe  LN<rX  ^P 7 RP7 *NB DP' v@ N -.P W  PwP& B& 4 O   4&w 2%&  M  B @w`M MM  ~ 77 7 w \ ^ B 7     w 0 27 w  &     w 7| w  7 w w d X t6 J B  6  1" w    (w tB v7Dw d f7.w T& P7 7    w "PPw "FFw "w x "w p "w h "w  7`w  7Rw  7Dw  76  : 2 7* "   7w #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)rPEVwzM vM-:KO 7 O?? ?-?D e-NMHM9873412?B7<x?\D_h DB~? lX  :7 J JUD?M O I I-Ifx& X"2P @X X$$ttyЋ6@ /dev& &   7BL S bDNE N ? >   K^W$ ?  K n r~? l7 r?7 >  c`?7 Z? > &  $  7>7>7K x7   7 w R 77 w < >7w ,8 .7w 77   w  b 7 ^ w  7J >" Zw 7 ,& NE-UxW$     (  b%  7 T?  w X G-  w J5w "w "zw J ` v r j :#%  , v j 7 j7 ^|| ^ "m 7 7 -D$*``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 @@``&@w T & .? > z \K?w (8I d& x ??> >>> w 87H=G-H  J>w H >>7> n J=w H  &=== G7 G7 =w n   7 = w R :S 7<=& ~ w 6 :S r 7< TG t N 0Jw  G7<B<& & = < G  = G w N Nw V6%mG%F w w( v - ( -% ?  Bw`wz  #7 7 7 7 p #^&  97 V T%  & 0 z7 & p 7   `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'AAB.  (08@H/usr/lib/suftabixcmvld/dev/tty0/tmp/rtmaf@  x %"t@% %$$ttyЋ7^@ T/devw R @ 7|Fw 6 nF w bFZF7 VFw 6 \     1rX& H I'+ -097H   W H 1 @l W IՇ w 8I & ; 4 w r 7P<   H;w P H ;;7; |  7; d   7t; L  .7^; 4  7H;6;   7";7 ;  G7 ;::7 x;7 x;  G d;w &I 7T; w "H : : w H% % . e  #  # 7 7 7  dw` pm7  h  fA p ! ~7d A 7 F > 7 0 . #    *# w@-<2.7vw" - D 2 v A Z a zfE?w - w  ^ E^ 7 ^7 v7 D h0  - 7%   w .I tG D = w 0 p 7 ;7 pIhI`I Pw T 2H G H $G7 G7 G7 :7 :Y9 " Gh9w G &T9T9N9 F 4 w 2H A w 2H   NE`9S w 2H  D? `C :? nF ( w 2H &7 HF & 2C 8F  0 AU88@f> n 7 >7 B @w  @-@_wToo many string/macro names. bD@E-z8W$ w@ 7 t@7 `>7 Z> Z> d@#bD W$( %  D  7 D  , ^  t 7  >  fw`     7` e 7 n 7 l   7   L v 8 r* (  L D  5  - 4    8  7a    w  - -  m 7  m 7  z7   - Հ E #’E -J &  T wV |  "  R  *  > )-V 4 w?7 lU7 G7 IH 7ZU-H >U -G8UG0U G   H R-GR R 7BH!7>H7G7T X! T M l |W! 7 T7 M ~H p  vM 7rM7 T 7fM 7 VM HJ2ICCCECDD @&fABwBы wBG7 :T DH7F F7 *T $T  T%YF  GE V V V7 V  V U_ Z "  0 9 A  Z a z  U U7S U U S lE X  B@  U$8 87& @7 w@ 7 > 7 @*Ew&E  Ew= ? \ wv7E7 =j7? &    =7 ? w 2H D ? wD 7 B  D  b 7 D7 b=7 b?  D -6R=66 N 57 62 0-6R,&66e6#6p6X6pT6 DGDHDGG<6DGn6w pCannot do "ev". &  l ! 7C  & N e5A  o5tAn 7 lA  7C 5 &   x  m(A&A@7VC & ! bw f2H57 5 * 5 8U W TU5 U@" W 6U 8Uw"5 W TU &   w 2Hr5  N  v >  Bm4 B@ -:@4@> z"@  ?4w x2Hw r ~ > AEl9r4M w Dw:  w 2HV4 z   >'s &p D'M <'> 6' 0'  7& ' F37B3 ' j &I &Fm&&7 & &0< & 37 b%7 &7 &7 2 & & & & d < 27 & / 2 7 |& z& `&7 Z&7 $ n/7 j/ /3 27 &7 &&& `  7%"  &  &%  7`& % x \ %7 %7 v$7 . .7 h$ ݇  "%% %rz%x%t% 7 %`% p%  5$ D%-@%^%  4% 0% @%  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 ʋ@1iIaA w 2H4 > wz3 fwj3 ?f3 T 1 \ "> 2 A&w 02H3 2H3W hR& CC= e37 = @ *3  $  < \7N/7K/7 P9 w 2HJ3<93 ,8  73 d@7t378 7 dw h2H*_h77w2 _h7 7 7)^2 2H|w 2Hexec failed f%  \7? ? 7 27 < j3-z=  R3  n3a b3^ " ?.37 <  F% "w % -%% %-$- %5$ @1  J7 >1$ - Հ E HI ’E & > 0 w$ , $ r$ $ l$ 0 r$)-$( 0 \$ <$ ׬-˕- *$ $$ 2$ˋ &w$w`$ :$ w`$ $7$ŀ &  E7 j#    %  -7 -&   / N` - 7 , ' / v "w2 ,    !TYw C x . 7 H77 M0h0h5 000%(nl$dn yrmodydwhp  .G 76X4  ] +w WQ-P̋Nm @Hԋ ^ H>rԋ8 Hf7ll &܁ 7 J)s "#o i *q $h7 f n w |Gw tG 7 B@@ 0rX   F zTY,7 w4 aH7j77 HJ 2 3332 3 b?1  3  zJ%  r 2 27 27 222  -<*6<"6 <2 B @w n6w d67 2 f p2`2m^2 7 V27 T2T2-T2 $ X21 V2 m1mJ2 82 1r  (2 - 2d -2  m2 2w r1  1 ,> ; *; ;-;0C7 ;7 "57 =Y= = 1 1w 5_X z57 =-0Y &0 ; .0(0;7 "0-x;0 xw = -b;? b@0lX7 :   & d2w %&w %&w %& F/! :2w fX"m &   w <."e  pw  -,&,%1 & f B % N`% w@B&\, zN` w &  V%   f r  ve0 e  ->0H80H40G*0G&0  fr  0 0 v / / r / N`  // // e / N`H#׭zw^7PjLH 7& 6H #p H_h77%H H PF vr`T 7e r w r8 . -B 7B   vr 7j&  0  p `  Too many files. , @*0 %"0 v: R=-0L=U@ m/ - ; W 6U  B& f &  +  - 7 =   @W -W +` <7< 9 x-V0jL ?N0 J0 J w`60w40 B0 j9w  ^9Line overflow & & 80?HI7 :97 07 07 ^<7 /HI/ 8 7 /7 /K7b/ `/  & / 7 / 6   7/ /   .!? H/e7 h/%HI2/   / N`  0   r -X/eaeA  6/$0/*/ $/ / -/ / t.& & CE\ w D7l >7  E(  E\& EUbDNE W$ N ?  :,% $ T " $,  p7 $ $ $  $ $  7wW7 7 #f& & rw))H `#6&M H7N#  Bwh) >#e7 HH*n$\\e fs&t !pck xyldura:?"ww wBadx bp pn br cc c2 ce fi in liL lln ls ns rs na ne nf pl< spZ lv sv os taT ti tr. ul tl lt hc hyn nh nm np nnar$ro2RO*nx:soXpohdedsamasdadirmrnigtc& eceolc> ncV evifwhchrdjtm6nr mkrt abflHexxhRemfcafpi hw+P/7 - F7  7* ȋ 6#*F w  !w 5&ŀŀ5ŀ tW M   W Mww ^+?r Exception word space full. 7 !& f&L)ʋ,-C@ ċċנs ċ@ ҋH6  ы-ՀHw wHQw 2wJLR'BBHQ/usr/l+e5 W"  Dw <w+A-+HR r++r+HQl+ 9G9G7 N+T+9  1 @ @w8fEw (+w"+8G8HP  EHPe5  A%w $wBad storage allocation  A Z a zfEw * w*r:Gj:WEW jf&  +" -$ * HNpN /  4 & r6 77 ` & &  4 - (0  p `e077ҋʋ ""  .,ʋ .,()"'` ae a eiouyAE IOUY&  ^( HR  7( 4G x7 (7( aw j.2 /ww >11w 2. L(F(7D(7 B(͇>(:(-2(Հ*( ,(&EE a B a p   B `De  Ep ' :F ta 6XE;' pC4E`C`˜ ib/suftabixcmvldIXCMVLD/dev/tty0nr.out/tmp/rtmaY$Y`R/usr/lib/tmac.AAAA.' . (08@HPX`hpx 7   &U  W 6U@  ) @b5  )4%R @$W 8S 1w  1-1_w  eNo more number registers. & & \._f& 7 3 + \  w vD7<)  V3 E( F3 vE\& fEUb7 - .vR)J .p(D .t @< .ov(6 .l")0 .i)* .$($ .xB( .c, .h, .nX)   Il@w@H-&X ԕ- w n E < v' CEC`ѵ 7X' T'@w X Հ  4 &L)* WE  W0 "!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@PXv5 !Y ~ \  tw JD7 ( 0  ? ' m'e7&5 8-' (' '4(7 ((7 ((447 47 47 ('' 'e'w|' -r'Yj'7h' 7`'747f(7`(7j(74 1 8eE&G&77 d1 - r? ''eef&w 7 G7 21 5 @ "40R  " 1 4 1  " r" b7V B73 3 0r&n& d&5 7 ^,% %-^1 ~7 5 `@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'8 & 6  w h 7| 8"e@ȥ-7l y 4  (  &       N w     w eN w ~ Bʥ^J %*7 y ӕ <ӕ2 ,+ʋ&ӕ &ӕ%^ %~ %]@p ӕ%~  ww   f  5 N   5 ~~7 7 7 7   5  tm} }{H{oward} }Taft {W{illiam|m} }{H{oward} }Taft:1909-{19}13:{W{oodrow} }Wilson {W{oodrow} }Wilson:1913-{19}21:{W{arren} }{G{amaliel} }Harding {W{arren} }{G{amaliel} }Harding:1921-{{19}2}3:{C{alvin} }Coolidge {C{alvin} }Coolidge:1923-{{19}2}9:{H{erbert} }Hoover {H{erbert} }Hoover:1929-{19}33:{F{ranklin} }{D{elano} }Roosevelt|FDR {F{ranklin} }{D{elano} }Roosevelt|FDR:1933-{19}45:{H{arry} }{S }Truman {H{arry} }{S }Truman:1945-{19}53:{D{wight} }{D{avid} }Eisenhower {D{wight} }{D{avid} }Eisenhower:1953-{19}61:e#W8@!q # u@5 wX)9hhhIfgofile dogen succ g1 k emit"end.om " end"f.oom "|06 w)9.f"succ seekchar getword find.om "P&  w& && ee  CC-5~f %"N  h %d N  X R    w: 4 ~`5”%  %  ~ &   !˥œ &  ԋ &  ԋ _N _w  DC O x wtԋ̋& % ` & % ԋԢ  & % ` &   ! w DCË wԠ@~ w  v{J{ohn} }{F{itzgerald} }Kennedy|JFK {J{ohn} }{F{itzgerald} }Kennedy|JFK:1961-{{19}6}3:{L{yndon} }{B{aines} }Johnson|LBJ {L{yndon} }{B{aines} }Johnson|LBJ:1963-{{19}6}9:{R{ichard} }{M{ilhouse} }Nixon {R{ichard} }{M{ilhouse} }Nixon:1969-{19}74:{G{erald} }{R{obert} }Ford {G{erald} }{R{obert} }Ford:1974-: 6e  &   *  ew |6 r n j b6 V R N F  >ew2 Yi(8 Y iIilptr rptr sptr succ fail iget find"enter"seekchar getword getchar putword putchaNf  ^ ww n n t/ l,%^N+  BH/  0 $  3   7  ww ~w De   % 6w7 7 ׯ-  (w7  .we<B J ӕ- R r f e0 @ >h ҋ D~8dh Fӕ0 $f v Le0 9e   7we&  m  6~  6  6~