7wށ W _"     0 8,x0 &j|  & PeEդ  )etE7| E @qe T~5 J   ڀ`e  7 6 ( ڑ  " we 5 &     7t ڈ!@4@t.2*2 . (  ,unixXWVUTSRQPOMLKJIHGFN,+*NM~}|ponmlkjihgfedcba`_*fghijklmnopqrstuvwxyz{|}~\:6b+W+@/usr/mdec/rauboot 600 30 d--777 3 1 $  b+b+g W+W+ W+W+ W+W+Y+;W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+Y+;Y+;W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+ W+W+ W+W+ W+W+ W+W+ W+W+Y+ƴW+W+W+W+W+W+W+W+W+W+W+W+W+W+W+Y+W+W+W+W+W+W+W+a+,Ra+,Rb+kb+oW+W+db+lW+ a+QW+W+b+ia+,RW+$W+W+W+W+W+W+ b+lb+lW+W+|W+W+ W+W+8 a+RW+W+W+$b+mb+mW+W+W+W+W+W+. xyz{|}~Y+-W+vwW+W+ pqrstub+kW+oW+W+iW+W+_`W+W+T\W+W+RSW+W+OPQY+ĴW+MY+9W+@ABCDW+W+ ;<=>?b+lb+lF9:b+mW+5678Y+W+4W+W+3W+W+/012W+W+.W+W+-Y+BW+W+b+a0)b+b+bn(b+ذb+ӰP'b+b+ &b+kW+y %b+b+&n $b+b+8n`#b+b+o"b+kb+%n!b+ob+ob+b+b+ b+b+ b+ @ABCDEb+ׯb+㯴 :;<=>?b+b+6b+b+b+Qb+2 b+DZb+@b+Mb+į@b+b+񱴑.b+ڱb+pb+Qb+Q$b+>ob+o$b+8ob+o'~b+2ob+o)}b+,ob+o(|b+%ob+oLb+jb+ja+'Ra+'RLb+jb+j4Sb+ڰb+zkOb+nb+nb+Bkb+ӰHIJKLW+W+|DW+W+:W+W+=W+b+ykb+Skb+ưW+W+0W+W+   a+%RW+p W+W+ W+W+Ba+RW+@sb+ܰb+zk4a+QW+:W+W+W+W+a+,RW+W+W+bb+>kb+>kW+W+W+W+ W+W+ W+W+ W+W+ W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+ W+W+ W+W+...ebinddevcetcblibamnt`tmp_usrunixwhoamiunix.rd52rkunixe...ar[catZchgrpYchmodXchownWclriVcmpUcpTdateSdcheckRddQdfPduOdumpNechoMedLexitKfileJgotoIicheckHifGkillFlnElsDmkdirCmvBncheckAod@passwd?psd...5console4kmem3mem2null1ra0a0ra0b/ra0c.ra0d-ra0e,ra0f+ra0g*ra0h)ra1a(ra1b'ra1c&ra1d%ra1e$ra1f#ra1g"ra1h!ra2a ra2bra2cra2dra2era2fra2gra2hra3ara3bc...dtabgettyglobgroupinitmkfsmknodmountmtabpasswdrcttysumountupdateutmprd52a.protord52b.protord52d.protorx50.protorx50boot.protob...a...`..._...^bin]mdecsys^._..cpallcpiodifffindgreppwduudecodeuuencode]._..raubootmp: 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 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') 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, _main start: bit $1,SSR0 bne start / loop if restart reset mov $trap,*$0 /random interrupt / test if booted from dec-tape cmp $173120,*CSW bne 1f halt 1: / 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)+ / ksr6 = 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 mov $EN22BIT,SSR3 / allow > 256KB 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 W! $-7 j77XT  & 4 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 ~U & 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 @ > ҋ 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 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 directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken Pipe2*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%F2^   Wq 0W 3E`e@t7 &&@tEe B &error /dev/junkb( & 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 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@)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 & 6  bw P%  @% b @&  5  @% b:f  @&  !E%@@Ҕ/ҥ/ @@&  -@-:  @% bN@&  5&  N:f @%@-   @% b:f %5 bwfwhwdwf@wLw fw6w2wf@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. 6X & 6  w 5 %e@7 $ 6 % \s.      & x| ^  FU  56 x}`& f :% f %  x  %  & % %ww p l%_% _ R5%_%_ 65%5 5c%;`  Ne xNe  pe F%B7 7 el h   h%n%  N N  N<   <  wf tw Fn@m-d \7Zw6w &LupwDB  N ww "ʋeWp D%dʋe % `wfw@w<dwf@w$w jw f@Awz f BRf@wwpw@f@w N  ww DeL@4 &   w/%J %K  t5n t5pN  5N  5 0 B-B-%B-B-% &    w2w "DC%: he`m e rfww p@&f %H@ r<R r< r<R r< rWtC` re rwF h  h!7 h%n  v  0!v 7 @ww ԔAA WpCeԔԔԔ BeWpCeԔԔԔ&  ed&  ed&  ed&  e@ &  wvw fA r nw\mw FD % A r  r e0@ԕ A r e0@w @& BF7LF6rwH6r@f@  P`Hm` bad conversion no permission /usr/adm/wtmpM:/CETCESTDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecR8(( & 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 < C55E%@/ &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@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 ( ( @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 cnt %l %d %d Monstrous directory %l read error %d write error %d dox,f:ecslHr.0 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      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 _ Ԏ w   -        %-   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 * % -  $  -   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\` : ӕ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&DH&>D&8@&2<&,8&&4& 0&,&(&$& &&&&& &&&f& f@www*f@@& HADCBF7@F    [.<(+!&]$*);^-/|,%_>?`:#@'="abcdefghijklmnopqr~stuvwxyz{ABCDEFGHI}JKLMNOPQR\STUVWXYZ01234567897-./% <=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 records in %l+%l records out %l truncated records Unknown error: dox(f6ecslDr\0 %/I[m} +:K_s!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 busyFiEFGHIJKLNle 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 & 6  w  % @ % @ @m  @ @m u-w$w   f ( 7 N     5   N   ww  %d @ 5~e@--r N"  w` XNef  w@5 @ A Aap %d@w  f h%f F%5%N7  fF % ww ~wDe   % w7 7 ׯ- ~ |(wp7 r .wfe^B J ӕ- R r f e0 @ > ҋ D~8 ӕ0 $f v Le0 9e  7we&  m| z ~    ~ w7 N D @0   ,Wp `e0eӕ?f , P   @f  7 -f@w fwdw`wzf@wHwDwXf@w,w(w6 f$f@@& HADCBF7F/dev/rk0/dev/rk1/dev/rk2/dev/rk3%s cannot open %s %l bad free count bad free block (%l) read error %d count = %d; errno = %d fdoxfecsrlrV( 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  fA & 9 &fA @e&7Bw>8@xw w&w w p(  & 6  L w R1  % @  euw@  r eA! y:    ew\ h@ @Wp we @ @7 , 7 7`T  @ @t5e  - w %P  < d ^ 53Hf | %N * 5 @AWpfeH  AWpwXJAWpwZ> % @j   @& ^ 7 @o  $     D  t& t t  7%  5 t& t 55 5 Ofe  %? *-D%-<-6&E t 5%   N   e  umT -Nf  % ~ & %f& %5 r NA r &  % Hdb`^  dvt& t 5. e@ 5 fe   %   ee % -    5 AWp1H % T ^ 5@ @ 50    Hf | %5 AWp@H@AWpfeH   %    ,5 AWpAm@AAAmpH@@mȋ %AWpXAWpZ & f %Hf * %   w w @ N V   w w C H@e  d5   _  _DeU Q5@&  %B 0@e!  %  5   e %   e &   e@e!  H   wtw bf %f | %%N%  w4w "C  ww Bd  3 N ww   %6 4  ( * P B  >P %f * %% *-$7 wnw \ 5 fe& | %  % w<w * %0 %9Wp D`e@ ww ffE %  ww f @ 7* V O   X> ԋww @ H @ ȋwx w b~w4De*  $ % wD7 7 ׯ-  (w7  .we`B J ӕ- R r f e0 @ > ҋ D~8 pӕ0 $f v Le0 9e<6 .( 7we&  m  ~    ~ w7   0   Wp `e0eӕ?f ,P  z @f ^ X7L XB:-4,f@wP fwNwJw0fw6w2wf@wwwfwmwwmfwww f@www 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 %X r<R r< r<R r< rWtC` re rwhF   !H7H %n    0!n 7 Xww *Ԕ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` '8J12TUVWXYZ[]^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, rXlM:/METMET DSTDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec< & 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   Wp `e0eӕ?f ,P  @f  7 -zrf@@& HADCBF%s%cd.o(xjfxecslr@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!    @ Xx# %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! 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!!Ԕ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 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    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%#-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%*_dabcdefghjklmn_ !ҕ 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& % ` & %  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& !w 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& fwH 8!w f D& w }f@w w 6HH,+r?/bin/shsh-t!/tmp/exxxxx T,0  %ew & 6  Rw @& & .%w<f@wLwHw, f@@& HADCBF7F(  & 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 2# L % 5 7{-  5 %; _ ;    @ %_8-T _8(   _~  @ %_8- f_8\) N J @ %_8-*_8 {  _ , %_l _ @  _ @  M  7 S : -X  -:    5n.  bZ % #@  4 2 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/ 8  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   Wp `e0eӕ?f ,P   @f  7b x-rjf@w fww wlf@ww wJfww w, f@@& HADCBF7F      $ ( @`m $ ,functionsubroutinecommondimensionblockintegerrealdatadoublesysmovtstclrjmpintcharfloatdoublestructexterngloblbyteeventextdatabsscomm%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"xdfrecslr24 & 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@)wpf@wwwN f@www*f@@& HADCBF7Ff@  x "@ $$ttyЋ7p@ fgoto error label not found /dev 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  UL, @.%@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& |%  @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&,&  @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   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@@& 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&f4ecslBrTN\ & 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\ 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  %ew 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 e e Hww vC%_F  r f F r Ĝ ĜE0& J 0 r 5`E&E r%&   r e p -L ee r%e &   r 5  r wJ w : -  w4   &  %7 r 5 5 5 ( %: 0 @@mH % AWp Ameu " 5% u-@@m w w x ff %5 %et`wN w > w d%w0 w C4e  $ w w fCԔˋԕ/C Ԕ % fw w f _N r _b7 V  "  %  .% f \%& f % %`Ȝ  w. w  $ e-z  Z ej d e^ 4 4   _Nef N% r 55 5  w tE@E%`E @E%@E`UE5UEtttttt5` ttt ttN@&  7`w DC T5E}%'E}%' 3- 3-3-3- wp @wn E}% 55@5 upw  ~w\DeR  L % $ w7 87 8ׯ.- & $(w7  .we4B J ӕ- R r f e0 @ >  ҋ D~8\` ӕ0 $f v Le0 9ed ^ V P 7@ we&  m$  "  $ ~  $   $ ~ w7  0   Wp `e0eӕ?f  , P  @f  7t  dj b -\ T f@w f@)wfwjJA 7 d fAW,f B@ 8 @&61fA   @ @e7&1@p 1w<fwwvw"w w w AupNNmf ww  @@5 _  fA rBpEu@@`55DCN&  f& & %5 2`D--`f  $`f& * %`Df %5 D-&  C-D-%@@AA@ Nf` u_ Nf @`5_ f * %Cww ~ 8 DCԒ wjw Z DCB5ҒS w:fwm|w.wmfw|w w f@www fwww f BRf@f&CB  ԕ-  e0fv   vA W  ~w N  |ww DeL@4 &   w/%J %K  t5 t5N b 5N b 5  B-B-%B-B-% &    w2w "DC%: e`m e rfww p@&f %H  r<R r< r<R r< rWtC` re rwF   !7 %nF    0!( 7 ww JԔAA WpCeJԔԔԔ BeWpCeԔԔԔ& > ed& > ed& > ( & 6  w l$ 7Ne @e 7 >@-8e+@a # x      R   ~ z ve@ȋ  `  L7 L7 J7 H7 d < < f f 7  5 ef f LU u-  r&  e E5  6% r N  z6 r& e nf r -  ed& > e@ & > Jwvw fA r nw\mw FD % A r  r e0@ԕ A r e0@w @& BF7F6rwH6r@f@  P`Hm`   rxd@b c-r-w-s@x- r-w-sx-r-w-x-t "2:BNV^jrz./etc/passwd/etc/group %s: total %d %5d %2d %-6.6s%-6d%3d,%3d%7s %-7.7s %-4.4s %-12.12s %4d %s %.14s %s unreadable %s not found d>o8xzfec$slr M:/CETCESTDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec7 @D /ѕ/ѕ.  D E#6'F$Ct www ѕ.  @77 Ћ . ?  & 6  w ^zu%  % @55( @&   % E%@p( @&   % J@55 @ ȋ  % }@ ȥ/  % @ ȥ/   %  ._%"_  r, f  _E%@5| @ A H@/@55 @ ȥ/u@ 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   % ww 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@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. ??? 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   %ew>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  %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%_^  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 @ >` ҋ 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@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 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%  " ^ 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 5%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`eu @@%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. "&+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"_z_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&  m  ^ ~  ^   ^ ~ w7   |0   hWp `e0eӕ?fP ,FP < 6 @f  7 T-f@)wfwpwlZwpf@wTwP`wNf@w8w4fw, f@@& HADCBF74F6rw.6r@rrrrrrrrrf *<N`& \~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 jsrsobbrbnebeqbgebltbgtblejmpswabclrcomincdecnegadcsbctstrorrolasraslmarkmfpimtpisxtflagrtssplhaltwaitrtibptiotrsetrttmov cmpbitbicbisaddmuldivashashcxorbplbmibhiblosbvcbvsbhisbloemtsysclrbcombincbdecbnegbadcbsbcbtstbrorbrolbasrbaslbmfpdmfpdmovbcmpbbitbbicbbisbsub???" dx or x f eP c^ s. l rNp & 6  w % h %_        !  7,   7 _%  _ R   R  %_@  R  %:ʋ R_%:@ ҋ % "@   B&  ʋ:    R  %0 %9Wp D`e a%: E 7!5TT  7E %  %     R >X J    767 %  wlf@wj fwxwtPwJfw`VJA 7 fAW,f B@ 8 @&61fA   @ @e71@\ 1wffwwbwzfwAhQ  OfA  ^ y   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 f@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 found in password file Permission denied Urk Cannot create /etc/passwd Password file illformed 0  @ @   H  & 6  L w : R%#@5@  7  y         <    $   %@&- ( 3 <_@  <I    7,W <    % %   %&  % > ~ 5 E5 _  <5 AWp _xAWp  ~M_x5 AWpB , @059 -R AWpf 6  %&$ %5 @ -r @ AWpp  -?AWpA Euu  _x u-N <  < NAWpA A fAWpA f <eAWpN  < > 5AWpA eWtNAWpf AWpA f <eAWp AWpN  <  <AWp@  <N  < %_ ww *  5 < `r  fef %N  L  < &>wn%@a0 De@e!҆ It#tyNe&e , ,20 pr " Ne&e , @E%` -T  &e  7~ ew @ A Hww  5 5 AWp AWpu ( AWpu  AWpA eu`@t5`@Et5ff  %ff  %,f %%A =%>eˋ 5 %,5ʕ % %~ %ҕ  ʕ?  2   < w\,%,w @x *w<w ,xf ~ w&w ~w:De0  * % &w7 7 ׯ -  (w7  .we B J ӕ- R r f e0 @ > ҋ D~8> B  vӕ0 $f v Le0 9eB< 4. 7we&  m  &~  &  &~ w7  0   Wp `e0eӕ?fwPF wn f@wX ffwA@ e  J X O0 : ( -  &  m -  e7- - - )P "  @ 7" 7, 7, 7,   e fwJwFV wRfw2A\ Q  OfA  ^ y   F y @0fA  @9 fA @e&7w7@b w7 f@wvwrh wlf@wZwVn wJ fw@w<t w* f@@& BF7 Ff@  x0 " z @ $$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 open /dev no swap device %.16s %.64sdoxDfRecsl`r /dev>restor=rm<rmdir;shstrip9stty8sync7tptty&  & 6  w  b% @  eu/@  r e$A! yk @5 N L e w 2 ^   l 7777772t& 5t  7 &  e@ @r _L xR5 5   v5 A5%0 5u- N e Nf %e %< 5  5  @ 5 t@- N  x % d @7  7  4 p   X5 M-LMfe  5+ P%e    l See N   e %͂fe ( - ( 5 5 5% % -p N  5 =N 5 @ 5e  t@-@ m N@ m%N$T%   r _6 (5 @ p- @ 5%5 @ ^  5S%ON b 7H   l %   %N r%,r@   R  r t@-_0 H wt w b D5 S a I5?Ne a&   @a *% Ne @a&  @ @a @ @a  @a  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 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 % -|x-tpfdn N%TTfV %%8  D   @m %ww  %0 %9Wp D`e@ ww ffE %  ww    7   H | ԋwbw Pf v* %x % w%y `%  T%     w  f& %N& 5 f& %e0= =@ww   %d B  , n &  bZ    p %dw&w %d2 , 0   p %d7  f (  pww ~wDe   % w7 7 ׯ-  (w7  .weB J ӕ- R r f e0 @ >8 ҋ D~8  ӕ0 $f v Le0 9e  7we&  m  ~    ~ w7 t j f0   RWp `e0eӕ?f: ,0P &  @f   7.  -f   7 ߎ 7| 7 zfwwwf fwwwF f@w0 fwtwp$wfw\wX*wf@w@w<0wf,(wm"6wwmfw6ww f@ww<wf f@wwBwBf@w N  ww DeL@4 &   w/%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 R"ww |ԔAA WpCeԔԔԔ BeWpCeԔԔԔ& 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 restored - 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 "ptM:/METMET DSTDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec: & 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 < 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ӕ?fwwt 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@ ,%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&/devP w R 7 [<WE%@P. I/E. >/:6@<  ׭. ׭. F@@ҕ/ҕ.ҕ. " 2   -- directory not empty ? 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 !!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 % >   w% 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 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 @ ! (@  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%@&  5 @  "  N N 5 N N @ 5 @ N @ 5 @  5   "  5        %@@E4P  ~ 7pf \ ^@"Ne@&  "  f \ ?N@& " @ Ne N @  " >@5Ne :@@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 " ?# # Ne %.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 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. }f@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 &();()^|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: cannot 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+ %ew,UISA1 mov $77406,UISD0 mov $77406,UISD1 add $8192.,r1 mov 16(sp),r0 1: mfpi (r2)+ mtpi (r1)+ sob r0,1b mov (sp)+,r2 mov (sp)+,UISD1 mov (sp)+,UISD0 mov (sp)+,UISA1 mov (sp)+,UISA0 mov (sp)+,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 mov $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 _dpadd2 _dpadd2: mov 2(sp),r0 mov 4(sp),r1 add 2(r1),2(r0) adc (r0) add (r1),(r0) rts pc .globl _dpcmp _dpch & 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 $%5i $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~8 ӕ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[^ciou|00 000    @@@ee  @2Kn,X` %05075110134134.515020030060012001800240048009600extaextbeven-evenodd-oddraw-rawcooked-nlnlecho-echoLCASElcase-LCASE-lcase-tabstabshup-hupcr0cr1cr2cr3tab0tab1tab2tab3nl0nl1nl2nl3ff0ff1bs0bs133tty3337tty3705vt05tntn300titi700tekekerasekillunknown 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 T & 6  .w  w"f$f@@& HADCBF: /< @@Z@S@ -r@h@d@ R  T  A L@@ BB@2@.@@-?7??Wtw??Wpe`w?w *Tape open error w-? w?@ȋw Bad usage wn0H1H2H3H4H5H6H7HcRd^fXifmlr~turvwxwDwI ??w h>>>w P7>w Dw <>>w (Lw .d@a@b@->w& lw  Jw >> J $  R7w a@b@g@ *^>w mode uid gid tapa size date time name w  w a@b@ w   w tEND  B ҋfABR&e E7 7w Out of core w@ @  E7l=`@ `@T=`~= ~fe N 7 8=  4/=7D=`<=5 `0f & d~S<   e fe N e@Ee~ <w "Directory checksum <w  z< `0@  8 r;Pj;@l;$ X;Vw Tape seek error w w ;:+ f@ X:w X t x jw  y V  L w  -:.: -: ::e:@R |@%&v@  \:@x@W.Ћ &/Е/P 0@ zw -- Cannot open file w@@b:E @`&  New 9w ,Directory overflow ww aw @w @@@Ӌ o9 w, :'w, 9#w Lr9U9949797 9999 9 `& w &@-&9@9ˋ ʋ/f  ew 9߇ -8 8 $w , not found 8e8-8 w d >f& f&@v@ @W#00 @N7Lf r f e0 T` )5% .8 BCeB v77 t `0~ 8 ew 7Ї 0`&  5N,Nvew 7 Ew7B 7w @@  @- v7 `0!   R7* l7   ``0 w@f@ Xw ` -- Phase error 1 `0  `@` 5  ew 6퇇BCeB vB `0`0 ~ 6E&t6tEw Tape overflow w* \`  "6e D6<6 >6 06 `0 55 55 ~5w Rw H entries 5w :w 0 used 5 5w w  free 5w w last x5_@&t5 t5 5 @w  @w @w @w fe  w /  w r/ vw ^w R: Vw > B@ w $ s5x-5w-5r-   w4 Cw @xC@ @wBr8 R4  (`0$ ! 04  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 rfww p@&f %3A r<R r< r<R r< rWtC` re rw2F x  x!272 x%n    0! 7 J2Aww FԔAA WpCe FԔԔԔ BeWpCe ԔԔԔ&  ed&  ed&  ed&  e@ &  Fwxw fA r nw^mw FD % A r  r e0@ԕ A r e0@w@& HADCBF6rw 16r@f@  P`Hm` w 4w @w ~x `0@`0@@/dev/tapx/dev/mt0/usr/mdec/tboot/usr/mdec/mbootM:/METMET DSTDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDeca.outnamepmodeuidgidsize0size1time0 time1 tapeadirsizmdirentrnarg@narg@cmrcommandh@flue@parg@swtabuseerroptapPsetbflmd@tapsiz@ndirent@tcmtfio@ndentd8@dir`edir@mesgdonefsetcomnoflagdcofHdccRdcd^dcfXdcifdcmldcr~dctdcurdcvdcwdcxtcxmtxflca@flfb@cmdflic@cmtflvf@flwg@cmxLrddir.gettapeRdeletewrdircheckbclrdirgetfilesupdateDtaboc check1bxtract usage< encoderdecodepstrputcch`@getcclrentsumj@rseektreadttapeb`0bitmap wseektbootmboottwritetrderrrseeka@twrerrwseeka@seekerr@verifyZname@calloutvexpandfserrPcatlbv@statb@name1@numbnumbxnumb2,numb1*sizel@bitcalc map`0setmap update1mss@phserrp emap`@maperr$ nentrn@nusedp@lusedt@nfreer@pmod crterr crterr1 smdatectime.o L1L2~ctime at~localti ctdaylbegittimdaylenddaynocopytL100004 L5P L6 L10001 L10002 ~sunday atdtadL8 ~gmtime L10Atptimd0d1xtimeAL11L20001vL14L15L20003~asctimecptptncpL21L19L22 L23 ~dysizexyL25L24~ct_numbcpacpnL27L28csv.oldiv.odpadd.o _localti" _end$A_cbuf$F_dmsize#_timezon#_tzname#_dayligh#_daytab#_ctime" csv"_asctime"cret"_dpadd" _gmtime" _sunday" _dysize"x_ldiv"_ldivr$A_ct_numb"_lrem"s pc _spl6: bis $340,PS bic $40,PS rts pc _spl7: bis $340,PS rts pc .globl _copymem / copymem(n,fhi,flo,thi,tlo) _copymem: mov PS,-(sp) mov UISA0,-(sp) mov UISA1,-(sp) mov UISD0,-(sp) mov UISD1,-(sp) mov $30340,PS mov r2,-(sp) / stack is now: r2, UISD1, UISD0, UISA1, UISA0, PS, PC, n, fhi, flo, thi, tlo / 0 2 4 6 10 12 14 16 20 22 24 26 mov 20(sp),r0 mov 22(sp),r1 div $64.,r0 mov r0,UISA0 mov r1,r2 /save it mov 24(sp),r0 mov 26(sp),r1 div $64.,r0 mov r0ra3cra3dra3era3fra3gra3hrk0rk1rk2rk3 rra0a rra0b rra0c rra0d rra0erra0frra0grra0hrra1arra1brra1crra1drra1erra1frra1grra1hrra2arra2brra2crra2drra2erra2frra2grra2hrra3arra3brra3crra3drra3erra3frra3grra3hrrk0rrk1rrk2rrk35tty8" & 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 &  X%̋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  & 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 CD&  %&" _   %" 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 > 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 other::1: bin::3:root,bin @ & 6  `w  N%M , T   & &    :e  !&   0  & & %~ @! 6!& >%       %  H 7^ y % d  J>   &   :% ( !    :%    7N   2.e %0 %6!- e 2e%6!   e%6! * %6! !  ew   2e%6!ww D   & x 4 ww J!L %%  w7,7&7 w PB -   V         & e ` :e T ww &  @%ae et& %N! >% 0  @7@! &  %6! >% wRfwwj wF fwwp w& f@w fwfwbv wf@)wfw:@e72| wfw7 f&f w fww wbf@ww w@f@ww w fAW @w f`!1`!7~ 5 eRwj 5& w&L&H&D&@&<&8&4&0&,&(&$& &&&&& &&&f& f BRf D& w }f@wTwP wf@fA w,*w"$e"w"ew"@lw"Alew &@t`e w wwww@& HADCBF70F/bin/sh-/etc/rc/etc/init/etc/ttys/etc/utmp/usr/adm/wtmp/dev/tty8 @X//dev/ttyxetc/getty %0 %ewL & 6  w  %J @75 @mȥr%k%p  X@m5@7B8  7 (U   ( 7 h   ( 7_5 5 '@mȥ0@mȥ9 y AWp Bm`eu @mȋwf& %e+f& %7r %z t r  %O   ( 5 4f F%%  m5%f F%&  N 7 7- e-  % : 5 @ 0  %5 fe  -8 5 @ 0  %  w w . @ `& e5Pg& %5PP& %5P@07@& % @eCpt5P % 5 ~5 & %-  55 5 @ @a0 %5 @ @a0 @ @a0 % @e55 5 @E7  y 4  ( 5_& Nefefefe  e%_U 5Nef  u 55 55@e5f& %5f& %te5@e5f > 5 %_}ee fef F%55`Nefefefe  eN _ ft5 Z5P_@Nefefefe7f e Nefefefe:f e  \$<7_NefefefeJ e eNe 5 u-_@ @aA Aap f  ww  5 @@mH@ @a @@mȋ- @&< % nww p d5 5 5 "@09 M *AWp B`eu @@ww  527Z y ]  % 5 @p l5% % %  @0ww  fZ h%fH F%5% Nb @wTw B f h%f %5% Nr w w  &" 5 0    f >  5 @ A p %d@ww  %dR 5 @ A p %df  7 rn p bw6w $@ @m H @ @m 55 }   %e% Nf f f  eww  5Nf  5 @ @m %= @ @m H % DwXw F "   wB w *%dldd @a0 -R   7r@D@a@`02@am  7rD - 5.e50 J D.D-0 J & & % @`2 J -@0m!  J D-0wLw :~wP DeF  @  % B w7 , 7 , ׯ" -   (w 7   .w eB J ӕ- R r f e0 @ >  ҋ D~8 ӕ0 $f v Le0 9eX R J D 74 we&  m    B ~  B   B ~ w7  0   Wp `e0eӕ?f  , P  @f z 7Vh  ^ V -P H f   7  7 7 f@w fwwwfwwwf@wwwf@ww|wd f BRf@wLwHw*f@@& HADCBF7F6rw 6r@ @` :arg count %s: cannot create %s: cannot open %s: cannot open isize = %d free list %d/%d d--777 0 0 $ %s: cannot open init %s: bad format %s: too big %l/%l: bad ratio bcdug%c/%s: bad digit too many inodes %s: cannot open ...%c/%s: bad mode %s: bad number EOF read error: %l write error: %l out of free space indirect block full  d\ oV x f e4 cB s l r. & 6  w %. 3@b3@ 5!@ 5@tN]f@& % 9  b? wn@cw H5 %0%9w4AWp Ameu@ 5@w b- N xf %p % x& %s %ww Dԋ@ ww p~wDe   % BwR7 n7 nׯd- \ Z(wN7 P .wDevB J ӕ- R r f e0 @ > ҋ D~8 ӕ0 $f v Le0 9e  7vwe&  mZ X B~  B  B~ w7 , " 0   Wp `e0eӕ?f ,P   @f  >7  >-fwwwwN f@www*f@@& HADCBF7Farg count mknodusage: mknod name b/c major minor Unknown error: d\oVxfe4cBslr>/?Wa{ ,>M]l}!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 directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken Pipe  & 6  w    5$f %%$%$ ˋ e $ %e@%. wz % @&@& ^% 9 @ҋ  /@ /ʥ/ @$%$ ăˋIe A@ @ e?  A@ @ e $ @ˋ? @ 5$t t$f %_e@w XJ-V | N f %X % & %[ %ww Dԋ@ ww ~w De   % w7 7 ׯ - (w 7  .w e^B J ӕ- R r f e0 @ >\  ҋ D~8 : ӕ0 $f v Le0 9e   7we&  m  ~    ~ w7   0   vWp `e0eӕ?f^ ,TP J D @f ( 8 7z 8 -fwLwHwf40,w fwwwnf@wwwLf@www*f@@& HADCBF7F/etc/mtab%s on %s arg count mount/etc/mtabUnknown error: dox&f4ecslBr8 )9Q[u&8GWfw !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 directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken Pipe%ww Neff %ww DA555  ԋNeffe %ww DCԋԔwvw dDCԋ w\@w BDCԔw<w *DC 5 5 7 y 5 %*5 %9 AWp `eu%0 0u%l %a %z e%[ (  `Nefff e    @%%@ @ EN 5 %ww P%c%s%[Nroot::0:3::/: daemon::1:1::/: bin::3:3::/bin: ken::6:1::/usr/ken: rm -f /etc/mtab /etc/update 000 010 020 030 040 050 060 070 18- 090 0a0 0b0 0f0 0g0 0h0 0i0 0j0 0k0 0l0 0m0 0n0 0o0 0p0 0q0 0r1 0s0 0t2 0u0  & 6  w p    5f %% l@ F  2_@Ӌ  /@ /˥/ @@e *ҋe@  @̋  5t tf `%e@% Ȃ@  whw V-^  ZN f `% `% & `% `%ww Dԋ@ ww ~w De   % nw7 7 ׯ - (w 7  .w eB J ӕ- R r f e0 @ >d  ҋ D~804 B ӕ0 $f v Le0 9e    7we&  m  n~  n  n~ w7   0   ~Wp `e0eӕ?ff ,\P R L @f 0  7 8  -fwXwT>wfw@w<Dwf@w$w Jwpf$fPwN f@wwTw*f@@& HADCBF7F/etc/mtabarg count umount/etc/mtab%s not in mount table Unknown error: 2doxfe`cns>lr -?O[m} 1EVet!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 directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken Pipe  $#root 87԰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: mov (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 rt#H & 6  &w !_$%%Q$'$#T' e &@ @m@- :E7v/ $E7l/A1`@ȋ_@_-%$@7"/_z-_ ` % $T' % &d.  $d. P  )d.  'E%@-'.%$@7.5 ,2 ,/ ,$$  7f.$$  7V. , , , , , _0a  x#_ |, $T'   &`,_ : _ H' D' :'e0) % J) 8 70, J)$T' %&e0) %&& + ' W- A@DJ*+ V%J* % + 6 + J)$T' %$J)  7 P&7 N&$ f 7<&X0) %_ * _,J)  J) z 7+%% 9 5 W- A@DJ,& *J,* @% $T'   &  ** 6f%`%^%X%J) : e d* \*  T*J) J)  :*J) __d. fed.  _J)  J)  )9 +6-v$v+2u$-n+ h+*d. d.J)  d.J)%T' e$~$|$v$d. X e _d. z7z) J) 8 7f)J)%T' %P) 6##&E V 5u = 9 W- A@DJ*( V% (J*( @% '%T'   & ( ( 6 (( 6>#8#2#,#d. J e r(d. _>  x#V(6%T' % &w_ w _Hd/   _D̥. / eJ)  J)  (J)  J)A%T' %N"E%@ 7<)4"E72)qj"J) f 7p""7\""7V""H"!D"!@""D" "@"!72"5`&" !!&E V 7"w"!"_8w_4w @0) %q! I%T'   &J)! %J) n  !E%@ 74(v!E7*(w2w DM z&(& 7 f& = X&2%' %' p'& x%' & fa0%& n %   % ww xD_ f'6 % %%& n %& n  )&   _  ^ &  'N &  _ %>  |  _ &   & % %T' % _  )&  0 $--- %T' % _ $-- $%T' % _ %$-Jn-@d %T'   && L ; T$&ʋ#ʥ/  )&  5% ʕ/ E%@ʕ/ʕ/ & L  &T' %  |%&  &  wr _w ZDC1  ) ^)J*& V%% &T'   &*)J*&) n#)e) )ww DC1  ) zJ,f @% &&T'   &FJ,> "?6e0 .ww vD_  -HT%@P 4-F -4@ "J) 4e&5& %  4e&   4e&F&T' e(" & e @ % fe h 14 ^&T'  f\ 4P 4> 4e&  (wL_ w 6D\lu&  -`_  6z&  _>  6>E   : 6 3 6 6&   &  & e@) p6  7)t6& %ww rDC_& n _5’`5 5:@%   & X V5@- u- A @@5P#7 y@5@-  *   &   &    #7l yB- wl_ w RDCˋ̋ &  w(w D    &&& je&T' % &ww D _bwL'wH'w D'w @'6&  ww N ww zDB  E  Ґ%  B- wF@w ,Nfef ~%w"w  & & !"#$%&'()*+,-./01&  7& &0& NEB $Ґv& l& h&E\& % B %:% w%:%0%9Wp D`eD- w XC  E D' %  C- w&@w L'fef ~%ww D< 8  4L' ~    L' ~ ww DCԋԔww DCԋ w|@w bDCԔw\w JDD'-* wBe̥wf L!̥af 8 f L &  % f 8  ̥rw D p & & %4  0ww tw$D$CB %w#@ f& & e w>7 #7 # #ׯ#- # #ׯ#00#w#7 # .|w#&Bw: J|#v# "_Vf# b# o x d u F#       ӕ- f&Ew "ӕ0 N r@A r  f  e0 9e' ) '"'ҋ D~x"r" >j" b" t7J"w:<" 6" 4"ff e w 7 " " "0   !Wp `e0w 8 D' @w"  4 e64 && V%4 % 4 E w DCB & ~ z f ~  ̥-%0  : :  & ~  z f ~  w w D  " f& @%~ &w & & e Ӌ 7r h ӕ- ӕ0B~Fӕ.  ӕ0~ B~7$  ӕ-ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw DeE7 5 5a a KE -%,'4' @%} & l%fφm  @@7P x% wL vre Udm e 7T-'Na7B :40U ew @e7Ew w D'%'@N eN "w w D  ԋw w t D_j' ufe& @%4 E/%L' 6  w11   & @%R  @ww D!E%& @%  wHw 4 D'- ew&w D p 6 4 ?4  ww Nefef 5& *"e C ӕ-B  @@ % :%6 ӕ. `ȥ0  B- ӕe @ 5ӕ-ӕ+A r e0A r e0@* ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.@ww $DNef  w| E@E  u  EAE@ uAA @@!  w Nef  wfw w 'w fw w 'w f@w fw w 'wfw @e7 (wfw~7, f/ff@wJ (wH fw4 w0 (w( fw A@A(w fw w w (w fw w (wf@w w $(wf wm *(w~ wm fw *(w\wr f@wb w^ 0(w2 fwH wD 6(w fw. <(w f :& w }f@w w @(wfA w, w" e"w" ew" @lw" Alew &@t`e w $N  ww DeL@4j & #   w/%J %K  t5P' t5R'N  5N  5  B-B-%B-B-% & #    w@w .DC%: !e`m e rfww p@&f d#%6 r<R r< r<R r< rWtC` re rwXF !! ! 878 !%n  0!X( X(  7 6w"w 3(ԔAA WpCe(3ԔԔԔ BeWpCe(ԔԔԔ& ! ed& ! ed& ! ed& ! e@ & ! 3w|w jA r nmwZw HD % A r  r e0@ԕ A r e0@w@& HBF7Ff@f5w  * f5w  }7 W&f6 7 |@% p@A&@776@L> Be0# @6є 7    BA   W 7e B@e06m ` 6eȐ9 ȕ0 6ȕ1  `066VV6rw6r@f@  P`Hm` J,b\h0-] (*?[hZ@ Usage: cpio -o[v] archive %s %s cpio -i[dmrtuv] [pattern] /*/dev/ttyr/dev/ttywOptions must include o|i|p <%s> ? %s TRAILER!!!TRAILER!!!Cannot write. Cannot link <%s> & <%s> <%s> ? Cannot write. %l blocks <%s> ? Out of phase--get help (or try `_cpio' for old format) TRAILER!!!Rename <%s> Skipped ...Cannot mknod <%s> current <%s> newer current <%s> same date Attempt to pass file to self! Cannot create <%s> Read error Cannot write. %s linked to %s Cannot link <%s>&<%s>. Out of core for links %-7o%-6s%-6s%-6d%7D %s %s */bin/mkdirmkdirmkdir <%s> failed /etc/passwdrrdXodx&f4e"gcs2l2LzuLr~D\OhXU(null)Reading bad file /'-'.'.'corrupt arena //'writing  7  %ewp((M:/PSTPDTDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec> crt0.ostartcpio.o~mainargcargvctfileszfullplastarg~getname,namep~gethdrL~cknamenamep~openoutznamepfnpv~bread fctbnleft4ip4~bwrite frpc~postml| namepiml4mlinks#~pentry namepilastid#nbuf 6tbufp6~gmatch spcccoklcscc~umatchsp~makdirnamep~set_tim*namepatimemtime timevec6alloc.oh~allochnbytesfgets.ox~fgetsxsniopccsfprintf.~fprintfiopfmtargsgetpw.o~getpwuidbufpwf6ncbpgets.o~getssccsprintf.o~printffmtargsputs.o~putsscstrcat.oP~strcatPs1s2os1strcmp.on~strcmpns1s2strcpy.o~strcpys1s2os1fopen.o~fopenfilemodefioprew.oN~rewindNiopdoprnt.o~formp6looprjust6ndigit6zfill6gnumwidth6ndfnd6swtab&prbufVdecimalroctalXhexdfloat&scien4general"characstringlongorun2unsignedzremoteLlong~loct\lhexhlunsignecomputenulstr'prstrXfilbuf.o~_filbufiopsmallbuf6strout.on~_stroutnstringcountadjustfilefillch error.o~_errorsreentere6fltpr.oPmalloc.o~mallocnbytesnbpq~freepexit.o&~exit&rtrn_cdfpstrlen.of~strlenfsndata.o~flsbuf.o~~_flsbuf~ciopnbasec1egttybuf6~fflushpiopbasen~_cleanuiop~fcloseiopgcvt.o*~gcvt*numberndigit bufsigndecptp1p2iitol.oVaccess.o`~access`statbhuidhownameutime.o~utimefiletimechmod.ochown.oclose.o6creat.oLexecl.ojfork.ogetgid.ogetgid/getuid.ogtty.olink.omdate.omknod.omknodopen.o8read.oVsbrk.oxnd.(seek.ostat.ounlink.owait.o write.o@nargs.objsrsdF(tstiJ(cmpiL(addiN(jmpiR(briV(ctime.o~ctimeat~localtictdaylbegittimdaylenddaynocopyt~sundayatdtad~gmtime tptimd0d1xtime6~asctime cptptncp~dysize!y~ct_numb!cpacpncsv.o!cerror.o"_exit.o "ecvt.o*"eflag7buf6sign7zer"one@lss"gtr"buftop7tenth(epsilonL>ten Bpad"digit1#digit"out #outoutB#ldiv.od#dpadd.o#savr5$4_exit"&_main"_Statb$(_Xstatb$ )_Hdr$0)_Buf$J*_Wbuf$J,_Wp##_Wct##_Option$J._Mod_tim$L._Dir$N._Uncond$P._Always$R._Link$T._Rename$V._Toc$X._Verbose$Z._Select$\._Ifile$^._Ofile$`._Blocks$b._Fullnam$d._Name$d/_Rtty$/_Wtty$/_Pattern$/_Dev$/_Uid$/_Gid$/_A_direc$/_A_speci$/csv"!__iob#D'_fprintf"_getuid"_getgid"_access"`_strcpy"_strcat"P_stat"_fopen"_getname",_bwrite" _open"8_read"V_close"6_strlen"f_gethdr"L_ckname"_openout"z_bread" _write"@_set_tim"*_pentry" _puts"_unlink"_link"_itol"Vcret""_gets"_strcmp"n_gmatch" _fflush"p_fgets"x_printf"_makdir"_chmod"_chown"_postml"| _mknod"_creat"L_alloc"h_getpw"_ctime"_umatch"_fork"_wait" _execl"j_utime"_malloc"__filbuf"__doprnt"~_rewind"N__flsbuf"~__lastbu#'_seek"pfloat"ppscien"pgen"P__strout"n__error"__exit" "fltused"P_ndigit#(ecvt"h"fcvt"b"_gcvt"*_BLOCK#*'_allocs#,'_allocp#0'_alloct#2'_allocx$/_sbrk"x_free"_fclose"__sibuf$/__sobuf$1_errno$3_gtty"__cleanu"_ecvt"*"_mdate"cerror""_par_uid$6_end$7_brk"_nargs"b_cbuf$3_dmsize#X(_timezon#p(_tzname#r(_dayligh#v(_daytab#x(_localti"_asctime" _dpadd"#_gmtime" _sunday"_dysize"!_ldiv"d#_ldivr$7_ct_numb"!_fcvt"@"_lrem"v#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 @ Wt 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 @&  @        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  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 _  %   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@ 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 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  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@@& HADCB23456789;F7FfA7z 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 Ux & 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  L5f  ^ 5 &5f _@_f  &  %_ 5u+ f  f~f @f V &f @f , &f N  5% N   |@f+f @f  &6_V2f @f  &x_V8f @f ` &T_V?f #5 -@t5@@me5 @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  @&@ @&@ 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 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 % |  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 ht&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   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 <=>?@ABCEFG 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 @& HADCBFw B 5  ʥ ʥ ʥ- ʥ9 Wp @@`eʥ0  w7F-]j L *?[ 6 +Insufficient args Odd usage Missing conjunction -o-aoperand follows operand. !()-print-name-mtime-atime-userCannot find user "%s" -group-size-links-perm-type-exec;-ok;Bad option: "%s" "%s" %s. %s %s ... %s ...? ;{}/usr/bin/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/etc/passwd--bad status %s --cannot open %s --cannot read %s ...--%s ~doxfecsl,r  %ew8 & 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  t CC-5~f %"N  h %d N  X R    w: 4 ~`5”%  %  ~ &   !˥œ &  ԋ &  ԋ _N _w  DC O x wtԋ̋& % ` & % ԋԢ  & % ` &   ! w DCË wԠ@~ w  vNf  ^ 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~ w7   0   Wp `e0eӕ?fj ,`P V P @f 4  7" l - f@w f@)wfwwrwf@w~wzxwf@f&CB  ԕ-  e0fv   vA W  ~@& HADCBF7FbcnvX^dRj$*.[\&fl`X*pDp$jUnknown flag RE error Can't open %s %s:%s RE botch %s:%l:%s:%s dPoJxfe(c6slr  bis $340,PS mov nofault,-(sp) mov $err,nofault mfpi (r1) mov (sp)+,r0 br 1f _suiword: _suword: 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 .globl _kdword _kdword: mov 2(sp),r1 /the address jsr pc,1f rts pc 1: mov PS,-(sp) bis $340,PS /spl HIGH mov nofault,-(sp) mov $err,nofault mov (r1),r0 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)+,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 7w݁ W _     0 2&r* >v 0 & PeEդ  )etE7| E @qeT~5 b  ڀ`e  7 6 @ڑ  " tU we 5 &    7t~ڂ!z@.@n(,*, ( "  &unix f fff . ew5 5 5 5 %A %Z e 5 %e%f  %o%xDe5 5 @ @ EN % % % %-5 Ԑ@ @ EN  1 A@  5u%_ N  r = _ %+ @ _ @ E %0%98%)%._\ %e%E %    Ԑ@ _v @ Ee%a%f%A%F %A@v% A@v@mAm@ vA@v5u%0%90 %a%fW7 5`u`u C"% _ _ N %+ %- %0_ %9_ Ԑ@ _: N _H  @e! _   ff@} Ne =Ne =_ w DC = 5%c%0u5 %s E  rH%%c5 %[ rH  E   % r =  D- %cw w D ̥^  HH %E%]  HH  wd w R Dp-x wJ e̥wf !̥af  f  &  % f   ̥rw DC     w w ~ @ww~w zw wh w V wDCB %w@ f& & e w 7 v7 v rׯf- ^ \ׯV0TUVWPQRXYZ[\]^_`abcdefghij(< & 6  lw _0%@&  5 @ P le p%  lNPfe$ %  ^  lfe$ % Netfefe$ e~tW/fet @ 5" "  ^  l=" "Neu d5 Net ^% l@ fe  fe V N"fe V Nefet  fet  5 Net P lNfet  Nf 8 NPfe$ % fe$ t  ^  l lw>_ w :NPfe %   l@eE5 @e5 Nff %ew8Tw _@eEtAAeEWt@P5@eEtAAeEWt@P5@eEtAAeE@P5%@ @ HNf  %@ @ HNf  %@ @ HNf  w_w .5 u-#@ @ EN 5%@ @@mH @ww DC ̠ԋ ww t X  f t  wVw BE ^t- w&w    &  zeww    7 ww l  ,   7 _%  Et %   ?%@&Ԑ %7T  7J   7:   7*  7$  7  7  77 %ww D̥:̋ ww DB  E  Ґ%  B- w@w zNfef %wpw ^@D %  DEN & A@ f&@& Ze@0  @ @ EN @@ N ff@& Ze. `ww 3f , 6 , J- B 8 &J , 8 , F , w.w xfef %ww Nefp 0TwB7 D .|w8Bw: J  d_Z   o x d u        ӕ- f&Ew ӕ0 N r@A r  f  e0 9e' ) ':4ҋ D~   7w:  ff 2e w 7   0   Wp `e0w  D< `@w  \4 eN&4 && ,%4 % 4 E w fD - -  N `  |w6w $DCB &  z f   ̥-%0  : :  &   z f   ww xD   & %~ lwT& & e Ӌ 7    ӕ- ӕ0B~ ӕ.  ӕ0~ B~7    ӕ-ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw |DeE 7 T 5 5a a KE - %X` %} l % φmz t @@7  N% w\ X e UJ m e 7: Y4 a7(     U ew @e7Ew~w lp%@N eN wB w ,D  ԋw&w D `ufe& %4 D*%x d&  w ## \ & %R  wD@w ,DE%& %  ww p e-ww D   T4 ?4  ww Nefef 5& be C ӕ-B  @@ % :%6 ӕ. `ȥ0  B- ӕe @ 5ӕ-ӕ+A r e0A r e0@* ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.@wfw TDCB ԋ wD@w $Wf&  C% - 0    0  ~ 5  ע- 0 Wp `  BW@ &  W B~  VVwf\ B@efwxwtw f@w fwHwD"whf@w,(wL fww,w,f@ww2w fwm8wwmfw8ww f@ww>w f@w~wzDw|@& HBFw B 5  ʥ ʥ ʥ- ʥ9 Wp @@`eʥ0  w7nFf5w P * f5w : }7  W&fl& 7 @% @A&@&7@L> Be0# @l&є &    BA   W &e B@e0l&mx H ` l&eȐ9 ȕ0 l&ȕ1  @  `0l&l&VVrUsage: uudecode [infile] No begin line begin begin %o %sIllegal ~user No such user as %s /wend No end line Short file /etc/passwdrfseek :unknown error  %  scanf >vd\ohx*f8e&gc s6l6L~uPrD`OlXU(null)Reading bad file ungetc [YZZcorrupt arena !!writing  &  / ? K ] m  !!!5!F!U!d!|!!!!!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 directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken Pipe> crt0.ostartuudecode~mainargcargvinoutmodedesttbuf$sl"user dnbuf~decode8inoutbufbpn~outdecpfnc1c2c3~frfdbufcntci~index@spcgetpwentd~getpwnadnamep~getpwuiidp~setpwen~endpwen~getpwenpcpasswd%line%~pwskipappfgets.o~fgetssniopccsfprintf.^~fprintf^iopfmtargsfseek.oz~fseekziopoffsetptrname nresyncperror.oP~perrorPsprintf.o~printffmtargsscanf.o~scanffmtargs~fscanfiopfmtargs~sscanfstrfmtargs_strbufstrcat.oV~strcatVs1s2os1strcmp.ot~strcmpts1s2strcpy.o~strcpys1s2os1doscan.o~_doscaniopfmtargpchnmatchlench1ptrfileende~_innum ptrtypeleniop eofptr npnumbufcbaseexpseenscalesizenegflgc1ndigitlcval~_instr. ptrtypeleniopeofptr choptrignstp~_getccl(sctfopen.o~fopenfilemodefiopfputs.o,~fputs,siopclseek.oZlseek>indirdoprnt.oformpD&looprjustF&ndigitJ&zfillL&gnumwidthB&ndfndH&swtabprbufZdecimalvoctal\hexhfloat*scien8general&characstring longorun6unsigned~remotePlongloct`lhexllunsignecomputenulstr4prstr\filbuf.o~_filbufiopsmallbufN&ungetc.or~ungetcrciopstrout.o~_stroutstringcountadjustfilefillch error.o`~_error`sreentereb&fltpr.omalloc.o\~malloc\nbytesnbpq~freeTpexit.ol~exitlrtrn_cdfpstrlen.o~strlensndata.oflsbuf.o~_flsbufciopnbasec1egttybufd&~fflushiopbasen~_cleanuiop~fcloseiopgcvt.oX~gcvtXnumberndigit bufsigndecptp1p2istrncmp.~strncmps1s2n_exit.oatof.odigitone@outvhugeten Bbig\chmod.oclose.ocreat.ogtty.oopen.oread.o,sbrk.oNnd<seek.owrite.oerrlst.ocsv.oatoi.o~atoiapcfnpcerror.oTecvt.obeflag&bufl&sign&zer one@lssgtrbuftop&tenth!epsilonL>ten Bpad"digit18digit*outBoutoutzsavr5$%_exit"l_main"csv"_fopen"_perror"P__iob#p_printf"_fgets"_fprintf"^_strncmp"_sscanf"_index"@_getpwna"d_strcpy"_strcat"V_chmod"_decode"8_strcmp"tcret"_outdec"__flsbuf"_fr"__filbuf"__pwf$!_setpwen"_getpwen"_getpwui"_fseek"z_endpwen"_fclose"_pwskip"_atoi"__doprnt"_lseek"Z_fflush"__error"`_fputs",_errno$!_sys_ner#_sys_err#J_scanf"__doscan"_fscanf"__sctab#H__getccl"(__innum" __instr". _ungetc"r_atof"fltused"__lastbu#_creat"_open"_seek"cerror"Tpfloat"pscien"pgen"__strout"_malloc"\_read",__exit"_strlen"_write"_ndigit#!ecvt"fcvt"_gcvt"X_BLOCK#V_allocs#X_allocp#\_alloct#^_allocx$!_sbrk"N_free"T__sibuf$!__sobuf$#_gtty"__cleanu"_close"_ecvt"b_end$&_brk"v_fcvt"x\  & 6  w [%@& ^ 5 @  e ^% B Ne@& , @E5@f B%ff  B wp(w Xc-fef l%5@ @  AEe `HN @Ee &` 2 5 u-N@@me&  e@ @ ȕ N 2 w Tw _d@t5@tEAAWtE@P5@tEAAWtE@P5@E5@ @  AEe `HN @Ee &` 2 @ @  AEe `HN @Ee &` 2 @ @  AEe `HN @Ee &` 2 @ @  AEe `HN @Ee &` 2 w _w .5 u-#@ @ EN n5%@ @@mH @wv w ^ 3nf  n  -r n &6  n  n  w w ffef 2%w w D^-  w e̥wf !̥af h f  &  % f h  ̥rw . DC    2 w w wxDpCB %w`@ f& & e w 7 :7 : 6ׯ*- " ׯ00w7  .|wBw: J "_   o x d u        ӕ- f&Ew `ӕ0 N r@A r  f  e0 9e' ) '*ҋ D~ >  t7w:  ff e w 7 ~ t p0   \Wp `e0w D2 @w 4 e4 && %4 % 4 E w DCB & 2 z f 2  ̥-%0  : :  & 2  z f 2  wvw dD    & %~ w@& & e Ӌ 7 |  ` ӕ- ӕ0B~Z ӕ.  ӕ0~ B~78 .   ӕ-ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw hDeEl7 5 5a a KE -8%FN %}  v %p φm  @@7Z  % we Um* e 7Ga7  U ew p@e7xEwjw X^%@N eN w. w D  ԋww D ufe& %4 D*%f&  J w   & %R  w0@w DE%& %  ww ^ e-ww D    4 ?4  w~w lNefef 5& `e C ӕ-B  @@ % :%6 ӕ. `ȥ0  B- ӕe @ 5ӕ-ӕ+A r e0A r e0@* ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.@wRf@wJ fww w*f@ww f@ww fwwwf@wwwfxtwmn$wbwm\fwL$wnw> f@w.w**wD f@ww 0w @& HBF7ZFf5w > * f5w ( }7 n f W&f 7 N @% B @A&@7@L> Be0klmnopqrtuvwxyz{# @є     BA   W e B@e0mf ` eȐ9 ȕ0 ȕ1 . `0VVrUsage: uuencode [infile] remotefile begin %o %s end :unknown error &d oxfegcslL.ur2DOXDU(null)Reading bad file IGHHcorrupt arena writing   z +7IYkt !2APhu!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 directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken Pipe> crt0.ostartuuencode~mainargcargvinsbufmode~encodeinoutbufin~outdecpfc1c2c3c4~frlfdbufcntciperror.o~perrorsprintf.oB~printfBfmtargsfopen.o^~fopen^filemodefiopfputs.o~fputssiopcdoprnt.o2formploopDrjustndigitzfillgnum:widthndfndswtabprbuf decimal&octal hexfloatsciengeneralcharacstringlongorununsigned.remotelong2loctlhexlunsigneDcomputeLnulstr*prstr filbuf.on~_filbufniopsmallbufstrout.o"~_strout"stringcountadjustfilefillch error.o~_errorsreenterefltpr.o malloc.o ~malloc nbytesnbpq~free pexit.o ~exit rtrn_cdfpstrlen.o ~strlen sndata.o2 flsbuf.o2 ~_flsbuf2 ciopnbasec1egttybuf~fflush iopbasen~_cleanud iop~fclose iopgcvt.o ~gcvt numberndigit bufsigndecptp1p2i_exit.o close.o creat.ofstat.o,gtty.oJopen.ohread.osbrk.ond(seek.owrite.oerrlst.o6csv.o6cerror.oRecvt.o`eflag bufsignzer one@lssgtrbuftoptenthepsilonL>ten Bpad digit16digit(out@outoutxsavr5$_exit" _main"csv"6_fopen"^_perror"__iob#^_printf"B_fstat",_encode"cret"D_fr"l__flsbuf"2 _outdec"__filbuf"n_fputs"_errno$_sys_ner#x_sys_err#6__doprnt"2__lastbu#_creat"_open"h_seek"pfloat"$ pscien"r pgen" __strout""__error"_malloc" _read"__exit" _strlen" _write"fltused" _ndigit#ecvt"fcvt"_gcvt" _BLOCK#D_allocs#F_allocp#J_alloct#L_allocx$_sbrk"_free" _fclose" __sibuf$__sobuf$_gtty"J_fflush" __cleanu"d _close" _ecvt"`cerror"R_end$ _brk"_fcvt"v/usr/mdec/rauboot 9700 200 d--777 3 1 $ /usr/mdec/rauboot 17300 400 d--777 3 1 $ /usr/mdec/rauboot 2667 60 d--777 3 1 $ /usr/mdec/uboot 800 40 d--777 3 1 $ /usr/mdec/uboot 600 20 d--777 3 1 $ ._..mdecconfkendmrparam.hkwlp; br6 kwlp; br6 . = 114^. trap; br7+7. / 11/70 parity .if xy . = 120^. xyou; br5 / xy plotter (120) .endif .if ra . = 154^. raint; br5 .endif .if rl . = 160^. rlint; br5 .endif .if ic . = 170^. icio; br4 / pdp8 interface (170) .endif .if ir . = 174^. irin; br4 / digitorg interface .endif .if lp . = 200^. lpou; br4 .endif .if tc . = 214^. tcio; br6 .endif .if rk . = 220^. rkio; br5 .endif .if tm . = 224^. tmio; br5 .endif .if cr . = 230^. crin; br7 .endif .if pir . = 240^. p...l.sf23.s...main.cprf.c / Copyright 1975 Bell Telephone Laboratories Inc / low core br4 = 200 br5 = 240 br6 = 300 br7 = 340 . = 0^. br 1f br7+10. /random trap / trap vectors trap; br7+0. / bus error trap; br7+1. / illegal instruction trap; br7+2. / bpt-trace trap trap; br7+3. / iot trap trap; br7+4. / power fail trap; br7+5. / emulator trap trap; br7+6. / system entry . = 40^. .globl start, dump 1: jmp start jmp dump . = 60^. klin; br4 klou; br4 .if pc . = 70^. pcin; br4 pcou; br4 .endif . = 100^. 5 .endif .if dup . = 320^. dupin; br7 dupout;br7 .endif .if dz . = 330^. dzin; br5 dzou; br5 .endif .if dz2 . = 340^. dzin; br5+1 dzou; br5+1 .endif .if dz3 . = 350^. dzin; br5+2 dzou; br5+2 .endif .globl CSW .if 1-ad .if 1-csw . = 400-2^. CSW: .+2 173030 .endif .endif .if ad .=400^. adin; br5+0 aderr; br5+0 .if 1-csw CSW: .+2 173030 .endif .endif .if csw CSW: 177570 .endif .globl _lks .if ltc / simulated location for 11/23 line freq clock _lks: .+2 . = .+2 .endif .if 1-ltc _lks: 0 .endif ////////////////////////////////////////////////////// / interface code to C ////////////////////////////////////////////////////// .globl call, trap .globl _klrint klin: jsr r0,call; _klrint .globl _klxint klou: jsr r0,call; _klxint .if dup .globl _dupxintr .globl _duprintr dupin: jsr r0,call; _duprintr dupout: jsr r0,call; _dupxintr .endif .if pc .globl _pcrint pcin: jsr r0,call; _pcrint .globl _pcpint pcou: jsr r0,call; _pcpint .endif .globl _clock kwlp: jsr r0,call; _clock .if lp .globl _lpint lpou: jsr r0,call; _lpint .endif .if tc .globl _tcintr tcio: jsr r0,call; _tcintr .endif .if rk .globl _rkintr rkio: jsr r0,call; _rkintr .endif .if cr .globl _crint crin: jsr r0,call; _crint .endif .if xy .globl _xyint xyou: jsr r0,call; _xyint .endif .if ic .globl _icint icio: jsr r0,call; _icint .endif .if ir .globl _irint irin: jsr r0,call; _irint .endif .if dz .globl _dzrint,_dzxint dzin: jsr r0,call; _dzrint dzou: jsr r0,call; _dzxint .globl _dzaddr _dzaddr: 160100 /first dz address .endif .if tm .globl _tmintr tmio: jsr r0,call; _tmintr .endif .if rx2 .globl _rx2intr rx2int: jsr r0,call; _rx2intr .endif .if hm .globl _hmintr hmin: jsr r0,call; _hmintr .endif .if rp .globl _rpintr rpin: jsr r0,call; _rpintr .endif .if pir .globl _pirint pirin: jsr r0,call; _pirint .endif .if rl .globl _rlintr rlint: jsr r0,call; _rlintr .endif .if ad .globl _adrint, _aderr adin: jsr r0,call; _adrint aderr: jsr r0,call; _aderr .endif .if ra .globl _raintr raint: jsr r0,call; _raintr .endif CPUTYPE = 23. .fpp = 1. / Copyright 1975 Bell Telephone Laboratories Inc / machine language assist / for 11/23 or 11/34 / non-UNIX instructions mfpi = 6500^tst mtpi = 6600^tst wait = 1 rtt = 6 reset = 5 halt = 0 / locations HIPRI = 300 .globl CSW .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 .if .fpp mov $20,_u+4 / FP maint mode .endif jsr pc,*(r0)+ tstb _runrun beq 2f .if .fpp jsr pc,_savfp .endif jsr pc,_swtch 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)+,fr1 movf fr1,fr5 movf (r1)+,fr1 movf (r1)+,fr2 movf (r1)+,fr3 ldfps r0 2: .endif bis $340,PS 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: .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 _display _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 $2f,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 $40,PS / spl 6 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)+ / lairin; br7+7. / programmed interrupt .endif . = 244^. trap; br7+8. / floating point . = 250^. trap; br7+9. / segmentation violation .if hm . = 254^. hmin; br5 /hm interrupt .endif .if rp . = 254^. rpin; br5 /rp interrupt .endif .if rx2 . = 264^. rx2int; br5 /floppy disk interrupt .endif . = 300^. .if dl klin; br4+1 klou; br4+1 .endif .if dl2 klin; br4+2 klou; br4+2 .endif .if dl3 klin; br4+3 klou; br4+3 .endif .if dl4 klin; br4+4 klou; br4+4 .endif .if dl5 klin; br4+5 klou; br4+st 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 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 $40,PS / spl 6 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 _cf$_rawtab$_rainit"l_ragetcp"u_rastart"m_rarsp"r_raerror"treelist,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: 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 asl 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], 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: / MN*+,NFGcmp t03: / bit t04: / bic t05: / bis t06: / add t16: / sub clrb bflg t11: / movb t12: / cmpb t13: / 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 incremented, / 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, _suword .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) $_rawtab$_rainit"l_ragetcp"u_rastart"m_rarsp"r_raerror"t EUPEIUUEIEU EUE@UE U 0lr@7Br@7e R ~0 vtlh   P ~PJhbT0H$  & C~*mH plH Hb  W W @57$PPR`0  ȋ `5^%P a~ytE h  :  0l X& X 6r 6r@@A6v@@&& HADCBFw 7 {mx " m  me'%( D (  -h{7b{v 3% 25    r x " {  7{e r x " hnbn> 3% lzzzzFM M I ~n  7yyn  7   X  & & r e& x % Dwjw X fzv %4`7d %* %wDxV76 %x @@x "ww 2 %(k`#%%(dk #5 %wnw \ %(2kN  %N  &f p e% _ N  &f F &f : ee%@@m@me-x je%  @teU   %ze% @teUDm  %z   %Dm#%  @tU"e# jz%z% ww @etww r\  5Nx "  \ e@- Nfx "%5!wZw Hjjt v%j ZO  |Qyy & #% P7v@jv4447 v7vww N ve   K  `5ANf %  !Nf ZO de #% P2e Nf |Q  R w2 2 Ny > M w N v&e  Nf& % = 4 %d#Nf |Q d&e #%4  NP4e  ap w4w "DCe - Ny > w w N v 7ww 7N^7H]7B/7<o  LJ>7&2 EfF E50!  B 5 @@QDQEQ@UR U0F % 5 Q 2pv Er bI 2 UE BE   5 e E~~1 rdUZE TB ~~  5 ~~  2 H(  v ` f EAy ` ֵڵ NtExld7@Exdddd555@EWtU& @ U7N@D7F@t z@ r525/E*@tEy m5 5 5 5&e \e V55 %Ŵ&EPtE5 5   ЇEztH lfE Bv EE (&v  6  UI  UڳԳ& ̳ U@nd  P ~ & ~r d&  NHv&e  *  a5Nf   e e w   5 5 KNef ZO 5 @ ` %5 @tp-|@tp-~ %2 ap%de% P%d 5#4e  N)y > _2w N v%d  apwjw X L-%d%d N7y > 4 4  e%ڂAy w w rS r *#  |Q 4qq& #% NPe%΂z̵   & % 8e %7    & % 8 4  8ww BʵN vGe5f   ZO 5f  tA@lee ʵT@eʵTeTN NPw:w (D5 pe5[ U5HN& ZO e5 1e@-%& ZO 5e5  N&  @p- P&  ,ȃ PN&  = e@-E4 4 wBw 0ª @U4n i  ww @7lZHԔ%V>.X0V pN ww Ce 0 B %%B %d%l%o %o   %s ewJw 8Nf  N&  Nf  e0 w w D p5 2 2%   ww wxNZy " w  @!  wNey " @@&ly "%:wy " ˥ra˥rra@ty " @Eea @y "   ww D y > N&y "%ww B _lE% Wp v _lB  55E5N  E%`# &E eH  N ! 59@ 7k @- kf& O%N& ZO 5rff eN PӦ ֦wpw ^BE% Wp v _ _B  E5rN  5E%`  ! X%& |Q& ZO 5 fff eN P 5N PN Pڥԥ &E e 5 򝮥   w0w u-@w@w u-@w@w C@Dm:*Q]85# &$ & %jw`B |    "  6# w L )  %7 zt̕t h7h     wt̕t D bw C  *e~ww D4 ̕xh"ejh 7^h w~w lң r2% e reed`%h dw*w  g  ̥  5e%%g $D mv 3 I E%̥.̥+e%%E%̥̥ 5e%%D  & #%_@ && 6Te ,m D&& 6Te  e r&> 3% 4_y ww n КȚ Nf "7b7 e%ʥ  ~ tn de "  ww 5 7 e e e̋ 5-|ee%Dy ̕:e 4 Q% @0 @  D7jCB v 3 5˕t   & & #%˕ w t  N f  w v؟5t u- NmfNv 3%? Nv 3  N& #%  5  Nm  u-fv 3% " ww @55S@5/5LN C5 @ @m@ @m0  %@0 P@U@t55@ @mBN 0 w@ @mN  P@ @m7 b%@ @m7b@ @m0f ZO %4@tEe5 `N 5 P@ `AH P  Pf ZO 5D@E5 `N 5@ `N P P P7 a%@ `7aw    wz@Μ  j w H ğ  Ew*|~ jiw ]ww ww DCB~ww D 5e r & % f&  6Te y    fv 3% 44`7.` wNw < 0  %& z& w"w  _%  e %z t-B0Zy 4 te?tEe r & e X  & & r ehܚښ7 КN 8š  e& 6Te3C  X    h #%^ x ww D  &v 3%ww N> 3 wy "   z& e %zN> 3 y w TCt=3 e r&> 3%  ww @E%U@e 7.@  xy %*  = e*z "BOLz " NeVz " `z " y @a fz " % jz "Nlz " zz   0*   \ w6 fz "%Ne %  z7; $  _ )ENe E|7te{%{1N e E?%?E|7te{ "e  1  N  1e " Z)CQdKE_'U55 _' _'RX 0* _'8X_'Cڗ   l, _' _'w t  7whw VdwZw HwRw @ z " $z) 'tE&z "e  Nz "%Je%Uww t-N& 0* e%ww D t̥d̕d̥ *ww nԕĜ  6Ĝ  3(e    5w0w  ˕   d% , e% ww 62 57%% 0 e l,Е&e 8 & 8 0E xz70  entQ7 w&w 7u{6 ~4  Y w  \2 - 7 87 6*& pe & && r e7 t77 p ӓw bb t@-@@ &  >e 4.`& r e  wt` X d \@l &    D `w R̥ -0-  e%ג: Rc  7:c:cBE7,c8$c  *  ccX bm7 b ww Z-b wb7 b  _/ x{b %_/b 7bb %gtb jb_%\ 7Xb Nb 8 MBb-TT-SS 5S6&   N X w X n ` &      Dw  "@ww  "@ww C &1>̰ 8~7̵ % Z7  777% 8 p4&e |  ?dw*w  6 ~4  % & :A%ww 6 ~4 3@ A @@E & :A%ww CB%#5 \2 5 \2 E%@ 5 ~~'   8 E PE 1 ]~ @ 0  ww  &1 0  P1ww ~ &1D̵}=~%~t 5t~t5%E Z~5    x|5mfe | ttw( E5` w 8~ &1/̵E}(}}} + x|5mfe | ?}}0ttw E5` j|w d 6 ~4 DE%|6E%@ f +}|6 ~4 k| a||0- G|  ww 6 ~4  |||@ |A @@ || ww r ??|fe | ??ff e  w8b?\?^?X? e NfB?v]uww Ru?&vww ڽ ww νÝv v  v`%7uuww 6 ~4 6 8u  | E%@ tXtt7 t p  w&w  6 ~4 E%@Ut @& \2 Ht 7@t 8wмw EtEttE4P ww  ~jt t^t Ut  wZw H D1Cet     B7@7Dt@tNefe& % ww һs%%s ?s s7 s s!%sr0ww 5 sr &  ! ,%Ԅ%r%Ԅr7r s& 0* e%ӂ orww Ts!.s ZN(s ZN ZN4s ZNs ZNs ZNs ZNs ZNwƺ %  x|rr 8 er r  w tNbr 8 eVrwjw XLr e@rwRw @2rE7zr(rvr$rrr r E7frw$w r^rww Z  w Vq(r?"rww ֹ(rqE7r?rw̹w q4-4-4Wpd r7p-| &e 8 %ww tNf |Q 5wfU &@t v  xRw 2B N BQ N |Q 5 U &@t v #N BQ N |Q 5 P U @t v N ZO w xRw DE & t v 5 xR P5 VwJw 8D tv%% PU Pww DU NPww D5@ 5@>E@ > 5  >EH0 ww D@tv s-3! wp  w R@-2<|  ƴ%r=<U@d=  @tv|  t-t-  n5U@& 4 Rwʶ < R5U NP0003t tw VD ޳&  5  Vw:w (D 00Uw w DU5 PE@ ww е@ ~wʵw 7;7;7;7; WpDe Wpeؐt;;07; P % v @ e :w2w DCL @ tEWt@PUA5UUww ִDCL EtUA5U8U0ww  U@&  5@ U #`<@t 7T*e%B v e 7p6ww ~ C% e f_XDE%5 _X% 5  PW _X% 5 @  PW _X5j}ҋ !\ PW %a%ze% 5 PW e &  ae}5 E I xN}ʋDʊBtE5%ʋte&   %% tE5% U@%  e &U  w5@tE5%% w DE  VYww xB5  A5=5 9e *2% ,%U Ee>Y 0%E?^}7# y}E}E@xPww ֮D:f5 E  [   e * 6# ww D5 !+5   VYU@ &e  %d   PW   VY w4w "De * e * e  e  b \ * 4 $4 4 wʭw D 2"5   w5  PW  VYE U  &   ̪  * % % 5 5  5%\  Ü| |e\   %e  w ڬ DC  N EF%B% W4 4 ! E%EE %% Ve4 _EwPw >wHw 6Dc 0E U JPww D V5  ,P4 ww B%?cEWp&CeLueps" e%e 35 #@5 ce  %  \UcU@wXw FAWp&DeL \ 3 w2w AWp&eLN Yww AWp&eLN @Zww AWp&DeL VY % e wʪw AWp&BeL-5*5  *  ZE "5e 5 U ^ 0% U& a wWW4Wt0W "w>w ,W WfWW tW w w W &1E% OV&VVWp wewҞw @t E xN 7VeN 7VeN 7rV& f %wvDe&f %f 8 ef 8 ef 8 Uw D@t H xN 7UeN 7UeN 7U & rk * wȝBe& rk f 8 ef 8 ef 8 ZTTw \DC 3e ?zUw< V w Du% OT    %-T 0wΜx :%t< Wpeu% 5 @ @0@(Uj  t< %w .xl? .*5 rU14 ww D E5 et5  t%`@tu5 @tf&t 5u @m@-1WpCe 3034 ˋ3  ˕  \wU Rw ֚x b^7R w&  N& "% Z5%@% f@  WttAA @0 t2˕(U"25!"2 t2 EWtAm vf& EWtAm vEUU2 r"  vf&  vEUU2r22(Uh  3 303_nw x _tq x/ "_qE%  _q_q rU AE@ 0 _qE%@ Wp<`eL@Wt`1t` Wp<`@Wt`eppWp<`<H % Wp<`e,@Wt`1(t`@*Wp<`@Wt`e(pPWp<`<( %@1Ap3 3  5_p @@(UvE? " >b5 T " ? H  "2  r%t`U  rDt`5 3 2  wޖw ̖DCAWp<BaeH<E3`E% E% tw%E5 E7  y  7 Wpeu@0  wpw $2t3P & ( EEf&* vUUf&t @&  h "@5ApUN R2t3@ _Tr@Ap@ApWpeu%%52t3@ @Ap@p@p_Tr@0  r wj f pwZ _Tr  f  UvfvUf@ A1N R_Trq "_Trw DD & "% E t x " vb " ervf&vEUUf&& eP.,vf&.,vEUUf&&&&Ȁ Ƞe 1.,vf&.,vEUUf&&&&&&  &&; "e $  #f "ww x@t`*E?%@4@t`E@*AWp<De 44 4 4 444 4  4&4" A rrwp w Zfl .UewLw : fl .Uew.#####################k#ll\]]]^#####################################*__#`#`a8a######################################################################k#tvv#0x3x6x9x@@@A=@jC4K8KI DLHL$?EBJGHJDJI-NzENLiiDK\DJLMIx)x)xG6MNOJJLx)x)x)x)x)ix)x)x)x)8NLBNx) >= !"-$%&'()*+,-./012@@56789:;<@>?too many timeouts `111 ` 2L2X2no file BBBBB(CCHC0NJNunlink -- igetblkdevdevtab|`{}~ABCDEFGHIJKLMNOPQRSTUVWXYZXXZXbXXYY8Y@YYY({)}!|^~'`^^F__f_.```            ^D$$~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~zchbbcccc^eee>fXf>faffffffffggdld System down: panic jj*jkj`k`k`k`k`k`kXk%C% xiu$$%hoo pNpqq@`sTrrrpsps~ttt"u`uurasa %o stat %d ra: randm intr ra: intr in stat %d ra: fatal err (%o) OFFLINE ra: unknown pckt ra%d: %s err, softhardcntrl err ev 0%o mem err ev 0%o, addr 0%O dsk xfer err unit %d, grp 0x%x, hdr 0x%X SDI err, unit %d, ev 0%o, hdr 0x%X sml dsk err unit %d, ev 0%o, cyl %d unknown err, unit %d, fmt 0%o, ev 0%o %x trap"start"dump"CSW"_lks"call"X_klrint"^_klxint"]_clock"/_raintr"o_trap"&nofault$.ssr$0_runrun$h_swtch"`_u!_savfp"_display"_incupc"_getc"*_putc"_cfreeli$j_backup"_regloc#y_fubyte"_subyte"_fuibyte"_suibyte"_fuword"_suword"8_fuiword"_suiword"8_kdword"h_copyin"_copyout"_idle"_savu"_retu""_aretu"_spl0">_spl1"F_spl4"T_spl5"T_spl6"b_spl7"p_copymem"x_copyseg"_clearse"D_dpadd"|_dpadd2"_dpcmp"_end$:_edata#h_main"_halt"_sws"_ldiv"_lrem"_lshift"csv"cret"_ka6#v_cputype#vbadtrap$6_bdevsw#v_nodev"#_raopen"k_nulldev"#_rastrat"l_ratab$l_cdevsw#v_klopen"\_klclose"]_klread"]_klwrite"]_klioctl"^_mmread"*__mmwrite"__syopen"`_syread"`_sywrite"a_sysgtty"8a_raread"tv_rawrite"v_devname#w_rootdev#(x_swapdev#*x_nswap#,x_swplo#.x_canonb$v_coremap$v_swapmap$>_rootdir$_execnt$_lbolt$ _time$ _tout$_callout$_mount$_mpid$_runin$_runout$_curpri$_maxmem$_updlock$_rablock$_proc$_text$_inode$z_icode#x_printf""_testmem"( _mfree"3_min"_startcl"v _cinit"W_binit"S_iinit" _iget"_newproc"_expand"X _estabur"r _sched"_panic"_sureg" _nseg" _nblkdev$_nchrdev$_buf$_bfreeli$_bread"ZO_getblk"|Q_bcopy"#_brelse"P_alloc" _getfs"v_sleep"_badbloc"_wakeup"_clrbuf"R_prdev">_free"_bwrite"NP_ialloc"_iput"_ifree">_update"_iupdat"_prele"8_bflush"T_itrunc"_maknode"_wdir"_writei"p_panicst$&_putchar"_printn"_deverro" _readi"8_bmap"!_breada"O_iomove"_bawrite"P_bdwrite"P_max"_cpass"#_passc"6#_file$(_issig"`*_setrun"*_setpri"b_malloc"3_xswap"#_swap"6T_swalloc"&_xccdec"%_xfree"$_xpurge"z&_xalloc"$_sysent#{_paritye")_psignal"0*_psig"*_v7map#|_trap1"Z)_grow"l,_nosys"x)_nullsys")_parregs#$z_ipc$_signal"*_stop"*_procxmt"-_exit"<_core"+_schar"6_namei"~4_access"\2_ptrace"-_rexit"<_fork">_read"@_write"@_open"@_close"A_wait"=_creat"@_link"jC_unlink"4K_exec"8_chdir"K_gtime"I_mknod" D_chmod"L_chown"HL_sbreak"$?_stat"E_seek"B_getpid"J_smount"G_sumount"H_setuid"J_getuid"DJ_stime"I_alarm"N_fstat"zE_pause"N_smdate"L_stty"i_gtty"i_faccess"D_nice"K_sslep"\D_sync"J_kill"LM_getswit"I_dup"xG_pipe"6_times"M_profil"N_ftime"O_setgid"J_getgid"J_ssig"L_ioctl"i_umask"N_lseek"B_systrap"N_swbuf$_timeout"0_getf"&1_closef"P1_closei"1_openi"1_owner"2_uchar"6_suser" 3_ufalloc"(3_falloc"V3_readp"Z7_plock"8_writep"7_putstat"h_rdwr""@_open1":A_stat1"E_getmdev"I_fuaword"vN_suaword"ZN_timeb#|_buffers$ؐ_tmtab$_httab$_iowait"xR_incore"BQ_geterro"V_notavai"R_iodone"R_devstar"S_rhstart"S_physio".U_ttysope$_maptab#|_cfree$ _wflusht"V_flushtt"Z_ttyoutp"PW_partab#}_ttrstrt">Y_ttstart"VY_ttread"Y_canon"[_ttwrite"@Z_ttstop"\_reducq"[_cblkuse$J_ttyopen"\_ttyclos"\_kl11$L_kltime"^_ttyinpu"a_ttyioct"j_syttyp"ha_maxcbu$0_chrare#~_chtype#&~_cnnorm#~_cnucas#~_cnctrl#~_cnrub#~_cneras#~_cnrtyp#~_cnint#~_cnquit#~_cnnull#~_cncr#~_cnlf#~_cneot#~_cnbell#~_cnsink#~_cnesc#~_cnupro#~_cnalt#~_cnbs#~_cndelw#~_escno#~_escpp#~_escdd#~_bellno#~_bellpp#~_rawchai#~_sinkex#~_nochain#_escchai#._uprocha#6_bellcha#>_ttypani"g_ttymsg"Pg_stats$2_stopen"pg_stclose"g_stread"g_statput"Ni_iostty"j_ttystty"rk_ra_size#_RAADDR#_ra_soft$x_ra$_raerr#_radsize$_rrabuf$_rautab 2pv Er bI 2 UE BE   5 e E~~1 rdUZE TB ~~  5 ~~  2 H(  v ` f EAy ` ֵڵ NtExld7@Exdddd555@EWtU& @ U7N@D7F@t z@ r525/E*@tEy m5 5 5 5&e \e V55 %Ŵ&EPtE5 5   ЇEztH lfE Bv EE (&v  6  UI  UڳԳ& ̳ U@nd  P ~ & ~r d&  NH EUPEIUUEIEU EUE@UE U 0lr@7Br@7e R ~0 vtlh   P ~PJhbT0H$  & C~*mH plH Hb  W W @57$PPR`0  ȋ `5^%P a~ytE h  :  0l X& X 6r 6r@@A6v@@&& HADCBFw 7 {mx " m  me'%( D (  -h{7b{v 3% 25    r x " {  7{e r x " hnbn> 3% lzzzzFM M I ~n  7yyn  7   X  & & r e& x % Dwjw X fzv %4`7d %* %wDxV76 %x @@x "ww 2 %(k`#%%(dk #5 %wnw \ %(2kN  %N  &f p e% _ N  &f F &f : ee%@@m@me-x je%  @teU   %ze% @teUDm  %z   %Dm#%  @tU"e# jz%z% ww @etww r\  5Nx "  \ e@- Nfx "%5!wZw Hjjt v%j ZO  |Qyy & #% P7v@jv4447 v7vww N ve   K  `5ANf %  !Nf ZO de #% P2e Nf |Q  R w2 2 Ny > M w N v&e  Nf& % = 4 %d#Nf |Q d&e #%4  NP4e  ap w4w "DCe - Ny > w w N       !"#$%&'()*+,-v 7ww 7N^7H]7B/7<o  LJ>7&2 EfF E50!  B 5 @@QDQEQ@UR U0F % 5 Qv&e  *  a5Nf   e e w   5 5 KNef ZO 5 @ ` %5 @tp-|@tp-~ %2 ap%de% P%d 5#4e  N)y > _2w N v%d  apwjw X L-%d%d N7y > 4 4  e%ڂAy w w rS r *#  |Q 4qq& #% NPe%΂z̵   & % 8e %7    & % 8 4  8ww BʵN vGe5f   ZO 5f  tA@lee ʵT@eʵTeTN NPw:w (D5 pe5[ U5HN& ZO e5 1e@-%& ZO 5e5  N&  @p- P&  ,ȃ PN&  = e@-E4 4 wBw 0ª @U4n i  ww @7lZHԔ%V>.X0V pN ww Ce 0 B %%B %d%l%o %o   %s ewJw 8Nf  N&  Nf  e0 w w D p5 2 2%   ww wxNZy " w  @!  wNey " @@&ly "%:wy " ˥ra˥rra@ty " @Eea @y "   ww D y > N&y "%ww B _lE% Wp v _lB  55E5N  E%`# &E eH  N ! 59@ 7k @- kf& O%N& ZO 5rff eN PӦ ֦wpw ^BE% Wp v _ _B  E5rN  5E%`  ! X%& |Q& ZO 5 fff eN P 5N PN Pڥԥ &E e 5 򝮥   w0w u-@w@w u-@w@w C@Dm:*Q]85# &$ & %jw`B |    "  6# w L )  %7 zt̕t h7h     wt̕t D bw C  *e~ww D4 ̕xh"ejh 7^h w~w lң r2% e reed`%h dw*w  g  ̥  5e%%g $D mv 3 I E%̥.̥+e%%E%̥̥ 5e%%D  & #%_@ && 6Te ,m D&& 6Te  e r&> 3% 4_y ww n КȚ Nf "7b7 e%ʥ  ~ tn de "  ww 5 7 e e e̋ 5-|ee%Dy ̕:e 4 Q% @0 @  D7jCB v 3 5˕t   & & #%˕ w t  N f  w v؟5t u- NmfNv 3%? Nv 3  N& #%  5  Nm  u-fv 3% " ww @55S@5/5LN C5 @ @m@ @m0  %@0 P@U@t55@ @mBN 0 w@ @mN  P@ @m7 b%@ @m7b@ @m0f ZO %4@tEe5 `N 5 P@ `AH P  Pf ZO 5D@E5 `N 5@ `N P P P7 a%@ `7aw    wz@Μ  j w H ğ  Ew*|~ jiw ]ww ww DCB~ww D 5e r & % f&  6Te y    fv 3% 44`7.` wNw < 0  %& z& w"w  _%  e %z t-B0Zy 4 te?tEe r & e X  & & r ehܚښ7 КN 8š  e& 6Te3C  X    h #%^ x ww D  &v 3%ww N> 3 wy "   z& e %zN> 3 y w TCt=3 e r&> 3%  ww @E%U@e 7.@  xy %*  = e*z "BOLz " NeVz " `z " y @a fz " % jz "Nlz " zz   0*   \ w6 fz "%Ne %  z7; $  _ )ENe E|7te{%{1N e E?%?E|7te{ "e  1  N  1e " Z)CQdKE_'U55 _' _'RX 0* _'8X_'Cڗ   l, _' _'w t  7whw VdwZw HwRw @ z " $z) 'tE&z "e  Nz "%Je%Uww t-N& 0* e%ww D t̥d̕d̥ *ww nԕĜ  6Ĝ  3(e    5w0w  ˕   d% , e% ww 62 57%% 0 e l,Е&e 8 & 8 0E xz70  entQ7 w&w 7u{6 ~4  Y w  \2 - 7 87 6*& pe & && r e7 t77 p ӓw bb t@-@@ &  >e 4.`& r e  wt` X d \@l &    D `w R̥ -0-  e%ג: Rc  7:c:cBE7,c8$c  *  ccX bm7 b ww Z-b wb7 b  _/ x{b %_/b 7bb %gtb jb_%\ 7Xb Nb 8 MBb-TT-SS 5S6&   N X w X n ` &      Dw  "@ww  "@ww C &1>̰ 8~7̵ % Z7  777% 8 p4&e |  ?dw*w  6 ~4  % & :A%ww 6 ~4 3@ A @@E & :A%ww CB%#5 \2 5 \2 E%@ 5 ~~'   8 E PE 1 ]~ @ 0  ww  &1 0  P1ww ~ &1D̵}=~%~t 5t~t5%E Z~5    x|5mfe | ttw( E5` w 8~ &1/̵E}(}}} + x|5mfe | ?}}0ttw E5` j|w d 6 ~4 DE%|6E%@ f +}|6 ~4 k| a||0- G|  ww 6 ~4  |||@ |A @@ || ww r ??|fe | ??ff e  w8b?\?^?X? e NfB?v]uww Ru?&vww ڽ ww νÝv v  v`%7uuww 6 ~4 6 8u  | E%@ tXtt7 t p  w&w  6 ~4 E%@Ut @& \2 Ht 7@t 8wмw EtEttE4P ww  ~jt t^t Ut  wZw H D1Cet     B7@7Dt@tNefe& % ww һs%%s ?s s7 s s!%sr0ww 5 sr &  ! ,%Ԅ%r%Ԅr7r s& 0* e%ӂ orww Ts!.s ZN(s ZN ZN4s ZNs ZNs ZNs ZNs ZNwƺ %  x|rr 8 er r  w tNbr 8 eVrwjw XLr e@rwRw @2rE7zr(rvr$rrr r E7frw$w r^rww Z  w Vq(r?"rww ֹ(rqE7r?rw̹w q4-4-4Wpd r7p-| &e 8 %ww tNf |Q 5wfU &@t v  xRw 2B N BQ N |Q 5 U &@t v #N BQ N |Q 5 P U @t v N ZO w xRw DE & t v 5 xR P5 VwJw 8D tv%% PU Pww DU NPww D5@ 5@>E@ > 5  >EH0 ww D@tv s-3! wp  w R@-2<|  ƴ%r=<U@d=  @tv|  t-t-  n5U@& 4 Rwʶ < R5U NP0003t tw VD ޳&  5  Vw:w (D 00Uw w DU5 PE@ ww е@ ~wʵw 7;7;7;7; WpDe Wpeؐt;;07; P % v @ e :w2w DCL @ tEWt@PUA5UUww ִDCL EtUA5U8U0ww  U@&  5@ U #`<@t 7T*e%B v e 7p6ww ~ C% e f_XDE%5 _X% 5  PW _X% 5 @  PW _X5j}ҋ !\ PW %a%ze% 5 PW e &  ae}5 E I xN}ʋDʊBtE5%ʋte&   %% tE5% U@%  e &U  w5@tE5%% w DE  VYww xB5  A5=5 9e *2% ,%U Ee>Y 0%E?^}7# y}E}E@xPww ֮D:f5 E  [   e * 6# ww D5 !+5   VYU@ &e  %d   PW   VY w4w "De * e * e  e  b \ * 4 $4 4 wʭw D 2"5   w5  PW  VYE U  &   ̪  * % % 5 5  5%\  Ü| |e\   %e  w ڬ DC  N EF%B% W4 4 ! E%EE %% Ve4 _EwPw >wHw 6Dc 0E U JPww D V5  ,P4 ww B%?cEWp&CeLueps" e%e 35 #@5 ce  %  \UcU@wXw FAWp&DeL \ 3 w2w AWp&eLN Yww AWp&eLN @Zww AWp&DeL VY % e wʪw AWp&BeL-5*5  *  ZE "5e 5 U ^ 0% U& a wWW4Wt0W "w>w ,W WfWW tW w w W &1E% OV&VVWp wewҞw @t E xN 7VeN 7VeN 7rV& f %wvDe&f %f 8 ef 8 ef 8 Uw D@t H xN 7UeN 7UeN 7U & rk * wȝBe& rk f 8 ef 8 ef 8 ZTTw \DC 3e ?zUw< V w Du% OT    %-T 0wΜx :%t< Wpeu% 5 @ @0@(Uj  t< %w .xl? .*5 rU14 ww D E5 et5  t%`@tu5 @tf&t 5u @m@-1WpCe 3034 ˋ3  ˕  \wU Rw ֚x b^7R w&  N& "% Z5%@% f@  WttAA @0 t2˕(U"25!"2 t2 EWtAm vf& EWtAm vEUU2 r"  vf&  vEUU2r22(Uh  3 303_nw x _tq x/ "_qE%  _q_q rU AE@ 0 _qE%@ Wp<`eL@Wt`1t` Wp<`@Wt`eppWp<`<H % Wp<`e,@Wt`1(t`@*Wp<`@Wt`e(pPWp<`<( %@1Ap3 3  5_p @@(UvE? " >b5 T " ? H  "2  r%t`U  rDt`5 3 2  wޖw ̖DCAWp<BaeH<E3`E% E% tw%E5 E7  y  7 Wpeu@0  wpw $2t3P & ( EEf&* vUUf&t @&  h "@5ApUN R2t3@ _Tr@Ap@ApWpeu%%52t3@ @Ap@p@p_Tr@0  r wj f pwZ _Tr  f  UvfvUf@ A1N R_Trq "_Trw DD & "% E t x " vb " ervf&vEUUf&& eP.,vf&.,vEUUf&&&&Ȁ Ƞe 1.,vf&.,vEUUf&&&&&&  &&; "e $  #f "ww x@t`*E?%@4@t`E@*AWp<De 44 4 4 444 4  4&4" A rrwp w Zfl .UewLw : fl .Uew.#####################k#ll\]]]^#####################################*__#`#`a8a######################################################################k#tvv#0x3x6x9x@@@A=@jC4K8KI DLHL$?EBJGHJDJI-NzENLiiDK\DJLMIx)x)xG6MNOJJLx)x)x)x)x)ix)x)x)x)8NLBNx) >= !"-$%&'()*+,-./012@@56789:;<@>?too many timeouts `111 ` 2L2X2no file BBBBB(CCHC0NJNunlink -- igetblkdevdevtab|`{}~ABCDEFGHIJKLMNOPQRSTUVWXYZXXZXbXXYY8Y@YYY({)}!|^~'`^^F__f_.```            ^D$$~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~zchbbcccc^eee>fXf>faffffffffggdld System down: panic jj*jkj`k`k`k`k`k`kXk%C% xiu$$%hoo pNpqq@`sTrrrpsps~ttt"u`uurasa %o stat %d ra: randm intr ra: intr in stat %d ra: fatal err (%o) OFFLINE ra: unknown pckt ra%d: %s err, softhardcntrl err ev 0%o mem err ev 0%o, addr 0%O dsk xfer err unit %d, grp 0x%x, hdr 0x%X SDI err, unit %d, ev 0%o, hdr 0x%X sml dsk err unit %d, ev 0%o, cyl %d unknown err, unit %d, fmt 0%o, ev 0%o %x trap"start"dump"CSW"_lks"call"X_klrint"^_klxint"]_clock"/_raintr"o_trap"&nofault$.ssr$0_runrun$h_swtch"`_u!_savfp"_display"_incupc"_getc"*_putc"_cfreeli$j_backup"_regloc#y_fubyte"_subyte"_fuibyte"_suibyte"_fuword"_suword"8_fuiword"_suiword"8_kdword"h_copyin"_copyout"_idle"_savu"_retu""_aretu"_spl0">_spl1"F_spl4"T_spl5"T_spl6"b_spl7"p_copymem"x_copyseg"_clearse"D_dpadd"|_dpadd2"_dpcmp"_end$:_edata#h_main"_halt"_sws"_ldiv"_lrem"_lshift"csv"cret"_ka6#v_cputype#vbadtrap$6_bdevsw#v_nodev"#_raopen"k_nulldev"#_rastrat"l_ratab$l_cdevsw#v_klopen"\_klclose"]_klread"]_klwrite"]_klioctl"^_mmread"*__mmwrite"__syopen"`_syread"`_sywrite"a_sysgtty"8a_raread"tv_rawrite"v_devname#w_rootdev#(x_swapdev#*x_nswap#,x_swplo#.x_canonb$v_coremap$v_swapmap$>_rootdir$_execnt$_lbolt$ _time$ _tout$_callout$_mount$_mpid$_runin$_runout$_curpri$_maxmem$_updlock$_rablock$_proc$_text$_inode$z_icode#x_printf""_testmem"( _mfree"3_min"_startcl"v _cinit"W_binit"S_iinit" _iget"_newproc"_expand"X _estabur"r _sched"_panic"_sureg" _nseg" _nblkdev$_nchrdev$_buf$_bfreeli$_bread"ZO_getblk"|Q_bcopy"#_brelse"P_alloc" _getfs"v_sleep"_badbloc"_wakeup"_clrbuf"R_prdev">_free"_bwrite"NP_ialloc"_iput"_ifree">_update"_iupdat"_prele"8_bflush"T_itrunc"_maknode"_wdir"_writei"p_panicst$&_putchar"_printn"_deverro" _readi"8_bmap"!_breada"O_iomove"_bawrite"P_bdwrite"P_max"_cpass"#_passc"6#_file$(_issig"`*_setrun"*_setpri"b_malloc"3_xswap"#_swap"6T_swalloc"&_xccdec"%_xfree"$_xpurge"z&_xalloc"$_sysent#{_paritye")_psignal"0*_psig"*_v7map#|_trap1"Z)_grow"l,_nosys"x)_nullsys")_parregs#$z_ipc$_signal"*_stop"*_procxmt"-_exit"<_core"+_schar"6_namei"~4_access"\2_ptrace"-_rexit"<_fork">_read"@_write"@_open"@_close"A_wait"=_creat"@_link"jC_unlink"4K_exec"8_chdir"K_gtime"I_mknod" D_chmod"L_chown"HL_sbreak"$?_stat"E_seek"B_getpid"J_smount"G_sumount"H_setuid"J_getuid"DJ_stime"I_alarm"N_fstat"zE_pause"N_smdate"L_stty"i_gtty"i_faccess"D_nice"K_sslep"\D_sync"J_kill"LM_getswit"I_dup"xG_pipe"6_times"M_profil"N_ftime"O_setgid"J_getgid"J_ssig"L_ioctl"i_umask"N_lseek"B_systrap"N_swbuf$_timeout"0_getf"&1_closef"P1_closei"1_openi"1_owner"2_uchar"6_suser" 3_ufalloc"(3_falloc"V3_readp"Z7_plock"8_writep"7_putstat"h_rdwr""@_open1":A_stat1"E_getmdev"I_fuaword"vN_suaword"ZN_timeb#|_buffers$ؐ_tmtab$_httab$_iowait"xR_incore"BQ_geterro"V_notavai"R_iodone"R_devstar"S_rhstart"S_physio".U_ttysope$_maptab#|_cfree$ _wflusht"V_flushtt"Z_ttyoutp"PW_partab#}_ttrstrt">Y_ttstart"VY_ttread"Y_canon"[_ttwrite"@Z_ttstop"\_reducq"[_cblkuse$J_ttyopen"\_ttyclos"\_kl11$L_kltime"^_ttyinpu"a_ttyioct"j_syttyp"ha_maxcbu$0_chrare#~_chtype#&~_cnnorm#~_cnucas#~_cnctrl#~_cnrub#~_cneras#~_cnrtyp#~_cnint#~_cnquit#~_cnnull#~_cncr#~_cnlf#~_cneot#~_cnbell#~_cnsink#~_cnesc#~_cnupro#~_cnalt#~_cnbs#~_cndelw#~_escno#~_escpp#~_escdd#~_bellno#~_bellpp#~_rawchai#~_sinkex#~_nochain#_escchai#._uprocha#6_bellcha#>_ttypani"g_ttymsg"Pg_stats$2_stopen"pg_stclose"g_stread"g_statput"Ni_iostty"j_ttystty"rk_ra_size#_RAADDR#_ra_soft$x_ra$_raerr#_radsize$_rrabuf$_rautab# #define pcsr 0172134 /* * Copyright 1975 Bell Telephone Laboratories Inc */ #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 #define KL_CLOCK 0176526 /* DLV11-J #2 Xmit data register */ /* * 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, }; /* * 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 int l, m; /* * zero and free all of core */ updlock = 0; printf("\nunix v6 11/%d\n",cputype); UISA->r[7] = ka6[1]; /* io segment */ UISD->r[7] = 077406; m = 0; l = 0; UISA->r[0] = *ka6 + USIZE; UISD->r[0] = 077406; for(; fuibyte(0) >= 0; UISA->r[0]++) { if(UISA->r[0] == 0177600) break; clearseg(UISA->r[0]); if(testmem(UISA->r[0])) { ++l; ++m; if(l > maxmem) maxmem = l; mfree(coremap, 1, UISA->r[0]); } else /* memory is bad or not to be used */ { l = 0; if (sws()&01) /* stop on bad memory if sws odd */ break; } } printf("mem = %l KW", m/32); maxmem = min(maxmem, MAXMEM); printf(" max = %l\n", (maxmem-USIZE)/32); mfree(swapmap, nswap, swplo); startclk(); /* * 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(); rootdir = 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(0)) { 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(); } /* * determine clock * use: * (1) line frequency clock * (2) programmable clock * (3) LTC (if available) * (4) DLV11J port # 3 (at 600 baud) */ startclk() { int clk; clk = lks; lks = CLOCK1; if(fuiword(lks) == -1) { if (fuword(lks = CLOCK2) == -1) { if (clk > 0 && clk < 01000) { lks = clk; printf("start LTC\n"); } else { if (fuword(lks = KL_CLOCK) == -1) panic("no clock"); /* load interrupt vector 320 from 100 */ 0324->integ = 0100->integ; 0326->integ = 0300; /* prio = 6 */ lks[-1] = 0100; /* alllow interrupts */ printf("DLV11J#2 clock\n"); } } } } /* * Load the user hardware segmentation * registers from the software prototype. * The software registers must 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 segmentation * 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(nse./012345789g(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(nt >= 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) { 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); } testmem(addr) { register int i; i = sws(); if((fuiword(pcsr)+1) & ~ 3) { printf("bad mem %o00\n",addr); pcsr->integ = 0; return(0); } if(addr >= i && addr <= (i + 07)) { printf("%o00...%o77 not used\n",addr,addr); return(0); } return(1); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #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 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. */ #ifdef ERRLOG #define LOG_MAX 128 char msgbuf[LOG_MAX]; char *msgbufp msgbuf; #endif putchar(c) { register rc, s; register char *p; rc = c; #ifdef ERRLOG *msgbufp++ = rc; if (msgbufp >= msgbuf+LOG_MAX) msgbufp = msgbuf; #endif if(sws() == 0) return; p = KL; while((p->xsr&0200) == 0) ; if(rc == 0) return; s = p->xsr; p->xsr = 0; p->xbr = rc; if(rc == '\n') putchar('\r'); putchar(0); p->xsr = s; } /* * Panic is called on unresolvable * fatal errors. * It syncs, prints "panic: mesg" and * then loops. */ panic(s) char *s; { panicstr = s; printf("panic: %s\n", s); update(); 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. */ char *devnames[]; prdev(str, dev) { register int i; register char *p; for (i=0; p = devnames[i]; ++i) if (i == dev.d_major) break; printf("%s on ", str); if (p == 0) { printf("dev %l/%l\n", dev.d_major, dev.d_minor); } else { printf("/dev/%s", p); if ((p[0] == 'r' && p[1] == 'a' && p[2] == 0) || (p[0] == 'r' && p[1] == 'r' && p[2] == 'a' && p[3] == 0)) { printf("%l", dev.d_minor >> 3); putchar('a' + (dev.d_minor & 7)); } else { printf("%l", dev.d_minor); } } putchar('\n'); putchar('\r'); } /* * deverr prints a diagnostic from * a device driver. * It prints the device, block number, * and an octal word (usually some error * status register) passed as argument. */ deverror(bp, oct) int *bp; { register *rbp; rbp = bp; prdev("deverr", rbp->b_dev); printf("bn = %l eo = %o\n", rbp->b_blkno, oct); } /* * tunable variables */ #define NBUF 14 /* size of buffer cache */ #define NINODE 50 /* number of in core inodes */ #define NFILE 50 /* number of in core file structures */ #define NMOUNT 6 /* number of mountable file systems */ #define NEXEC 3 /* number of simultaneous exec's */ #define MAXMEM (32*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 process */ #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 25 /* max number of processes */ #define NTEXT 15 /* max number of pure texts */ #define NCLIST 200 /* max total clist size */ #define HZ 50 /* Ticks/second of the clock */ #define MAXUPRC 25 /* max number of procs per user */ /* * priorities * probably should not be * altered too much */ #define PSWP -100 #define 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 */ #define SIGCLK 14 /* alarm clock */ #define SIGTERM 15 /* software termination */ #define SIG_IGN 1 #define SIG_HOLD 1 /* * 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; }; /* * Certain processor registers */ #define PS 0177776 #define KL 0177560 #define SW 0177570 /* * number of tty's of various types. */ #define NKL11 6 #define NDL11 0 #define NDZ11 8 #define SWAPDELAY 01 #define BYTEMASK 0377 #define MAXLINK 127 /* max number of links to a file */ #define MEM_DELAY 5 /* must be out of memory MEM_DELAY seconds */ #define SWAP_DELAY 3 /* must be out SWAP_DELAY secs. before swap out */ #define SLOWSWAP 1 /* if swap device is slow */ #define TIMEZONE -1 #define DST 0 /* #define ERRLOG 1 /* log errors into memory buffer */ #define IOCTL 1 /* real ioctl code generated */ /* #define LOGGING 1 /* code to log tty I/O */ /* #define SYNCECHO 1 /* sync echo with read */ /* #define INTIMER 1 /* input delay on CBREAK mode */ 4,-(sp) mov r3,-(sp) mov r2,-(sp) clr -(sp) jmp (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 SSR3 = 172516 EN22BIT = 20 KISA0 = 172340 KISA6 = 172354 KISD0 = 172300 MTC = 172522 UISA0 = 177640 UISA1 = 177642 UISD0 = 177600 UISD1 = 177602 IO = 177600 .data .globl _ka6, _cputype _ka6: KISA6 _cputype: CPUTYPE .bss .globl nofault, ssr, badtrap nofault:.=.+2 ssr: .=.+6 badtrap:.=.+2 CMDL2) typedef unsigned int u_short; typedef long daddr_t; typedef char * caddr_t; typedef short dev_t; #include "ra.h" #include "rareg.h" /* For now, limit to one MSCP controller, eight disks */ #define NRA 4 struct radevice *RAADDR = 0172150; struct ra_softc { short sc_state; /* state of controller */ short sc_ivec; /* interrupt vector address */ short sc_credits; /* transfer credits */ short sc_lastcmd; /* pointer into command ring */ short sc_lastrsp; /* pointer into response ring */ short sc_onlin; /* flags for drives online */ } ra_softc; /* * Controller states */ #define S_IDLE 0 /* hasn't been initialized */ #define S_STEP1 1 /* doing step 1 init */ #define S_STEP2 2 /* doing step 2 init */ #define S_STEP3 3 /* doing step 3 init */ #define S_SCHAR 4 /* doing "set controller characteristics" */ #define S_RUN 5 /* running */ struct ra { struct raca ra_ca; /* communications area */ struct ms ra_rsp[NRSP]; /* response packets */ struct ms ra_cmd[NCMD]; /* command packets */ } ra; int raerr = 0; /* causes hex dump of packets */ daddr_t radsize[NRA]; /* disk size, from ONLINE end packet */ struct ms *ragetcp(); struct buf rrabuf; struct devtab ratab; struct buf rautab[NRA]; struct buf rawtab; /* I/O wait queue, per controller */ #define dkblock(bp) ((bp)->b_blkno) #define dkunit(bp) ((bp)->b_dev.d_minor >> 3) /* #define hiint(long) (((int *)&(long))[0]) */ /* #define loint(long) (((int *)&(long))[1]) */ #define hiint(long) ((int)((long)>>16)) #define loint(long) ((int)(long)) #define bcount(wc) (-(wc) << 1) /* in v6, b_wcount is negative */ int wakeup(); /* * Open an RA. Initialize the device and * set the unit online. */ raopen(dev) dev_t dev; { register int unit; register struct ra_softc *sc; unit = dev.d_minor >> 3; if (unit >= NRA || (RAADDR == (struct radevice *)NULL)) { u.u_error = ENXIO; return; } sc = &ra_softc; spl5(); /* If the controller is not running, start it */ if (sc->sc_state != S_RUN) { if (sc->sc_state == S_IDLE) rainit(); sleep((caddr_t)sc, PSWP+1); if (sc->sc_state != S_RUN) { u.u_error = EIO; goto out; } } /* If the unit is not ONLINE, do it */ if ((sc->sc_onlin & (1<sc_credits < 2) || ((mp = ragetcp()) == NULL)) { u.u_error = EIO; goto out; } sc->sc_credits--; mp->ms_opcode = M_OP_ONLIN; mp->ms_unit = unit; dp->d_active = 2; ratab.d_active++; mp->ms_dscptr->high |= RA_OWN|RA_INT; i = RAADDR->raip; sleep((caddr_t)sc, PSWP+1); if ((sc->sc_onlin & (1<sc_state != S_RUN) { u.u_error = EIO; goto out; } } out: spl0(); return; } /* * Initialize an RA. Set up UB mapping registers, * initialize data structures, and start hardware * initialization sequence. */ rainit() { register struct ra_softc *sc; register struct ra *rap; sc = &ra_softc; sc->sc_ivec = RA_IVEC; ratab.d_active++; rap = &ra; /* * Start the hardware initialization sequence. */ RAADDR*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 _halt _halt: halt rts pc .globl _sws _sws: mov *CSW,r0 rts pc .globl _ldiv _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 r->raip = 0; /* start initialization */ while ((RAADDR->rasa & RA_STEP1) == 0) ; RAADDR->rasa = RA_ERR|(NCMDL2<<11)|(NRSPL2<<8)|RA_IE|(sc->sc_ivec/4); /* * Initialization continues in interrupt routine. */ sc->sc_state = S_STEP1; sc->sc_credits = 0; } rastrategy(bp) register struct buf *bp; { register struct devtab *dp; register int unit; int xunit = bp->b_dev.d_minor & 07; daddr_t sz, maxsz; #ifdef B_PHYS if(bp->b_flags&B_PHYS) mapalloc(bp); #endif sz = (bcount(bp->b_wcount)+511) >> 9; unit = dkunit(bp); if (unit >= NRA) goto bad; if ((maxsz = ra_sizes[xunit].nblocks) < 0) maxsz = radsize[unit] - ra_sizes[xunit].blkoff; if (bp->b_blkno < 0 || dkblock(bp)+sz > maxsz) goto bad; dp = &rautab[unit]; spl5(); /* * Link the buffer onto the drive queue */ if (dp->d_actf == 0) dp->d_actf = bp; else dp->d_actl->av_forw = bp; dp->d_actl = bp; bp->av_forw = 0; /* * Link the drive onto the controller queue */ if (dp->d_active == 0) { dp->b_forw = NULL; if (ratab.d_actf == NULL) ratab.d_actf = dp; else ratab.d_actl->b_forw = dp; ratab.d_actl = dp; dp->d_active = 1; } if (ratab.d_active == 0) { rastart(); } spl0(); return; bad: bp->b_error = EINVAL; bp->b_flags |= B_ERROR; iodone(bp); return; } rastart() { register struct buf *bp; register struct devtab *dp; register struct ms *mp; register struct ra_softc *sc; int i; sc = &ra_softc; loop: if ((dp = ratab.d_actf) == NULL) { ratab.d_active = 0; return (0); } if ((bp = dp->d_actf) == NULL) { /* * No more requests for this drive, remove * from controller queue and look at next drive. * We know we're at the head of the controller queue. */ dp->d_active = 0; ratab.d_actf = dp->b_forw; goto loop; } ratab.d_active++; if ((RAADDR->rasa&RA_ERR) || sc->sc_state != S_RUN) { deverror(bp, RAADDR); printf("rasa %o stat %d\n", RAADDR->rasa, sc->sc_state); rainit(); /* SHOULD REQUEUE OUTSTANDING REQUESTS */ return (0); } /* * If no credits, can't issue any commands * until some outstanding commands complete. */ if (sc->sc_credits < 2) return (0); if ((mp = ragetcp()) == NULL) return (0); sc->sc_credits--; /* committed to issuing a command */ /* If drive not ONLINE, issue an online com. */ if ((sc->sc_onlin & (1<ms_opcode = M_OP_ONLIN; mp->ms_unit = dkunit(bp); dp->d_active = 2; ratab.d_actf = dp->b_forw; /* remove from controller q */ mp->ms_dscptr->high |= RA_OWN|RA_INT; i = RAADDR->raip; goto loop; } mp->ms_cmdref.low = (u_short)bp; /* pointer to get back */ mp->ms_opcode = bp->b_flags&B_READ ? M_OP_READ : M_OP_WRITE; mp->ms_unit = dkunit(bp); mp->ms_lbn = SWAPW(dkblock(bp)+ra_sizes[bp->b_dev.d_minor&7].blkoff); mp->ms_bytecnt = SWAPW(bcount(bp->b_wcount)); mp->ms_buffer.high = bp->b_xmem; mp->ms_buffer.low = bp->b_addr; mp->ms_dscptr->high |= RA_OWN|RA_INT; i = RAADDR->raip; /* initiate polling */ /* * Move drive to the end of the controller queue */ if (dp->b_forw != NULL) { ratab.d_actf = dp->b_forw; ratab.d_actl->b_forw = dp; ratab.d_actl = dp; dp->b_forw = NULL; } /* * Move buffer to I/O wait queue */ dp->d_actf = bp->av_forw; dp = &rawtab; bp->av_forw = dp; bp->av_back = dp->av_back; dp->av_back->av_forw = bp; dp->b_back = bp; goto loop; } /* * RA interrupt routine. */ raintr() { struct buf *bp; register int i; register struct ra_softc *sc = &ra_softc; register struct ra *rap = &ra; struct ms *mp; switch (sc->sc_state) { case S_IDLE: printf("ra: randm intr\n"); return; case S_STEP1: #define STEP1MASK 0174377 #define STEP1GOOD (RA_STEP2|RA_IE|(NCMDL2<<3)|NRSPL2) if ((RAADDR->rasa&STEP1MASK) != STEP1GOOD) { sc->sc_state = S_IDLE; wakeup((caddr_t)sc); return; } RAADDR->rasa = &ra.ra_ca.ca_ringbase; sc->sc_state = S_STEP2; return; case S_STEP2: #define STEP2MASK 0174377 #define STEP2GOOD (RA_STEP3|RA_IE|(sc->sc_ivec/4)) if ((RAADDR->rasa&STEP2MASK) != STEP2GOOD) { sc->sc_state = S_IDLE; wakeup((caddr_t)sc); return; } RAADDR->rasa = 0; sc->sc_state = S_STEP3; return; case S_STEP3: #define STEP3MASK 0174000 #define STEP3GOOD RA_STEP4 if ((RAADDR->rasa&STEP3MASK) != STEP3GOOD) { sc->sc_state = S_IDLE; wakeup((caddr_t)sc); return; } RAADDR->rasa = RA_GO; sc->sc_state = S_SCHAR; /* * Initialize the data structures. */ for (i = 0; i < NRSP; i++) { rap->ra_ca.ca_rspdsc[i].low = &rap->ra_rsp[i].ms_cmdref; rap->ra_ca.ca_rspdsc[i].high = RA_OWN|RA_INT; rap->ra_rsp[i].ms_dscptr = &rap->ra_ca.c & 6  `w  N%M , T   & &    :e  !&   0  & & %~ @! 6!& >%       %  H 7^ y % d  J>   &   :% ( !    :%    7N   2.e %0 %6!- e 2e%6!   e%6! * %6! !  ew   2e%6!ww D   & x 4 ww J!L %%  w7,7&7 w PB -   V         & e ` :e T ww &  @%ae et& %N! >% 0  @7@! &  %6! >% wRfwwj wF fwwp w& f@w fwfwbv wf@)wfw:@e72| wfw7 f&f w fww wbf@ww w@f@ww w fAW @w f`!1`!7~ 5 eRwj 5& w&L&H&D&@&<&8&4&0&,&(&$& &&&&& &&&f& f BRf D& w }f@wTwP wf@fA w,*w"$e"w"ew"@lw"Alew &@t`e w wwww@& HADCBF70F & 6  w   % %  7.# "#& %7#(e04r# Bd!q!" 7#5t!"  7"%47 "--c%"t"      w! -r"    e70"@ 7(" &" "  h7"" w ' "'"#!'!7"7!! R˥ '!(!!!  !!' 2 !!  ww !!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 % >   w% 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 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 @ ! (@  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%@&  5 @  "  N N 5 N N @ 5 @ N @ 5 @  5   "  5        %@@E4P  ~ 7pf \ ^@"Ne@&  "  f \ ?N@& " @ Ne N @  " >@5Ne :@@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 " ?# # Ne %.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 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. }f@w\wXX#wf@fA w,2w",e"w""ew"@lw"Alew &@t`e w jwZwVwjLJw\w JBB BJw:w (BBdb@ BJwf@& HADCBF7F6rw6r@ & 6  w l$ 7$Ne @e 7$ >@-8e+@a # x # # # # # #f  # # # #e@ȋ  x#  d#7 d#7 b#7 `#7 |# T# T#  f f 7   5 ef f LU u-"' r&"' e"'E5 " "6% r b  "J r& e "~" r -  e e Hww vC%_F " r !f F r Ĝ !ĜEH$& J H$  r 5`E&E r%&   r e p -d! ee r%e! ,!&  ! r 5!#! r wL w : - w6  &  %7 5 5 5 ( %: 0 @@mH % AWp Ameu," " 5% u-@@m ww x ff %5 %et`wP w > w  d% w2 w C4e  $ w w ~$CԔˋԕ/C Ԕ % ~$w w ,"f _N*! r _b7 n$ ," "  %  &.% $f \%& f % %`Ȝ$  w0 w  $e- Z e~xer4 4   _Nef N9! r 55 5  w tE@E%`E @E%@E`UE5UEtttttt5` ttt ttN@&  7`w DC l5E}%'E}%' 3- 3-3-3- wp@wp E}% 55@5upw  ~wtDej  d % $ w7 P7 PׯF- > <(w07 2 .w&eH!B J ӕ- R r f e0 @ > ҋ D~8p!t! ӕ0 $f v Le0 9e|v nh 7Xwe&  m< : $ ~  $   $ ~ w7   0   Wp `e0eӕ?f ,P   @f  %7 x!%z-tlf@w f@)wfw~!JA 7 |fAW,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 * %Cww ~ PDCԒ 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  t5 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 b$!ԔAA WpCe!b$ԔԔԔ BeWpCe"ԔԔԔ& > ed& > ed& > ed& > e@ & > b$wxw fA r nw^mw FD % A r  r e0@ԕ A r e0@w@& HADCBF7F6rw^6r@f@  P`Hm` hpÀls#ElsCC,N$äì .J\RzbVbVD0|ÔDoVVTVDo#oDЇn%~Ї:Ї,D̍z:#)z:#p(v8##'x0 0) { 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 && (TMd       " et ZEWue T!e 5 &     f r f rvr t@P ! ɋp ȋ?E A Ze   ?    7? 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_#'_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'| 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 */ 05  ] 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 zQ0eup(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 = En+ 0X+9P+PQupwHQ>+e7`*  00*9(*  w:w ( * w*w  %rT  w %fxT%dpT55 TT  LT  557 U )Nf 5\WTX' %  feerror = 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)  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  &/* */ 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; 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 VtpF ҋ 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-:-  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! Be0# @aє 6a    BA   W 6ae B@e0am* C` aeȐ9 ȕ0 aȕ1 PC JC8+,,,  zzz%.1o%.8s+%dmovcmpbitbicbisaddsuclrcomincdecnegadcsbctstrorrolasrasljmpswabldfpsstfpsststclrftstfabsfnegfsxtmtpimtpdmfpimfpdmuldivashashcbrbnebeqbgebltbgtblebplbmibhiblosbvcbvsbhisblohaltwaitrtiiotresetmulfmodfaddfmovfsubfcmpfmovfdivfmoveimovfimovfomoviemovifmovofcfccsetfsetisetdsetljsrxorrtscflgsflgemtsysmarksobsploctindirexitforkreadwriteopenclosewaitcreatt% 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_%U`0aaVV ,CC7nCaPP7 "CEDE!wECED5!5! w |/W!ww  /wW! B  w w ww  0^BE7BENBUFBE@>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.ca.out7mem.c<bio.o8cat.o7dc.o6dh.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 Bw 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 ,#w5dhdm.o4dhfdm.o3dn.o2dp.o1hp.o0hs.o/ht.o.kl.o-lp.o,mem.o+partab.o*pc.o)rf.o(rk.o'rp.o&sys.o%tc.otm.otty.o vs.o vt.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 @-@ 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/l