P.fr4Uj؎0ApKRJ)1^|0" "hXü1š05|0p5p0V^j5pVKjh5?Kj0T v4=@It  "?K pVKَϐT$D$PPg}t\}t]tËstM>/t/GI EtK0޿$0HvHEIE $IIÜX PX1%QuZUU1ҹt00 0NexG0enDr0iven0X5 PX1% QuC0UU1ҹs0Cyri0xIns0teadf1000 000 0s 0u 0 0 0 t  "ྴpK5l05p05p0p01505p0p015|05p0 p0 15t0505p0p015x011 0 t 0 Љ% 0 t l0) 0 Љ|0 0x0 0t0 0 ` 0t0x0x0|001۹|00 |0|0|0defaultvop_lookupvop_createvop_mknodvop_openvop_closevop_accessvop_getattrvop_setattrvop_readvop_writevop_ioctlvop_selectvop_mmapvop_fsyncvop_seekvop_removevop_linkvop_renamevop_mkdirvop_rmdirvop_symlinkvop_readdirvop_readlinkvop_abortopvop_inactivevop_reclaimvop_lockvop_unlockvop_bmapvop_printvop_islockedvop_pathconfvop_advlockvop_blkatoffvop_vallocvop_reallocblksvop_vfreevop_truncatevop_updatevop_getpagesvop_putpagesvop_strategyvop_bwriteUWVS}GplWU tW F tpFXOUVD ЉtBE@Ëv@)ƉƅG ș9|GIG0t G1e[^_UlWVSEDžDžDžPH Y Q Dž@plNx<t AADž1Dž@ 1RPЉÃf}#A@tE豕à u plP9u PF1y t=Wo j>à tFf}9JV t9tf} W W& IRDžxt :=ut u~(tF(9F@}1F,Dž?^(^,ߋ#ztPSVà Dž\>KN@IRщyAIN,u6tnPv,V_à a1P@ u&F,HByAF,U T9B=fI fxu  !9x+9u 9.t tqfOB! tt%u F0P fy! P!P%uFtP  @T V,AtQP @T F0F0PPS 9BuPS_ WDžN,ϋ9V,F09N,BV,9t7tkPV4à #AB@N,uDžF,V(t4kA@tQ2}t kuX>Ktjf}uF,F( txW>PW09%PRWÃtWqtf} WO@F9F0u y^PV09%PRVÃuOt f| W\@B@tR11[^_UWVS]uSJ} EPjrQsdÃu E1u0i؍e[^_U?K@Jy1isoigtU WVSEHM@@EEEE %?KE}79t>M 9Nu,}9~u$Fujjvu͋M169uujj:jx:ƍEP501KujÃt7}j:VNjhjVYjxVIЋEplFFF F(F MN} ~MN1pV}싿 }~G F P}thG} ~DEPjVà t=v ]FBVF6vVME@@E}WG G ŠG ‰V<W G  G  ŠG  ‰V@GFffF`f %YMAKA}G<ww?KGuvpW:E tYEXlCCSMK} {FCjSPU0WVS}u dž_"jh&SG t!dž_1jh&SF u'uEh :EPWt Ce[^_UWVSMu NM}G};uiA;t A1Nx< \ANy1MxЋ}TG}My)x8t,<wà E9t<vH)‰FANH}~6}.t;t&!};t +E1e[^_UWVSu} M1ۃ}t@=ACG8F}u*<w }u.u>;t}u;tAC9|ŋEfe[^_:UWVS}E Jp t^u jEPhc@WփtE]|=E]u jEPhc WփtEuKyׅ|E1e[^_cd9660_mountroot: can't setup bdevvp for rootdevcd9660_mountroot(): using session at block %d root_deviceUxWVS@?Uhd7K5KJNt h)ejjh(*h(WIG`:GEu5KJE=ItPh)"BEPuW5d7KÃuW蕗ÃtujWyjW9x7K|7KG=x7Kx7Ku =x7K |7K8=|7KO@G j2s VIC /jZGlPV:EPjYPh)B$Z+EPEPIuG PWW1|[^_UtWVS]1jpEPu0=ƃ yUBu fUBt }uEPGTPR話>C$C(@CEUS,Sƃ [{<tSRC@@ 9KS3UBuEPuRSƃ9_ t StSU uVj1_ Su @2+EPE PIjZElPS9$VjYEPun@Z+EPEEPIuE Pu\1e[^_CD001CDROMU8WVS1EMA@@ EE} }u u耭Ãu~M9 d7Kt kjju}G0ju賛ÃC}tE@1MMEE}} @1}WEPЉÃMIlM؋}Gld9EPjhiE PuNGÃ&E@@Ejh2-E@P? t%jh8-Eȃ Pi? EEȃ}t=Eȃ}t8t uKE؋MAld9EDEȃ}t8{}ȉ}ȉ}ԃ}t ˆ Uȁ€R ЉE=8EHE+}t ]ԁô ]ȁÜjj9hɧhVIЋMЉN}t }ԃX} MȃPMȋ}G G ŠG ‰VMIlNj"LPS5 SC C ŠC ‰pS C  C  ŠC  ‰t}O~F~~FN9FEH$PIEM }y@ADAIN~MN A@H}GhuvEPjvCpF} Pv DÃEVp@|} MIh}ghEH$PDIEMIh}t džx.tt džxdžx džx1}G@`}t uHtE}tEl1}}EEMM=l1MQEPЃtj9V} LJ ؍e[^_U1UWVS}1Et=:u  PjWƃ uo C @@`C El1EEEUU l1@EEPUЉƃs 趞j9S.LJ ge[^_UWVSE 0}}UCEELSVEP@VPx%PuW?u@U 1[^_U-UWVS}] C,FCCFC CCCCG 9t$jZCLPGlP"2jZPP 2C41e[^_U1U-fhtovp: lbn exceed volume space %d fhtovp: crosses block boundary %d fhtovp: bread error %d fhtovp: directory crosses block boundary %d[off=%d/len=%d] fhtovp: file start miss %d vs %ld fhtovp: failed to get inode fhtovp: inode mode == 0 UWVSM } uFTPQ表 u F Q9VRh487 #~!9F}Ph:4 7PjvF Pv ?ÃtSh]46DvZ@9F}+RyDPPhu46+SC C ŠC C‹ 9QtID wSC C ŠC CRh46CMMU} F,SPj qRÃt}h45Qfz`t#BMG0M4M91R}h4O5F[^_UEU Hlf ABADB1UEP@x@u xux ux$ux,ufxt Ðxuxt8BU WVSMqR Uttt? u1E~t4E+ҁt u?E^ ]9~rV9VsFu Ft |VV1ۉM]]C M9Hr]9XuM9Hs A~w8UV w*1ۉM]]RM9J$|]9Z$uM9J s u$guf}M1ۉM]uu]sjjjVVRURu(jjMNVRQu讹}t,VVUjjjjuURjjjuyuN^ MUV ~MA1VQ,ǂJQ 1e[^_DnG:lGIelf_tracePGFreeBSD ELF/usr/libexec/ld-elf.so.1FreeBSDUU<?t@~t1Ð?됐UU9?t@~t1?ꐐUVSu] U E%1QRujjjPUR5Iu]1e[^UE%UE %PR5I0UtWVSu] {t FE1]}}Eu 1SEPЃC@u EIt}t }}u}ujFE1]E@Eu 1SEPЃu4FE@1]EEu @1SEPЅu1e[^_UE8ELFt Ðfxtfxu@9E u1Ðbss size %d (%x) UWVSM ME}}M9Mv]ˁU}M9)ӋU1QRu jjURSURuƃ$}9}u1UUUUUUM})t(jjjjSURjjjudƃ(UU1QRu jjjhUR5I2ƃ$u_uuuƋURu5IjURURuu,=>t+URRhIe[^_ELF(file) PT_NULL section ELF(file) PT_LOAD section .text <%08x,%08x> entry=%08x .data <%08x,%08x> ELF(file) PT_DYNAMIC section ELF(file) PT_INTERP section ELF(file) PT_NOTE section ELF(file) PT_SHLIB section ELF(file) PT_PHDR section ELF(file) %d section ?? UtWVS]E EEs uEEEEDEE]EP:jE}t{uSEEȃEx5E x5PEPЃ}jEPjuEjuCEEfx, vEEx*}P,׉URURpulE[EE@,9EDUE<$N𐐐N4NOOOOO=>hK=>t hKUEDtMUEDtMUEDtMEPU]ttDuPtuuKE^}}UG9DwgLL9OsZ|>}D%)%uVu}=>RPuhKUE\uLLD%)=>QShK }=>tqhK>=>tahL.=>tQh8L=>tAhSL=>t1hoLA"=>tUE4hLEE@,9E}tuuN}t ju;Ee[^_ELF PT_NULL section ELF PT_LOAD section ELF PT_DYNAMIC section ?? ELF PT_INTERP section <%s> ELF PT_NOTE section ELF PT_SHLIB section ELF PT_PHDR section <%x> ELF %d section ?? interpreter=<%s> %s ELF binary type not known ELF interpreter %s not found Executing %s binary UDWVSURDžM@ ƅDžDžDžDžDžDžDžDžjRt fz, v I*B,zw B=v:PqUrMyyuZuZ1B,9<$S𐐐S4STT4UDU\U=>hPP=>t hePDtDtDtPttttMqOR9TwqDD9As^\)؉=>RhKbTLL)с=>$QRhK =>hzP=>t hPa|DžhPtUr\=>hPp=>tmhP=>t]hPN=>tthPD=>t4hPFA,9' Dž@UJ,1<?tz?p u^U?@ ?pS ?pS葲 =>t'?pph Q Frt 1<?t~?0WO uhM?R tT?pSJ ?pSڱ =>t(?pph Q FnuhQDžtOE,PPSM1t#Sh:Q\Dž=>t?0hXQ(jjJj$VSI*KR,S CCCK>C UZtB1B tt[^_UWVS} wtG G$ËM~ tj S jS>tjS6SjSvSjSvS jSv SjSvS jSrvSfj S[vSO jSAvS5jS*jS" jJwtGtMG 1e[^_pQ ZELFZOutput=%lu Inflate_error=%d igz.error=%d error2=%d where=%d UWVS1Mq>u~u ~u~ t YN@jP]SIj0EPIЉ]E^E^MME Ft(E ~ t}EE<0uFt}EE<0uMA @EEP6Ãu-MP jj PRݤÃ}tEPu5IGǃ }uutuh ZuWuSh,Z}tEuu 1 t[^_U WVSuz Vt> uF@~t0FDGVҁt uF@FDF(VVLV9V@wV@V9VsFu F tF(F~w7V VL w)1ۉM]R]9Z$|M9J$u]9Z sF( VDVV VH61PtF(6OV@UjjjhjjVV RURW(t F(~Lt6V@VV UjjjjvLURjjjW蟝t F(PN V VL V@^@^B1VQ,ǂJ1e[^_US]S<9S8w C({,t>S09S#!t {1u[C1N~ tF@9sEA9 uύN~ t~ u A9 t9 tS2 9 tAB9s9 u{2uTN9sCA9 t9 t9s/9 t9 tSACK9rCCKC 9rËCC(1e[^_ ` a#!a      #+3;CScscc !1Aa  0@` ?? UWVS|XDžl}v] ljDURIҋu TM`TDT`uu9uuM ]$1}Dž@@|u F@v狍@\]$9 s Dž``|u N`uꋍ`h]$9 v @㉝L`9s,@L)Lx,@ѥL`9@rԋ`t)Ly L`\Dž@DžxuT|I`t(T @@T`u؋u TDž`T @Ttt`t`u9`rDž`DžtTDždXCDžPDž81DžHZ\LIp7PdX@9\:@Pdh)ˉHHu$9sH\+P@㉝DpB9v^J+pD\TA@H9s4ѥDD92s )ΉD@H9@rϋP@9lsl9Ps +P@@㉝HdX jjLHRp u!dt8uMQBHQP] pu @Ћd8`tXT8 8@8<PJ!ډ@ʋd+Tӭ@4@84ڋuȾKJ=KJtv8te@t tKp @ЃEEPjh=K,A t hv}tp @hv>ue[^kproc_start: %sUS]@?{tCJ(3P苑 C3hw蚗%sUuhw?swapperUWVS=K@?=KtݱTK$=KtB $=KTKC TKǃVJ cKVJt BVJcKVJVJVJVJS4t VJs4r8VJC8VJVJVJVJVJǃJC(C,ƃfǃfǃjRhxVJCVJASSfBCVJfVJfD?fVJVJVJVJHWJVJC\WJ1 ǂdWJǂhWJǂ\WJǂ`WJ@vWJ@WJWJ(WJcK 1WJ WJWJ WJ11WJ WJWJC WJ|XJhXXJkjhjhWJyWJXXJ0XJX{(s$jj'se[^_ @U4=KTK TK ?K ?K(>K ,>K(>K ,>K@?K D?K=K=KUR耹U3UR h=K: @Uj袬jϬ4@U'H@cannot mount rootU58K8>KЃt ht{\@cannot find root vnodeUSVJx7KPh(KPB Ѓt h{蔓(KCPT(KEx5E x5PEPC ]p@@U5XJ5@?/stand/sysinstall/sbin/init.bak/sbin/oinit/sbin/initinit: couldn't allocate argument spaceexec %s: error %d init: not found no initU$WVSE U$5KEпjjjjhEPjjjr '~(t h|VUB UUB ǀE@@1j߿h߿iItjs߿h߿Lu j-NV7j-NV+u0}Ӄ|UPNVKyjSu܃SVSu]EEPEPu'$tAtPuh|Z EUU h|9h|e[^_FreeBSD a.out K~:~Iacct_suspend~$K~:~acct_resume~(K:~acct_chkfreq~UPWVSu} PF0~Ã?tzEEEEujjEPHà EEx5E x5PEPЃUȃz<tVF0jR l=XJu =XJtAjhl VF0jXJuXJP֙XJXJ?tEȣXJj-؍e[^_UTWVSuXJ]u1cjURRj]]SURVuu<fE$uu*fEVU]SVRSuufE~UȋM̉UMuS>M JJE=JJ$tWWGfEfEjW,W0RfEVRUVR UF(tR z tR RXU EU=YtjV2VuY҃VjV2jjjjj0URujme[^_UWVSE 11ۋUU =1E}v]mA}wtE}vmA Me[^_Accounting resumed Accounting suspended US=XJXJx<ujjjPNXJXJPJjPRAС$K d 9XJXJXJhB=XJXJx<ujjjP輖XJuXJPJjPRAС K d 9#XJXJXJhVj(KJJPjhl;0KUSHK U~ PK}0} PK PK=HK| =tKu TKtKTK+ tKTKtKHKt-~kPKy)lKM>;х}؋TK ])lKTK ]lKlK9XK}XKXK9lK}lK]UYJYJ p3Ku JJ=|3Ku |3K|3KЙ ,6KUWVS1XJtK { { tu5@?t}^E@<u6u t$5JJRu jV u t$5JJRu jV֕=p3Kuu?KTK TKUM=7Ku JJJJJJ)7K,>K45,>K?B~,>K(>KB(>K(>K pK hK=hK5hKhK)"=hK?~5hK)hK]}?BEEXK`K=PK}@5PKHKu TK~5PKpK85PKHKu TK~)5PK5pK5lK})pK pK=JJdu,=pK}pK)pKpKpK=LKLK$𐐐0TixHKtLKvHK tjLK^]عQօuHMLK9]CعQu%]LKHK0u LK]=OKty0C@ۉ]@ۉ]Jh>K M)ʉU1É։]E%0KÉ]uU+Uh?KM TKM TKKTK TKt @ tIe[^_UWVS\I\INjXJtWщMz IrZXJ0K0K=\ItIEtASփ\IXJu=\IҡtItAe[^_timeout table fullUWVS}] M\I\Iƃ=0Ku hӉl0K0KZzXJXJt9H }x ~+H ËuJ t)H 5\IҡtIt@e[^_UWVS}u \I\IEXJ XJt89yu+9qu&9ty ~Y X 0K 0Kʋ uȋ]\IUҡtIt\@e[^_UVSM\I\ITK)áTKq)Ɖ\IҡtIt@}K@B}nc0)ډ)Ѝ\JJ15JJX8=JJ9 JJFJJ15JJ\v؍e[^USE@( uaH( XJ=XJuN=p3KtE\IJ \I,6KYJYJ5|3K迁\IӡtIt ?]USE@( t_`( XJuS=p3KtJ\IJ \IYJYJ5p3KM\IӡtIt>]UVSMQ<uU@?C( tjq8S YJ=YJ6~ XJgXJ^ YJ=YJ@?=IvtXJ"tXJXJYJYJ1ɋ4KtXJA~CXCTuCTCTuS诣1v KtIC tBQQQ@|9Q}Qe[^UJJUJJE|3KEp3KuЉEujEPu Ď\S,clockinfoclockrateUU E NZ$8M8H8M88MHMMMHM=88888M8MMMMMMHMMMMMMMMMMMMMHMHHMMMMMMMMMMMMMMMMMMMMMMHHMMMMMMMHu1Ãt1UME kKt@0tP$ȴ ÐUVS]M u;u1@9K~MMOMOYJe[^_UVSE] p@JJ9vЉ+V~)Ӆ 5N9vV)щJx8uK~̃Jy1e[^fileUWVSu} EPjV <>K9JJh!<>Kjj&j$9j$SIЋFttXS 41Kt41KX41KC41KFUfC FCft}tEM1e[^_US];tCBSsu_ <>Kj&S<]UVSEXjj'h 9hVIЋCFPp2C F tP]2fFfD?fFVVlVFfFfFe[^UUBf@BUWVSExjj'hv8jVWv1~ t v 1fFf~wNNlNB^d~F9~؉djj'P7F ^P67vSvwj^:tf@ K}e[^_UWVSUzfOu\7_>t u6K}~ j'7:wn1 t w ]1j'W:e[^_UWVSMY M{1MM9t>t9t Vu)uM1aMC9}fsFEGC9~fKf{t S<te[^_closef: count < 0U0WVSu] t}tnC(thf~ uafEEEEEfEF ET6Eԉ]E}}E@ T6PEPЃfN f~ ~1f~ } hˠnF%@=@uafEEEEEfEF ET6EԉuE}}E T6PEPЃ~tFSV@ЉÃ1V؍e[^_U0SEM @9Ptzfx t -P fEEEEEAt%fEf`ET6UԉEEoAt fEAu nfEfH@Au&ET6UԉEE]]E0$ET6UԉEE]]E T6REPЋ]UEUPPUWVSMu }9yv t9u }tJ}ES 9t Q}fC A9~cfq]}QAA9~ fqfIfyt Q<tA9E}f}fy1Ee[^_UVSu~u<>K PjVF9jh41KVFЃ u$41Ktj$SVFЃ uu1e[^!D̤S,fileJJ:LmaxfilesperprocؤJJ$:LmaxfilesU=Ku!EjhKEPKK K:Ips_stringsp!K:usrstackU@WVSDž@]@u DLDžPDždDž`DžhDžlƅpƅqƅrEh5IITuDž 4WWGuEEDE] Uuulthw5IISWWt1WDžx5x5JR҃Gxdtcxt]Pz(~QR(@d9Ht|Au9Ppr:RuV2OQr(jQ.R@WyjjJh/GuR]S2jjjjhPwjYr8u.t%w)։RI҃WDžx5x5JR҃DžKу::W҉1tDžjJw&2Gv(j v42F$F(DF_2]^, K<0uDžW]S y tWRQ w SuVfzvVV^u]uiv<v DžURs8޻uƄ3N(@ ~<tF(tf(v<ςtuVR9u$]SR 9WRBuF)t<RV2Rt"dž&dž]S2RStS QtuV Q ]K(uNP9QuP 9Q uf(]KRQKR Qt%v;%V]C)t jSouw,VDhw5IDtxt jJw.sK%j s4.1thw5IkD t t jJwp.~tv$j v4O. 0t ju@[^_USUX EB0t 2hjCdP_hjSbjjjjhEPjjjSNuǃ ǃ1]UVS]CptxVƒut{(t@S(;tЍEPssR裿u^M)KMKC VxƒuËCptUV[ƒtBrEPssREt?]M)KMKC$믐1e[^U WVSMC,+A$޿)ȉ)օtR߿)Ps( MyttA A$MA A$)lj}MYI MMI$MM+APVSŸuh߿u߿P}~$VWμFCuFM}jW諼W߿P蜼u߿ P苼}~$VWvFCuFM}jWVEe[^_UWVSE8Xp GE1]uE} 1SEPЃC@u FIt>t ~u~uyGE1]E@E} 1SEPЃuC{t 6GE@1]EE} @1SEPЅu1e[^_UE Pu@init died (signal %d, exit %d) Going nowhere without my init!UWVS YJ}0u0E PE PhİwhU^uCЋu}G( t W jjjH%}g(O( LJLJWhIWtjTA)u&}_ t Wu hjCdPvhjS]}@ 9xufÃ{tW{ t9C 9Xlu1xhtjjphih s f{ts"{t s CCj}W>G ~uwVG}G@@Wpt WG B }G W(5KGt (5Kx }=(5KG (5KG,t}_Hty5$5Kys@tCDFDSDC@$5KBHC@t BH{@xD$5KXH=$5KH{D$5KCuM@؉EMYH>tC09t9BE{,t@?x0tPTSTv@?PTC0}u+~t/MjvEPA tO~ tjHv  {LtsL9ƃ~fǃMAHPhSj%ǃjCp7tYCHuC0dGj*s$C S>:{t SC B S C{@t S@CDBDSDC@S j)Sk$ K{,ufC)u`C)uFtTK(C0}t G~ EjvEP走k[@}u PFuBjhh us)CLVS"jVbdVu1e[^_UVSM] 9YKtKy} MY$^ 0KOK1ۋFƒ|tDCV|uFPMA$OK@(/^ 0Kx(tOK0K>K1e[^_UVSUE Z(1R;t Ct t4{ u E K MCPsEP*{ u E K MCPsEPKƅuFMK =K MCtt!jsEPjsEPe[^UWVSUE z(EQJR,t y u*1;t8tF<u<uEFE;jGPSMjSGPAw jO PGP$Ee[^_0000USMU 1ۋA(8wh$8𐐐P\htRQ>RQy2RQ&RQQt؋]U1U=@Lu!E jhLEPB@LDLUWVSMIMfQfaf~ ftP]3usuuM]^M]}"Myuy uEE>uM]N^ M]M9M]9]u u9uM 9u]{ tufF1jj(j$ NjMOMO]_ ]_uVWM O]fSfWGG fVf V t!t4u/WA4W^ uWEj(WEj(We[^_UWVS]{}E$f{uE(MSƃu j(S@#S V @tN@tI1N3@9`L~4Q`R@t)J9Kuj(S ry`t yddLt ufCSQfCsSVjhdLuS]E(st9^ Cv uj(ShE}}7EURURjSVtUr$<\}UUSzf{uUfzu RMfSfQUfRf9Suj(S 6MQ9Su-Q9Su%UUS{ z{zSuuf{uUfzu R=S MI K RS-}t UURS{}EUMI j(u MQSY{y {y{}QEW}t UUSU{ z{zRl1e[^_UWVSuVu##~ y~yUURURjVSÃuS$$@lUMI j(u MQ9Vu Q9V]VuMVQjMURUZj(R{ GU~z ~z}}ZU~ z~z1e[^_UVSu uÅtnfSfVfFSKN{ u{uFF S K+SKЃFȃF @t SR0VF fF1e[^US]CEEPEPjSRGt f{t EfxuE EP1]lf_findoverlap: defaultUWVSMEU u} WUWU_ wt Q} 9Wukt Q} 9Wt\y uytU9Q|&}9yuU9Q rutC9qu<9Yv7tut9q\u 9YQQ}I}iU9Qu}9yu9Y u 9q*U9Q>}9yuU9Qw.ut$9q|u9Y s y uyu }9y|TU9Qu}9yr,uty uyt9qu9Y w U9Q|}9yu4U9Qs,}9y|U9Qu}9y s y uyuSU9Q}9yu4U9Qv,ut"9qu9Y w y uyu h<1e[^_UMU tA u Q Ð@ x uP UWVS}u W9Vu(W9Vu N ONO~W 9V u(W9Vu NO NOWVTjj(j$j$SWRN KNKC NO NOWS^we[^_USEX @ t#؋[ @ @PXu]pLCodaselectKTRACEBIO bufferkey mgmtsysctlPktClassisa_devlistIpFw/IpAcctGzip treesttystempDEVFS nodeDEVFS frontDEVFS backDEVFS mountMSDOSFS FATMSDOSFS nodeMSDOSFS mountNFSV3 bigfhNFSV3 diroffNFSV3 srvdescISOFS nodeISOFS mountmrtether_multiin_multiip_moptionsNFS daemonNFS uidNFS srvsockExport HostNQNFS HostNQNFS LeaseMFS nodeFFS nodeLFS nodeLFS segmentsubprocproclockffile descfileVM pgdataVM pagerVM pvmapVM pmapVM objhashVM objectVM mapentVM mapshmUFS mountUFS quotanamecachevnodesNFS nodeNFS mountNFS reqfhandlemountiovsessionpgrpcredmapmemioctlopsgprofnameisonamesooptsifaddrzombiefragtblhosttblroutetblpcbsocketdevbufmbuffreemalloc - bogus typemalloc: allocation too largemalloc: wrong bucketmalloc: lost dataUWVSE |VK} Vv h 8}}w>} w}}@}w } }w} v}w7} w }wS L}@w=6}w}w}w\JE\I\IEF9FYMщM쐐Et]\ItIEf~ wfF jM 4LjVK TKf:} ~(}~ h5fMfJ]^MfAfBMYY ME E+E]+E9UrM ]{uSM M]E+4>K TK9t h; 5fzu hP4fJMIF]CFF9F}FM \IUҡtItEe[^_free: multiple freesUWVSE |VKE+4>K =TK\J\I\IE ~QG Pu5I#W )SffGC 9CC9C~ SQ N uMMfGG9F} h3F9F}FF{)׉{9C9{~ S.Q >uMNM MMM \IUҡtIt0e[^_UWVSJJJJ } P5I TKj Ph0Kh4>K5II1۾\J=~D%EE}MDETUETTC~1ۉ JJ )ЋJJ)ֿ|VK cK M9vuEUUUUE 1UDCU~e[^_QJNsysctlMJkernNJvmPJ0vfsHPJXnet<<0MJdebugddOJhwLJmachdep8OJuserKJ. ;,AosreleaseR Z:XIosrevision< KJ ;,versionlKJ ;,ostypeKJ:XosreldateJJ:XmaxprocJJ,:Xmaxprocperuid\:Xargmax@a :Xposix1versionh:Xngroups:Xjob_control:Xsaved_idsM4 ;,bootfile`:XncpuD:Xbyteorderl:Xpagesize Q ;,machine_arch t.K ;,hostnameUS]QESjEPuXu {tU9Q Q]  Xsecurelevell3K ;,domainname |TK:Xhostid ;,cs_path4:Xbc_base_max`:Xbc_dim_maxD:Xbc_scale_maxp:Xbc_string_max:Xcoll_weights_max :Xexpr_nest_maxP:Xline_max4 |:Xre_dup_max` :Xposix2_version :Xposix2_c_bind :Xposix2_c_dev 8:Xposix2_char_terml:Xposix2_fort_devP:Xposix2_fort_run:Xposix2_localedef:Xposix2_sw_dev0:Xposix2_upe\:Xstream_max@:Xtzname_maxlUS\I\IURMUMUM`KUdKU\IӋtIttLKUHK@tEHKtIKuEHKuEHKtIK tEujURuT]MJNntp_pllxxS,ntptimevalgettimeUDWVSu}jDEPM 1Հƒ ]tPF00ƒ_\I\ItEģlKtEȣ`KtẸdKt%HKEЀ HK tEԣTKt u&=PK}PK ؉E PK MlKEġ`KEȡdKE̡HKEСTKEԡ\KEءXKE܉5\IҡtItTjDM 1EP~…u`LKHK@tHKtIKuHK%=uHKtIK tЍe[^_physbwphysstrUWVS] E}tE҉U@?J(臆E}uz\I5hI 5\IUC$t"K$jhjS@C$uK$}=\IMыtIt$Es,u]}@}@?S usC%tu5\IMыtIt}u S0K4+K8uC%tTu})L )NΉ}WO C%9u|E}u9~cu;}uc$C&t c$S@@?b(Ee[^_UUB@t9B4vB4B4UEu hjPj%kKp(UEu hjPj%kKp(US]S@c$]UTK(5KhUKj)JJ}P-9,Kh`>Kj)JJ}P 9cKh_Jj)JJ}P85Kchgproccnt: procs < 0chgproccnt: lost userUWVS}u #_J5K tO9yt ut=A A py } he!9tABQj)Q1?u15h.!jj)jtH Yyq e[^_UE9@?tx0u1Ð@<9@?uUM#UK,Kt9H0t u1UM#`>KcKt 9Htu1UWVS}u ƃ_0jjjSpt9t "}tJjjjÉ{CC j CP@ PRvg(^ @ F M NF] #`>KcKtpU #`>KcK4cKVF 9tejVWjW4t W4G8B8W8G4xuPqFG4t FO4H8~w81e[^_US]{4t S4C8B8S8C4xuPǃ1]US]C x t@ 9Xhu@h;tCBCC u js jS]UWVS]u ~ C<9t9x u}tFNu VM[Ht89t$9x u{,t}t@Hu P[@uˍe[^_USEXt5{,u&Xt&jS)jS)[4u[4u͋]UWVS] hpSIЋM yt&{qMA8t { 0My,t}y,twy tqQ B|  rd My<t A<@0$Mty@(f@f,@ CtIj TPCPrC xt ǃPMx t@ 9HuPMA(tA{t;CP t1BX0zht Bh@1u4Bl8 ǃ0Mydtjqd<P0 ƃCe[^_UU(5Kt 9P0t @u1UpWVS}] w0PWhWSCЃuIhpPSCЃ u0}ut Vf9u}tVo9t#1[^_UWVS} EU:u,u<7ÃjuS< U:utt UzuhX jRBЃ 1u TK(5K{,Ut, tbt?tFSt[@;C(tJx t>@ x t5@ @XC8t$C8t@9uVuSK u[eF?1e[^_OJNproc+$S,procallMJPpgrp44$MJ|tty`` MJuidMJruidMJpidUUMB0B<@0A1UEU@<@01UEU@1UUMB@B@A1UEU@@1UUMB@ B@ A1UEU@@ 1UVSEM uPu @9@9s 'XPq Pou1e[^UVS]u@9C0ts0tjs0SC01e[^UWVS}u ~} >t[9G0tTPÃt Su tf@ 9B uRC)@t Y@ 9Xt3~u C0F.F9C0t$Pt@ 9B t  jvSe[^_UWVS}E _09stD9rtPRuS9st$js@jV89st O(s9st O(s9ptPpO(1e[^_UWVS}E _09st9stP3Gu9ptPpO(1e[^_UWVS}E _09s t9r tPRu99s t O(s 9st O(s9p tPTp O(1e[^_UWVS}E _09s t9stP3u9p tPp O(1e[^_UWVS}wP6:uWU v F6uf@#P PU romufXO(1e[^_UWVSE MY8pt 9{t9{utL9pt!9st9stEP3uxt9ptPpMI(t)9{tjsjW{MI(u @9CtC9BtBCMI(1e[^_UWVSE MY8pt 9{ t9{utI9p t!9s t9stEP3uct9p tP6p MI(t9{ t { MI(u @ 9C tC9B tB CMI(1e[^_UE@)u1øUME PT 9s9uÐ9r1UEU xu t 1ÐUSjjjLjLSIf؋]USU\I pI \If u jR9\IҡtIt]UWVSUf:t%|ÉߋuufEe[^_UWVS]Bljfe[^_UUE x v@ p0@ P?iUVS]u PC0u"jj @ P6n?ue[^UVSEM ut> ttgytq…yu qthPta9}ËR4uJyu @@ATKt-B@9Au 9}ËRu t1e[^UWVS} 1EtT tu]wÃwSuEFuUwtyXtrwSuEF [4uTuUB@GTKt6C@9GuwSu7EF [u tEe[^_UWVS} ]UJ1~t+yt%GEFU9BtA9Bt Q~}9}!EP1t W01e[^_UWVS} UrjEPw(g u]wÃu t tjwPe~yt!~tCEAU9BtF9Bu!EP6tuf}t ,E|f}wE1e[^_US] jURs0f u*UUMUUMUR3u]US]M 9v FCEuECDEuEjqEPd]UVSu j]Sv{e u S6u e[^UWVS]} v U ֋}w{} C{ }CC S9V |u9VrS 9V | u*S9Vs"UR}W2U(S9S | u9Ss SK K}W~(uw`GU w} tuw } t!} R} { u; v  C{ e{ XC C E{ u;v C{  u{vCC 9u S9VS9V|u9s ++0ҋ+ +%jRRP}w JJ9Ku9vJJKJJ9K u^9SvYJJFJJ9Ku9vJJKJJ9K u9SvJJSK SVSVS V 1e[^_UUE 8wjpBP_aÐcalcru: negative time: %ld usec U8WVSu \IJ \IUU􋆈E苆E싖UU \IѡtIt{EUEUE؉U܋EUEU܃}u"}uEEEEU95@?u#URY-U+@?KӋU+D?KUԃ@BƉ׋EԙEȉUu}̅}Vhg eEӋUӋEuuSQr ӉM]jh@BuuS ӋU jh@BuuU ӋEHEӋUӋEuuSQ ӉM]jh@Buu ӋU jh@Buu ӋE H}tmEӋUӋEuuSQ ӉM]jh@Buum ӋU jh@Buuo ӋEHe[^_UVSUu tuZjCPSR^ZH jHvSq^e[^UWVS]u VSAFPCPAC9F~FCCN |98Jye[^_UVS]jj*hhVS0\dždže[^USE] R@0Iu 3]U=$5Ktj5$5KÐj syncing disks... %d giving up done The operating system has halted. Please press any key to reboot. Automatic reboot in %d seconds - press a key on the console to abort --> Press a key on the console to reboot <-- Rebooting... UWVS} _Jt _JsWCЋu=I=QQhH  ajjh=KS11ۋJJBJB$% uC$9JvtK5KJh ]h ]KJJ5KJ@Ѓ$pd@|||||||L|||||||Xh ^]h R]h F]h:]h#.]h9"]panic: UVSu=\QKt  5\QKh\E PV>]hp \S^bad exit callout list specified exit callout entry already present UWVSu} Ett t _J%_J_Jh>\DWVEt h\jjJj …trz1 e[^_UWVS} 1 _J _Jt*M9Ju9zujJR FӋuػ_J_Jt)M9Ju9zujJRFӋu؉e[^_U WVS} MQ$7F]txE􋄲ENEtEuKtK tKu MA(tKj wSU u;t3j SwV u# tu ;t SVu 1e[^_UWVS]S$M I\I}u uFu  !}Gt  !uFt  !}Gt  ! } uuFtK(c(}?tu Rt'?u"!} t !"!}?u ! \ItIte[^_US]1ҐRttJ B~ۋ]UWVSu~$tVÅtCK!Rtt !uLJ LJLJLJe[^_UVSM] U1\It# t >t#5C% )C![\ItIt舶e[^UEU1U WVS} MQ$7F]txE􋄲ENEtEtKtK tKu MA(tKj wSR u?t7j SwS u' tu ;tsSVuN1e[^_USU] M\I% \ItIt51]USM] U\I\ItIt1]pauseUSEM X$ jhh(Sjt]UVSEu 1ҋX$E M~tjvEPPƒ u@>t9jEP6Q…u&EǃE Ѝe[^U VSEu X$u ~tj vP P ur>u1ij EP6QuXEt tB%}~'EEE 1 e[^UWVSE}}1}TK{0~eC)u_9]tZ}zt\I\IEC,<t <tx{(C) tC(!f} fC<@(u jPSMC)} td tu !tL{`tVC,Yt!H{`t?{(}9S.9@?u) tI2vƃ2S}=\IUҡtIt臭e[^_issignal UWVS]Љ#C(tu1QtBJ<Rt C)C(%=utfjsKDžpDžt=Ytj$u(Y҃Dž,1(0X4$8u<1(N,R҃uh8RV B@RV$(V虱à Vj$j jjh R(jÃ,uNuj$j j  QR R)։R(jÃ,Dž,x5(0x5N,R҃u$jVuÉ؍[^_Uj uUWVS}} 7^u Oې9] s] Gt0ruGuS6u@B Su6IC t Ju S6uSu6Q@ )^)_1ɉUMEGEG ])] Q1e[^_ureadcUVSMu ~t~u h%{uN׋Vtr t+Q3F Q3F}KNFV 1e[^hashinit: bad elementsUVSEu hy&9 9~ju P蒰19} B9|Ke[^phashinit: bad elementsUVSEu h&o9RBt 9R~Rju P19}B9|e[^SU$SEujEPu5…uEH=>Bw E$S'''Iquantum'UI tIJJ=$SPjh'aUWVSI19] ~h2>9C9] p0h2$9  @@tWR x}RRh28 xt h38@Hwg$33$4,444<4h 38zuDE Pr 0h3h3h"3h)3h93Z8Oe[^_UjhOJ4h44-debug4%d.U,WVSu EE1EOJ+EE萐}uj6h4u9 Extjh4P@Љǃ }0щHPuuE@Љǃ uM]EE19;t9usExtjh4P@Љǃ u,P0щHPRuE@Љǃ tNMBuzuRUB9t}jh4uE@Љe[^_MJ:6486Nname66UWVSEUXE}u>Eu9uG}}};u} u7@xu uuujjpl u 9~}/Au]xuUu uuuJRU Rp- Au@yu:u uuuBPE Pqu1'u}7E}9}e[^_U8VSuEPjEP]Suu hOJuU̍PSVFe[^KJ7786next77UWVSOJM90}ЋM\;.uM];t ;.tC;u M.ur:M9 >pu tkM M M}u}tM1MBu:zu4R:rC];t ;.tC;u M.uO]e[^_UE=@`Jt1D`Jjh`<jh@`JCH`J=@`Ju@`JUU}u uuu jÃ#t؍}؍u }ujuu蓤 @`J=D`JtD`Jh@`Jt u$}(t}tE9E}EEU(؍e[^_U$WVSUu +tc H7eEEEFEMF EMQjjjvvjEE nEEMF EMQjjjvvjREE.EEEEEE EPjjjvvjEPRƒ$j\hL`J IjPh`JIl`J\hKJh`J `J0҉UӁè`JЃ\p`JhKJS 0҉UӉ-`J\L`J hDIS 0҉UӉځ`J\~uU1Q9UvU]SvhL`J#ƒ uL\v%äSF\Ph`Jp#ƒ -%uEM~tjvEP@#‰Ѝe[^_UVSu 1>t]Sj6S#u~tjvh8K"e[^U WVS]} RS2\E?tjUR7# (}?Bv tjURw# ?\I\IUTKM)щMTKM)щMUTKUTK\I]SSh ?KSh@?KvTKt%u萐{xu{|t VSxRN[u=YtuY҃M \IыtItCtUM8K 8K1e[^_UWVSEu R@0ƒjEP6J"ƒ M)ʉ)ЍM9 PS| PS9}JJ‰U JJEș}ÅtM˅}]\I\I7K 7K}=J\IҡtIt8~t ؿ@BMUjvEPb 1e[^_UVSM] ;v \I\Iƃ;ufApEAtEAxEQ|UutrTK9Eu TK9E| TK9E}EEBhTKEP^-QEE􋂘EE5\IҡtIt(jsEPje[^UWVS}u >we^tjEPSQ   FFtuVW ]EPu St \I\IE>uYWhIA}u}t#hTK]SSAPWhI@EGpEGtEGxEG|.WEE􉂔EEM \IUҡtItԁ1e[^_UWVS]jS{pu{tuC|Cx{x\I\IƍCpPWETK9Cxu TK9C| %lu %s UWVS]U {T}h0PծC, fC>@DEHMs4 uu{TEHMnuut hTPnC<Mx{TEu~ t)aJtWv 9tPWhpP: UB9'ECT9~C&uMy_uC,.{T| ECT9EsuGEE‹M9H v3MIDntTLEUM9J wЋMjjh虀EE}􋰀EEp0u$u uu`t Ruuǃ0tju؃EMEE‹M9H MI\l1tPtCEp0u$u uuh`E$ %U Pu-ǃ$4FuMIE\m1tPtCEp0u$u uuh E$ %U Puǃ$FuEUM9J #juɂEP1u$u EPSVhfduu0ǃ MY_juu Mqu uSuu Y}u Lu =>%Puuu 1"juEMe[^_UVS]s\@C$% ‰S$FCXFC\C&t C%u.{,u(jC@F PvjtPhP<jV艁S/:e[^UMu1ÐÐ19Q vR|nuB9Q w1nametoolong%s%ds%dUWVSu]0}HvEYu uhYh`Ju}t7UaCt'FPhY0`J`JP`Je[^_dsinit readdisklabel %s: cannot find label (%s) readbad144 %s: cannot find bad sector table (%s) UWVSUURÃ}tgu3TaJt hdZuuuu u͸Ãt( MUJMBABABbUfǂB<M My uB} t}`uUB\MA]UMR\ Q]Q^1e[^_UWVSuf] M t9Z v[Dlr*jh`jVMуu3jh`jVMыM [T te[^_UVSu] [D tjPo{jSVze[^fixlabel: invalid magicfixlabel: invalid checksum%s: rejecting BSD label: raw partition offset != slice offset fixlabel: raw partition offset != slice offset%s: raw partition size != slice size fixlabel: raw partition size > slice size%s: truncating raw partition fixlabel: slice wrapsfixlabel: d_secpercyl <= 0%s: rejecting partition in BSD label: it isn't entirely within the slice UWVS}U:WEVu WEVt _u(t _]ô}tEM U UM ىMU9St.tWh_ u WSjW`\M 9AtTt WhB` u WSjW]U 9Bs&u h`Wh`u M AMU JM9Mv `Uz8u `E1Mft~{u;t_U9SrC9Er9CvBt/Wh` }uu WESVW jSIЃMKFU9|M AM1q8A4U BAKu>K@0(aJ1ÐU>KaJ1klogUWVS5I1\I\IËF 9FuzщMEt"\ItIEtId# aJjhfhVǃt\ItIEdF 9Ft\IҡtItc%aJW^+^ y^+^ M A9v‰Ӆt;u SI@F PMǃ uF F 9FwF M ye[^_USU \I\IÃu?IB 9Bt!\IҡtIt%c,h aJu"\IҡtItb1]U=>Kthh aJ"aJt7=(aJ}j(aJPұ5(aJt jPaJt5I7%aJUVSE u=vt=}fte=~f=f@t =wt@tnx\I\IIZ+Z \IЋtItb}IX?>t aJ.%aJ#(aJ(aJ 1e[^U=Su!EjhSEP&'SS%s: table is full Uuhjj&U@?@(t3P zt$E R UEPj EPh`muUUB(t@ xt @ 1UEt ujPNpUWVS]1j t{tjs wets Eu}Pj EPh`mu oje[^_UEUEERj EPh`mu 6UVSEu \I\IPhEPj jhxwV\IӡtIt_=>Ku&EEEPj EPh`mVe[^US]jj< jj S2Ã;tjPKp ;ujj>_ ]UWVS}\I\IE Pj jhxwW1ƃ\IӡtIt_=>Ku&E EEPj EPh`mWe[^_UVS5SSE EEPj EPh`muÃ=\QKu5S؍e[^USSSEEu j EPh`mu==\QKu,S]UWVS}E p=\QKt Itu=It 5It)t%VWp}t95Iu It jW t=Iu tWSЍe[^_US]EPj Sju h]UWVSEu ,aJ𐐐C1ȅu}t ߁,aJU:؍e[^_(fmt null) (null)U0WVSE1} uu}uEjnE"v E E E)} tuWU ҃FEԋU:BU%uEEEEEE1ɋU:GBUU$Lo𐐰pwpwwwwppwppw(q8q8q8q8q8q8q8q8q8qwwwwwwwwwwrwwwwwwwwwwwwwwwwwwwwwwwwwwwwwpqrxswwwwwwwswsssww,tw8uwwLuE}EqEeEY} uWm}u&EURU&uډUEUJ}u E0_E؍\ЋU:GЃ v}t]EUzURjPBUWà ;t&K} tuPU ҃FEԀ;u݅EUBUCsi<}t,} tuPU ҃FE!؃} tuSU ҃FEEU EEU: U:q}K>} uj>EUB} EUzURU}uEM}%} tuPU ҃FEԊ} tuPU ҃FEG}t/];t'} tuPU ҃FEC;uM}gFEUzEE EEUzUUEUzEEUzE0} tuj0U ҃FEԸx} tujxU ҃FE2EURUuEvn}u0}ЍX19}U<tC9|)]}uc}~]M}tT}ؐ} tuWU ҃FEM}u'UBU} tuPU ҃FEKuԃ}}M}]ؐ} tuSU ҃FEM}uEUzE EUzE}t } EߍEPuWE }tt}uE }uE}tE}uB}tTK9E|TK9Eu*TK9E 5\IҡtIB}MA(@t M9 @aJt$5\IҡtIu\|S[tJ|Au C +=w,ClPQ<@4| t } FlPQ@1e[^UWVS} j`WIfG]S W@1ɉW0O4W@1]uډW0O4uuQRfZ G8WtvLÃu u >$$8S09W0C)umSOR9QuC)t&RW2qZEԃt E=Q~7{0u1C)t9{$$`𐐐oohh<< <|K(S uSYEԃsu ~t*@RSXMvSXEԃ@u > u8SVWSRwe[^_UU@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UVSU] \I dI \IƉSXC\ u(K\ f}K\jPIЃhhCPbGhhC8POGhhS?G$5\IҡtIt1e[^UVS]\I dI \I9Iu IjSCPGC8PGSGCTChClC\5\IҡtItf1e[^U WVSu} M t W~Mt 0KG4 y t8}| jWWVT&jMA9u ytR-MA 9u5y t/}| jWWV &jjwhg+MteMA 9uEy t?G]u!O\GYkKjW@1MA 9uy ␋MA 9u y  u}|Mt  u M@t M MA9u*yt$?[WWLP!CMA9yt{Mt/9u% u tQWWKP!?u7WV$Et Wj $?t 7WELJg\MA9yMWBKƃ t uWV!ߐ[WV!WKƃ @ tP tKЭ@WV WJƃ   t tEt%Э@9tWVEMA9uytMtW"MA9uAyt;Mt3}}jjwh%e MwW%iG=~,M PG89AWj1u$E(uEtWhDWVDMuW8#WV" t*M9tA9tA9u1Mt)t!LJGPWJW" u G] tg\Wj/WV"M9u79t2Mt*)ڸ9~ЉÅ~WjPKG]tMuMA 8A g\W<e[^_ UWVSu} u.qG8PVkC3KGPQ ux)uE\I dI \IG8PVhPE)53KwP \IӡtItN u u.t%3KGPG8Pj Bt }3KGPuG8PV`BtYЭ?w:$Ըܸܸ~J1 Be[^_ttybg1UWVS}5@?} te} t} t} rt} ttz} ttj} t} }tH} gtt>} tt3} utt*} t,} t,~ } et MEQ 9Wlu|F(tv9OhtqWx~ jj`jhhhTKW $E P 9Wlu#F(t9GhtF(u u t} t } WtO} ~f } rt{} }fb} t} tR} gt!} bt} vtGf} t,W} t,} t i8} f@i} at "} t ]} ^t } nt W} et } ot } st@#!} t@p} Vt@} ht@W} wt@do} t,@Z\IdI \I֋M9t O\g\\IdI \IWMB\IdI \IցO\%MuRW ];t4=It9=ItIB^t =I9=IIWEsEmj,uRۨRWTP]S/R 9WlF(ht WhR1uM\IdI \Iց@\I dI \Iցg\W8]MMy$|y(} \IdI \I֋U wFWEt"5\IыtI! } t,u jW?MAt6QW҉Et"5\IыtIc Y]f{}&f|g\WSnWW G\u Mfy}G^u O\g\]SS$S(WMA %9tN} t,tEt ,(~ ~_SWAWSAW]St K  Ma ] S ff9S t WsjRUR M M_X]9 PVw FM9OT8\IdI \I֋WTuWTUҋUWuPU҉Et:WTWuPU҃5\IыtIV LMOT\IdI \IG]u g\WzVzt5MKVztR 9WluF(u *\IdI \I֋OTW]RdU҃\I dI \IG]uO\WYkKjWR҃5\IыtI R 9rzultWl9Q ufR WlWhR z N(B]3,R 9WluF(u tP 9Q t Gh\I dI \IW5\I։utIjuR? ]SjjwhWvRV2;:EM  JJOdWLRiW8Ri2Gd=JJ]uuu Wu 1e[^_UWVS]U }u \I dI \Iƃtt^S"C^uCp;C89|C^uC^t!5\IҡtIt])CxPW"5\IҡtIt/1e[^_Uuu E kKu@ЃPUS] tS.Su9} u1҉Ћ]ttywaiUWVS]1\I dI \I\C^tbtYSЃ{8uC\tAC^t;K\sdhhCLPSƃt#u{8uC\uu{8uC\t=\IҡtIte[^_UVSuV2ÃujV ؍e[^UWVS]u \I dI \It{8ts8C8P3c\CYkKVS@Ѓ{tsCP3;t 3S3ǃǃc\SC\@t*t{8ts8C8PU3Sc\t{8ts8C8P+3S=\IҡtIte[^_UjEPh@TUEPUS]K\@t%tC8PP3tc\SI]US]c\t%tC8PP3tK\@S]UEt P1US]E u StjS1]US]E C\tXtOtc\c\SC^ K\ K\CYkKjS@vuLc\C\ tef|[K\c\{ltClxt jpQSjS"1*K\C^uK\SdSS]UWVS]߁K\}jSIЋECEC u萐V.|SP琐c\e[^_ttybg2ttyinttyhupttybg3UWVSEt5@?pDžlDžhDždDž`\IdI \I׋ux tFu=\IыtIt\IdI \I׋uxpQ u9Vl@(9Nh=\IыtIt#puu@(u zu jjpPjh'hhTKul E@^u|xt |utS|8PxutxZ=\IыtIt-#xrtHp\u|9W8\\|89\I\I5TKH5TKL\IыtItZhu Džhd|90~(HTLX\`FH+T))ʍL+Xʋ\)։`|d|>\I\ITKHTKL\IыtItfhu1DžhHTLX\`aH+T))ʍL+Xʋ\)Љ` =\IыtIt1`5JJ?B``@B` |8}`4uF^t.RhURu3l=\IыtItAl#tlGDžl1=\IыtItxu^E P~RS|*ƒ ~Cu RSeVl (u ~1뫐|(Ã}tP 9ubx t\xuHjjuvhuK jh;hhTKVlt9u8t yueu SXVluOu ~tFyt3 t8t9tP9tP9uytu 1\I5dI 5\I׋E@\@tuV V=\IыtIt)l<[^_ttoutqUWVS]\I dI \Iǃ} t@?EE9C8~p9s8~kщMS9s8~T} t@?M9t=\ItIEt{1BK\5JJhTjC8P2Y9s8=\IҡtIt:e[^_ttydcdttybg4ttybf1ttybf2ttywriUxWVSuEUM IME1\IdI \IF^t5\IҡtItUM 9QEF^ufMt"\IҡtIbjh?hVV E\IҡtI2'(\IҡtIt@?UC 9FlB(t{9^htv@tmB(ug u^ uU{jjMGjhFhhTKV^ E o1E#U z cM9N8@U Bd~dǍMMu WQQE uuj?hЭuW5 )ÃuadžVUP|VE0jhMuEOM9N8džF8PSu))])3K^P ~|:hdTU9t TG$MY} 9hdT9t TG(MAGAGV`A ‰V`WVt,M 9 tut,M GCGCGCGCGCG{GGCGCGCGCGCG`M 9}tuV` ‰V`;VF` ‰V`M 9tu  F` !F`WV#M t,1e[^_CLGET: returning %x U0WVS]E =utD=t=}t=t2= t%= t~b=tt[=|t@y=bt =t@=t@=t@tX=tt@}ԋuƀ EPSE PuuEPu pދ}ǐhdTMCMuhdTMGFGFu<MA`fFMCCCCCMCCCCCuMA` ‰Q`A`=`TtdPh襉WMATuAEu؃;uEPhtuShbtu 1e[^_getflags: %x UWVSE1tCut%=u t(#tt t@ ˀu0u €ut t@ut tt t@tu@% Ã=`Tt Shf؍e[^_UWVSEX`E Hp x t ?F3" ttt t t3 t%=u  t  %=u%@u  t@uE Hp xe[^_UWVSEp`E xP X3ttt t@t@ut t@?_% € t/ t%=u  t  E xP Xe[^_UWVSEu Eu1j hTVPUP u]C~ wE}ttEPUEe[^_UWVUBwPUTVe^_UUUUUUUptsptcptsopnUWVS}]9V P4HaJF\ tF]tcCxtXVvdž+dždždžKdž%dž%Vt:FTjVlUЃ$E u"jhhVVKÃu'F\t؋FTVWPUЉÃujVk؍e[^_UVSEXHaJCTu STUЉjSSe[^ptsbgptsinUWVS5@?UBHaJRoJU1M ‹@ l9Chtpuu xtF(t  jj0jhqhhTKSǃ B 9CluF(u{uCMt #jhwhCPSǃ43{~,sM y~QV P?;|̃{ڃ{u CP {t%+tCTuu SXUЉǃ jSe[^_UUBHaJtBTuu R\UøUUBX@oJB]uoJt oJAjRUWVSu} FX@oJtCP̟FHPcAtC P诟FPFAe[^_UVSUд9VnցFHaJuGǃPCTjSlUЁvoJǀoJBB1e[^USUBHaJCTjSlUЃC\ tc\K\jSǃ1]ptcinUdWVSUB}+~t%u FPt8ÅF18tG]tDG^u 1Et #jhhGHPo<Ã"jtu j7ÃM y~EuAuM AdvdPVG8P ~u PV6à M y~tWX؍e[^_US]M CX@oJuoJ"J1tt PS]UWVSM UBHaJR4oJC^t tft{\I=dI =\IC\ t%{8tC]u\IҡtItP2I\IҡtItC\ tt~u!>}~uF6C\ t- t {u")C=~{u uލF Pu葛1e[^_ptcoutUlWVSUB4HaJ11ERoJUF\ `M ~Jk~ouFM Advdø+F9v‰Ӎ}u SW4 ]F\ ~FPSW à  M yM Y^SjO VSs<1 M y~쐐uM AdvdÍ}u SW54 F\ IF=~ ~ uFP;7FTVRGdUEK1ۋM yjNF^t"Mt*M Y}/#9M Y)jhhFP8>M Ye[^_UU9V~BHaJÐ1UWVS} UB4HaJRoJM`tuZM9t&oJt K@jV9tt K@jVE%kK8z tJ tfttGitptt`+_t t,t,wt@~ht Fh@1M1M9t ;|l 吐#ސM9t uP ɐ#뿋M9t #jV뢐v8F8PgM9w9u g| jVjM1vh& M9A4VS)FTuuuWV`UЉE}HuuWVE}1;}%=u uKjVEt[tV t t}7t>}t|6%utt ttt,t,|K@jV1tMy uy u@@tt$cK #uc߀K @jVMEe[^_US=Vu5EjhV]S蝛EjhVS艛V]VWUpJ2j2Xclist reservation botchclist_alloc_cblocks: M_NOWAIT malloc failed, trying M_WAITOK UWVS}19}djjKh6à uhgvjjKhÃKyjCPIЃ$W$W(WlF9|=pJe[^_UWVSuU MtktkBkl1FYk1+^ xS:F 9F~^+^ P^ e[^_UVSu19}~瀍M+FU9v‰Ӌ9v‰Su vl)]^)؉] M9NsuY>~ NFF}jGPIЃ$W=$W(WlNF9F pJt }=M \IUҡtItE +Ee[^_UWVS]\I dI \IE} ;s怍+CU 9v‰ЋE9vUE)E C )ȉ9{su;~ KCC~}jFPIЃ$W5$W(WlKC9C UpJJM \IUҡtIte[^_putc to a clist with no reserved cblocks UWVSu \I dI \IE~uv~ ,\IUҡtIt4hfq$Wu h0$W(WFCFF^Fu{SF9F ;9F~ =pJ'}=\IUҡtIrh pJ$Wu h$W(WFKNMtI~)߉}EyEF)ډyB$)‰пMDKC~)߉}EyEF)ډyB$)‰пljM DFMF}=\IUҡtIt1e[^_b_to_q to a clist with no reserved cblocks. UWVS} 7\I dI \IE}u| *\IUҡtIthDo$Wu h$W(WUMAEAAx}瀉}gMAug]ÀA9A 9AN=pJA pJ$Wu h}$W(WUMA};yMA})ljU 9v‰URMqug }MQ)}\Ѕ}BMt؅}C}DEЅ}B$)‰в(ʺ؅}C$(È%H9ut" M E)HtPFPIЃ }}My9)} E} }=\IUҡtItE e[^_UWVSE}M A8tO9HtJuIʀA)ytA)Љ…}B$)‰s1e[^_UWVS}E\I dI \IE?OGE_》G)ytG)ډyB$)‰sM?thC9Gw[w9t69uO{}jCPIЃ$W$W(WlOG9G pJ?uUtO_ {}jCPIЃ$W$W(WlOG9G pJGGM \IUҡtIt>Ee[^_UVS]u \I dI \Iƒ~uXC9C|P9F|KCFCFCCCFC\IҡtIt=6\IҡtItStVP搐e[^cttyUWVS} ]C(t@ p1tjEL5u L5VEPЃE@1u}E]@1F]SЉǃEx5ux5FSЉe[^_UWVS] }C@(t@ p1tjEL5u L5VEPЃE2u]}E2F]SЉǃEx5ux5FSЉe[^_UWVS] }C@(t@ p1tjEL5u L5VEPЃEH2u]}EH2F]SЉǃEx5ux5FSЉe[^_UVSM ]uUB(t@ @1u bat uPqt u@ 9Ptb(11Et2EM]uEU t2PEPЍe[^UM UB(t@ @1t2E2EMEEU 2PEPøU=hWu!Ejh0WEPhWlWWWWUWVS/KX/KXPJ=PJt/KP/K9u5/KtA~tFЋ^9^v'{0u {tC0Y{ tC Ѓ49^wڋvu=XQK XQK=XQK=aK= 5Kd+= 5K=9Q9Qv/B9u9tuf:u fzuuӃ49Qwщ؍e[^_UWVS} 5/Kt,^9^v{tjWuCЃ 49^wvuՍe[^_UVS5/Kt#^9^v{(tC(Ѓ49^wvuޡJJJJPjh|e[^UVS5/Kt#^9^v{$tC$Ѓ49^wvuޡJJPjhȁe[^XmbinitUS8K3K\I pI \IjjEt*jjt\IҡtIt h4]US]=Iu0} %PS5Iu17؅}19}8K 8KB9|`QK]US]=Iu$} %P P5I2u1119}3K 3KlQKB9|dQK]UWVS]} u\I pI \Iƃ=8Ku Sj8KtN8Kf |QKf{f}|QKCKKfC5\IҡtIt"75\IҡtIt1ۅt tQKpQK؍e[^_UWVS]} u\I pI \Iƃ=8Ku Sj 8KtN8Kf |QKf{f}|QKCKKfC5\IҡtIt"k5\IҡtItP1ۅt tQKpQK؍e[^_UWVS\I pI \INj5/Kt#^9^v{,tC,Ѓ49^wvuމ=\IҡtItҿxQKe[^_UWVS} \I pI \Iƃ=8Ku uj8KtP8Kf |QKf{f}|QKCKKfC5\IҡtIt-=&5\IҡtIt WuOÉ؍e[^_UWVS} \I pI \Iƃ=8Ku uj!8KtP8Kf |QKf{f}|QKCKKfC5\IҡtIt-聾&5\IҡtItdWu_É؍e[^_UWVS} \I pI \Iƃ=8Ku uje8KtP8Kf |QKf{f}|QKCKKfC5\IҡtIt0Ž)5\IҡtIt訽WuÃtjlsIЉ1e[^_UWVS]\I5pI 5\ICf E|QKCtB{ ts$sC Ѓ,K+UK J u3K 3KlQK3ufCf|QK8K8K=\IҡtItμEe[^_UWVS]\I5pI 5\ICf E|QKCtB{ ts$sC Ѓ,K+UK J u3K 3KlQK3ufCf|QK8K8K=\IҡtIt]We[^_UWVSu\I pI \I׃=8Ku uj 8KtX8Kf |QKfVfSVfU|QKCKKfC=\I׉}tIt2b+=\IыtItGVRurÃu Vk1LFt#VSVSfNffKKKf3ރ} cwd+U VM N e[^_m_copymUWVSu} }E|}} h}u2Ft,E#u h}9~ ~ )}6}ڍ}}E}u}ʚ;hI\I=pI =\IU=8Ku ujD8Kt[8Kf |QKfVfSVfU|QKC{{fC}=\IMыtIt6薹/}=\IMыtItwVRuÃ}}t?VNSKf~ff{{{}ʚ;u } ){}{EV +UM9vщK FtS}~{~(uN+ UK Jv$vV(҃VSV S V$S$V(S(Ks sUVR*S }ʚ;t{ )}E6]}.}upJEupJ1e[^_UWVSu\I pI \IU=8Ku u jX=8Kt[8Kf |QKfVfWVfU|QKG__fGM \IыtIt6護/]\IӋtIt获VRu ǃ}VWVWfNffOM]KV S FTVSV+UK JVMQV Q V$Q$V(Q(I&\IpI \IU=8Ku u j 8KMt\8Kf |QKfVfQVfU|QKA]YfAM \IыtIt5k.]\IӋtItNVRu yE}tmM}V W Ft9VWN+ UK JVWV W V$W$V(W(Ow wvnP 6EupJ1e[^_m_copydataUWVSuE }|}'hu h9F ?+F 64u hv^ )9vSuFPO)]16 ȍe[^_UVS]u ;tO;uFCuCC F 9r3*v CC PvfON K VNƃue[^US]M ȉڅ|6~ 9J +J B  )J J1Ʌu܉Btn))BgًB :t B :u9J |)J CtB)K=B 0)y1BtB 9B }+B u B :u]UWVS}Gu6M O9s&?t!M 9O | ?N )M } d\I pI \IӃ=8Ku jj58Kt[8Kf |QKfWfVWfU|QKFNNfF\IӉ]tIt4-\IыtItWRj+ƃF Gt#WVWVfOffNNNgVV €)щMaKE 9sЉ9UsUG 9vSVV RwM)] ^ W )ډW )] t_Wǃ} ~ u}  >VW]pJ1e[^_U WVSM MuF}9~ sN )ω}6u&~ +}}MA$\I=pI =\IE=8Ku uj8Kt\8Kf |QKMfAfCAfE|QKC{{fCM \IUҡtIt8.1}=\IUҡtItMAPuÃtK}GCO+M KM OF&}dv+CduuV S41{d}u Y\I=pI =\IE=8Ku uj8Kt\8Kf |QKfFfCFfE|QKCKKfC}=\IUҡtIt81M \IUҡtItܯFPuÃl+E$CFt[KFCF C F$C$F(C(~(uF+UK J v$vF(F$}~{usEFPIMK }~ ؍e[^_UWVSE}EMMMMM MtMDEE \I pI \Iƃ=8Ku jj 8KtP8Kf |QKfCf~QKCKKfC5\IҡtIt/h(5\IҡtItLjjGÃu1/uh1{M KC d}\I pI \Iƃ=8Ku jj!8KtP8Kf |QKfCf~QKCKKfC5\IҡtIt/耭(5\IҡtItdjjÃC lE+EU 9v‰ց\I pI \Iǃ=3Ku jj3KCt#+UK J lQKC3K=\IҡtIt軬{tCCKC C(C$Ct<vƉs )9s ~}uXQK9C | XQKK֐s }tVsuM VsuF uM])u M9MuMM} Ee[^_UWVS}uE9)] ]>u,FPjy] l9vډP 6^ 9] ~hF +E 9vSE FPu F])] E ] t.>u#FPjtl9vP 6uFt M9N}Ne[^_localX : Isomaxconnp UWVSE}}tWuPƃ WPƃt~0u +9t )jjhbhSIЃCSSCSS f;UBxufCUB@s F0uS@Љƃu U 1 KSe[^_UVSUM \I \IB @0QR@ Љƃ\IӡtIt蝩e[^UWVS}u \I \IËG @0W@$ЉEt\IҡtItFE;uO|95X}5Xfw0\IҡtIt1e[^_sofree: not queuedUS]K{CtsCt({$tS$C(B( C(AS(C$fI.4Ct"{$t S$C(B(C(A S(C$ hn"fI,fcCCdP6 SjSз]soclossoclose: NOFDREFUWVSu\I \IE1Ft8FtX$P؅uFtX$P؅u~twFtVFuVǃuA~};fFf%f=t-Ft'^2FPh5#hSCǃuFu܃~tF @0V@ЃuFt h<#UNV>M \IUҡtIte[^_UUB @0Rsoaccept: !NOFDREFUVSU\I \IBu h$bB @0u R@ЉÃ5\IҡtItx؍e[^UWVSuFt -h\I \IFt!F @ uVÃt 8F @0u V@ЉÃ=\IҡtIt؍e[^_UVSUM \I \IB @0QR@Љƃ\IӡtIt补e[^UVSU\I \IBu 9#Bt %B @0R@ ЉÃ5\IҡtIt7؍e[^UWVS@?1EMA @ u}tE}t }} E@E}|Mf9uMt E&EMt}Gu G @ tEB@4}tMq }t}|dP M\I \IË}GtE Mfy4ty4}fA4MAu[A f@ f$fuAuD}uu:E9} u&}G E'@ E9MQp+QlAh}+Gd9~ЉEEtE}t }M9yhrM9qhs E(CE9E}}uM}9Ot9}Gt*E#\IҡtIKAMtEPEdPE\IҡtIt諢} \IҡtIt脢}})u}uEEEH}\I pI \Iƃ=8Ku jjm8KtP8Kf |QKfCf~QKC{{fC5\IҡtIt/̡(5\IҡtIt谡jjÃEdCC\I pI \Iƃ=8Ku jj8KtN8Kf |QKfCf~QKC{{fC5\IҡtIt- &5\IҡtItjjÃEl}\I pI \Iƃ=3Ku jjq3KCt#+UK J lQKC3K5\IҡtIt_{tCCKC C(C$Ct }wE9EsE7E}9vE9EsEƃ}t}u9u~ d)$C)uuVsEMIMs }Ep }]EtH}~ }0}tMI\I \IË}W r0uu uEu1EtB t}PuF4ЉE\IҡtIt}tMa1EE}}}u}t}S}iMtEPQ}t u}tuEe[^_U4WVS}O MEuvu؋MM} t u }t ME}t u6uMtzjj9ËuF0URSW@0ЉEu=uS MA9vPsuES@Ãu~t }uuąS}t MGtu~tMA0jW@,ЃG`t}|G@PO`E\I \IE_TtM}>G@u9F/9GPwM@F9GD{uF f4t(O4MM{fG4pG t([f{tCt _TuGuG @ tE9!u~Gu}}E#g`G`tg`G`PG@P1EM \IUҡtIt}|u~t F@@8KMuF PEMt$} tjs jSu K )O@GHCts$)wH} tM GT\I5pI 5\IECf E|QKCtD{ ts$sC Ѓ.KMЉ+UK J u3K 3KlQKGTfCf|QK8K8Kủ5\IUҡtIt裚_T<Et"}tjs jSMs )w@GHCtK$)OH}t8uVz tCxu SB ЉEMGT\I5pI 5\IECf E|QKCtD{ ts$sC Ѓ.KMЉ+UK J u3K 3KlQKGTfCf|QK8K8Kủ5\IUҡtItw_T}tEM Mt3f{u }tMuusKM܃uMEE f{u } }gMIM̃<t G<+E9vE̋C +E9E~Ẽ}uRu5\IUҡtIt覘uűECPHE \I \IE}@ űM)qC +E9ECtMMtE+suK )O@GHCts$)wH}tM]_Tu\I pI \IECf E|QKCtD{ ts$sC Ѓ.suЉ+UK J u3K53KlQKGTfCf|QK8K8KMԉ \IUҡtItS_Tt?us7Mtuu'}tjujSYMus)s )w@<t1MuG<+ẺGC2P#C@PS tjSЃ CdPSe[^US]cK8C2PCdPSC@PStjSЋ]US]cK0C2PCdPSnC@PSdtjSЋ]UWVSM(>K+pJt$(>KpJpJ1pJpJYu1dq.pJ95pJw95pJvGpJ ҍ J ))%pJFpJt [$Hu؍e[^_UWVSu} F,V0R9:jjh螗à hSIЉsfffNfKfFfCfNfKF C fF2fC2F8C8vDvhSYt"C$F C(F K$N fK$C$FC(FK$NfKfF.fF,C @0jS@ЃtaCt#{$t S$C(B(C(F S(C$&{$tS$C(B( C(FS(C$fN.fN,jS1?t7F@PVtjVЃ F2Pf {؍e[^_UEHPdRPUS]K C@PStjSЋ]sbwaitUUJ B"PhAB @tPRsblockUS]C t5K jhAC @tPC PCu C u΀K 1]UVSu] CPTIc C t c SFt5~8}jF8P) ~8~v8NtjP?e[^US]u CdP]tKuC@PJt/{PuCP{tuCtCt9ChsChCt1CdPg7]UVS]M Y 19v1.KYY9vЉC C9CsCCe[^US]S7C C]UMU t>At/xt@xu@t RQÐ8tuPRQUSMU t_Atxt @xuZ ABtZ$YtPQtBtbHRPQK]UWVSu] tqN~t'fBfuufu 9u܋{ >FCt{$~CtCtcJSRVe[^_sbappendaddrUWVSM }t}Gu hD}tMQ]tS ;tu}w +wGM+9~9} ?l\I pI \IE=8Ku jjE58KtT8Kf |QKfFfQKF~~fFM \IUҡtIt3蠅,}=\IUҡtIt者jjƃu 1M  N } PvWtM }}Mt$K }GCtK$Ouߋ}_t{t [{usMqe[^_sbappendcontrolUWVS]}1Ʌu hFO ?t H 8u‹E t H us +suC+9~E9~1Ru 2tp 3C@tp$suStzt Rzuz{e[^_semi-panic: sbcompress UWVS}] uEC E{ u,}tutrf@f9CuS"ÃtTFuFNN S 9s1fFf9Cu's QsS V S SÃmt_S GCtS$Wހf7}tt fUf V hhG&$e[^_sbflushsbflush 2US]C thH3S,{u;u{t hH]sbdropUWVS} MYEsuu }u hHh]KM9{ +{ K u)FCtK$)N\I5pI 5\IECf E|QKCtD{ ts$sC Ѓ.KM+UK J u3K 3KlQK3ufCf|QK8K8KM \IUҡtItk]K u)FCtK$)N\I5pI 5\ICf E|QKCtE{ ts$sC Ѓ/KM+UK J u3K 3KlQK3ufCf|QK8K8K=\IҡtIt蟀]t,{ 6tMYus){ {M)9ӐMuNe[^_UWVS}_CGs )7GCts$)w\I5pI 5\IECf E|QKCtD{ ts$sC Ѓ.K+UK J u3K 3KlQK3ufCf|QK8K8Ku5\IUҡtIt~];e[^_UWVS} jj蒿ƃt)^C WuPi ~ ;USUS1e[^_UEP jjjj PBUEP ju jjPBUEP ju jjPBUEP ju jjPBUEP ju jjPBUEP ju jjPBUEP uuu j PBUEP jjjjPBUEP jjjjPBUEP jjjjPBUEP ju jjPBUEP ju jjPBUEP juu j PBUME t tA uuuRQ@UEP jju j PBUEP jjjjPBUEP ju jjPBU-U-U-U-U-U-UEU @hB@1UWVSu} NMEPEPVUNà u_Ef@f@ @ TVwwEP7ÃtUMuNEUP EM؍e[^_UVSUu EP6rà u4jvvEPÃuuEp u؍e[^USU] EP3rM usEp ]acceptUWVSM ytjEPqǃ _EPM 1Mqǃ >\I \IEEX Cu(M \IUҡtIt{Ct:{M \IUҡtItz#fC45a{u[f{4u[u֐C ujhOhC2PaǃtM \ItIh^{uf{4tf{4t{4fC4#s~$t V$F(B(F(C V(F$fK,Ef@fEuEPuKǃ t;CF$t CN$H(N$K sKN(fC,C2PtffFEf@ fMfH@ Tp jjǹSVM ytOE9C }C E}t CfHfuM qsǃ ujM qEP|ǃ SaM \IUҡtItye[^_Ujuu uYUjuu uAconnecU WVSU} EP7rGà Ep fFf%f=u %jwwEP{ÃuVÃfFf%f=uur$\I \IEFt4f~4u-~2jhRhWÃuFtf~4t؅u ^4fF4M \IUҡtItwfuu؍e[^_U WVS} MIMuwwEP7ÃuwwEP7vÃuVEPuHà EEEf@f@ @ TUP VEPuHà uzEf@f@ @ TUP EERuÃu,uuuÃujw EPIuIUMuHUMu,u!؍e[^_U,WVSuEPu }wà FEF EEE}}EEEN19V vEAEB9V w>tjv6EP Ãt fE~~ w~t +jvvEP[ à ~E@u8@t@+Eԃ w"Eԋ@+Eԃ vEԃ@@ jj uEԃ }tE@t@ }u 7EԋP@ BBrEuuujEPu؋Ep DÃt,9utt t#u1ۃ u j uu+u}7}tue؍e[^_U$U BEBEM܉MEEEBE܋BEur EP2uU$U EEM܉MEBE܋BEEEur EP2uBU\WVS} jEPwà }v/}v (sjjUPƃ uUPVueà u#EuuwEP7uÃE9tjVV؍e[^_U\WVS} jEPwà }v/}v (yjjUP\~ƃ u}tUPVuà u#uEuwEP7uÃE9tjV蘁؍e[^_U4WVS]}uEEEPu si Ẽ HMAEA EEE]EEEY19Q vECEaBM9Q wEEЋEP1MytEPjEPEPEp Ẽt+E9Et}t }t}#uE}iM+MM9AEЅ~}u ELU؋E9B }B EЋMfy}E؋@fHfuЋM1Ep Ẽ EЋMAt+jWEP Ẽ tMfyEMy}tBfy};Eԋ@xuxtMA}Eԃ@ @ MAEЋuAyt@}~7E9F ^ MI ]SWv Ẽ u)]Ћ6uËM+yy}t uIJ}tu賲E̍e[^_U$S] {tjEPs  t HECEU܉UECE܋CEEC EusEP3u]UE H uPusU$U EEM܉MEBE܋BEEB EujEP2uU\WVS} jEPw à }v/}v (jjUP(zƃ uW΀UUPVup à uAuuGPEP7uÃ}tujGPEP à E9tjVC}؍e[^_U`WVSjEPU r à }v/}v (jjMPHyƃ uU RUMMuUPVQ à u8uj}WM 1uÃuUUjM qW2 à E9tjVb|؍e[^_USU] EP3rI usEp ]UWVSU} 1EP7r à ullv _ tDj j聬ƃu7=wvw à t V蟮GF VwwEp e[^_UWVSUEEPM 1rlƃ M y tjEPq ƃ tzEEPM qqEp Yƃ<M y /}%})1}9}EU)X 9vSM q Ep`ߋM Y ] \I pI \IECf E|QKCtD{ ts$sC Ѓ.KM+UK J u3K 3KlQKEfCf|QK8K8KM \IUҡtIt[j}t}ujM qEPƃ }tu説e[^_UWVSU} EP7rà jEPwHà EX jjxƃu7gC @0VS@@ЉÃuIE9F }F E}t FfHfuwvà ujwEPà V菬؍e[^_Ujuu uUjuu uUWVSUEPM 1rà Ex fGu 9jEPM q'à jj]ƃu7nG @0VW@(ЉÃuOE9F }F E}t FfHfuM qvà ujM qEPà Vm؍e[^_Ujuu uUjuu uUWVSulv}u pwlaujÃu 7Fs Vsu ǃ tS"M}uSzu :wB e[^_UEU M9Pv u Ðfx u 1Ð&uipc 1uipc 2uipc 3uipc 4piusrreqUWVSMqE@?} u - } t}tMy tE-u } } M $dHele|eeeeeh$ffhihdd$i@ieiiiift E84udE!VSuVV$~ESuu E uuaEV~ t F x\MA QPYTYBXYB\YB hMfftfuNhPdP~ BF F M+AHCpAHF F+A@ChA@FCdPS hWd}tSu EMfff}t/~ t E8SuuE  ~ F ~t F@PYuuP{@Wt8WStjSЃ EEE7}V MAu-}u E9SuuE MAt E ~ u h^d褧F }t!uuC@P tEuC@PTF KH+H ȋM)ApV CHB F K@+HȋM)AhV C@BC@PStjSЃ Ehed} uVxj5VMAhMA@Mf9u~ tF [@MY@M~upJFpJFMA1~tJF@ MA PqF&~ t.F xt%@@ MA PqF @p MA hld}t u}tuEe[^_unp_attachUS]{ht{DuIfftft(5dY5`Y5lY5hYS hivu!jjt@C17]US]{tC@@sgC{ tS'j6s{u3@=pJt3Is$P ]UWVS]M ADž|EHDž\X]MyuM y luAxktM QA XPK\htjlDžL4P|T 4PLPЃ9luVe lieVe0}l>KECf@fЀfE=YtjC0SlYЃlDž80KPeE141Ku t,f{ tfC f9CuC u GfC Ӆu׋u_|p Kyu_|j6.Kyj&uhpJe[^_UEt h$sPUWVS}tcEtOfxuAx v;Pzu/zu)r 19}6M уC9|uMIMue[^_UE@ u pJfH0UEfH pJjP-update|YUWVS3K3K3KxJ1pJF~1xJxJxJDF~195JJFU<JhSIC$ CSj1f{,u)C&0tjs ic&σS0C.F9W0)xJW0)yJG@%P蝸LJG0g$߃`tWKe[^_UMU %pJt9H`u 9PPu@% tuUWVSMIPMMI`M\I hI \IEMy<yMA$% =MAp(ǻ9}KEPuBƒt4B$% =u%9r0u BT9BPt MAT9BTuC9|t0SuVuc,ÃM \IUҡtItWHPuM \IUҡtItHMI$Y0E8MA` 8PEPЉ؍e[^_getnewbuf: inconsistent EMPTY queue, qindex=%dgetnewbuf: inconsistent AGE queue, qindex=%dgetnewbuf: inconsistent LRU queue, qindex=%dnewbufUWVSu1xJ9xJ~1xJt'f{(tC(PhւK$SxJtf{(t/C(Ph輋xJtf{(tC(Ph2蜋u8D1K]u h_ShD1K)=D1Ku1f{({*C' t yJ9yJ~sK*{t SCBCxJSC=xJt'CxJCxJxJCxJCxJK xJC$% =u&Sǃ}} }1C&tc$SS K$C' t c$S{`t SG{ltslMxCl{ptsp5xCp;tCBCxJtxJXxJCxJ{0t jS]C$C MAXBSIZE(%d) getblkUWVS}tG@(EM9}MM}~huhw\I hI \Iu WÃC$t1K${*wC*uhˈE PSՠtK$0SM9K4tGC' t9KH| QSq0K$E8]C` 8PEPЃY{*wC*5\IҡtI@oA6uuuuSÃu2}u }5\IҡtIt&A1E5} 5WEPЃu%u WtK$ SM KPKTSWA;tCBSE %pJMpJt pJXMKdtG t K$ c$߉5\IҡtIt=@uS؍e[^_UWVS}\I hI \IhWjjÃt5\IҡtIt?WS}K$ ؍e[^_allocbuf: buffer not busyallocbuf: buffer too smallallocbuf: VMIO buffer can't be mallocedbiodeppgtblkU@WVSE@$u h`u U9rH} h‹KE@' ] @&t]U UEu9F0~{F&tUt U V48jRuv@ONF0)xJV0)yJvDEp@@0@4`$Ur@r0VUEP@RPEu9F0yJ9 yJ~?~0u91jjRS'JN@^0U V4N$xJyJw11uF&t=^@~0FDF@V0)xJv0)5yJE@0`$EeuUr@VR@EP0RPd Wuv@S jRSME %E EUB&t h݋rEu9F0U9o}u \IpI hI \IMK&jhjSC&u{/uދỦ\IMы5tIt<EDŽSGU9ru+uVE@@%M MQ蹪uUUE9P0p`u܃~<uKE܋@H(uU9VE܋@dEE9MvMȋunPEU싆EUJ$ BxBt19} u1҉EЉUԋEUEU EЉUԋUЉŰE9}@UMu)u9vM̋E@$ GSQWuuP0uuMÃu0juu۷à c&SUb$C&t^ \IpI hI \IMC&tK&jh jS覙ủ5\IMѡtI:@?9bKt3S$K()ʁu! cK cKcKcK9sMU)U9vM̋uF$ tSQWuuVSEU@E}9}Lu܃~hu~<t Exxu`$ߋUb@uV˜REp@讧Uu V@E@' t P0yJEu+F0xJUV0E F4e[^_biowaitUVS]\I hI \IC%ujhjS!C%t5\IҡtIt(9C%tc$C%tC,u 1e[^biodone: buffer not busybiodone: buffer already done biodone: no objectbiodone: page busy < 0, pindex: %d, foff: 0x(%x,%x), resid: %d, index: %d iosize: %ld, lblkno: %d, flags: 0x%lx, npages: %d VDEV, lblkno: %d, flags: 0x%lx, npages: %d valid: 0x%x, dirty: 0x%x, wired: %d biodone: page busy < 0 U0WVS\IhI \IE}G$u hu{E@%t/U\IMы=tItj7hEH$@&u P4Uz$} R=}G$@tg$WGXqE@' -P`Uz<uHPURJ(ȋ}oPEUE@dEu hzUR0UE}ԋE9EUԋ}9h7Ku^EUM RuoÃuEfH>9Uԋ}ǘWE@@%P sF +u9u}uUB&t}u~SuuuR{/uVuEUE؉UushUz<t(}w$wPG`Pr(h }w$wPh>S*RS1RS0RhkheyK/uC&t c&SEfH>EU)uEԋUԋ}9h}t E@<%@@uUbK/uC&t c&S袔F9rE@<%@@u UbC/C&0tjs ?c&σ} tSuWVu,LMy4~={0t7A$ u1h7KUQMI@Q EEU9Ie[^_UWVSE@' tiX`{<uPPUm[][(؋MiPÉ1E9~-UWVSRQGM9Սe[^_UWVS}G' u\0S119w0~} Á9w0㋇@09t w0w@IЋX019x0t`x0u!@&@uTh G@PIЃ:1ې@0rh G@ PIЃC~F9 w4w@IG8e[^_UWVSUUE %MI@) 9sjj P58K蕪à u藬ِS螱s VYUc& C&t c&S\G9uwU Me[^_vm_hold_free_pages: blkno: %d, lblkno: %d UWVSU UMMUB@%u) }9s_MtD9~<{/tqPqTh UDŽW蝛SSY F9}wU Me[^_Y:IvfscacheUWVSu=Yt ~~3Kf1MAF15$yJyJ;SC9Bu SC9Btx3K;tCBSC{t SC B C yJS CyJCtyJKH K yJyJC yJ%M9KuC 9FuPvC!P  tA3K1F@uZ3K;tCBSC{t SC B C yJC SyJC{(yJtg3K{t>t SC B C yJS CC yJC yJK yJCM x\@\>u{3K;tCBSC{t SC B C yJC SyJCtyJKH K yJyJC yJ1R3K{t?tSC B C yJS CC yJC yJ yJe[^_cache_enter: name too longUWVSu }=Y&~hԡyJ9t/Kv#jjj@,5j@SIyJRyJ{t SC B C yJS C{t;tCBSCu(yJs~\F\FCMKACGC PC!Pw"C yJC yJK yJMAG15$yJyJtXSe[^_UyJ yJyJh$yJj58K觃yJh(yJUVS]yJyJC5$yJ yJ9 yJ8t@BP@xt P@ B @ yJP @yJBtyJ1p 15 yJyJ@ yJ9t9 yJvyJyJ b_kvasize(%d) U$WVSM ]}M uu EEU9]wu9MwjjuuuÃC$ {TK$S$ u} ~ ƅu#SK$@3S@ V@F$T`FX4~TEFPVu#džF4F0džE E}19}  Uсc]SuhJjjuSuaËS$  EE􋄃x0uEU9E9K$ST9SPtE9tSUSTǃEaE􋌃A/QfB>tE90ty0uh7KE􉔃EU9C4F4S0V0GEE9} oEU9~1 h7K𐐐E􋄆x0u U􉌖EE9؋N09NH}vHQhӨcV0VHRV@R"e[^_UWVS}1G%tw,G@%P\t8tH$p,@h@dP؅uWe[^_U4WVSEX`E{t SB@tE܋Sr(ExPuCHCLCTCP{TtSHB9u SPE9PTHE{TtEKH+KLAWEԉU؋U9U uE9Eu SHB9u9KT}uQsLVSBWEԉU؋U9U uE9Et~URTE9PPupE5]}ETEUUE5KUR Mщu ExTu#uCTURTSPGCL{HlMKT}uuWSLu@{L3SLST9u&uCT@PsLVS[CTWSLu{HE@TCPe[^_cluster_wbuild: b_bufsize(%d) > b_kvasize(%d) U WVSEM M}\I hI \IuuOÃtC$% =t#EM=\IҡtIt9렐SK$c$=\IҡtItC$%=uC49C0u M 9u}uK0MSt90tG9M N4N0c$K$\I hI \Is`SC`@8=\IҡtItǃEEM9MOPF@%P0 F09FH}vHPh[]F0FHN0MFdF0FhVyM)MpEe[^_/root_deviceUWVS]=@?jjh($h(VIЉ^F@FVjÃ]SjYFlPhZ+EPElPISjYPh輺(Z+EPEPIЋFWjjjVЉÃu'KJt%KJFWjjjVЉÃuBx7K|7KF=x7Kx7Ku5x7K|7K05|7KV$UVjV''؍e[^_YU-vfs_op_descsoperation %s not listed in %s. vfs_opv_init: bad operationvfs_opv_init: operation vector without default routine.UWVS1M9M;u4jj yJP"‰ yJPRIЃ1M‹@8t\BE8u(=0thph 艷h+gZMAFMB<uGM<A19tRM0<u hGZ19yJ~<u 0B9yJGM<ue[^_U1Ƀ=,QJt,QJA<,QJuyJ1Ƀ=(8t (8yJyJA<(8uUS10K>K@~﹐QJ=QJt#P$OKB$0K9u Ch,QJhl>KOKDPKw;t@(ЃDPKv]UVSu~t #1ېj040KVFЃ uC~e[^S,vfsconfvfsconfULWVS}w$G,@G0G,@EG)ujj hG4 uGPhv7ZGPhv7͵ÃuF8ut+j vA#>j v2#6> G MA G u(KG MYSFF8/u(Sd FOF8/t_ S_WÃpFu"Fu j v"N1Ft(u"GEx5E܋ x5PEPЃG G ~jj hE NMMMEMЉMEEEEEEEWF E4UčMMȉE̋ 4REPЉÃtj u!y+]G=~~ j ul!?J~&wEPwIj v?!MNF_wN_"j v!ww*G؍e[^_lookup: SAVESTARTlookupUSuF twM9Y t9(Kuu^^Se-tGMAu>ډ]CXRS7EL5] L5SEPЃ돐u^E0]uMЉM0CuuVЉEăuLtGC@ t>ډ]CXRSEL5]L5CVЃs}>}t E,?u}tMAu E uFMAAP(uЃ~ ~(uЋN NN uNuЋN u)NuF MYW@tH jh%jP(l3S@JEPRA ЉEă&S]MY{<uC@t uFt{<u,MA@u}u uF8/uMЁI1$}t{<t EuF8/u-MЉAuuFMIF8/tuv}tMЋw E`uFtMAAP}uuvLMAPEx5] x5SEP/uFt-MA8u"AEx5E5x5PEPЃMqSzuFEče[^_relookup: lookup on dot-dotU$WVSu^]^]f}EL5} L5WEPЃF8un>u}tEg<tERFuEx5} x5WEPЃ] ;FhNF t hǿNE0}] ]u 0WEPЉE܃t-}tEFtnud] ;}tw EJFt u}u u1FuEx5} x5WEP1NF%=u"Ex5]] x5SEPЃuWr] E܍e[^_8K:ImaxvnodesUJJ$>K8KJJJx7Kx7K|7Kx7KvfslckUS]Ct"K jh9jSgCuK1]vfs_unlock: not lockedUE@u h}L`@ t `P^jvfsbsyUVS]C@t%sKjhjVJgC@uCu K@1e[^vfs_unbusy: not busyUE@@u h BL`@t`Pifailed to unmount root lock of root filesystem failed (%d) sync of root filesystem failed (%d) unmount of root filesystem failed (BUSY) %d) UVSuVtho腨NV ÃtSh_V^VV$5KP@0jVBЉÃtSh"F5$5KhV@ЉÃ t0huhShէfVUe[^unmount of %s failed (no root filesystem UWVSE|7Kx7Ktj{C@t]P5$5KhSSƃ t4ClPh8uh&Vhx7Ku}t uV he[^_UMx7Kx7KtB@9u BD9AuÐx7Ku1UVSuM KF@NDf=yJu fyJKyJ ЉEM=x7Kx7Kt ]SftEfyJ琐EF@e[^UE@@@H@L@<@@@8@4@0@,@(@$@D@ @@@ @f@f@@Xfree vnode isn'tUWVS}uJt/K94Zrt/K98Kwu%jjjpjpSIt/K{ tS C$B$ C$JS$C {\~*K\C JC$J Jc 4Z{t h#GC$ CD{<t S CCXC`CHCPCLCTC@CC\C<S{hsu SMCCl1e[^_UVSM] yty(t Q(A,B,Q,A(YtCA(t Cq(p,KY,e[^vwakeup: neg numoutputUE`$@`t+H8y heFx8u@t 8Pcvinvalbuf: dirty bufsvinvalbufvnvlbvvinvalbuf: flush failedUWVSEUM tUE2MMEEU 2MMQEPMЉÃMy4t hIE\I hI \IǐMA0tE t xP}@uu,MA4E txP}@uÅtsE t{P|vC$tGK$uh_E PS_Ão=\IҡtItS~K${$}E uK$@S覯qE8]C` 8PEPЃMy8~+˃8M jhijS_My8܉=\IҡtItMQdtE Pr,jRpoM uMy4uy0t hpC1e[^_bgetvp: not freeUVSMU z`t hCA J`A<w A@@ B<B<\I5hI 5\IËA0Bt A0rp Q00J \IҡtIt&e[^brelvp: NULLUVS]{`u hMC\I5hI 5\I{!Cet{t SC B S CC!Ce \IҡtItC`C`H e[^pbgetvp: not freeUUM y`t hBB Q`B<w B@@ AAy<u#ydt Ad@=uj@?B0RQ US]Ex5] x5SEPЃS%]vrele: negative reference cntUSUJzu%zdtBd@=tf`tv}t_U9U}WFuQ~ M AtFuWV@ЉÃ u-VW0huWà u:EEV(ށx7Kk}tM9M~U V UM1e[^_U$WVSU }}܍EP2W-à Ep EL5u L5VEPЃ~<t6}GE1uE@E} 1VEPЉÃEx5u x5VEPЃuV}w^w1؍e[^_UHSUE ZEEDEEUREPusEȉC1]UHWVS]} sPC0uDEEDEE]SEP'u~ tv EȉF 1e[^_UWVSu} VÃupv~<t 5GE1uE@E} 1VEPЉÃEx5u x5VEPЃtV؍e[^_UWVSu MIt~Gpu EPEPuDà bMhtG#F% EE@EUMM̋}׉yPPpEP*à tah讲tu5MyP|,SpqPutзÅuE}5+}GPufpfhfy~<uhfA A`Zq p0 fEEEEEp tfEfE pu0Ex5u=x5VEPЃDžxT6|hME}}] T6VxPЉÃt3uhwGPV-W.UtcDžxL5|=L5VxPЃhfI@Džxx5|=x5VxPЋEM1\[^_U U EBEEuEPuUWVSEPuF0ÃDž|EDž\u XuuXP=Ãh@t }l>Ku fVuFf@ff!fUu FEF%=`t( = t)=u!EEEuw=YtjuF0VlYЃlDžD1HhL|PuT 1PDPЉulDžD4H|L 4PDPЃ@9luV l@t @؍4[^_UWVS]Dž|EDž\u X]XPThttlDžL4P|T 4PLPЃl9huPB lh'}l>KEu fVCf@ff!fU=YtjC0SlYЃlDž81KCf@fЀfE=YtjC0SlYЃlDž4D48h<|@UD0H D4@,4P,Љƃj 0 [^_UdWVS}E EEEE}EPƃ]ȃ=YtjG0WSYЃEL5] L5SEPЃ{<u kt\S&uO=YtjG0Wu̡YЃŰEET3UEM܉M T3REPЉKEE4EM܉M 4PEPЃ9]u S uSe[^_UxWVSEu PUP9Jv u f{ t VttbptiVSV SbS E1U}}}}E1JUR҅u?VUSV USVN SK }SKO1|[^_USE ]UPUMPUURURuU]UlWVSUB8WUW U@GUB@ G EEDEU EUUEPƃUȉUU ztm1BtU BtˀU Bt@}uL"ƃu3E1UU]}UU 1UREPЉƃudUWUW e[^_UWVSu} Dž<Dž@DDžDPÃuCVuV( %(u`SVj@wSMo؍ [^_UWVS}Dž<Dž@DžU DPbÃuS(WEPVd$à ~<ufMV-u"`SEP"j@U rSn؍ [^_UUM ffBAfBfAfB fA fB fA fBfAfBfAz4 B0AABAB A B(A(B@A0B8A4BDA8BHA<UWVSu} Dž|EDDž\XuXP4Ãu5VuVh7#h uj`wVm؍L[^_UWVS}Dž|EDž\U X}XP褼ÃuIhWEPV"à ~<ufMVouj`U rEPl؍L[^_UXWVSEu }EEDEUEEP Ãu5UȋFE(6UE} (6REPЉÃu؍e[^_UWVS}EEEU E}čEP茻Ãu~<t sM AEAEUUEEEEE}AEGE4uMME4NEPЉÃVU J+MU ؍l[^_UWVSDž|E@Dž\u XuuXP蔺Ãh8=YtjuF0V8YЃDžPL58T L5VPPЃ}l>Ku FEuFDž<18@uDHuL 18VKM AECE1|MMME]1|A]SЉƃEx5|Mx5ASЉl[^_UWVSDž|E@Dž\u X}}XPLÃh8=Ytj}G0WVYЃDžPL58T L5VPPЃUl>K׉u fvffu}GDž<18@}DHuL 18WKM fIfMCE1|}MME]1G]SЉƃEx5}x5GSЉl[^_UWVSDž|E@Dž\u XuuXPÃh8=YtjuF0V8YЃDžPL58T L5VPPЃ}l>Ku FEFEuFDž<18@uDHuL 18VKu FEFEuFDž<18@uDHuL 18VKM AEAECE1|MMME]1|A]SЉƃEx5|Mx5ASЉl[^_UWVSUl>K} tjURw3dà t"6UR/UMUMMDžlDžp@DžL} H}tHR&ÃX=Ytj}W2WVY҃Dž@L5DL5N@R҃UUUUUUUU}WDž,10}48}<1N,R҉ÃVI؍ [^_UWVSu ~ } Dž|E@Dž\u XuuXRÃkh8=YtjuV2V8Y҃DžPL58TL5NPR҃~<u 8ÃuVDž<18@DžDHuL 18V<4V҉Ãuv}l>Ku VN UMuVDž<18@uDHuL 18V4҉Ã8n؍([^_UWVSu ~ |*URu 6uv à UBu UR |=YtjuV2V|Y҃EL5|uL5NUR҃~<u x|IÃub}l>Ku VN UMURE1|uuuUuu1|NUR҉ÃEx5|ux5NUR҉؍p[^_UM UQUMuURuUM UQUMuURuQU WVS]U EP2s ǃ Ep EL5u L5VEPЃ~dtjjjjvd#M~tF@@tAE2uEU]2F]SЉǃEx5ux5FSЉe[^_UWVS] EEEEuuEP褬ǃuȉDEE,DžtCpuuD~<uE,pPHǃtguD~<uEDžd4hu܉l 4PdPЃu=D27u@]t8D~<u{<t HD~<t{<u ,@9Du9Du+@9uu E9EuPuu>b u=YtjuF0V@YЃ@9ut!=YtjuF0Vu̡YЃt(=YtjuF0VSYЃSp]̋EȋUMDžH3LPu܉TX\u` 3SHPЉǃEDžH4LuP 4PHPЃ9@uSr @t SEDžH4Lu܉P 4PHPЃuDxj uv }t uj uXt14[^_UWVS]Dž|EDž\} X]EXP!ƃ+htjlDžL4P|T 4PLPЃ9luV lVEl>KE} fWCf@ff!fU=YtjC0SlYЃlDž83K׉f}|f~=YtjuuuvYЃ}GE0E}u$u|} 0PEPЉÃe }GE4E$} 4PEPЃuF9Fu P\ }wuF~}u t ]e 0}G$G(DW豟Ã6uvu}<u -u tBE1}}Euu}} 1uVEPЉÃE tm}<u uÃE1uuE}}uu 1}WEPЉÃAu Ex5}} x5WEPЃ=YtjuuWYЃEL5uuL5F]SЃ|l>K׉BBE1uu|}uu}}1uFSЉÃupE@1}}u u}}uu @1}WEPЉÃu3<ujuVWÃuu t}G1 ul؍p[^_UEu1ÐUVSuE UMtNEl1uEUM l1VEPЉÃVM؍e[^UDWVSu ]}$uEL5uܡL5NUR҃}Љ}E}}Љ]ԉ]UMUM} }}}}0}}u#E2u}}ċ}$}ȋ}(}̡2!EH2u}}ċ}$}ȋ}(}̡H2NUR҉Ã},t U},}t u}$uEx5uܡx5NUR҉؍e[^_U(WVS} ]s =YtjuwVY҃EL5uL5NUR҃]SKWO _]1ҋ]CtE2u}U]] 2V]]S҉E܃U+W]SKEx5u x5Vu؋ҋE܍e[^_U(WVS} u^ E{<u FtEuFtM=YtjuwSY҃EL5]L5KUR҃uVNWO wuEH2]}u؉uuuH2KUR҉E܃utuWO VNU+WuVNEx5]x5KURҋE܍e[^_UtWVSu ]}WE1}}]U}}1}OUR҅SSVfS}O@ 9Xb@ xt pu@ XSİ\[^_UVSEM uPX @E2]MUEu 2SEPЍe[^UUu rBPr S[UE@Udead_read: lockUS]s t h Cx<u1]dead_write: lockUEpt h!MUS]stCt2@S ]UUS]Cx`tp`IuCH$sq#CE7E@` 7PEPЋ]US]stCL5@S1]UWVSuvtA~FV N^vE5}EUM]u 5WEPe[^_tag VT_NON, dead vnode Uh"I1U dead_badop calledUh"ckvnlkUVS]1Ct& jh"jS#Cue[^0]UE@U0WVSMy_@jjjÉ_@MqjjEPjƃ tjSTG@eEMqjjEPjƃt um뿐ECuP-JƃtuHu@뒐C CEH EH1MAuH{uC`{ ~ C P{ u`߃{~ CPCC `MAC{uC`{ ~ C PpMA${ MMEx5}x5Gu؋Ѓjh8]hCP=ƃEL5}L5Gu؋Ѓ{ tC {uMAt { u`߃{~ CP{uhMMԐEx5}x5GuԋЃjh8]hC PƃEL5}L5GuԋЃu {tt1MAQ IMEl1}EU l1WEPЉe[^_UWVSMqA@@8~u1MA tfONMMAEx5Ex5@]SЃjjjVjWkEMAEL5EL5@SЋM9NugߋMA tfgEe[^_U WVS}G@@pG tfNGEx5Ex5@]SЃjjjwjV EGEL5EL5@SG tffEe[^_U$Uz~fu1ÐBt B@@ B@@@Err rEP蒀U$UB t B@@ B@@@ErrEPiUMy tQ AytQAyt Ayt A1U1U1UWVSuVUZ@FtK u 3FtKu sUz~153sjSMUB@ue[^_, fifo with %ld readers and %ld writersUE@@p ph(C1tag VT_NON US]h)oCsh$)]C1]UUBt"t 9t#1B 1ÐB 1ÐB 1ÐU U-fifo_badop calledUh)UWVS]} Kw@9FuA9FuA9FuG)t$PC0t PUr+Z9Z}ZuG(u W} KPPW9u5uSVn u$Uzu,tPPW9UBB D[^_UE@( 4U5%Jqqq qS@ h6J]UMAx<u!P@B kKqqr @ Ðspec_fsync: not dirtyspfsynUWVSMq~<\I hI \INj^4t[щMCC$uC{$| h7S:=K$=\ItIEtNSA딐ÅuMy u'~8t!^8jh7jS~8u=\IҡtIt1e[^_UEPB=JR@1UMy tQ AytQAyt Ayt A1U1U1spec_close: not specialUWVSu^C@x C<tzS{u3~t-F@ 9XuS"F@ @S:~CtW%kKP yjjvv jSҏuiS{dt~ Cu1C{dt S t>.tF19u} t}?} }$8 }a}t}}8%^} :}8t }tE} <:u E:_} <:u E: JBE9u]9usEu} _} ?u}t }wE}u E]E9v}t&KE 10E9w}t1^}  u I} <9 tA)؍pV)9~)} 9~AE9s} 9CA9re[^_UWVS]} DOH8 t8.tEH@)׋UEBMyMuF F MN fFUBEO}t+;}&u fFfECEBfEf CBBMyUEO}t+;}&M fAfECEBfEf CBBMyUEOxQ}t+;}&u fFfECEBfEf CBBMyuM @Bu@1e[^_UWVSuU@t z }UB 9EtE}t.U?JURE)E } ~}@t} ~ l]CEM yCuۀ;EА 2Sfff ft.}t1ɋUf9JtA~?% t?} t} }$ 8 %`} t>}U$ `8:FMF]EM y#C;y 2Sfff ft.}t1ɋ}f9OtA~?% t?} t} U$  %`} t>}}$8 `8jFM>]EM y#C?;1 2Sfff ft.}t1ɋUf9JtA~?% t?} t} }$ 8 %`} t>}U$ `8FM>Ee[^_U WVS] ]}$?<wAt=]@t{ }?@] S}G 9EtE}u]C쐐]?NvDE E}G}]Sfff Ѕt /c)}] C(؋] C &ft0}t 1ɐ]f9KtA~?% t?}G}ENj]]}Wfff Ѕt /%]} G(؈G &ft0}t 1ɐ]f9KtA~?% t?}G}]9ENc}}]Sfff Ѕt/t)}] (C`}6 &ft0}t 1ɐ]f9KtA~?% t?}G}ENnEe[^_UM0 AJy%Uu u= Ð1UE U…~J: t:.uHUhyJjC8K8KPyJ1msdhgtUWVS} uE#yJyJtW9{uK9suFM9Ku>{(t8CCtKjhNjS4말jPu u1e[^_UMAAQ#yJyJtJAUMtABAdeget(): pcbmap returned %d U(WVSMIM}tu } uOK}܋M؉NhM܉Nl}؉}؋}܉}ܡ,>K@ۍÉ]؋M؉NhM܉Nl}WV R1~M11e[^_US]C@@dTKETKECtlK CtjCLPCNPEPKD C,u8CtjjCJPEPCtCEPCFPCHPEP{cC cCD{(EPEPS' j uC8PKj E PIЋUCDB UCEB UfCFfBfCHfBfCJfBfCLfBfCNfBfCPfB1CDuCTBC,xtu UCPfB} uu$1 u#]detrunc(): can't truncate root directory, clust %ld, offset %ld U$WVS}ODMw,Wt$~ttwwhUT] 9_Ts,M 1ۉM]uuw&uu W} t.jURjU V`JNTJRWE܃tWPUGPEU V`JFTRW] #^X]}t%EVT+V\FDURjv`Pv!VTE +V\URjv`PwE܃}tu$EV`+URU]Z@RI҃Mt u!u"] _T}uO$} tjjuuRw.sM 1ۉM]uuw%%$jWFE}t1jURuVjeE܃:U JNTW`UWd}tVt Ut uVjEe[^_deextend: file too largeUWVS]} K,MCtytt CDt 9{Tr hVAMQ`JqTCTMA`H)t>M9QPs >jjjRSƃtjujsTS{TK$jSe[^_US]CDu SS[]msdosfs_reclaim(): pushing activeUVSEp^l=@It~tVhW蘀S;V5K{ ts 0yC jDS螂Fl1e[^msdosfs_inactive(): pushing activeUWVSEXsl1=@It{tShrX~8tTEL5] L5SEPЃ~($C@ujjjjVǀNF8jVEx5] x5SEPЃ~8uSb|e[^_UWVSM}E 1qhYlA4)؋Ql9vAЋA4A8Ã}tut}t E 1qhue[^_U WVSEEE]s,yJ}u}u}u1}GPEGDt}NTE 9GTw}R+N\v@]3@}tNT+N\E F<}}t ]}tNTE }WT)‹F`9vЋ]g}}}tF`]EEPEPu uE +EEv (zJEyJFt ECE1EPEPEPQV]9]t9}t u#EPjuuvDE}}]]~tuEP@EEP@EE~tu}tm^t!]Ft EvEE} 9}Ft E$t\}tun}tENT+N\FD]}tE}E]CXEC\u(E4}tE}}tu}O]{`}{de[^_UWVS]u 11ҋDXt9w t9sLXB~t}A}e[^_UM EX1Ґ9rB~UWVSu~x^|~PtgM؃MtA19^Lvju dÃ}t uf}|Ex5u x5VEPЃuNxM9y5ud}t+9ut&f}}Ex5u x5VEPЃEL5u L5VEPЉÃuNlM}MtD}G8.u9t u-x.u'EEEDžlE PM PE PPj}wEPw[ tN tFtt7MqqDž|}ww@EMtEDž|}wwEu}t}u f}}1EEEEPEPEPuuÃtcREPjuuMq}ÃDžlE܋lX@;t;u.E9u~FMM;u 9u~1{ uO}P PEPPuSuMqE XC u/S%9Et'|tj SEP t EM}O MIO$3l E l9}u Ewu MM9u~ E)E}t }f}}(MA QEȘ1}}EЀEԉU؋ 1WEPЉÃkM}O MIO$}O}uEx5MM=x5QEPи"MA@}Q}7us1K M{}MytufC lj}9yf}}7EL5u L5VEPЉÃtEpo]Eċ@}}M9yPu}tu\}M9eEPluuÃt\u`P}tf}|Ex5u x5VEPЃEċ@M}G@tWM1uz-1`[^_U$WVSu ~,F 9FTw\FTV )‰UW`UMOTEEjjjPVÃtjjjvTV]OTEFTEPEPEPOTF PVÃ'V U}tWX!UEPjuuwwÃF #GXËUZ@j SE8Pj C PIЋUBDC BEC fBFfCfBHfCfBJfCfBLfCfBNfCfBPfC1BDuBTCUB,xtu BPfC~$SEURUURUEWXV upuÃF EPjEPOTF PVvÃEPjuuwEÃUF #GXZ@F PPEPuESuuQt N$Iu)Ãub}tZUBDt/BPEtu 9GU WVSE My,q H( EPjEPOTPuÃEPjuuwÃt uEoU#GXB@x tM9q t R!K u wXtx tusÃuu wXu@1e[^_UWVSMy,tH P P PPjM quq1҅u)E P P PPuM quqB u}EEPjEPuu3ƃtZEPjuuwƃu[E‹X@);tSC uj uS t UB@E9rukE]EuLRB1e[^_U WVSu~,1ېEPjEPSV[uvEPjuuw0tuQEP@E9s EH@M:t3:tz t 9ruC닐u P1e[^_UWVS}u FlC FhCfVpfSFt7 tHhPF|PhP|Ph PPz$ t3hP|PVh PP>t _uU{tu CEPWb u3Epl6t  uQ1e[^_UWVSDž`h|Pujà MA `1ۃ|IAtCAtuCt SjuRuWCMAt-`MA}Gx`qDž|L5=L5V|PЃMADžh1lDžptx1FhTWЉÃt%Džhx5lx5FWDžhx5l x5VhPЃ`u#P`PuX\Y}G$G(@GMO,W5Ã}w~<tVOF@@ 9KVOMAxfDžX}Gu fDžXDžhL5lL5FhSЃMADžh1lXptx1FSЉÃtVN3Džhx5l x5VhPЃMAuPuQVà `9wt VNt VNPuÃdSjYElPu XZ+dPdlEPISjYEP!(Z+dPdEPIuE Pu&1uhu ؍H[^_mountmsdosfs(): bad signature mountmsdosfs(): bad bpb mountmsdosfs(): disk too big, sorry mountmsdosfs(): bad FAT32 filesystem RRaArrAaUU@WVSE@@x }uVƃ0uNS~E9d7Kt  EL5}}L5G]SU҃jju}7juDƃEx5EEx5xSU҃E @EкtE@1}}UEEE @1W}W MщƃDE1ۍEPjhjuTƃEH$x@}ȃ }؋u؉}ԋEȀUu th?jjChQhS=I׋E Nf>f{fFfCFCf~f{ fFfC"~ {4fF fC(f~f{*F C$f{t!tf{*tf{*wf{(tf{(?vhf{"u FC,F}{,C"C0f{fljE̺1ủFu9s0vhكCf{ }Ȁu uf{"u{4u EfxthCtǃǃ}ԋ{4EԀx}fx CC8{tu&}ԋ!{<CC4C8CD}%{x6CC4C8C<S {}̍T1Ɖs@{<{DS0+SDẺ1ủƉsHG{LCC4Cp{tuA{LwCtǃǃCtǃǃ{tu C@ChCh{}̋Sh1Ɖsl{tGO{\CЉS`O{XC`t@IKT9{`t juE{xEPjhsxuƃ)Ep@jh$V* u[jh)P uAjh.P u'jh.P u C| Cxu%EjjECL<WM‰E܉C}{S/ƃu^E @t @}t Cd} E܉G@GDO}@}̀O1}t ur}tEl1EEUE}} l1PEP Mуt.tjEPjCSP} LJ e[^_U1UWVS}1EtPjWGà  F@@`}FEl1EUEMM l1PEPЉÃvRFjEOjCVOLJ g؍e[^_USU] EPhj )u E@1]U-UVSu] C,B`CB`CBHC BPCBPCR SCF 9t$jZCLPFlPjZPP1e[^msdosfs_sync: rofs modU WVSM MEydt} h'MYu쐐M9Ku{(Cl{<t~@MQ։u}Mu}qy Eu}u9uh}9}uM9MwXuЋVT1u}}W։u}Mu}qy u}u9u}9}u M9Mjjuv`uu$Ep4p@IҋUB8BT9BPu(jjUTRPuEt UBTUzTuGRw}EURuȋ}w`uu|EuuUMJ@R軂E Et u!UUu9V`u u>up}ЀO}uMy}tqut:jjU܃Ruu踱U}+W։M)qy uqGjjU܃R}wTW}uM9qt"E}t juEEe[^_msdosfs_fsync: not dirtymsdosfsnUWVSMq\I hI \INj^4tYщMCC$uC{$| hSkSrK$=\ItIEt'S떐Åu~8t"^8jhljS+~8u=\IҡtIt2'My %Pvlre[^_UWVSuVzlFXlz<u EWSIE9u v, v,vy,Ee[^_U S]SC E4UE 4REPЃs2,-]msdosfs_rename: lost to startdirmsdosfs_rename: lost from startdirrename: lost dir entrymsdosfs_rename(): updating .. in root directory?UWVS][]}GE_]GEċ}][ ]EE}G EEP]9Su}E9PE4}}]] 4WEPЃ9}uW>+u*}t u*E4}}]] 4WEPЃWE9Eu1pEL5EE L5PEPЉƃC}l}E@lE@Dtj]{uC8.t#}9}t]C u}G u ]C@t,Ex5EE x5PEPЃ}O@E][l]}t Eċ@lEE} }][$]}W OEȘ1EEEЀUԉM؋1@]SЉƃEx5EE̋x5@SЃ}Gl]Sl@P9BPtEu)}}]}t u)uu8ƃP}Gu h8guEPu}ƃ !][l]}t Eċ@lE E}tv}GDt:Wu B}u u}t uuƃqu(EPu]slƃ }gO Gu h%@f}u"Ex5]]̋ x5SEPЃuEPu] }uX}t hHe}w'}t"Ex5]]̋ x5SEPЃu'1E}l}_ ]}9xltv}t hH~e]sa'EEx5E̋x5@}ȉ}WЃ}tEx5]]̋x5CWЃE>u'Ej }}W]8]Saj SEPU]}_ ]_$ujWuƃ,tj uu! O]C(]}_ uWƃu.}uxjEPj]KTEPu袮ƃt1}Ex5}}̋ x5WEP]{u}}]#{X]{u=}t"Ex5]]̋ x5SEPЃ}}}GPu h_cP]KT+K\SDEPj}w`RwƃtumE;EP@ ]fCPfB}tu CPfBuƃEEx5E̋ x5PEPЃ}t u$u$]cu$u$t[^_UWVSMI xMAxlw,PuG 9GTw VjEPjjjVrÃ7jtEPIЉuETKETKEE<jEPEP]SyM Eu5EtjjEPSREtEPEPEPEP4eENT+N\FDjjv`Pvv`s@Ij@s@h4cS@fEfBfEfBfEfBEшB fEfBfEfBfEfBGP(~tu9Fi tF17i 5i tJ8i(fGMfAG8UBG4MA-UzPC0C9ÃGt:MAu:\IpI \IW\IӡtItMAt7Gu1\IpI \IW\IӡtItfOfRUfBf%qf fGt9uVWЃ 'PC0o8ÃMAG8GtPoPC078ÃUB=v4iPC07ÃHtNuVWЉÃ GtPotuVWMy u -ui tM#i tC i t9pi t,ci tD i t2Mi t8i t8;Uzu0zw*BBB!i "i #i %i MA @0WuVQ@ЉÁ}i t"} i t!}i t }i u UfJfJ1e[^_%s%d: promiscuous mode enabled U S]} t8Cu 2[C{u(fKCPshj%K{~1#fcfCfEEPhi SЋ]UtWVSU UTKUU:Er nUU}\UBPrhEPA@v E?EPuAUR UjEPIj Vu谟E }U}iu$ECECEC Ef[f];w/ECECEC Ej Vu1E ?)ǃvKjVu E uPFPSE t}uURU 8URU U):Ee[^_`PJ20Nlink4PJ\0generic@@%s%d: can't handle af%d UWVS}Eu ENM}fGfAfAt E2]C8ujju)É] tFfK6C8tItC8u4S*]jjs0h)à u EA1C8t.{Xt TK9CXvEA9] E@MAtUuluEPQVSubMu1FtGtjhʚ;jVEEfEJMAEfAfEfAfE-MAPGPwhp薡E/W}tSuuWqFu0FtF) wF) v FF jjVCƃ t|FtFtnVfEfB EfEfBM䋁BffB \I pI \IË9'\IҡtItmE7pFu pGu WЃ\IҡtIt GXEGXFtG` tV*BEe[^_UWVSu} ]FFTCFTjWhdV u fKtfKCtF\fG %=t =t#ExI xI tIK.xI xI tIe S^Ad\I pI \IƋB9B BS8A#Czu BXZB5\IҡtIte[^_UMA,A.A/A4y<uA<A t>t.zu(BA.BA.PBDPPÐ@uUWVS} E\I pI \IƋMAt t.j]SEP膗jEPSzUMyu-jEPhdQjEPhdAE]EEE^JMBEBEjEPEP '5\IҡtItP/0EtEu$5\IҡtIt tZjEPS訞 ujEPCP蒞 t[uЅt$C5\IҡtIt1jj7jà u 5\IҡtIt7gjSEPjCPEP{ CC5\IҡtIt'}tfO4e[^_UWVS} E\I pI \IƋMAt t.j]SEPRjEPSFUMyu-jEPhdjEPhd E]EEE^JMBEBEjEPEPД '5\IҡtIt/t6jEPS褜 ujEPCP莜 t[uЅu 5\IҡtItKt5\IҡtIt1]S 9t 9u@j7S5\IҡtItC}tfg4e[^_LJb`NetherDDUWVS]U u14i t] i tg!i t0\Kxu3VSM;3.jPPx~@C4e[^_dloUVS1ujVËMt]vu6>t/utfUf9} KM[uUM}fMUf9J}C fWfUuNMfUf9Q|9uuutdfMf9 |KVCtCpG thj苄Fs9utVuuVuGu SU[uM1WUe[^_rn_delete: inconsistent annotation rn_delete: couldn't find our annotation rn_delete: couldn't find us rn_delete: Orphaned Mask%s %p at %x UWVSEu uSuOE{ }u}}]9Et+EPEG PEEP uy}tt jjj|à j|SIЉC4PW5} utUu$~tjjQ EXvSW߃jjWà t5fK69s@t,}tu^ 3UAEPF EPv6Wu vǃ}t u } u-u)]t"SjVj( f{6 fC6S} ]t|fK69s@tfs@VhakC@ xt jSj@Ѓ C@fxPH C@fHs@F CE؃LPC$Ps E؋S !PLS #S$ PLfH6UPD EPsuuujEЃM؉Mԅt}fA6wE@dKuE/Puu@ ЉEԃ uEUfB6Ct g>YMԋA EA0EAEADEC 0t5Q}tuǃu }t uMq q8ǃ t_W U̅tUMԋA@9tKtxtuQj@Ѓ UԋB@fx P MԋA@fHUԉz@fGM̉Jwh8G<@,FGKt7ffu,QAEP9S rfAf=u SSF=e:e[^farp: ether address is broadcast for IP address %s! :arp: %6D is using my IP address %s! arp: %s moved from %6D to %6D UtzJ(Uzt'B%=ttzJ; 5UK11ۅtXlp8uuIM9K uBC9zJt7UztB9Cu&{tM9Kv1uBSzJt;Xlp8uuu5UKt!U9V tv8ut C 9F@xzJMAUB%=t|zJu}C ut F,C UKtFM9H t@8ut2Xlt+CU9BtutCzJCu uae[^_UVS]\I \IƋC9zJt C @tCC?s pC jpSI21BSCzJ5\IҡtIt<e[^UUzu+B9zJt B @uB xt5zJjR!UWVS=zJ\I \IEzJUK11t\؋xlX8t7Lt,OujG pWG zJt؋xlX8uuuM \IUҡtIt<e[^_U\I \I zJt yuAy~AI u\IҡtItU\WVS}\I pI \Iƃ=8Ku jj8KtN8Kf |QKfCfQKCKKfC5\IҡtIt-R&5\IҡtIt8jj3ÃCNLN~\~F\MAtFLFM}~ GuzJM \IUҡtIt+誟$}| u 1} i #wA} i w} i H} i {} i )} "i tgw} i@} !i t} #i t/} %i tbF7}t }u -uu uM1e[^_USE] Ct@tjjjSJc]UWVS} UBơ\I pI \IEGtFBVj6VĦ 6uEuEPoEe[^_US]E t t @u B<نP t)xu9ZPt9Z4t 9J,t9J$uz0uƋRu1]U WVS\I \IǡUKt9M 9H t@8ut%XltCM9tutCjj6j$)à MCM K C5UKM 9N tv8ut}sfFFltFlX^lNlKEMEM tEPh1i QЃ tU;tCBSf~VȿfNj6S=\IҡtItM1$Sr=\IҡtIt'؍e[^_U VS]\I \IKudS;tCBSCfx PCfHECES EPh2i Rj6S.5\IҡtIte[^UEup pP=@f@f=@f~ @f=Df Df=Df~ Df=HfHf=Hf~ Hf=LfLf=Lf~ Lf=PfPf=Pf~ Pf=TfTfÐ=Tf~ TfhQJV8T8Nportrange8888@f878Ilowfirsth8Df878lowlast8Hf878first8Lf978last8Pf(978hifirst 9TfP978hilast49UWVSu jjjLà u7jjLSIЉsMK$\I \INjtXCS =\IҡtIt芑MY1e[^_UWVSUr$=@?fEEfFf%E=UKMfyu:yu4fFuF @ tFuE} ^U Zz t fKfMC%=t{t%fCS贂uFtEf}fEf=wPG0ctyC%=tcjEPsj5JUrEttx<uFFGFV>tB<@uZ@u3fwfGWÃuWfwu UKtFG%=u8MyHt/AH8t'UKt9C t[8uu1 F8tjv8vv0v j4V讲e[^_US]{,ts,菲C,]UWVSU} uEf]f]f]f]\I \IEhf]f9Xu^1҃xt"u 9xuCf]f9Xu9tBxt t 9pu tBt}t 9} Eхtu]\IUҡtItVEe[^_UWVSfufuf}\I \IEE 3E 11Ћu#FNt)u 9suu9sufuf9suf9{t|[uك}tO1Nju#FNt,{uf{uf9{uu9st9{uڋ[uօt"u5\IUҡtIt`1O9t-{t SC B C SCtsp K u5\IUҡtIt؍e[^_UVS]KC3CS1S1#AQCtsp S e[^UWVS]\I \Iƃ{t SC B S CKC3CS1S1#AQCt{x S 5\IҡtIt:e[^_internet4hPJnElENinetPEPEPJElEip|E|ElMJElEicmpEE`NJElEudpEENJFlEtcpEEPMJ0UKƍ@ҍ|{JPSuE tdXUK}瀉}tSn Ef}f)xLUKE@ /K@uulf u`e[^_US\I pI \I‹Kt#CKu  KC K\IҡtItltS뛐]4iU WVS} ]U UMJJR )‰ЋMA uxj j藬@x_;x iGURMAF9~+)F9X》v vS芮9uvu1ۋw 9tF9FËv 9uF@G =~xUKWw  UPR覵v $v Pu萵9uO MfYaGA GAGBOG i$PU UMB B R)‰ЋMAAt1ۋEtUZ MuXE4UKuB1e[^_UWVS}w 9t^ Vc$P9uGBWG$P4 ie[^_UMU QB A B HJ UEHP Q P @BUWVS\I \IE1v|{Jt<|{J9t3v|{J9uF?~M \IUҡtIthe[^_UWVS1}|{J9|{Jt04UKˍ44|{Jٍ|{J9|{JuG?~e[^_attempted source route from %s to %s U4WVSMIME Equԉσ M4uYKu EOM~u9~ EHgDt OM̃ uF(ih$i[Yƒu=itCM̋E9Ev=it'Mq Wi=iuc=htFuv'P]SSv Ph cjEEq@UKuM̋9(iu!h$iXƒu&h$iLY 5(iUƒ(iuFB@M̉9GF%E=%EqwũNűE9NMA(ih$iWƒu5(iƒ\B@ủ>G+MMЉOWG9v%G%@gW CD8E̊CttGCS9uԉ5(iMqh$i YƒtSB@ủ/CS9M̋(ih$iVtC‰UCT8Cu)u}}t=htju [1YEEEE E)lj}ЋMfff)AjjuuuhUKe[^_UVSuJ=Jt=95JtN=Jt,Jfx6 P7 JfH6JCshhJ蠋=Jt J@@1e[^UVSEu X+wShJPC i5Je[^UVS= itj juÅu1j5 irs KJJJJSJBSJrJsJ؍e[^UWVSu~WF )PRR#)^ Ft)^Ee[^_U WVSMqEEEAuv肿u@UKuqfFfF~wjujj uNJJt F9Jtu=Jt-Jfx6P, JfH6JGFGhhJ葉=JujujjuMJjF@~@Pju蓦ǃCUB%=\EfH}}؅t.FB>t>}~XtvXiЉ‹EP E@t~Xu+}f|!lUKE3wP@EP $Ex uUKt}9x t؋@8uUKtT}9x t@8utAPlt:MB9Atut"t~tuuuu9=`it.}u#=hu1VuuuxiЃuExt }GuUz uC@B E@}1w4@9wE7StP}GuE17} u E E@}9G4EfH Ef`=itjuEPEPiЃt@=itFEPEPEPuuEPiЉE}t}tuE |UB}9G4fBfBfBfBfB :Eu:1 JJJ Jщ vEffH uun‹EfP }7uuu}G|ЉEE@@t7E(}B8tBLuBP}9G4sG4BPdUK}G4+E$E E(}}}Ћ}}̋}}E}}}E@9\I=pI =\IÃ=8Ku jj蛔8KUtS8Kf |QKfBfQKB}zfB\IҡtIt0V)\IҡtItVjjӕE}U}fGf%f BBXQKBËu}vSu#E @E}ԉx U+UMfAffCA tfK UUE@9| +EE fK fEfEfCjuuuGtt ,t%f@߃f@-f@߀N@!f@N@ E E*WEH${D|}|||||D|4}4}4}4}4}4}}}}}H}|j j[NjM9~(tF(@ G PwF(p G j jNjM9G E$|𐐐}}}} }y}y}y}y}y}y}y}y}y}y}y}y}(}^Ds^Ek^@^@^@^@FuvHuE@j jWNjM9G F@t 1F@ tGE*Ee[^_UWVSU:t 2HM} U z u R#M Y AU B €9]M A yuWqjU rIЃ}~}tt<u w~o9u|j%=t=u:vRM A EWjq_SmEPSGPd)u}M y ,w U 1 u (e[^_U WVS]EM 9u@jj5j\aXǃ u 7M 9GXGGfGEi$P𐐬Ȁ\h=i;{ CSiЃu _X { Cu \I pI \IEUKt%B @tBLB<9XtR8uu"UKtB @t9Z@tR8u1tr tf~|+M \IUҡtItKE1B7{ CG{ C<G{ []%=\I pI \IEMyuNj]SIEEMESq }uE1CEpuu}tRuHC$@Ps$UC$t*jPu踆HUK LUKe[^_UWVSME ]pf@f F@A=Au0AtA)ȃwA)ȃv AA jjQ t AtAQBfBFFB fAfBFB ZBpy~Q݅(jQ$<t~(uZ9Y| 9}Q訅5fzufTKfTKfBtUKvHWF,Pv(Q0e[^_UWVSU}]M IM}tsbGi$4tttttttttttt  tttttttttttttttttttttttttttttttЋtttttttttttttttttttttttttttttttttttttttttttt,,,,,,,,1uAt ;tx w @8tuN@Ma@j j#@ @uv@0=it,u%=ituSWi=iu;t3SRiu x?o3u &b3u &Vu#3u WliЉǃ ;t%3襁uSu WpiЉSWuu Re[^_rip_attachrip_detachrip_usrreqUWVSE 1My uuuuQ蛜o$0,(h(ȍ(ЎՍP$((0@(t hRMy| \I \IhJuƃ\IӡtIt=5i5iuƃ MyMOFMA!u诰u h袁M9 `iutiuRM9 $H𐐐p<|||<<|<M$fGf9Gu G9G UBG%=jjrÃC C@O HfWfPjPIЋM̋IMu GỦBSu虥tUM̉QStSStV\"F8uj7V%E#u)Ãu]j SIЃEPWuuV}t MNT ?KFTon?KGFhFTFHFpFDF@Fh@F`FlUVXx3Kux3Kx3KEEF5;E+EFMuf tUrt N4N4F\=vFloKu蝢iFEoK N4FiFEoKMlG+F@ G+Fp Bu'Ãu]j SIЃUtG+FT~pG+FpfMt j=Vf# U O"NXEGFh@F`FlEt9Et{ R f4oKuSF4``u{uECV\VlF@f t N4N4F5tFf4ewFiFdN4F EtC;tDE+~;EF5tFf4FiFN4 FGG 9F\s-+^\PuyfF\fG eXpK\pKOINLGFdU8Mt8Et2t)~ u < E+) 'Utp9G F $𐐐̝؝؝؝((؝MfA4= UfB46FoK5EtLtCE+y8l?K+=H?@pKG DpK|pKdžF4%`=`uE9E~u G+Fh^`+_MtMGf&vfO&eKG 9 u%UueN4_ @pKDpKHpKLpKSuw_f)_ G&9~ f)_& efG&MAt%~~f tV `pKG _F`F\)ÅXpKG 9|i\pKUt7~ u1G+F`~'hN`MVƃ~\JG9F`>N4dpK\pKPuvf)_ eEt!G+l?KEUtj6Vƃ Mu~F5GFt oKuҜF4``uuT"Ãt ;uF5tFf4FiFf uUu jjV OINLG+F@f U9VXhpK~ G9F@F$F$9ius^DNtMFX9vE1v(wF(FxF džGFDF(FtV F(F$FxFt+FD^DF$9iaV(VtV F$@F$9iFt9FxsFxFtF$G+Fp~lpKF5t-f4F@F4``u_+^@ppKtpKEt l?K+E@PtG+~VG9FpuF E~uF F \NtMF(9Nxs1uUE9vEFtM9YdsQd)VXqdEdP该SEdP蛥)^X1ۃMtȃdPQ诞WUV@FD)yVDFtQ t MA tQŚUKFF itdF V;!t;wV V Fxum tV&jFxMtoFL+Gx FL9Gu_FP+GxFP9GuOU9VXsGf uFP9GuM9NXsxpKUVXGFLGFPFX9sEM f&~ G&UB@9YsfG&߉MpG&_+Fd~*^d+F`MA@HA)ʉ)Ѝ4E{ltt ClClslpKCL u wxt{du C`9s@G(Ɖ1w(ƃwG(({dtCdCdsdpK79t,6VZ BAJBSN9uՃ8tG8$P@MjWAE@ u}u~oK1e[^_UUSEM P X$zuAth3tc@t^zz~tfK4C2PkC@PSπ tjSЃ CdPS襀]UVSMu ]u&tAvwItRQRs @PRQj5JjVh|UK~e[^UEP tB(BtUVSEX p$PtxPuiC(C,{H|PP؅t 9vȉ9S,v\S,C4%=uC4%`=`u~9VhsVhS(pKǃC@CDSe[^USUZ,B,t@8uztCCBCS30]Uu…t B8t1ÍBtU i^:\Ikeepinit@i:\keepidleli:\keepintvli:\always_keepaliveUVS\I \IƋ|UKt*C t@4t`4H4oKPsu։5\IҡtIte[^UWVS\I \INj i i UK|UKto0@ tDxt>1ې| tL uSPtC~@|tuPC?Kl?K=\IҡtItNe[^_UU1D @~UVS]M X tB1{ tC|9UKr iCSC{ ~#C oKu<QoK9s΋C4iC 9vC { vC C C {~$sx fxu jPjpƃuG\IҡtIte[^_UWVSUM \I \INjBu =\IҡtIttbp Axu @%=u /QVÃu VjÃ=\IҡtIt ؍e[^_USU\I \IËBu!\IҡtIt'p T \IҡtIt1]USU\I \IËBu!\IҡtIt](u P_u\IҡtIt01]UWVSU\I \I1Bu!5\IҡtIt?X RuS Ãt Sǃ5\IҡtIte[^_USU\I \IËBu!\IҡtIte'p \IҡtIt91]UWVS}U\I \IE1Gu&M \IUҡtItWX t-z t'R B}t uAM utuGdPv}t.{(uS`ƃCXjSM tW'tSUÃSzWp+WlGh+Gd9~=}uOA7^uGdPv}t*{$uSƃu4CXjSK@OdKHC0SC0M \IUҡtIte[^_USU\I \IËBu!\IҡtItI)j5p \IҡtIt1]UEM \I \I@hA@\IҡtIt1UWVSU\I \I1Bu!\IҡtIt{H z<uB@tBu t :u#'} G W}u\IҡtIte[^_USU\I \IËBu!\IҡtIt(u Pp\IҡtIt1]USU\I \IËBu!\IҡtItm(u Pop\IҡtIt@1]Uuuu u$YUWVSu^t^z vXB8tK4yc4st>B~59C(r0C(Zt&z v B8tK4Ac4;tz w (B8t K4c4*Re:uj j 8‹MB t%tHt3tOMt 8\I \IEuWbÃtvu 9xFu.FtF)wF)v FF jjVn2ƃ tFtFu77}M \IUҡtI ^CCC fEffC GC GCfGfCfGfCfC fCfC=jtEPVfCfufCfMffKGECGDCLJwHG$f@0PG,Pw(VkÃ}t6WRaMOM \IUҡtIt1 Vf0؍e[^_jl:,maxdgramPj:,recvspace|udp_usrrequdp control data unexpectedly retained UWVSE UMq1 uuRuQjJuulK$ xTPT\$dP\T8DTTTTTt \I \IhJuYǃ\IҡtIt5j5jubǃ MQhBEpVb\I \IRVYǃ\IҡtI,#"~t 8\I \IRVP^ǃ\IҡtItu\~u 9\I \IV^F\IҡtItsManu4`_uRuVxu`]Vr9RV_,RV5_ 1G--8h".}th(u$-}tu-e[^_USE\I \IP]\IӡtIt]PNJNpccardj.:,Ipcic_resume_resetcrdPAO-19990114PAO version: %s Initializing PC-card drivers: %s UVS=ju^jhHhUhf PJPJt3h̉S uh谉e[^UUWVS11ېut)SjhjjSu hSC~Ée[^_U=juAjh1҃<ЅJtЅJ\t \H,B~Driver %s already loaded US]3t3h迈JCJ]UWVS=jt;wKFLdFLFLFUBr\I\IVMAЉǃ\IӡtItTt F\V e[^_UVSuV9suC4%St9t܋ujVie[^Card inserted, slot %d US]CǃT2ǃX2Sh,觜SA\S@3h~\S@Ћ]Card removed, slot %d UVSu] ~tFVh=t teFw|\I\IVF\IӡtIt6h}& F$Pɜ*FJJ}PVh e[^Slot %d, unfielded interrupt (%d) UVSu^t'f{Ht{\tS@ Ѓuuv 6hO}e[^UUд~ ÐдЅJtxu@1U1U WVSEЅJEEtxt '=Ju 1ۋM苁\9X$~#uD0@tC9Z$M苁\9X$ uD,E}EMI@Hu ~t~}uxM AuFF JFM苁\SQЉEuDu F%J)9Fwu Fu PR[4E M ytt}EM苁\SQЋEe[^_U WVSEЅJEEtxt '=Ju 1ۋM苁\9X$~#uD0@tC9Z$M苁\9X$ uD,E}EMI@Hu ~t~}uxM AuFF JFM苁\SQЉEuDu F%J)9Fwu Fu PR2E M ytt}EM苁\SQЋEe[^_UWVSM uEUЅJUu P4POE P!Ps PgY PP>PlPP2PP@t }\zVQWR\I\IӋ}WWW \IыtIt}\R$V\R(V\R,V ;%}\9Z$}L,QVQVQ V QVRP2O }}\9Z$}T,}\SWq}\9Z(_}JNJNR V BRP2<}t }\9Z(MVVV }\SWR}W>u=JJRP2h6K?J>KJ)}NTX\WRRP2[t VuÃu >uc}\I\Iu}G\IыtItMU$RO}u:}GJJ}Ruh6At 1e[^_USM EЅJtEt kuf6\I\IÅtB 9Bt\IҡtIt)B$Pu\IҡtIt1]UE= v E =v Ð1UVSuJtV3xu [u1e[^U=ju!E2jhjEPjjUUUUUjh@ Ujh@ Uj(h Uj(h UT jh Ujh@ JJ PjhU jh@X UjhE JJ PjhӐU jh  U jh JJPjh芐Ujh JJPjh0_UX jh U@ jh` JJPjhUjh] JJPjhUjh} kUU1tC tt_k k(k0k8Ðk@kTkhk|Ðkkk`kÐUkUkUkUkpcicUVS]{C4ŠJ~Duu 1$11S r@~QsVe[^UUBŠJr P< UWVSU`M D,E4NM@@P Uf]PQWG fPNMQWG ЃUB f]ffKNPQWG fPFPWG ЃUB f+]?NPQWG fPFPWG ЃUBtuWG %PuWG ЃMAt]CSWG @%PSWG ЃUBt]SWG @%PSWG ЃMAt]SWG %PSWG ЃUBt]SWG @%PSWG ЃMA t]SWG %PSWG ЃM À jWG%PjWG Ѓj2M jWG %PjWG ЃjuWG jE@PWG ЃEjPWG jEPWG ЃEjPWG jEPWG 1e[^_Illegal PCIC I/O window request!U WVSU`E } t } t#E@EEE hGf_PuVF fPE@PVF Ѓf_f_ fKUPRVF fPEPVF Ѓ0GtGtGtGtjVFЈEjdF} t } t+E$U%PjVF Ѓ jd]jVF%PjVF Ѓjdd]jVF %PjVF ЃjdjuVF jE@PVF ЃEjPVF jEPVF 1e[^_pcic%d: sharing irq %d with other pcic Unknown!PCIC ID = 0x%02x Intel 82365A/BIntel 82365DFIBM PCICIBM KING PCMCIA ControllerCirrus Logic PD672XCirrus Logic PD6710Vadem 468Vadem 469Ricoh RF5C396VLSI 82C146U(WVS}EEEEE=4k ~+4kEE}u*=0kt!50k58khhk0kE |G$G4GG G G G G$G(G,G0JG@G4!G84k4JE*EPu tWuEF F E F@FF$}~UUEF EF}t&}u FFF }~UUjVFЈÃ=ItPh*'jFÍ~$𐐐PxxxddpF^V7j:VFЈ€@UPj:VF ЃjVFЈˆӃt+$F<uVj:VF%Pj:VF Ѓj:VFЃF^0F *}p}fEEFEjjVF Ѓ jVFЈƒU؀u4jVFЈÃu" tFFEذ*E؈F}| EFV$$p|G4<vG4KjG4Y^G4bRG4}FG4:G4.G4"G4G4 G4!EE(E9EEG@1҅tUЍe[^_US]C<tV~< <jj:SC jj;SC jjSC jvjj:SC jj;SC jjSC j:jj:SC jj;SC jjSC jj?SC Ѓ$C<|><~< t4jSC %PjSC ЃjSC %PjSC Ћ]pcic%d: slot %d controller I/O address 0x%x pcic%d: no irq specified, no previous pcic irq found UWVSu4kJ1U9z@;u"ƃsW58khLe`s=0ku/J{t C0k58khy\ejSC P%PjSC ЃjSCЃ$ < tFF FF js{~C %PjSC Ѓ E t SNG(M9y@Uz@t$JJJJPjh ݁MADuUR@4k8ke[^_USEU ]`ePt!dPt #PQAЈCSRPQA 1]UVSuEP`C+$𐐐                    X2t t!t .xt 'MMT2tU !t { tSjPj>Sjj>S(thEPEPh>Vt[^_RL5C4XX PCI Config Reg: [Power state set to D0]UWVS]} x}u󥤄u:jhS jPhSEjhS(tUhBjhS t8%jPhSjhSuhEPEPh>Ut[^_bus = %d, slot = %d, func = %d UWVSu} V"EV"V"E =It%PPEPhuTjVjjV jPjV.$wuxw3uwe vywy LtTw2:gw)gLt(LtwLtLu|EPSVWSVcSVWSVGSVWSV}4jVtÀu PjVn WVS =ItV=e[^_Cirrus Logic PD-6832 [CardBus bridge mode]TI PCI-1130 [CardBus bridge mode]TI PCI-1131 [CardBus bridge mode]TI PCI-1220 [CardBus bridge mode]TI PCI-1221 [CardBus bridge mode]TI PCI-1250 [CardBus bridge mode]TOSHIBA TOPIC95 [CardBus bridge mode]TOSHIBA TOPIC97 [CardBus bridge mode]Ricoh RL5C465 [CardBus bridge mode]Ricoh RL5C475/476 [CardBus bridge mode]Ricoh RL5C478 [CardBus bridge mode]Cirrus Logic PD-6729/6730 [i82365 compatible mode]O2micro OZ6729/6730 [i82365 compatible mode]UVSu u ju=wm=x:w0=u!w=e<=v)=yw=y  ==Ltqw+=:gw=)g=Lt9=LtIw=LtX=Lt= F4 F4 F4vF4jF4^F42RF4TFF4z:F4.F4"F4F4 F4CÍe[^Unot free legacy mode address pcic%d, Legacy PC-card 16bit I/O address is set to 0x%x (res: 0x%x) pcic%d, Legacy PC-card 16bit I/O address [0x%x] UWVSu}jj>V. j%Pj>VdV jjDV$J ucuhNxJ jPjDVjjDVÀ=ItS5JWh3UNJ=It5JWhx.N WV5Je[^_PCI Config space: %02x: %08x UWVS}hM1VhM1ۃPWPhM~hM~e[^_NE2000 PCI Ethernet (VIA VT86C926)NE2000 PCI Ethernet (Surecom NE-34)NE2000 PCI Ethernet (Winbond W89C940)NE2000 PCI Ethernet (KTI)NE2000 PCI Ethernet (Compex)NE2000 PCI Ethernet (ProLAN)NE2000 PCI Ethernet (NetVin 5000)NE2000 PCI Ethernet (RealTek 8029)edkUU k=kt 9t8u@UVSu] jVE$PS<Ãt hpIShcV*ujSce[^UĉJu u@UĉJuu u@ USUM ]fz tB 9sfJ B"9vfZ"] [pci%d uses memory from %x to %x] US]E U{t9CvC9SsS{ tBC{ t2js ʁԉJ@ Qjs [uԉJx0u'hjpԉJB0t Ɓr4ԉJ@e[^%s%d <%s> rev %d class %x int %c irq %d?? on pci%d:%d:%d mapreg[%02x] type=%d addr=%08x size=%04x. bridge from pci%d to pci%d through %d. mapping regs: io:%08lx mem:%08lx pmem:%08lx INCORRECTLY or NEVER CONFIGURED. UWVS]ĉJEPE PEPBЉEMA MjuPju %PSuM1hq#G,jtM8Hsƃ>ujjj@j@SIЋԉJCMK MKMKjuǃt8ju%C(% C,Ps(5ԉJ t`j u%C0 C4Ps05ԉJ'j$u%C8 C mirrored on pci%d:%d %s%d:%d: %s%d:%d:%d: %s%d: uses %u bytes of memory from %x upto %x. %s%d: uses %u bytes of I/O space from %x upto %x. %s%d: subordinate busses from %x upto %x. U(WVSEPh(B=It,=̉Ju#̉J5k5kh(B E=kEEEMM؋ĉJEPuEPBЉEju;E=xPJ|PJt%tuuGЉEu ;u܃}EtĉJjE%EĉJjE%PEPBЉE ju9Eu_E]Su{Sup9u9E}'vׅ=Iuuu7h)-A}uuutEWuuuVu[=ȉJum}uuuĉJ0h!)@uuuĉJ0h.)@uu`M9tQWuuu0EM9MEE9k=IԉJxt pppuĉJ0h;)&@ԉJfz$t&B"PB PB$PuĉJ0hk)?ԉJz&tB'PB&PuĉJ0h)?e[^_USOJ=ku+ĉJt@Ѓ=kt=kkjjj@%ԉJ j@PIЋԉJЉJBԉJ@,@0@8@4@<tn/ԉJ@9ЉJ}ЉJԉJxt@4=ԉJt8ԉJ BԉJt%ƒ8t=ԉJtԉJԉJ=ԉJuЉJ k=kȉJ]UWVS19=܉J؉JLM1| MLMDEĉJEPEPEPBЉEJ t# MuuAЉƃu [ut>>t9؉JDԉJVuuuu]؉JMLG9=܉J-e[^_US]} u?t;{t5{t/jjjƒ tJBJ1]pci_map_port failed: bad register=0x%x pci_map_port failed: not configured by bios. pci_map_port failed: bad port type=0x%x pci_map_port failed: device's iorange 0x%x-0x%x is incompatible with its bridge's range 0x%x-0x%x reg%d: ioaddr=0x%x size=0x%x UWVSu ԉJME wM t u hv/]u Vǃuh/;1ju Vu VWu V؃ tSh/;1ڀډ1!‹ԉJ9{(w D:9C,sԉJp,p(D:PWh/T;1S=ItRWu hX08;jV4؀SjV=MIMtq ԋMf9e[^_pci_map_mem failed: bad register=0x%x pci_map_mem failed: bad memory type=0x%x pci_map_mem: not configured by bios. pci_map_mem: device's memrange 0x%x-0x%x is incompatible with its bridge's memrange 0x%x-0x%x and prefetchable memrange 0x%x-0x%x reg%d: virtual=0x%lx physical=0x%lx size=0x%lx UWVSԉJUE wU t u h1Yu uljju uu uvVu u؃(uttSh1;913]]U\2tu;uj5ԉJ+ƃ uh281SV5ԉJs ԉJ9p0w9X4s6ԉJ9p8w9XMNU VMN UVFMNuĉJRuu S@$Ѓl?ug=ItShE64ĉJwS@(Ѓt h\64ĉJhlSh4S@$Ѓthy6484JU\IҡtIt8PSh6a4t jV誢}uĉJuS@0ЃM \IѡtIt1e[^_ no irq %d handler for pci %x irq %d handler %p(%p) unmapped for pci %x after %d ints. irq %d: cannot remove handler. irq %d: cannot install handler. UWVSuVNÃu 16VSƒuVSh8431:www wSh83wS uĉJwS@0Ѓ4Ju/ĉJwS@(ЃSh82>\I \IUĉJh4S@(ЃtSh8q2ĉJvv vS@$ЃtSh9H2M \IUҡtItjWye[^_UĉJu@UĉJu@UĉJu@AdaptecIntel CorporationS3 Inc.ITEToshibaVIA TechnologiesNeoMagicACER LabsCMDContaqPico PowerUMCTIBus LogicOPTIDPTSMCSilicon Integrated SystemsChips & TechnologiesMatroxAMDNCRCirrus LogicDigital Equipment CorporationWeitekNational SemiconductorVLSIATI Technologies Inc.NCR/SymbiosCompaq(<$<vgamisco<k<d<`<(<ipifloppyidescsi<<<(<fdditokenringethernet$<<(<xga<<(<audiovideo*=$=(<flashram======x=(<cardbuspcmciapcimceisaisahost <0<t<<<=0=I>A>9>1>&>>>> >>===serialprocessordockinginputsystemcommsbridgememorymultimediadisplaynetworkstorageoldvendor=0x%04lx, device=0x%04lx, class=%s, class=0x%02x (%s) (unknown subclass 0x%02x), subclass=0x%02x [no driver assigned] configuration space registers: %02lx: %08lx map(%lx): io(%04lx) map(%lx): mem32(%08lx) map(%lx): mem20(%05lx) map(%lx): mem64(%08lx%08lx) UWVS}] lf=lt*󐐐9t f:uf:tr,PhM>,Ph\>,jWÉM w4=hm> EPhx>,}w@E=xt#9t xuxt ph>Ph> Ph>B,j+h>+=I }uXh>+1uVh>+VWPh>|+vh>d+VWUÃw{$|AAAAAAA$PVh?$PVh?$PVh0?* &$P^SWPVhI?*ރ'Ye[^_UVSu܉J܉J9JssJJjjN@P(à uJ ܉J=؉Jt+J@PS5؉J#jN5؉Jw؉J܉J@؉JM M KMKsԉJCĉJEPE PEPBЉj VCjVCjVC $Ctt !t j,j4j@V|C Ce[^UE t=Q~ Ð1U1UWVSE UM=ptu b=pte=pt$C=p=p%ѡ܉J@9v¡܉J@Rq5؉J#ӋCĉJCPCPPBsPfӋC~}uxĉJCPCPPBs sP;1hӋC|B~=u8 ؉J܉JJt:;%9tJuAC 1e[^_UENjhlEPK4mchipPmgeneric PCI bridge (vendor=%04x device=%04x subclass=%1.2d)UWVS]jS'%=uBjSjjj=赑Ãt %PPPhMemory: posting , burst mode CPU->PCI: posting X-1-2-1X-2-2-2 memory clocks= write read and, code fetch page mode DRAM:2-1-1-13-1-1-1, cache clocks= writeback writethrough512KB256KB128KB64KBNone Cache: Warning: refresh OFF! NO DRAM parity! NO cache parity! Warning:ONOFF, CPU->Memory posting 33MHz25MHz, bus=Overdrive (writeback)486DX2 or 486DX4486SX486DX CPU: YPE\P6\P'\P\P‚ \P[SXSXSXS[p[W [W]XSXRNXR[R=XR7XR)XRXRXR![R!!XR[Ry[R k[R_[WWWWWP[W@9[W5[W&[X[X[WSXSXWTXTXT[TZTWpWTXTXWZWZWZWZT BurstOf4 RAS#Only CAS#/RAS#(Hidden) Refresh:2-2-2-2, PCI clocks=, CAS-wait, RAS-waitX-3-3-3 (50ns)???X-4-4-4/X-3-3-3 (60ns)X-4-4-4 (70ns) powersaver byte-control cache-all Cache flags: 3-2-2-2/4-2-2-2 Warning: DRAM parity mask! Warning: Cache parity disabled!, read around write (primary cache OFF)(unknown)Pentium, 100MHzPentium, 90MHzPentium, 66MHzPentium, 60MHz_A_A_A_A_M }_Md_N04_N00_N(^N$^N((^N$$^N[^NL^O%^O@@^O]O]O ]O ]O0h]O0F]O0 $]T Parallel Port: LPT3 (278h-27Fh) Parallel Port: LPT2 (378h-37Fh) Parallel Port: LPT1 (3BCh-3BFh) Serial Port B: COM2 (2F8h-2FFh) Serial Port B: COM1 (3F8h-3FFh) Serial Port A: COM2 (2F8h-2FFh) Serial Port A: COM1 (3F8h-3FFh) Port 92: enabled Configuration RAM: 0C00h,0800h-08FFh RTC: 70h-77h Keyboard controller: 60h,62h,64h,66h Floppy controller: 372h-377h Floppy controller: 370h,371h Floppy controller: 3F2h-3F7h Floppy controller: 3F0h,3F1h IDE controller: Secondary (170h-177h,376h,377h) IDE controller: Primary (1F0h-1F7h,3F6h,3F7h) Mouse function enabled Coprocessor errors enabled GAT Resource Lock, Bus Lock, Bus Park, Bus Modes:[cPYcPWcPUcPScPSTPQTPOTPIT7cPcPcPbPbRbR@bRbR0bR0bR0 bR00bbRTWrbkbW[bW@DbW/bWbW bWaaX`aX` aX`@aX``5[aXaXaXaX5[uaXQTXOTla clocks RAS-CAS delay: x-2-2-2x-3-3-3x-4-4-4 Write burst timing: x-2-2-2/x-3-3-3x-3-3-3/x-4-4-4x-4-4-4/x-4-4-4 Read burst timing: , 66 MHz refresh, 60 MHz refresh, 50 MHz refresh 15M-16M memory hole 512K-640K memory hole no memory hole DRAM:Warning: refresh OFF! secondary; L1 dual-bank pipelined-burst asynchronous burst pipelined-burst NO 256K 512K Cache: Bus Concurrency: PCI Streaming: CPU-to-PCI Write Bursting: clocks Peer Concurrency: 5678 CPU Inactivity timer: dPbRbR@bRbR0bR0bR0 bR00bbRTWrbkbW[bW@DbW/bWbW bWaaX`aX` aX`@aX``5[aXaXaXaX5[uaXQTXOTla PCI Concurrency: iL@iLxHITLxPOTLxXQTLx`STLxhScLxpUcLxxWcLx@YciLiLITLOTLQTLSTlahNhN@@hN hNThh`h`@h`h`h`h`{h`vh` qh` kh` eh` _h`Yh`ShMhaha@hahahaha{havha qha kha eha _haYhaShGhbhb@hbhbhbhb{hbvhb qhb khb ehb _hbYhbShAhchc@hchchchc{hcvhc qhc khc ehc _hcYhcSh8hphp@hphphphp{hpvhp qhp khp ehp _hpYhpSh0hqhq@hqhqhqhq{hqvhq qhq khq ehq _hqYhqShT, MB1: MB0: , D: , C: , B: IRQ15IRQ14IRQ12IRQ11IRQ10IRQ9IRQ7IRQ6IRQ5IRQ4IRQ3[shared] disabledA: Interrupt Routing: Mouse IRQ12: Coprocessor IRQ13: Lower BIOS: Extended BIOS: clocks, 16-bit 3.5 I/O Recovery Timing: 8-bit viAdiCT Secondary IDE: Primary IDE: USE $] Pu ]enabled%sUWVS}] {1{t4PWSt' tMt#t2?"C8Cu7s2"C8Ct'hCtiiCthtVhiR{ne[^_UjHu3tkUj@uUV8 MtjVP RÅ Dj}䉽lWphQ à eMWh Ã}G tzVzVDQRQRQRRpR pj}ȉdWpDQ1 à AeMWDt à VRVRVRVRVRRD j}`WpDQ à eMWD Ãv6D; DvV}G tDQzQVURDWRWRRpR Ã)MA t UUUMT9vPDwURjURjjpR ÃMA tUUUUfUfUjVU,\~Pf~FʀlDjQjjpR Ã}G t&nnooPuDIPJPuDGP(DQ9PQB9PDW+PJX\G9sX9vXX XTt5RlRP\RpR ÃPTtMA tDWWDQB9uTj `Rh\RpRo Ã+PdhptMA t21TJ9s#lLLF9rX\wpRDʀwYTjVjjpRÃDAu V'=tV9r VB9v j TRPDRpRKÃ_jDRXRRBj8LQpDWà LVNVPVRLW.jRpRÅ13V5V7VjHQpDWZà jƅƅVVVHWxjDQpVà ƅƅƅƅ'jDWpVà ƅƅƅƅWjDQpV\à lƅƅƅƅjDWpVà  ƅƅƅƅWKjtDQpVà ƅƅƅƅDVjjpRju jjjju ejjjju M}O 0DMa 8pRs(uuuuVu u؍8[^_scsi cd_romfictitiousUVS]S58n2tS58n1p(1h^ SIjhFP蒊jhF$P肊FF4F8dF<Fd1@F@FDdFFHfFT,fFVFdfdždžF FƆ F WEVdžWEV Sf1e[^UWVS] u58n1Njw(uj uVIE%Sjh NjjEPj VW t1aMELEEUEEŠEwcwuNVȍe[^_UWVS} ]juVIjWIE]Ehjh NjjWjVu58n 0PHe[^_UWVS}] juVIEMEChjh NjjSjVW58n/Pe[^_U WVS] uj }WIEEEEE]EUjjh@ jjjj Wu58n0/Poe[^_U WVS}] j uVIEH]UUUUUUjjh Njjjj VW58n.Pe[^_U WVS}] j uVIEG]UUUUUUUUU Ujjhjjjj VW58nY.Pe[^_U WVS}] j uVIEK]jjhjjjj VW58n.PFe[^_Uu58n-PqU S]j EPIEB} uME@UUUUE]hjhjSuj EPu58no-P]U VS] uj EPIЉECuMMMEUhjhjVuj EPu58n,P;e[^UVSuV58n,ÃC uu VuK 1e[^U=Hnuhmjj~ HnLnscsigetcannot allocate scsi xs UWVS}\I hI \IÀuF֐E t\ItIBFO jhjWtGO5xJt$xJ\IҡtItVEO\IҡtItE1M t@PjJjdQƃ uWhȄ1~e[^_UEM xJxJIAAuA ta QÐQzt uAPBcould not get size UWVS}]j uVIE%Sjh@KLjjEPj VW,tW'h,1&EPW X} tEPB U ؍e[^_UhjhjjjjjuU WVS}] j uVIEEh jhjjjj VWJe[^_UWVS}] juVIESjhjjjjVW e[^_UWVS} ]juVIEE,Sjhjj,WjVue[^_UWVS] uj}WIE]VjhjjjjWu|e[^_UWVS}] juVIEESjh0ujjjjVW9e[^_US] jEPIEtEujh'jjjjEPu]UWVS]sCt SXFx t S@ Ѓu jVSFt?{,uS:0S"uFSЃtKjVSW e[^_Data buffered space not in kernel context No direction flags, assuming both scsicmdUWVS}E)!u=u M %`nt%9t u(uƃu bW^XSu M( NMNMN M N^~MNMN F$M$N, }}th$QE PGDFE(% =t:tB=t= t0hOuvuA uvIЃF(MAVЉǃ t]}$t 1/\I hI \IFujhrjVFt\IҡtIt@VǃXF N t fA}tPM9NtHE(% =tt = uuuv+ E Pv8C\I hI \Iu(uV \IҡtItC?}$ttM$y,I$Qfe[^_USM] u"A I tA(ajA@t A A$IQ,ttDB,J$Z,B4B8+t'B,fy}A$B8J$ B8؋]unknown error category from scsi driver US]{(wsC($,|pSP/j(htjshjS]RESERVEDMISCOMPAREVOLUME OVERFLOWEQUALABORTED COMMANDCOPY ABORTEDVendor SpecificBLANK CHECKDATA PROTECTUNIT ATTENTIONILLEGAL REQUESTHARDWARE FAILUREMEDIUM ERRORNOT READYRECOVERED ERRORNO SENSEDeferred Error: %s req sz: %ld (decimal) ILI (length mismatch): %ld info:%#lx info?:%#lx csi:%x,%x,%x,%x asc:%x,%x %s field replaceable unit: %x sks:%x,%xerror code %d at block no. %ld (decimal) UWVSUru0]1MI2σUB0ptqoh4hnhC>}7~uPh/}1t,t(F tPhPhʎ tPhՎ{v8jhCP t!C PC PCPCPhS1{vs 1{v{ utNWVEWVh0}H(vMquh{v{ tC Ph{ vb{}\C C%PCPh" <Ph->}$FVVPh;_hWRe[^_unknown return code %d from sense handler. UWVSuNM~}1N0M~1MA8tLVЉÃ|F@t1F F$N"tvShc1N@MOMM1ҀvW 1vG pu}u ut)}u Vpt!q}tV} M$ؒؒ<<  0<<<ؒ(F@F F$NMa ?6Ma A u# N@le[^_UE MU @HUE@@Uut UE MU HUE@‰UME @@HUU BBBUu|JU |J?%dUE=t =u h?BPhA1u h!nodeviceprobe(noadapter:(%s:): UWVS]=|Jt hW{uh6CptphhCP-{uh~#CphhhCPhPhCPe[^_U1%s UWVS}w=ItfO Wov(hv,"*ƒ~<tGPRF<Ѓ G ‰W$~$tWF$Ѓ1%hufv f w ؍e[^_UWVS}ut9~8tWF8Ѓ %PvPÃt {(u C uNfC f%f=u 9 u~@uj@S1Suuu WF@ЅufK e[^_UWVS}u~8tWF8Ѓ %PvP,à u~Hu1Suuu WFHfc e[^_UWVSu}]{8t VC8Ѓ%PsP u{DuPWuuu VfPWuuu VCDЍe[^_UVSu] {8tvtPWvv]~U FM <u UEu h1e[^_UEU t9~}1Ð@UVS]u VSt Ce[^uk*CD-C68EIODATACDC-4*REGALMJ-*NAKAMICHCD-ROM DRIVE:210CD-ROM DRIVE:55NECCD-ROM CDS-535CHINONMBR-7*NRCCD-ROM DRM-6??*PIONEER3.1aCD-ROM CDU-8012cd1.9aCD-ROM CDU-8003ASONYjaz*iomegaIFTsdMD21*EMULEXprobeUS]Jt 9t7@Xu{4uvC4v𡈊JCXJ{PuCP]UUJt 9P4t @XuwUVSuJtVsGVu [Xuwe[^UWVS=vv*J@1ۃ=JJtJJCjjs0ƃ uWUBph-Os0VIЃ1Ur(RWsP tWUBphjV4!1e[^_US]{(tjs(!C(CPCpPO]scsi_alloc_bus: - cannot malloc! USjjJj %à tj SICh>1]U WVSU1ۅ|J9~R5JEu MIMIM} uM M1} |t f~tVЉUȉ1uȉ@ fF f~ufFFÈH 1e[^_UVSufU  S5XwtS5Xw@(1thhPV e[^, retries:%d , FAILURE US]S0C0$K| 0>K9E}hw0>Kj}ux tjjE%Pjjj5I5<1Kj WIE*EEEEEEEEE]EEjdh̊JIЁ ЊJ#EԊJ؊J܊J'=JJ JJJIJ JE@h̊JЉƒtSEu} Ph薚 E1x1e[^_U=lwuhvj j¿lwpwukUhwUhwuuu uUhwuuuu utUhwuuu uUhwuUhwuUnknownU=(xu!EjhwEPν(x,xfile system full %s: write failed, file system is full U WVS}uE_U9S0u Myt2K`ES(S F`NjUډUEy$M)Ⱥ‰ N$MApU MAl#E UL C9]sMƁu譗Ee[^_U WVSu]~GpU ЋOl#M |u 9_0u1EPjU G#E GW OdRv דoEp@~U tU P~u 9_0ATKF9_0uuVWsEGT]]9_8~U|4u BU9W8M9O8~uVW!EU] 9_8~_EyE~U t  F`EEMىMEy$U)‰кЋMC9_8_8+]^$OpE Wl#U \ ƇD4uΕEuuVWE}u119]~]EyE~U t  F`EEUډUEy$M)Ⱥ‰ЋM C9]U)V$)GpU ЋOl#M MU)T ƇML49t E)D4uE Ee[^_pos = %d, i = %d, fs = %s ffs_alloccgblk: cyl groups corruptedffs_alloccgblk: can't find blk in cylUWVSu}tEE 9H tU R(UF8!EEUN`RE xU t  M I`QV0 t UUPXrEF|EEE xU tLT M ITك93U zU tEM IXEP A}~|ӉؙÉ]^|ؙӉؙ׉Plj9P~f E @`EPS]CEuV8Ѕ}B$)‰Ћ}L%PuF84z} U t  E @`PSSu$EPSuh=th])u ^,{}9؅}Cu ~U t  E @`؅}C$)}+O8!‰Ueu4Pxu}tx1ɋuF8)9v8)uE#E9t:eA9M}}_89]TEPShTsh2e[^_UWVS] M$slu{h}}~6E}E}$M)Ⱦ}:4E}E}$M)ȾƉ} :MAMu$M9Kp[p]E}];}CE}$M)ȾuU9U~3}}t(Ѓt } MCEB9U+UUuNu}+$uyEE}] MKE}$u)ƉuU9U}*}}t t} MKEJ9U|؋E)ЋuT}9$}$uM4~)4}~ u}M)4e[^_-pid %d (%s), uid %d on %s: %s U@?uEPu gtPtB0PhijoUWVSMIMu} } u}}M Mu}}MAPu}u}}} <M91 >BuFP։u}M}9r!u9u M9r uF0}}#8@#GLM9A0URuq0PU¨RuuuPuuÃQUBuV0։|}}|MUuFdrTMO}t R}z u<|} SM uM7U B}W0։u}M}9rYu9u M9rCURjuv0u uwÃ}WduMqT};}MM#8@#ALu@yL!u9:URjPu u8wÃMQduMqTURuuPU¨Ru u u%Pu uÅU B}W0։u}M}9ru9u#M9s}u@NL!ω} uv0uURuuU¨Ru u uPu uÃjjuu u7E}WdupT}tPLUMAdzTM uNMEURURu unGÃXMUȋujjuVEURu}w0uuVAÃ( MMjjuv0uuQEVdupTPwucwÃt}w0uuUMȋuNE}ĉ}URjMq0uv}4utà EH@MvTU9uFut P}롐}ujjuuEURuuv0uuuÃ}}jjv0MIu4u(E}WdupTPKu7vÃJ}TMTu}4Etuvuv}uMItuuEURuuv0uuuDÃ(}}jjMq0uuTEuVdxTut Pl}TȋMu }t u7u u4vUMuwutFURj}w0uurÃtKuMq0uuCuGw2jjuv0uu{EVdupTU}1p[^_ULUWVSURrlJAt feF#WTKFtUzTKtJ؉Ft&Uz TKt J ؉F(V,Ftf^,ffffURjs0F1׉MS!ЉKUSU1sx{`EU‹CdRv qǃt uuVF1sxߋMy@ƀ UztJQB@u usUJ$Rs1e[^_ffs_truncate: newspaceUWVSMIH]s8s <Dž,ylO4<|*<94r<94u890s . 5TKh5TKlHy<QRӉ9r%9u9r u8RILJLJO89uR<9uDODžT\7HXh\h`Džd 9<$ 9<988 48! 8<4FPDž(MAt Dž(<8Hs(PR]s BRW$8<(tPo*HSB@t Pp PyqODžT\7HXh\h`Džd\7vTR88 48! u 8<4AP8<Dž(MAt Dž((PR]s WWf8< QB4APӉ9r.9u9r4v0&4#8@IL!ˉ+ RP Z@RIP证(tPm(HQB@t Pnn P%o4S0Ӊ8<4FPDDDM΋4+stuSt҉)щM[0 0jDž D9  @ DŽ Q B4APӉ9r.9u9r4v0"4#8@#QL@W , D9 DD@nD QDB4APӉ9r)9u9r 4F04#8@#AL8<D QDB4vPӉ9r'9u9r 4V04#8@#QLu h"C)Љ~74CT@@W , 8<+,y LJO<8Hj$[^_ffs_indirtrunc: bad buffer sizeUDWVS}E@EEE1EE1ۋU9U}U؋EPtUC9]EE܅~ Eܙ}؉E܋UR0 UԋEXjjUr0u S0wE@$ ur@?@E@,UJ$B49B0} hUzTjR肈E7EEP` 7BUR MуuƃtuVhEUR@U}t~jjJEp0EUr0uuSE@tH+E܍RE܋UDPIҋ[]ȃ C@uuVeƃtu u gEEUZtKEHU )‰U9]}gEUUЃ KEE9]|}~O}|IE}؉U܋ELSG5\ItIU,Q"Ӆ>5\IыtIt)}uEMy uV\I hI \Iփ8t#_8jh#9jS8u5\IыtIt赐 TKM TKMMy M؋MQE\7UMMMMM؉M\7RUԍURMԋҍe[^_|MFS image is invalid!!rootfs is %ld Kbyte compiled in MFS mfs_mountroot: can't setup bdevvp for rootdevmfs_mount: dup devUxWVS}} &=Tu=ܟ =ܟcw h$;4JF4F$8J 5IuCG1e[^_US] uSu)C,]U10Imfs_open not VBLKUE@x<t hT@1Umfs_strategy: bad devUVSEX5@?EPjs<蚖 t Exu h@EPlz u0CT BC&t s4s@Ps4Ps@$ SRHB 9F0u rS?4JC't ZBCACAYu1e[^US]CT E C&ts4s@PB' s4Ps@&C, {,tK$SQ]UMy tQ AytQAyt A1mfs_close: ref count %d > 1 mfs_closeUWVS}}wl^taN9^u C@F9Y uCA {t SCBCACS9A uA vSS jj}ww juՆuC}~whA)~t hBF u)1e[^_mfs_inactive: not inactive (next buffer %p)UE@@l@t PhC>1US]j.Cpl蔗C@l1]tag VT_MFS, pid %ld, base %p, size %ld UE@@lppp h}C(1mfs_badop calledUhCUMy tQ A@l@ ytqqjjqqqÐ1UXWVS] EMylqu M}tuMy(HE} t u MMuuЉu}uM̉MuuSuEt EuE̅MA$Mu t}iC 2Mu9}(uF(9uCM u91|؉Ӄ} #KuM 91MA(9u KM9|W4EuFE1 urM M}uQu@V9]Mt W9uFjjMq(uuBǃG$ ucuF$uwTO$jWTE7}ȋG` 7PEPЃ@?@@,WiKE uVG@U}}t^CM9Y v0Mu9}&G@TuV(9uCM9^ vu91|܋MY} t7t3K~.Mu 9}$G@uV(9TuKM ~u91|݃E MtW7MA$eMuu1e[^_UWVSE@ U}t MEE E}؉E } E t$UZ 9] |N)] ꐐ}|~E~E+E )NjM9)AA MEL9}tD؋M1q ËE E1q UEM9QA MG})F~}tUE1e[^_UWVSu] t(C'u"~t FHtC|9A|~gN u-^ C't ^F CFCF^[C|9A|~+^ ACKAY:9V tC|9B| ыQuACt{x{~YKe[^_I/O errorno disk labeldisk label corruptedUWVS]u 1Mq(AEXWEVuWEVu Vt tBt^J9~ 0A9Bu9v Ly uz tB A BAB A fBfAfdžVEfE1e[^_UWVS}u0tOtDߋEEuf$N$Vu u)FÃ1ۋuv(c?E$ ؋uFJ<MthLW llEPuSVu ^ ƃLUB&tLPuEPVhL׋MYTy4ShL׃<}|]ShL׃UB4Hy MATPqThL׃ }tV}}UB4M9A(rBEU؋M1q8PSVhL׉؋M1q8Ӊ1q,SPhL׍e[^_UhTKj58K06KUS]M #TK06Ku19Hu 9Xu@]uihgetufs_ihashget: recursive lock not expected -- pid %d UWVS}u >#TK06Ku1t9ruk9zufBtD@?@09B4tJjhNjRBtBTr4hNZjS聀z넍e[^_ufs_ihashins: already lockedUMAA#TK06KtJAAt+At=@?tt6@?A49B0t hOz=@?tAT@?@0A4 A4IUMtABAU=DItDI$11ufs_inactive: pushing activeU(WVSUr~l=@It~tVhPfuFuVÄ14EOfVBE07uEEEEE 07V]S҉E؃LJfLJOWE7uUM 7VS҃G#tCTK TKU܉ME\7u]܉]]܉]E\7NUR҃Ex5ux5NUR҃~ufuV苃E؍e[^_ufs_reclaim: pushing activeufs_reclaim: not ufs fileUVSEp=@It~tVh0R;^lSVP{ ts ~C F@Lt t&tu-., hLR蒼PvlFl1e[^mangled entryi_size too smallUWVSUruz }w u}u6uEE}RUȋrlt}}uutfff@t  uVE1}ȉ}E@uuU1OUR҉ÃB f}}$}ȋWBtuw  uuuJà u  }ȉxu6uȋ~}9xu V[|1u tmEx5x} x5Wu쉵tV҃ju0{Ã}tif}}bEL5} L5WV҉BjuzÃ}t uf}|$Ex5x}x5OUR҃uV}u9~ u{}t6u9xt+f}}$Ex5x}x5OUR҃EL5xuL5NUR҉Ã{ x}ȋwlt}EEEE}t}uf}}Euv u}ȋW R(JU}u&t~DtVD9r u+9s#DžxtGHEmtVDVH}#~HxtCEЀ6uȉuԉU؉ME}}䡀6NUR҉ÃZE3KtvHut}E}t9~H }t~Hug}t u$#tVHEЀ6}ȉ}ԉU؉MEuu䡀6OUR҉ÃDžx}uxuEEU苝xZ@f{t=PItQxSu t;h StvHVkx)׉VHx }K;t!uȋVz SS )х~d9MEtH}suC}u:M}u tH}u9u|EStWHUu)u;t7}ȋWzSSu9VuRSRv tH}SыtNHNHSx;tMut9wH}u EtGHwDu}t u }t } f}tfuVE1}ȉ}EuuU1OUR҉ÃF}u-tWHG<wHu"utwHuwuȋNAURtwLQP҉à tt8}t/W9t$M̋Ql9WtQmtŰu}oEx5}ȉ}x5O}}f}uVE1}ȉ}EuuU1OUR҉ÃtW9WLu uȋNAURtwLQP҉à Űu}O}Ex5uȉux5NURu}ȉxu Ex5} x5W}쉽|W҃uȋNAURtwLQP҉à t&EL5u L5V|҉}t>f}}7EL5xuL5NUR҉Ãt ur뷐Ű}tV9VLuuruȋ}7_}ȋOAURtvLQP҉à uR}tf}|$Ex5x}x5OUR҃Űu}G@tWu6uB1h[^_%s: bad dir ino %ld at offset %ld: %s bad dirUSUBXuu rClPhZ_ CPu h_ͯ]First bad Second bad UWVSuM FxYYAu?QE%)lj9&FxAA $9r~h_%19}|t@9||u1h_2 e[^_ufs_direnter: newblkufs_direnter: frag sizeufs_direnter: compact1ufs_direnter: compact2UWVS]u vl|S}WWBRRwu V z~ ff ƅƅ} Wz t t|~<5FHt h`ޭ|WHfDžtDžDžDžDž}W DžH2u DžH2NR҃V z$ h`|N|WHW<9r u%9s|VHV<|WHDž6u 6} OR҃8l} Wz ^ l^ l)߉plvx|9w<xl>tf^މl p} WzPP ӀH)pxSlP x|9~<{l>u0p9tv h`fpff9t9p} h`تfpflf^މltlR} W B@t1 |N~@tzV@9w uh9v`|W@uF ^Dž07} Dž07ORҍ`[^_U WVSu^l{<t_SH+S<E6uUM}}}}6NUR҃utUf{PfzVB@tQu1MSHE6uUM}}}}6NUR҃uUuKe[^_U WVSu^VHE6]UM}}}}6KUR҃uHM} WSz~ff QSB@tu1 uNe[^_U,WVS}EEMwjURujjuuj W]sj豲,uK}uEft>?t@MQRz WW.ut .u] 9t1EWщM]؋M؋]9aM9uM9Ge[^_checkpath: .. not a directory UWVSuU BEB9Fu 1ۃzEjjujjjjjEPujyÃ,uoE@xEEuMf}..uEE9Ftt=u&hEPJEPuRAЉÃoEx<nu h.h^}tug؍e[^_undefinedgroupuserUWVS]sF { uC PjWV tu${$uC$PjWV tu1e[^_chkdq1chkdq2UWVS} ]E}W1U\ t@CtKjhij SCuC(xC(C(cKF~nu({t"1U| tVSWRuIF~1U\ t,CtKjhij S聿Cu{(KF~1e[^_ %s: write failed, %s disk limit reached disk quota exceeded %s: warning, %s %s disk quota exceeded for too long %s: write failed, %s %s UWVSM}u\ E C(9C wB{ tCu/9Gu$h6k4`IA@lPhWkKE1e[^_chkiq1chkiq2UWVS} ]E}W1U\ t@CtKjhlj SmCuC4xC4C4c߀KF~nu({t"1U| tVSWRuIF~1U\ t,CtKjhlj SCu{4KF~1e[^_ %s: write failed, %s inode limit reached inode quota exceededinode quota exceeded for too longUWVSM}u\ E C49C,wB{,tC u/9Gu$hm4`IA@lPhWkMK E1e[^_UXWVSEU UtEE@EEUUjjEP蕦E ]Ex5] x5SEPЃ{<tuUB0jSd Xu 8St-uUB0jS6*Sja9tuu u& UL:<U J UBfBUDD,: D4: EPRWjjzu3Ex8~ @8UD,Ex<~ @<t}UU #DJ@JUtUu 9suDKS}9|u4f{uKt S Q S lIS fCuu=HJu=8K}9LJ}pILJ9pI~#jjj@`j@SILJ{HJuhuTuD Ct hu詘Kt A HJ lIHJ HJCC tSQS }9}tEL5}ܡL5OUR҃utY }{fCfCu s}{fufs}Љ}Es uuE E U 1ɉUMEEE}uTE2}}uuEU̡2OUR҉E} uuj uI҃}9}tEx5}ܡx5OUR҃Ct SҴfC}t7 tSQS CSutuE]{0u{$u{,u { uK{t2{8uTK}uT,S8{<uTK}uT4S<}1e[^_US] t^f{~fKQCt SuifKf{7=HJtlIlIC HJC HJClI]dqsync: dquotdqsync: filedqsyncUHWVSu u hjyFu 1\NV\u hxy迕9]tgEL5]ܡL5KUR҃GNjhyj V5Fu(9]tEx5]ܡx5KURqFuN}Љ}E~ }E E V1ɉUMEEENVTEH2]}}EU̡H2KUR҉E}t uEFt V=f9]tEx5]ܡx5KURҋEe[^_dqflush: stray dquotUWVS=DJ@J9@Jwc tQ1QA}9|u7fyt h{tABAAAu9@Jve[^_U1USU] JEPjRAЅuE1]U-UWVSu}u @PVaà u qFURM qV@Ѓ t ME@lftM 9AtuTFEC0M4M1e[^_UEp pp@@ ZP$u1ÐUVSEpXp SpF ZP$u:PlJ~Dt FD3S@<3kX1e[^UUB@ltB u Ð1UURJlz~LAuFTKAt7I AtAtA(Q,Ata1UWVSEPZl]x }fp}GB<rvuB@t }}t ]{u11ɋ}G]9u-@t@tɀ] ]1ҋ}f~S]]f@f}}]9;u"f}tt }61BE]C9|@tt}ȋ}f#1f9t Ѝe[^_UWVSUrFlZTK@t7H @t@t@(P,@t`PSPSfff{ffSSS SDSKS$K(S,K0S4K8S@S<~<u C ~<u C  VR(S  SHKLV<P(H,SPKT1e[^_U8WVSUrz_lJ MЋRŨ>u+f~u$~u~u~ u~Du ~Hu~V0yutff K1e[^_UWVSE} uXluuMA9u9u9t#QVxuEPuxuR9u9tK9tMyt f9tMyt f1e[^_UUUU1UWVSUJMzYluGlt r W_ƃu fK9}u WL uKWKe[^_U4WVSUzruԋR UЋW9Vt5E4uuЉu4uԋNUR҃E9}tOEL5} L5W]S҉Ẽt)E4uԉuuЉu 4uԋVS-_lfv6E4uԉuuЉu4uԋNUR҃Et8E4uԉuuЉu4uԋNUR҃EfKTK TKUME\7}܍uuuuE\7OUR҉ẼuuuSẼ t fKj uvS9}tEx5}x5OUR҃uIE̍e[^_ufs_rename: lost from startdirufs_rename: lost to startdirrename: EXDEVrename: same filerename: linked directoryrename: lost dir entryrename: mangled dirUWVS}OM}}WU؋}}}} |DžtDžpDžlR}9Wu9QE4}}}}4}OUR҃9}u WH uv>UEL5UL5JUR҃u"xfOgu> u>؍\[^_ufs_mkdir: blksizeUPWVSMIMċ}WO M}ċ_lfv "fRUM@MQ EЬ6}ĉ}ԋMM؉U܍}} 6M}ċWMЉMQ}҉ƃEHlM}W RIf}f@<fǁ TKMȋ TKME\7Eԍ}ȉ}؍MȉME=\7Pu҃fKE\7MĉMԍ}ȉ}؍MȉME=\7MċQu҉ƃ}ċWIz~IUƉMQUSUjj}w j jjjjURuj谅ƃ,uSMċQ z$ hz}LJLJOuuWƃ t,fKtMfǁIu< }Uj MqEu;e[^_U,WVSEHMHM܋@ E؋MylM܋Yl9uQ EEċ}WO E2UủuEM2JUR҉EuK+]܋}߉}E9s'HPPHfxQP9Ew9EwuSuɋE jJuA}u~}ut huuV+U9)׉}EE9sEP9rjjJuR=EE}}9s*PUMUuuP9rً}Wu2W}:u~t-^1VJl}9W ru 9Wr}u~Ee[^_UVSMYSlC9p uqVPp1/AQ E2]EEU 2SEPЍe[^UEPB%=u j r?1ufslk1ufs_lock: recursive lock not expected, pid: %d ufslk2UVSE5@?X jhjSˎCu{hufSlBt/F09B4uBu1PhsJjhIjR뭐Bu BTBTt F0B4B4J1e[^ufs_unlock: recursive lock prematurely released, pid=%d UE@@lHTxT~@u p4h0s1@4`@t `P蟐1UE@@l@u1Ðufs_strategy: specU WVSMq^`{lC<w hrFT9FPugE5]EENTMEE 5SEPЉÃt^,N$Ve=~TuV~Tt_ C@@ F<7CuV&1e[^_tag VT_UFS, ino %ld, on dev %d, %d (LOCKED)%s owner pid %lu waiting pid %lu UVSEp^lCPCPsh~<u VCtPhq{4t0s4h[{8ts8hѝEh81e[^UMA@lH2t3KQUMA@lHH2t3KQUEPJlz~LAuFTKAt7I AtAtA(Q,Ata l1t3KPUMA@lH23KQUMA@lHH23KQUEPJlz~LAuFTKAt7I AtAtA(Q,Ata l13KPUEPJwy$4DTdtt@ 1Ð@ 1Ð@ 1Ð@ 1Ð@ 1ÐUSMQRlPS0RQ/)]U WVSM E}7~l}ff ҋYV<vtwxNu}V-à tYW Ex5ux5NUR҃VlSlFlt3KVV0VI4މwWJF}u}W(O, (>KW(O,,>K@ۍۍW(O,}71e[^_U$WVS} l}܋}E uM}W E6} }}}U}}6} OUR҉Ãtj }w8u AMql}܋}W RNf}fU YQtP6W= EuM9q,M \IUҡtItWttuwthq裴 j%wx"Gxe[^_swpoutswap_pager_dealloc: *warning* freeing pager with %d blocks UVS]{lu{duChx6K{dtSdChBh ChLJShCd\I hI \If{|tjh!jSqqf{|u5\IҡtItwS{ttsth(蒳j%sx!Cxe[^UWVSU}}t utM 9JpZxM |ttsl}t+Q|$s)D9DuuJy߅t0Q(s)t)Ɖ9DuB~۸1e[^_US]c&C&t c&S sS]UWVSu }19}9tE4C9|e[^_UEH$`$Prswreadswap_pager: indefinite wait buffer: device: %d, blkno: %d, size: %d swap_pager: I/O error - pagein failed; blkno %d, size %d, error %d UTWVSM)ԉe)ԉe)ԉe؋]} HMYH]YL]M] M]ċ]]܋}W\B9P҉UEM9M]} EBM9Qp4}9 ]} 4>C]M9|]]F}Wx}MEM]}TM]؉AM}9jM]؃<}]r}M؋=JEEEO}}uM}uG]}؃C<%@@u cUuTUBtKBt>Ru1EURURURURURURju ]SSB,t U܀bueEE}t]ӈ]EUB0fB>֋]ԉ]uVsrǃG&u /fN>V<@@u fQ<@@u aV<@@u fQ<@@u aV<@@u fQ<@@u aV<@@u fQ<@@u a}t!Ex5]]ġx5KUR҃uBQ|!9ut%g&G&t g&WwTWVt9uu}VTNX U^P|uR9ut+fN>V<@@u fV<@@u fG&u h69u[]K}ty~4us~0um~lug~(waU9rPuY]C&0tjs vc&σ]c&C&t c&SDSu!suuWk}G11]s w C0}'~4~0~l ~(U9rP^|9]u [||u h 5|{(f{>STKX 9U])Ӊ]S|iEt]@&uqx/ukx0ueG&0tjw ?g&σg&G&t g&WRWq1]C1]C1u|WiG1G0 t(f$t Wog&G&t g&WQfN>V<@@u fV<@@u fe}$URURURURURURURu ]S7|$g&G&t g&WPf$t WnfN>V<@@u fQ<@@u aV<@@u fQ<@@u aV<@@u fQ<@@u a~5OK5jjjUURuU1ɉUMuu58Ku: (MQS19uvQU jW58K\à u ^␐C&@u s mc&C09uwjUURuuEe[^_UU E%PRu'$kmem_suballoc: bad status return of %d. kmem_suballockmem_suballoc: cannot create submapkmem_suballoc: unable to change range to submapUWVS}u ]G(jjjjSVjjjW(tPhh"U7[uU267Ãu h"SU26Wt h"؍e[^_kmem_malloc: map != {kmem,mb}_mapOut of mbuf clusters - increase maxusers! kmem_malloc: kmem_map too smallkmem_malloc: entry not found or misalignedUWVS} M9 It9 It h!]S(UuVC`URWjS t@Vn9IuIhj-}1}uhGX!MM5J:jjjURuM1ۉM]uu5Ju 1(9}uRU R5JkYE uy}uLf[āU R5JUE`&]C&t c&S%>u^uURuu6UR>Ma&A09?URuuH tEP9UuU9P ux t hg UB Ru 19siU R5JTEP_]c& C&t c&SM=jjMq UR5<1K`]K&09rURWEe[^_kmawUWVSu] ~W薹F`EPSjV: t3F,+F(9s W1IWjh jV9벐jjjEPujjjV$FP譹Ee[^_UWVSu] ~WF`U%PSVWVI6FdP`RjV FPP9e[^vm_map_create: out of mapsUVSu=Iu#\Ju hC$\Jjjjduà uuu S 3؍e[^UVSEM ]uP P P$@D@H@P@LH(X,p\PXPT@`jP)e[^UEM 9It9It9It9hKuC\IpI hI \IXJA XJ`J\IҡtItátJA tJxJvm_map_entry_create: out of map entries for kernelUWVS=`J\IpI hI \I׃=pJ=hJ1M9 It9 IuPhJ P58KzRà tqSYc&C&t c&S\7C0s 5hJ#DK&5hJhJ pJ1ۃq}V5I`$Cq|=\IҡtIt8M9 It9 It9 It9 hKu]\IpI hI \I׋5XJtFXJ `Jh=\IҡtIt2+5tJtFtJ xJjjj$Ɖe[^_UEt@Pvm_map_deallocate: deallocating already freed mapUVS]tcCPu hGtKPCPP5G`9_(v_(9w,sw,9vEPSW tE9XsSPW E@EE9p v VPW E9Xu.9p u)@u#xuHEUPREGP%Ee[^_UWVS}u MMWRrG`9w(vw(]9_,sO,M9usuURVW t@U9rsAVRWD 4WR裩WR菩URU]]W 9t,G ]M9YsAuU"Q8UuIM9uڋ]]]M9Y9Y v SQWt MQ}t ]Y ӈY M]KM8Q<AQRI]SB`URssS M+QqփQU9r]CBt ƒRUR 9vM+QQRUR1ۉM]M]9K|M9KuM9Kr]KMKMU]+SSR7MURUS 9UWMQR8]CUBt ƒRMq q7LuW][]W 9WWR肧1e[^_UWVS}URئ]C`9{(v{(]u9^,sv,u9}s}URWua tU9zsWRu URU}!]9_ G +GGu! Rj %GGGu9w v VWu }]$ T$$WfB@WfB@|WfB@pG +GUJR щ uRQw.@G +GWO ։ uSVw-j SVwwu O(U 9uuUR豥e[^_UWVSu }UU} EPUB`9r(vr(U9z,sz,9vEPVu} t]9ssVSu EXE 9t,u 9{s9{ v WSuT US[9uuuEPѤ1e[^_UWVS}GP'G`U 9W(vW(U U9W,sW,UU9U vU EPu W uGPe}]U 9Ss RSW GP蟦] uGP]}M 9Ks QSW_ G 9t;W M9Ks.{ k9K s9S]C@9C N[9uʍGP]0M9Ks.9K v QSW K us sW_ [G 9uuW=GP G 9w M9K{ uhCubCt&Ct C +C PCPCPu*c +{u%C +C PjCCCsM 9Ks QSW M9K v QSW C M9K s=9st C@9C s-9tG M 9K v K 9uGP:[9 9<1KuGP_SsS!1]6M9Ks2u!{ us sWƃ t KMK [G 9uƋ9<1KuGPG` GPGtGP胟juu WuWkGP[1e[^_U(WVSUR菟u ]9s(v{(} u]9s,s{,}]9] v] URu u4 uRURFuu}9~sS]Cuϋu9s s/U 9St KS 9QtUR蕞}}]9_ruu}9~U ]+S1ɋ}Ӊ_w]܉uU9W sW +U U]CtpsuRoURuVFUR +U܃9UvUEx}؋P1ɋ]܋u)ΉډӉXp]܉uURLuvu@]؋[P]؋sTu܋sXu]1ډUM u9V,s V, +U܉U}؃Pu}tU]SRsu6? }}؃(ux]Ctoj1҃}u}tR]1ډUM UMu]܋u ]܉uuu}tjuuuD-uu }}]9_>UR薜1e[^_US] s suC ]UVSu] NDSCBC +C)FHCt s stSV"e[^UWVS] URSu3 uUz}9_s SWuj uVTU 9u u~XuVX9ZVXu9w9w v VWu wuwuw uwuwuwu t Wuu958Kt95Ju5jU+U1UM RUM Ru+Mu~Lu/U+U1UM RUM Ru_"uuu6\= WuD}U 91e[^_UWVS]} uE9It9Iu\IpI hI \IUCP踙C`9{(v{(9s,ss,9vVWSƍCP9It9IuM \IUҡtIte[^_UWVS}] uMMEPSWu10U9s# 9t9ZwE"B8EuۋZ R9re[^_UWVS}]uV S{ CuYLuPuSRs s7'>1S +S1SK RSK Rs< {t;Szluz(w R$SB0K N SVSKVNFFFsV +VRv7E 0E SVWu e[^_vm_map_fork: encountered a submapUWVSMMȃP袗MA`q\q,q(Ej$EPEPSMMMY$FCt hC<KMu-C +C PjECCC-Ct$C +C PCPCP cKM u‰׉ B MA0MADA A @BPBsC +CPrM1M1-DTu‰׉ B BbMADA A @BPBRSQu3[E 9MAHMAHEP{Ee[^_U(WVSMM]3VR觖~T}؋M9V 9t ] 9_w9_ w#URu V\ }}؋M9]Cts}7sM؊IM]t}Gt t,U"UʊU9tVR豕M؃y ҋ]$t IMˈ]}؊W҃Ut u܋M M^]؋[]܋M }+O_ىM}܃}W蓕URuuhuW#VROMM؋]CtYMtMU܃R處uZ]؋S +S RU؃RU؃R^}؀gU܃RוeM؃yulU܃R?t9u'VRz]؋S +S Rj}؉GGGU܃R` t MqHU]+S1ۉM]}؋M]O_ M]]MW}}uM܃yP҉U]} ]M(1e[^_UE @t@P蠓EP葓UVSu1ۋTKt&B,<|<~<uwzluCRu1ɋI+I  A~Սe[^U塐TKu hIrII9=Kv h=KcK:Iv_free_mincK:v_free_targetcK:v_free_reservedcKD:v_inactive_target(cKx:v_cache_min\cK:v_cache_max cK:v_pageout_free_minI;S,loadavgloadavgU4WVS]j0SIСl7Kt `<u5TKF)F,w$t2F(t*w fC*Fl9IfCFl9IvofCFl9Iv`F(tffC~,tHEN Q$A 9t* BuztBH<B@> E̋R9u܃}tfCvl7KtJx,{ xD{@<t x,{xD{x4~x,{xD{$@<t x,{ xD{(u=cK=cK{,uj0Su e[^_0S,vmtotalvmmeterU-U-UE1UWVSMA] UK|{ Ut E] {t {M IU)U Mt UUU9U}u$u]S  Uet1ƅtmM q9pv 4uu ]f{ uMq ~<t~<t^~<u&V@r t1ƅt=Q~UR]S2~<u tuƅtMAu|t tu ~<ustoMAtR]SE1uMMU]1^UR҃utEt'|t#Y|t FtM QRQRPWtR|RuUR]s uUMh[^_U M UQUQUEA tEA tMA tMMA tMA tM쀋QUQUMuURuUWVS]E HM0P29ryEtn{ u._SEPVWS賋tDEpP )EPE4P2PVW4ƃt~ut1e[^_UWVSMU %R9r=u1:=w*9r#y j4VSWt VSW\1e[^_UEU @@$UVSuE PXt%) 9r-jP PQv Vt t 1 e[^UVSuE XP 9r(P PQv [tt 1 e[^UVSu] C=w5S9w,%N dsRPQv !1e[^U4WVSE} MMWʉUw]9]s#UR0}p u@ dER|F`URuV,u URUMZu]9sYC8{.M9Kv[]u܋v uM9vM]9]uu@EЃUu+V1ۉMԉ]؋u܋Mԋ]N^ Mԉ]؋URv<"ẼttMM̀y&|q <tM]+] ]̍W9}$jURGJGW9UuЋUUR$J]}́Eu9uM܋IM܋U 9]+] ]̍W9}"jURIGW9UߋUR+1e[^_UWVS}U %2ZÁ39s R cK9TKs #6PG0uj3PVw 1҅t Ѝe[^_UWVS}U %2ZÁ39s 6PG0'uj3PVw e1҅t Ѝe[^_UWVS]]]]=@?}u1Ee]1x|U$1Ʌ~]uEu 2] 9EEUu R6u ]t1} E$E(wM y<uQ@R U ^WE1MuuU}1IUR҃U1x|} uDžpKu(u$URx| Ru WHpu :0ueM1Eu]t]]t]RURURuuu u(u$put(tp3wu9u>t1pt(juU$M( Rp] 36,Et2jUu R6uttUR6utt#tf$tttu  d[^_USEM UB Z Z$BZZB(J,B0fB<fB@fB>BDB4JB8J ?JBlBHBLBPBTBXB`B\p7KBp7Kp7KJ]UtVKxVKtVKl7Kp7Kl7KJ$>KT=cKvcKT$>K8KJhJhAjJJhJhAjUWVSu] jj h薮WSVxe[^_vm_object_reference: non-persistent object with 0 ref_countUMtCy0u:A<u h(PytQA B A xVKQ A |JA0vm_object_deallocate: object deallocated too many timesobjde1objde2UWVS]{0u ho)K0{0u{lk{(asV~lL~(BF0C0\IpI hI \If~>t6N<@jh)jVf~>uK<@jh)jSf{>u=\IҡtItˠf{>uf~>yC0F0F0uF0VV {(uCl C<t6{Dt,CxVKC xVKxVK|JfDctN<@jhl+jV=f~>u\IҡtItCf~>t hs+V~(^lE5]5C}WЉEuEL5]L5CWЃjjjjVjjjjjSߜ,}u]Ex5] x5SEP<{/uC&t h+?c&C&t c&S'S cK^ uVA>t FB Fp7KV JVj V譭e[^_vpcwaiUPWVSI)ĉe)ĉe)ĉeMy(A=URlUЃ}tEL5U L5REPЃMfI<U UMM܅u UR,U܃}uU܋M9Q,ufa<My tfO&uUz _OMG't6U9r/U9s(0t"G$W()=tW.&O0O1u fg&\IpI hI \IUG&u/tRO&jh[-jWUԉ\IҡtIM蓜Cfc&fc&&Mԉ \IѡtIt[\IpI hI \IUE95I~aEPu*ÃtIC&uCC't=C$S()=hS%S0S1SM\EF95IEI+ỦUth9}_E)PuÃtFC&u@C't:C$S()=S$K0K1U\EF9u19u~?M)IUUH&f`&C&tjs .c&F9uG&tjw .g&O&fg&MċU<19u~@MčLUUH&f`&C&tjs q.c&F9uMċU̍\ Mԉ \IѡtItujSu>, ߅@?E2UЉUEMME2MЋA]SЃ}tEx5UЉU x5BSЋUfb |J9$>K|܋]UVSut2~<},^ t!C&tjs T-c&[uf<e[^UWVSu} tC^ t,9{rE9CsC&0tjs -c&σ[uՅu E9F,uf<e[^_madvpwUWVS}X} }}9} Fu} }uVÃu1~(vP~0VTNX Uf{,f{*{0{/uC&t` \IpI hI \I΀{/uC&tK&jh[2jS5\IыtI4*}uf{$tNSlC}uS/}u&s -C1}(ujsV~ E }9} e[^_vm_object_shadow: no object for shadowingUWVS}u uju h3cXPt@SPSHKC4NPTHXFe[^_UWVSu~P0tG0VTNX UWHOL UVHNL Uv,u_ (suC&  S$K()ʁ{0f{,f{*{/s+uuu9sr;u9us3uu,u!u~(uTjjUURV9t<(ujUSRW{ C&0tjs )c&σScD(ujUSRW{ uuS< C&0tjs Q)c&σC1]G0e[^_should have called obj deallocate U WVS}wP~l~(F<wlm(cG<Yf>uf~>t W@OTMOXMM] M]]]O,M~0N<MI+MMM]9Kr]9]rMA&0tbjq &(]LuWW u((ufjjWHOL URW7tD]C&0tjs 'c&σMa&A&t a&Qu3]C&0tjs 'c&σuWuV MA1 ^ ]~( fF>(u>fG>WTOX RWHOL RWVHNL RV}fG>G(VpWpVtWtVxWxfV|fW|UVHWHUVLWLGdx6KWhx6K:Od x6KF(~dt NdVhQh Vhx6KNhVdWHOL RjWx fO>W<@@u gV<@@u ft VQ Vp7KN Jj V>Jh~(N Mth][+]]]M9YrDM9Mw}+} wMA,9MY {M 9KM9Kf{*t"C&0tjs #c&σC0C&u{/tE\IpI hI \IC&{/5\IҡtIt裏}tSK1K0u7C&0tjs H#c&σc&C&t c&SS u uEÃf{*t%C0C&0js "c&σC&u{/tt\IpI hI \IC&u{/t7K&jh:jS5\IҡtI=蝎35\IҡtIt耎}tSK1K0u7C&0tjs %"c&σc&C&t c&SSE OMfI>A<%@@u aT1}u9=8KuPu uWZ19u UU<wN$]𐐐]]]]]]E$s C1f{$u SU<t5fO>G<%@@u gMM4~EODM_ EMMM9HKMcKf{*C,C&~s M1ffs ?ƃtK& {&}f{$t){&}SK.c&f{${&|rC.vK.(ȈC.}u4=Iuu'C&0tjs c&σSf\IpI hI \Iփ;u.8c&{.=cK=cKcKcKcK)Dž}u=cK+=cK}t }1} cKMIEIMf{$w M{/uXC&uRf{,uKcK1Cx0t){&}Fs ƃtC.{.@vC.@c&t2Cx0t)\IpI hI \Iփ;C.vS.(ˆS.=Iu Cx0tu@OCx0u*C&0tjs c&σ{1u SxSk\IpI hI \Iփ;t CBCISICII5\IҡtItc]tEMu\IpI hI \I:5Ih$Ãt,I?IScKcK9cKw5\IҡtItccKcKcKcK9sY}t(9cKv =?Ku?Kh?K=It"cKcK9cKv-J=dcKt =$?KcKcK9cKvt11TKt9B)u,z0t&z0/ =dcKuB,<wB @|9vӉƋRuDžt)htaS蠷CTƃSDhcK1e[^_UWVSu95cKv1}=cKv$ cKȻ1ǃ=cK cKcK cKI‰U1ƋEt@5cKcKcKe[^_psleepUScK=cKw I5cK-cK@cKcK=cKv+cK cKcKEcK$cKcK cK cK=TKucK1TK(C\IpI hI \IӃ=3KtcKcK9cKs3Kj=3Ku"JJ Ph jjh3KcK+cK cKM9sУcK=3KtcK3K\IҡtIt_hcKuU=3Ku!@?9bKt3Kh3K?U塰IJJ9?K ?K9I~hJ?KIU WVSjh jj2hJ=Jt,|J5TK}G)"W,wzWrXur\uJTRP9M u9UwUMˉы}G(u uV R| |,19 u9wʉ R}w uvu]tVK{Dt[uSjS ȐUSIt 8tЃII9r؋]Not enough pager_map VM space for physical buffersUVS>K1ɡJJH9}[JJK3KBt3Krp r53K3KB3KBpBlB!CeA9|BpBlB!CeJJP5hK{Ju hm#e[^USUEIu1UMRQRuu Sҋ]UUB(IR@UUB(Iuuu R@ UUB(Iuuuu R@UUB(Iuuu R@USIt xt@ЃII9r֋]UVS]h5hK蠀s Vme[^US]ShS5hK]UEU t 9Plt @du1UEu Ð} tH<`KioXJC@CDCHC!Ce]wswbufUVS\I hI \I"JjhkpjhJ藹3Ktփ{t SCB C3KSC5\IҡtItxZS؍e[^UVS\I5hI 5\I3Ku \IҡtIt.Z1F{tSCB C3KSC \IҡtItYS؍e[^UVS]\I hI \Iƃ{ltslCl{ptspϋCp{`t SI[C&t S.3KCt3KKH K 3K3KC3K=JtJhJݺ5\IҡtIt Ye[^swUWVS]{4y =HI~GCT=J֍79J} C,]CT=J=HIJCT1ɉ5DICT9F} C,C<~ uC,K$S qF @ C&u.C`t!H8@tx8 8PùF @8{`t SYF C`E7]C` 7PEPЍe[^_UHWVS}u PG0茉ÃEE@EE}EP5CÃu]uȋF<t t4:F@P @ 9K (jRVWJà tV!]؍e[^_Cannot get vnode for swapdevU WVSu }DIE9s { tEM9 HI}tE%9K MAE@1uEEM @1VEPЃ[ulE%Jxtu@Љǃtu>MAEl1uEEM l1VEPиs M K{HI9JsGHIJ5J9sJJ)9vËEJHIЍTRPh?K0dcK 5J9r=3Ku]EP5t3KjjPthit<4]C<j5@IS`XE t SZ]3K1e[^_US=LIu5EjhI]SQEjhISLI]PIUWVS}E w 9v)ʋG9P r߿v 9su M9v:=$?Ku+]jjjjSEPjjjVɃu &9]v!uSV5uE) )1e[^_Uvnpobjvadeadvnode_pager_alloc: no vnode referenceUWVS}u1t jhwjSu sdt#F<tjhwjV۱sduuQu j3ƃ{<ufF<fF<{u hwCe FpVt~lsd VR{<u #t #S6e[^_vnode_pager_dealloc: pager already deallocedvnpdeaUWVSu^lu hxJf~>tR\I hI \If~>t N<@jh%yjVŰf~>u=\IҡtItQFlCd# SWe[^_U@WVSE@lE܃xE 1҉É U9rt9Zp}܋G(E̋M̅} 1~ E 1Eș}̉Ƌ} }E5E܉EỦUE}}EEUU=5E܋HUR Mщ}u 1}M )}t E}}K)ˋU ډ1 EĉUȋ}ȋU9zt|E9Btu9}9zps1E 1 EЉUԋ}GpWt+EU EЉUԋ]ЋE1}tU ș}}tEș}e[^_UWVSU] uzd9_pu 9wt9wt9_pډ 1 9Otu39Wpv.jWpOt Rډ RWžځ1ɅutMډ RW&t4PE)RځURIu_pwtډ W,e[^_UWVSMYt]uM9Ku{({dtAEL5]L5CVЃS-Ex5]x5CVЃue[^_UVS]sdt[Vܫ{<tEx5] x5SEPЃjVl{<tEL5] L5SEPЍe[^US]c&C&t c&SiSH]U4WVS} | Myu ]SR(U؉щM̉]uuuu {uuuu |Eܤ5]]}MM]]MME5][UR҅u}uL} E}t1MU؅} ]} M)e[^_UEH$P9vnsrdU@WVSUERlU؃zu Pu؋VR(UE5uE}}EEE5NUR҃u EEuЋu V }}Љ}RV0|jV1 UĉMȋu1UMQRuE~C$PCX~@?S RSpSltf{ptSpfUUUԉS@}{TSuLuЉs4s0E7]S`7JUR҃\I=hI =\IUC%ujh~jS衩C%tu5\IMыtItJC%tES}ubuЋUUЁRu .uЋ]]ЉځRu u]SI҃Eܸ1u9EAuM} w g&}u1e[^_UDWVS]} W1 9Ktu9Spw "EW1 9Kt|u9SpsW sp)։uWEE؋uu܍u؉uEW1 UMEEuuE@?RKlE2MȍuuEUԡ2IUR҉Ãu2M+Mu #t)RURI҃uw G1g&1te[^_U WVS]}uC=tXClE7EU U UuEE 7@EEPUЃ-u VWu Se[^_vnode_pager_putpages: unexpected missing page: firstaddr: %d, foff: %ld, vnp_size: %dvnreadvnode_pager_getpages: I/O read error UDWVSEuvluȃ~u }ȋWZ(u} R1 uЉ}E5}ȉ}EuuEEE5OUR҃tC19]~9]t} 4C9]cKcKu} 4u.~OuȋVzLtC19]~9]t} 4C9]cKcKu} 4uu} z0tB0u} z0t.B019]~9]tu 4PC9]1EE19] UR} R1 QRu0ẼuY9]u<}ԋu9~t}9~tu)}9~pv!uVtNpRQuuuhS諉} 4C]]wu܉u}9)]9}Zu} 4zFu}9|:U+U9U}?]]9]~u 4EC9]}}܉}uu]9]}t%]9]~+M} C9]u)u)u} R1 uЉ}ԋ} }uUMԋ}9Ot|u9Wps uvp+uЉuUR<wEeWË{@}uu WC$PCX~@?S RSpSl tf{ptSpfủsTSutE}{4{0cKu5cKE7]S`7JUR҃\I=hI =\IUC%ujhjSeC%tu5\IMыtItgCC%tE}u!U 9Ut+URUURI҃uutSF1ۃ 9]~p} r B1B0b&9]t?}u+4b&B&tb&4x u 4C9]}t h1}te[^_U$WVS]}uC=t_ClE7EU UU U}uEE 7@E܍EPU܋Ѓ-uVWuu Se[^_vnode_pager_putpages: attempt to write meta-data!!! -- 0x%x(%x) vnode_pager_putpages: I/O error %d vnode_pager_putpages: residual I/O %d at %ld ULWVSuvlu19]~}C9]u y}%Q1RqhrW}E uu} R1 u}ƉUM}9Ot|uT9WpsO}u9~t}9~tu}9~pv uFp+E1 }u9}]}C9]19]~u B/b&C9]EE܍}؉}EuuuuEEEE }t$@?REH2}}ȍuủMЉUԡH2OUR҃cK}=cKtPh}tu ruh׉ 19]~@} J/9]~ u} z/uB&tb&4C9]ue[^_US]t5{(u&ClEL5E L5PEPЋCl [Pu1]apmUWVSMu }EU] \I`I5hIlI=tIxIhLcKh\IhTcKhhIh\cKhtIe[^_UWVSu} 1ۋEEMEME=ItC1h*u=IuIEP IEEEMEMv5pJЍe[^_UEES='[Fw>6.3t"Su e[^U=Iu!E'jhIEPII1ff I5II1f I5I=IffIIII IffBZfB@zffBZfB@zffBZfBzffBZfBzIIf If IfIf5If5If=IUl$VWS}uU M]EU?K]Er1t]MU u}[_^]Iwcdmatcdscdmcdcdtrying %s%d as rootdev (0x%x) UWVS KJM11=I MI9KI ‰KJKJJtf;ta=ItRWIhɟ65@?h`j5KJЃu%{t5@?h`j5KJC1*FK)=It hwi=8>K=It hF8>K8KPIt =KJt\=8>KuW=It h8>K8KzIt =KJt=8>Ku hϢkjU5KJt KJUS]uKJ19K~+K1]sdwtfdwfdwdchanging root device to %s%s UWVSI $I%=$I]$I]=$IGv1}}uM%5%IE% E KJU ʉKJ%9t)]]SVWu]4(IuPhΤe[^_US]KJESjEPu苕u{tu]@8T,dev_tdumpdevbus_dma_tag_create: page reallocation not implementedUWVS]1U4jjj40ƃ u UVUV UVUVU VU$VU(V U,V$U0V(F,F0tHC 9F sF F C9FvFFC9FvFF~uCFCF>tC,I 9F sMU0tEU9@Is hP hJ 9E$v]$ +JSV9} N(t jV@3U42e[^_USEt%x0tH,u jP3؅u1]bus_dmamap_create: page reallocation not implementedUWVSu]1I 9F jjj(. u j(3IЃ@F I)=w~(}~0~Y9J}QF 9@Is h fV +J9~PViǀ~(| uN( 1 JuF0e[^_US]E t8t jP1K01]USU] MEJzw!I 9B rȃPjr-rjr jȃPjr螫;t1 ]bus_dmamem_free: Invalid map freed U}t h֩eju 0bus_dmamap_load: Too many segs! buf_len = 0x%x U$WVSUR )ĉeEI M9A U zMMUUU9slE E% Ƌ]19s s 9sr{tVsCЃtuuхtM AEU9UrM y\I\Iu u[t\MU JMJMJMJMJ B$J$J\IӉ]ܡtIt$8\IҡtItUUMMEAE E% ƿ)9}s}U ztZ]E9s s"9sr{tVsCЃtE}u u̓}tWuu uƃMyt#9uu UzEEUM9Q rM1y}u)}-}tuhEuuuuU1e[^_UVSu] @u[RVue[^USE Ut?t6r8u3s 3s迸[ us s3裸[ u]UWVSu 1=JJJJJJJJJJjjj)à jSIjhMq jjjhU$u jS,s % ЉC\I\ICJJJJ\IҡtItGN;e[^_UM Q+Q J9~)JJA A+A add_bounce_page: map doesn't need any pagesadd_bounce_page: free page list is emptyUWVSu }~u hƮX`N~ u hƮE`N \I\I‹Ju h`J@Ju JJ JJ\IҡtIt{MK CFKNCe[^_UVSU BB \I\IơJBu J JJJ JJtWSs_uGJ@$Ju JJC$J$J7K tI5\IҡtIte[^USMJ@$Ju JJ\IҡtItjs sssSsT\I\I‹Ju\IҡtIt@]consoleؕJl;dT,dev_tconsdevHUVS1PI=PIt*SЃf{~t fCf9F}ރ ;u١I% =%ܕJu ԕJ VFЉ5ԕJe[^U=ԕJtK=ܕJuB ԕJAkKBJB<JqBУJ@XؕJU=ԕJtGԕJ@kKJBJJJJؕJUWVS}5ܕJWjhܕJu Ã=ԕJtE=ܕJu8=Jt"5@?5J5J5ؕJÃtO>u==ܕJt4=Jt"5@?5J5J5ؕJÃu t5ܕJ؍e[^_IconsmuteUWVS}1Ƀ=ԕJu1cԕJp8Pu=ܕJuuuu SJЉu+9u J9uUJU JJȍe[^_US]=ԕJteԕJH9u0J=Jt@=Jt@J@h@l+8tJ=Ju ˃=Ju1uuu SJЋ]U=ԕJt =ܕJt1ÐԕJBkKuu r@UM =ԕJt =ܕJt A1Ð=It IPX ԕJP%kKuQR@ US] M=ԕJt4=ܕJu+btu(=ItjA0Gu0I1"ԕJBkKQuuSr@Ћ]U=ԕJt =ܕJtËԕJBkKuu r@ U=ԕJt =ܕJtáԕJp@Ѓ u U=ԕJt =ܕJtáԕJp@ US]=ԕJt2=ܕJu)t% uԕJj p@ЃԕJSp@Ћ]U=Iu!EjhIEPIIjjjD$ tj jjjD$ tjjjjj~jjvjjnjjfj`j\jXj Tj PjjJjjBjj`؎\IPjlcK \IcIj`؎lcK\I \IHSI`؎D$,D$8D$,pcK\IKjIJ`؎D$,pcK\IjIPQR50KoK tcK?K\I#tIuZYXϐ=Is\I\IIYZD$`QL$(L$ D$,P|PQR50KoK tcK?K\I#tIuZYXϐ=Is\I\IIYZD$`QL$(L$ D$,PPQR50KoK tcK?K\I#tIuZYXϐ=Is\I\IIYZD$`QL$(L$ D$,P\PQR50KoK tcK?K\I#tIuZYXϐ=Is\I\IIYZD$`QL$(L$ D$,PPQR50KoK tcK?K\I#tIuZYXϐ=Is\I\IIYZD$`QL$(L$ D$,P<PQR50KoK tcK?K\I#tIuZYXϐ=Is\I\IIYZD$`QL$(L$ D$,PPQR50KoK tcK?K\I#tIuZYXϐ=Is\I\IIYZD$`QL$(L$ D$,PPQR50KoK tcK?K\I#tIuZYXϐ=Is\I\IIYZD$`QL$(L$ D$,P PQR50KoK tcK?K\I#tIuZYXϐ=Is\I\IIYZD$`QL$(L$ D$,P PQR50KoK tcK?K\I#tIuZYXϐ=Is\I\IIYZD$`QL$(L$ D$,Ph PQR50KoK tcK?K\I#tIuZYXϐ=Is\I\IIYZD$`QL$(L$ D$,P PQR50KoK tcK?K\I#tIuZYXϐ=Is\I\IIYZD$`QL$(L$ D$,PH PQR50KoK tcK?K\I#tIuZYXϐ=Is\I\IIYZD$`QL$(L$ D$,P PQR50KoK tcK?K\I#tIuZYXϐ=Is\I\IIYZD$`QL$(L$ D$,P( PQR50KoK tcK?K\I#tIuZYXϐ=Is\I\IIYZD$`QL$(L$ D$,P PQR50KoK tcK?K\I#tIuZYXϐ=Is\I\IIYZD$`QL$(L$ D$,P jj`؎`I `I! \IuKItcK?K\IP50K 6K\IoK`I$`I! tIaϐjj`؎`I `I! \IuKItcK?K\IP50K 6K\IoK`I$`I! tIaϐjj`؎`I `I! \IuKItcK?K\IP50K 6K\IoK`I$`I!k tIaϐjj`؎`I `I! \IuKItcK?K\IP50K 6K\IoK`I$`I! tIaϐjj`؎`I `I! \IuKItcK?K\IP50K 6K\IoK`I$`I!K tIaϐjj`؎`I `I! \I uKItcK?K\IP50K 6K\IoK`I$߈`I! tI aϐjj`؎`I @`I! \I@uKItcK?K\IP50K 6K\IoK`I$`I!+ tI@aϐjj`؎`I `I! \IuKItcK?K\IP50K 6K\IoK`I$`I! tIaϐjj`؎aI aI桰 \IuHItcK?K\IP50K 6K\IoKaI$aI uIaϐjj`؎aI aI桰 \IuHItcK?K\IP50K 6K\IoKaI$aIx uIaϐjj`؎aI aI桰 \IuHItcK?K\IP50K 6K\IoKaI$aI uIaϐjj`؎aI aI桰 \IuHItcK?K\IP50K 6K\IoKaI$aIX uIaϐjj`؎aI aI桰 \IuHItcK?K\IP50K 6K\IoKaI$aI uIaϐjj`؎aI aI桰 \I uHItcK?K\IP50K 6K\IoKaI$߈aI8 uI aϐjj`؎aI @aI桰 \I@uHItcK?K\IP50K 6K\IoKaI$aI uI@aϐjj`؎aI aI桰 \IĀuHItcK?K\IP50K 6K\IoKaI$aI uIaϐX# tIu/\I Iaϐ`D$,D$(  tIsIts \I␐P I\IX느D$4t"D$(I)I\ tI)W\I# tIuÐ tIsItڃs$ItP I\IX\IXjPXjPY!Ð"Ð#Ð$Ð%Ð&Ð'Ð)Ð*Ð+Ð,Ð-Ð.Ð/ÐxItxIs|IxIuÐÐÐDIn ;lAmachinePJ ;lmodel|Pentium IICyrix 486S/DXNexGen 586Cyrix 6x86MXBlue LightningCyrix 6x86Cyrix 5x86Pentium ProCyrix 486Pentiumi486DXi486SXi386DXi386SXIntel 80286UVSEu ^NV e[^CPU: GenuineIntelOverdrive Dual i486 A-step/P5/P54C/P54T Overdrive/P55C/P55C (quarter-micron)Pentium Pro A-stepPentium II (quarter-micron)Unknown 80686unknownDXSXDX2SLSX2DX2 Write-Back EnhancedDX4AuthenticAMDAMD Standard Am486DXAm486DX2/4 Write-ThroughEnhanced Am486DX4 Write-BackEnhanced Am486DX4 Write-ThroughAm5x86 Write-ThroughAm5x86 Write-BackK5 model 0K5 model 1K5 PR166 (model 2)K5 PR200 (model 3)K6UnknownCyrixInsteadCyrix MediaGX6x86GXm6x86MX486SLC486DLC486SLC2486DLC2486SRx486DRx486SRx2486DRx2486SRu486DRu486SRu2486DRu2486S486S2486Se486S2e486DX486DX2486DX45x86Overdrive CPUTexas Instruments 486SXL486SLC/DLCIBMBlue Lightning CPU%s (286386486%d.%02d-MHz 586686-class CPU) Origin = "%s" Id = 0x%lx Stepping=%ldFPUVMEDEPSETSCMSRPAEMCE CX8 APIC oldMTRR SEP MTRRPGEMCACMOVMMX Features=0x%b DIR=0x%lx Revision=%ld CPU cache: write-through mode UWVS0E싐PI@Ih_h0]LIhJ=80e 1t FO)ȃ0%.J 00t t4HrJvJfzfJ|J}JffJ 0t2wtG3h+hhJM6 00tMwt6wt(h t/_pt?w @t0Pt4Dh.h&hhhhhhJ5I 0tw tW0tPt.HhNhFhhJi504hhJM50hhhJ)5 00t~w(t\wtF tP Ptdw@tNptXt\h h h{hohchWhKh6?0: GJKJ 0w>pwth0thththtxwt^t^0thw tVl`t\bhL^h]VhvNhFhv>h6h.h&hhhhhhJ!3uVh@}Vh%EJEJEJEJVhE JEJEJEJVhEJE JE$JE(J0! N.Jf2fJ4J 0 t,w @tL@t$t0:h5h=@IhBhF 4K0w%(w tF rPw@WC 4K .$𐐐 ,8DP\hthMhTh[hchkhrhyhhhhwhk 4KR$𐐐 $0hhhhhhh4Kw h=hh=4K%=0u@IhBgh5^hFV 4Kt$w t 9t+1hhJA/JHhhhJ/+0 uJfhJh!j=@I@I$\p|h&h*h.ILd5OKƇ'1ǻd1W@B1Qh2Ǒh?B5OKƇ'1ǻd1W@B1Qh2胑hCy hjhG]=0th0hTB=0t50hd&0e t90: t#0! 0t@0Phq=0h5 0h&蜐 0! uj54Kh7n4K% PhqV4K%PhC>=0 u4K%=w hR=0u =0t hs=It0: ue[^_CPU class not configuredU=@Iu h2Ð6|J $6|Jĉ X$U|Jjjjhjjjjh$j 2|J= u1á|J=ĉ tÐUVS11ɜ^"#4E"E#"#"#8t"#"#4E"E#"#"#8t"#t+"#҉4K"#҉U4Kt 4K 4KVe[^UWV0! &=0u%u 00 0%=u0 4K tBw t t+]@tKw 0t5NuD00 x4Kw0 _0P0 "#°"#"#ɀ"#"#EPjE0E 0e^_U0PI@I, fully associative , %d-way associative UE=uh蕌ÐPh腌Data TLB: %d entriesInstruction TLB: %d entriesL1 data cache: %d kbytes, %d bytes/line, %d lines/tagL1 instruction cache: %d kbytesUS]Sh{}Sh`EPh%蹋EPEPh:螋EP EPhV耋EPhoqEPhbEPEPhG$EPho5EPh&EPp]cksum: out of data UWVS11E}} Uz Jufff Ar NM Ur 9u }u )u tIӉvt~ANEt~ Ãt~ t~Yx(YYYY A YYY yۃ!~ YYYY YYY ~YYY ~Yu}tpӉvxÃy}t1Eufff 1 u׋UU-} t huӉv%e[^_UVS[贊Ɓ`uV蛊000fƁuVMSe[^UXE"#€""#EPUXE"#°"#EPUS[`UR̉ "#"#€"#"#°"#"#ذ"# "#ɀ "#"#"#"#€"#Q P4"#€"#S]US[`UR "#€"#"#€"#"#€"#"#°"#"#"#"#"#€"#4K%=vn%_% PG"#€"#S]US[%`UR  "#€"#"#€"#"#€"#"#°"#"#"#"#"#€"#蓇URz"#€"#S]UWVS2Ɖ׀E}UUUUEU0e[^_GenuineIntelUWV0$𐐐0UME=5-0 u0%=ue^_IUuI Pju{R~D|Iphysmem`UuI+cK Pju-R|usermemreal memory = %d (%dK bytes) Physical memory chunk(s): 0x%08lx - 0x%08lx, %d bytes (%d pages) startup: no room for tablesstartup: table size inconsistencyavail memory = %d (%dK bytes) UWVS1ItIh KJ (I PRh辂=Itah訂1ۃ=UKtIUK+UKy PRUKHP4UKhaKB>KJJJPJ=I~0=Iu I@%K>K L II1ې cKR[IR zC ~II1ېJR[IRyC~1ېjjjhScC~jjjhjEjjjhj3(jjjh0jjjjh<j (jjjhPjjjjh\j(jjjhdjjjjhlj(j(jjjjjjjhtj (jjjh|j jjjhj s(jjjhj ^jjjhj L(jjjhj7jjjhj%(jjjhjjjjhطj(jjjhjjjjhph(CyfEW cKfU cKfUURwfExdKfUxdKfUURw4K4KRw4K?Kjjjhdj? jjjhj *j" j j ƃ j փvShru=X0=\0v5\0h0Au\0=X0tv9\0tRS5\0hfu\0 с w# σ< v95`0tV5`0ht w IE?~EjhJhHJ t xtP}IEju =1Ƀ~<UK =UKKIhtA3K1ۋ|Iǃ: "ڋI2ItCIUUUUIUUUUtIItIItI2uU9UKu'UK}u5KB>KBJJJJJJȖJJJJJJ|0JJJJJؖJJܖJJDIBdhj0s fJf J% J J% J J J` J fJJ JJ J?KpVK'>KƂ  >K|0Qe[^_üIIntel Pentium F00F detected, installing workaround kmem_alloc returned 0kmem_alloc returned non-page-aligned memoryvm_map_protect failedUS=IhofEh 5Ià u hDt hZTKhPhxdKhTKfETKfEEP2qjjPS5I $t h6]UEM L01UEL81UDWVSM9] roC@9E wg}ЉE )؋ML(E3B8*u Et HuuM 41/} pr"} wMMu 1e[^_UUM -PQPQP Q PQPQPQP Q P$Q$P0Q0P4Q4P8Q8P@)x>@uCBCBLEBfCfBCB@?CEfB $_CEfB@ E1fJEƋ:u2BƉ2BB@?@p tO t dt#Z:rE:8fz|2}t,:B:fz}}t2B2B:uzt z| fJ:B:B}fBe[^_U SU]BCBC;u{ufC(EPu $f}t fMf)K fMfK]UWVS]U fC%>@)EBfsffr}@?HtCB0?CE_ CE E1ɋENj2}:Blj:BB@?@p tO t dt#Z2zE28fzu2}t,2B2fzt}t:B:Be[^_USMU AB:ut>@fyt>fBfBz|fJBB}]Another Math emulator already present U=?Kt h3.6>?KImemUEu@?`81UUEt uAÍPB0ou'=Q~ Ð@?H801mmrwUWVS1EM y:] 3~uKh/7U $t/𐐐/L000p1,2,2,2,2,2,2,21M AjyuRP5I5<1K!] C%)щM)ǃU9vUVu9vu VIRNjIR5I5<1Kvu] s}{vOwGV5<1Ktt09r1ҋM yuRu] s u u uM q:] {1] {}ujjJhGE VvURuyFu}tjJu誩띋U9vu Ru] {tT}ujjJhץE VvURuQIU9vu Ru[] {u NM_=Ju$jjJhuJhPI҃Vvu R5Jǃ 5Pu9])^M1ۉM]] ECEC M)K] {~}t jJue[^_UE Utu  ÐUVSu ]UE} f;v PB0S rtyrtr@fHIf HIoKTKoKq0KJ0KZfHIt3ff!HITKoKJ0KfHIf 1e[^USU] Mдt QSR"WQSRJ]U1ɋUE 9DIu дwAU1ɋUE 9DIu д uAU=LIu!EjhIEPz\LIPI OKurC@@ŋh>KtIu; UKv t))JRȍTKTK=@Br-@BBL$AÐ1+h?K%KUSM] t"<tQ‰ 1]UVSE3KjP말EH&u\IҡtIt֋]K u uE DJ  K t=@Iu  " u>Ex0t0jjEPu.tMq0hW>nE@0E`&@&t `&PEH&0GuFe[^_pmuwptUWVS}] C&tV\IpI hI \IC&tK&jhe@jSC&u5\IҡtIt蘊f{,SO%9u!C =@Iu  "89_ uG fK*uC&t c&SS cK1e[^_US]U Ew3u { tC 9PtRsC fH,u PS1]UWVSu=J~ J𡈧JpJh5I8hjFhvXÃtfC*cKc&C0>DJ   C t=@Iu  "?C&@uh6IЃ HJPPhV#[ FFF FNN e[^_pmaprlpmap_release: freeing held page table pageUWVS}] 7\IpI hI \IUC&t;K&jhBjSM \IUҡtIt1C&t c&SCOf{,t hB{uR HJPPIdž =@Iu  ": tG @9CuG S M \IUҡtIt e[^_ptewaiUWVS}Eu wƃu-u wƃtF&@uEf&F0&F&u~/tN&jhYDjVqf~$t6\IpI hI \IV\IӡtItWf~*ucKfF*fF,G^ ـU w }t<%9uE hPISF0N& e[^_US]U <t#{ tC 9Pt RsC f@, RS]UWVS}OM1MA t&XxuPWt։؅u܅tVWtu=JJpJJh75I&e[^_pmap_growkernel: no memory to grow kernelUWVSu\I\Iǃ=UKuIUKHJ=t,UK@%UKHJUK<uԁ@95UKUK<HJ=LJuY  jP58KLJ u h|F 5LJ5LJRLJp  UKLJ@ LJ TKt+UKy tA dIu<1KUKUK@%UK95UK=\IҡtIte[^_US]tKuSbj"S肒]UEt@U=PJHv =tIuZ PJ tIyt QA B A xIQ Aget_pv_entry: cannot get a pv_entry_tUWVS=XJjI5TJ+p( P58Kà Sc&5TJuDJ   C t=@Iu  "u>TJTJ XJ19}@PJtIBttIrp r5xItIB tIA9|ƒ=tIu hHe[^_UJJE@ҍ XJ R5I۟TJUWVS}u \IpI hI \IE9G~ ^t09;uM9Kt#[u_tM9Kt[uEsuWE {tSC B C F S C~uF`&σ{t SCBCG CSPJtICttIKH K xItIC tIM \IUҡtItEe[^_UWVSu]=\IpI hI \I‹M J2MJBF BF JN +@J dJBC B C S =\IסtIt:e[^_UVS]E utKt>Kt>+@J  dJ@t95Jw95JwA@1VQS jVSe[^UVSu] <t7V6‰ 8tSPVL=@Iu  ";e[^UWVS] u}My9u SQqEuE 9scƁMytI <t39v+'M<t EPPu~ uC9u։9r}t "؍e[^_UWVSEE \IpI hI \IM+@J 5dJs3.‹H tH@tC9Jw9JwF@1}u)=@?t@?@ d9t 9<1KuE{tSCB CB SC{tSC B C F S Css3{ PJtICttI{x {=xItIC tI^F`&σ}t "؋}=\IUҡtIt|e[^_U WVSu ]E}uSVuvEuUE ]9Ɓ }<tg9us^uY}tL@t7 9Jw9Jw" +,I@$I@1㽋}EA9u9Mm}t "؍e[^_pmap_enter: invalid page directory, pdir=%p, va=0x%lx pmap_enter: pte vanished, va: 0x%xUWVS}u ]MMEw VWEt&<tW‰ EE}uVhwP0M M%t{9uw}tuG}u MtOMt:@t295Jw95Jw" +,I@$I@1}t}MfI,ttVuW: t VhP|=pIt=1=UKt29UKv 9UKve[^_UWVS}]} wWu t9st1<t0 tG 9puVwÉ_ tfC,VW1Ã1ۋE tt fK,uSW 1uSu W+GU؍e[^_UWVS} }My(v}t`~ yD`aEM9A,sy,+}EMA,9}Y ( s9uwr+u9sk{0ub{/u\C& uVC$S()=u SK&us E PujEK& c&C&t c&SM[}l19EPuÃth{0ub{/u\C& uVC$S()=u S8K&us E PuEK& c&C&t c&SF9xe[^_UWVS}u9~=@?@?R d9Uu u}9wv wu} 9}vEEE} u ttPfZ%T$߿fD$f1 I$Ð Iǁ$kT$=@Iu> ttPZT$߿D$1 I$VW Iǁ$mt$ |$T$)v)9s‰D$BJt uJ1s? Iǁ$L$)ыT$t _^VWt$ |$T$BJt uJ1?L$)ыT$t _^ÐWV|$ t$T$1u уt@^_ÐD$؎Ћ$PD$ːD$T$Ð\$ÐSL$YAf% ËL$ Y[ÐD$"  ËD$"ËD$`hp x$P1ÐD$`hp xP$1@ËD$D$ftMfuI|SKJHBIbKJHBI¨7KJHBsetrunqueueD$ffu=Ir hp躟RPQHZ|SK; t IIr hp}RPQHZbK; t IIr hp6RPQHZ7K; t Iremrqremrq.rtremrq.id10 |0"\ItItZI=Iu}=I=II5hu @?tC$A Y4a8iTK09u=It}G()}  It{ }}MME}G,tEM9 It^}9s%߿wVSb^uJ1MtPEPVuWjEPVuVƒu1c} uB=Iu)=It I$t$}G01*uX}My, u e[^_userkernel Fatal trap %d: %s while in %s mode fault virtual address = 0x%x protection violationpage not presentwritereadsupervisorfault code = %s %s, %s instruction pointer = 0x%x:0x%x stack pointer = 0x%x:0x%x frame pointer = 0x%x:0x%x code segment = base 0x%x, limit 0x%x, type 0x%x = DPL %d, pres %d, def32 %d, gran %d processor eflags = trace trap, interrupt enabled, nested task, resume, vm86, IOPL = %d current process = %lu (%s) Idle interrupt mask = net tty bio cam none unknown/reserved trapUWVSu^,N(M ׍EPF4% cKPu}.F4yzutzRM4IQhz} uKWhzztzPztzPzttzPh{Pv0F4Ph{;F4 u ^@F<FDJDphJ蝄DJD t@HJT JDJDJD JD8 J(J,J34J0JhJJu"|4txJ|JPhJG<)EUt7tF<3 u&9]}EPVu uE Ot1ۃC<3uɅtuVu ue[^_US]jjPjjHSjjPjjv]US]jjPjj jSjj]US]jjPjjjSjjp]UUM 1:t@<u9} @9| (Collapsed) !nCONF!i !iCONF!n %s%d %d 0x%x !i %s%s%s%s%s [!bEnter!n] Collapse device list [!bC!n] Collapse all lists [!bEnter!n] Expand device list [!bX!n] Expand all lists WARNING: This list entry corrupted!UWVS} uuƅ\ j9V]Px Cj:V\Sx u&tuhϏSwEj<\PEtL}t#ݏEEffE!EEffEEu(v|FXPhHS(jS%HLP~l~0t,u#vlh8SjSk8 <~h~/t+u"vhh (SjS(,(P8PHP\P}tPh]S#jPSuj",}tt jt7au`h.tOu@h(1ht#uhlhuje[^_UWVS}u19] ~=t jjVu;PVƃjjP;PjC9] če[^_s!i%d conflict%s-US=@Jt<=@J~P5@Jh]SjSjj- jhJjj-5Jjjj$]U5Jjjj !bActive!n-!bDrivers!bDev!n---!bIRQ!n--!bPort!bInactive!n-!bDrivers!bDev [!bTAB!n] Change fields [!bQ!n] Save and Exit [!b?!n] HelpUjhJjjjhjj jhjj?jhJj j jhj jvjhؔj j?f jhJjjSjhJjjC hޔ)Uu=kYt6Ct7 t$搐Ntݐnt ctΐytŐ1øÐPort address : 0x%x PCI devices are displayed for informational purposes only, and cannot be disabled or configured here.IRQ number : %dFlags : 0x%xMemory address : 0x%xMemory size : 0x%xDRQ number : %dConflict allowedUPVSujjPjj8 ~h~"vhhC]SjSjj~hu hW~l~ vlh]SFjSjjFhі]S#jSjj#~t~vthSjSjj~x~ vxh]SjSjj~p~ vph]SjSjjtjh%jj6e[^!i0x%x%d!i%s !iThis value cannot be edited (Press ESC)U(WVSE 01EE}tjh{u EPMMؐ}tpV}tR]SShujuu uM(juu u0ЍXu EPƒ}t) }t }tF|u3EW[tOuE>u1E;EB$ACDUQ= (  LPqQ0OT`o9uO9uFE 0V}t Rujuu U}tR 9u9uE 0V}t Rujuu U}tR1Z}$t"hu 0l}t s `9uO9uFE 0V}t Rujuu U}tR 9u9uE 0V}t Rujuu U}tRW9u9uE 0V}t Rukjuu U}tR]9uK9u|FE 0V}t Rujuu U}tR M 1E}$t"h$+u s9]}tEBЃ w t말Bw t뒐BptwBЃ Tt0[e[^_!bParameters!n-!bfor!n-!bdevice!n-!b%s IO Port address (Hexadecimal, 0x1-0xffff) Interrupt number (Decimal, 1-15) Device-specific flag values. Device memory start address (Hexadecimal, 0x1-0xfffff) Device memory size (Hexadecimal, 0x1-0x10000) Device DMA request number (Decimal, 1-7)UVSujhjjFXPh]SjSjj,jjPjjS~h~Vh FPPFhPhjjjjjQ$t% 뽐tu~t릐~l~rhFPPFlPjjjjjj$w$П  ~x,딃~h4h7>jPhhjjjj$w$H𐐐   l ~l$~h느~t ~x~pi~t~zhVFPPFtPhjjjjj-$w$$ ~h0딃~x~p낐~x~lh FP PFxPhjjjjj-e$w$d$$$~l 딃~p~~phFP@PFpPjjjjjj+$ft0뼐t u!~x4~tdže[^confirm your choice.kernel device probing and boot, press [!bQ!n] -- you will be asked toWhen all settings seem correct, and you wish to proceed with the- - Saving changes -finished, use [!bQ!n] to return to the list.bottom of the screen. Use [!bTAB!n] to change fields, and when you are[!bENTER!n]: it is now possible to edit the settings the settings at thechannel, I/O addresses). To do this, select the driver and presspresent in your system, you can set their parameters (Interrupt, DMAOnce the list of Active drivers only contains entries for the devicesbetween the drivers, as indicated at the top.to the Inactive list, until there are no remaining parameter conflictsAny drivers for devices not installed in your system should be moved- - Altering the list/parameters -its place in the Active list.necessary, and press [!bENTER!n] -- the device will be moved back toone, select it in the Inactive list, using [!bTAB!n] to change lists ifyou need to move a driver from the Inactive list back to the ActiveUse the [!bTAB!n] key to toggle between the Active and Inactive list; if - move it to the Inactive list using [!bDEL!n] - change its parameters using [!bENTER!n]expanded, you can select each driver in the same manner and either:drivers for that category by pressing [!bENTER!n]. Once the category iscategory name, you may alternatively expand or collapse the list ofan item (the selected item will be highlighted). If the item is aTo move in the current list, use the UP and DOWN cursor keys to select- - Moving around -driver are shown at the bottom of the screen.available in each category. The parameters for the currently selectedby default collapsed and can be expanded to show all the driversscrolling lists: Active Drivers, and Inactive Drivers. Each list isThe screen displays a list of available drivers, divided into two- - Layout -VISUAL MODE: ------------------------------------------- Using the UserConfig kernel settings editorMOREEND!i --%s-- [U]p [D]own [Q]uit !nUTWVS1UUt=F9}-~<(Jtj4(J)PjC9|1 <(JtPhuUjujjSU{$ԪDHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH,HDHHHHHHHHHHHH\HHH,HHHHHHHHHHHH,HDHHHHHHHHHHHH\HHH,1<(Je[^_UWVS]u1E}t963iPuj63UPuEPE t=Lt =T1BtvAt땐=Lt =Tt^넃;t+uj63PuEP [6ABPuu uE/63PU uj63xPuEP>E H9}6Puu uOe *  ~t{ g?CMcXtx Qt]0[t;&xt[ qt@t?=Wt8u 11UNF > 6uj63PuEP e[^_ [!bEnter!n] Edit device parameters [!bDEL!n] Disable device [!bTAB!n] Change fields [!bQ!n] Save device parameters [!bEnter!n] Enable device Save these parameters before exiting? ([!bY!n]es/[!bN!n]o/[!bC!n]ancel) UWVSEE1hxJh|JxJ𣔧J|J𣘧J5xJ@J th hJEPjjjǃG p$Ȱ𐐐@.....0xJ𣔧JEPxJ𣔧JEP-5JuÃCP9Ju'tJJuMǃ5|JS5xJ_@Jǃ/ L5Ju Ã/uH{htlhLdShޔTjhJjj5xJ@J -t tǃ ǃhhJEPjjj ǃG $𐐐0.,..... O@|J𣘧JEP-|J𣘧JEP=T5JuÃ9Ju(tJJuM5xJS5xJu@JǃJE utǃ1-t tǃ ǃT1t E;hүt" t9j5xJj5|J5xJ5|Je[^_vqrespoliriosiomintrohfexendrdi? FreeBSD Kernel Configuration Utility - Version 1.1 Type "help" for help or "visual" to go to the visual configuration interface (requires MGA/VGA display or serial terminal capable of displaying ANSI graphics). config> Invalid command or syntax. Type `?' for help. UPSh菶]hε~jPS }tS+uh׵Vɐp@Ѓt]UWVS]@J=@JtQ0HPSR!S u&; t C;t; uvSu >u1e[^_Extra arg(s): %s Invalid device number No such device: %s%d Invalid numeric argument Invalid address argument UHWVS]u MM; t; uC󐐐t>u;Sh޶>u11< vM CB;t ; t; uD*< w!j EPSǃ 9]uhr]Wu4 FumWuh舴o>ujEPSKF 9]u8h">u7jEPS'F 9]uh76]>^1e[^_UDJh>J t1ÐhDJ uhFJ uhHJ t1UEHP Qp1Warning: Remapping IRQ 2 to IRQ 9 - see config(8) An IRQ > 15 would be invalid. US]K tt&v!hF9h SwfB fB sF1]UMA Q=w fB fBq1UEHP Qp1UEHP Qp1UEHP Q p1UUB@4r1UUB@4r1UIt=Jt1ÐCommand Description ------- ----------- ls List currently configured devices port Set device port (i/o address) irq Set device irq drq Set device drq iomem Set device maddr (memory address) iosize Set device memory size flags Set device flags enable Enable device disable Disable device (will not be probed) quit Exit this configuration utility reset Reset CPU visual Go to fullscreen mode. help This message Commands may be abbreviated to a unique prefix Uh臯hƺ}hݺshih:_haUhKh»A h4h*h; hrh hhμh1UWju u0ҋ} щMQ)P} Start kernel configuration in CLI mode Start kernel configuration in full-screen visual mode Skip kernel configuration and continue with installation !bKernel Configuration Menu!n!nHere you have the chance to go into kernel configuration mode, makingany changes which may be necessary to properly adjust the kernel tomatch your hardware configuration.If you are installing FreeBSD for the first time, select Visual Mode(press Down-Arrow then ENTER).If you need to do more specialized kernel configuration and are anexperienced FreeBSD user, select CLI mode.If you are !icertain!n that you do not need to configure your kernelthen simply press ENTER or Q now.Type "help" for help or "quit" to exit.UXWVS1hj1EUU1ېE9uffEE4JuG9uhƾuGjuCPj C~}jhɾj jjhj jt jhSj jajhvjjQ jhjj>jhڿjj. jhjjjhHjj jhjjEjj5t=Lt=TuJ1Bt3 At=Lt =TtNF}tC tl tYd t[ZQtC Ot$G[tqt*5Lu ;19u)tjhjjjj1e[^_ quit Device port irq drq iomem iosize unit flags enabled YesNo%s%s UPVS];nu=DJ~BhEͨ脿quhM趨8hS袨DJ=DJuhU肨DJjPVIsCphV賩sh EP袩$C t@HPhEP胩CPhEPpsh EP_$shEPKshEP:s h EP)${4tPhEP1 |(uD( @A~Vh苧DJ@;1e[^UVSu] SVh>JI u8SVhDJ6 u%SVhFJ# uSVhHJu1e[^UWVS]} u;t$WCpCu 9su @;u1e[^_ %cUWVS}1kÃtuth蕦ONאtutƐhnONuShUF9u t t tu ؈Gze[^_UWVS}]EUC t t-u E}+uUCtu}0u;xt;XuSUu }0u1UE11EЃ v&Ew EEw=EE9}}/|9Mr uU9U~ MUC똅}HJ" }tك} tEtCU ȍe[^_sddisksttapedeviceUWVEƿu #ƿt e^_USE] t1tPhcu hN ShA]scsi: (can't be edited): controller scbus at %s at scbus target lun flags 0x%x UWVShlУ1=JJtYJJJJh#|th蓣tt hSyF|u1=JJJJvJJoPh4tJJtht h$tht|tthhSӢFv<ŐJJje[^_UDJ1UWVS}Jt$9us 1 page yet!!!bncwaiUWVS}t hD\I hI \IE19`J~{}׉}dJ 1 page yet!!!vm_bounce_page_free: invalid bounce bufferUVS]u t hAB19I~TJ9t B9I9Iu hwBӃdJEEM! 5hJ=PJtPJhdJ_e[^bmwaitUWVS\I hI \IE=\JLJ\J1\19pJv$ӉlJPl9pJwݍpJlJ5I" GLJ9|LJ\J=XJtXJ5I_}tu5IÃuP} u"M \IUҡtIt1HXJjh@j5I[M \IUҡtIt؍e[^_UWVS}=IujjJ P:j PW1ۃ9}jP Pj C9|e[^_UWVS}u =Iu jJW G19}2  % jR0C9|j PWe[^_vm_bounce_alloc: called recursively??? vm_bounce_alloc: b_bufsize(0x%lx) < b_bcount(0x%lx) !! vm_bounce_allocvm_bounce_alloc: Unmapped pageNot enough bounce buffers!!!U WVSE=IMy$}h8qMA09A4~q4Phh>MA@A0y@%)Em 19]~B % =vEu h>C9]}M9 I} h!e>jE PE1ۃ9]~y % =v6jKP }Wzh MA&u$hWVb P EPMhC9]MI$A@% EA@e[^_UWVSMy$MMY@19y0~~%)މ %EE %9Et5>M9A0sQ0)MA&t RuS腓 juuM9y0MY@A@A0%j)PSMA@ǁa$e[^_Cannot allocate bounce resource arrayCannot allocate physical memory arraybounce memory out of rangebounce memory not residentUVSLJ=II`JjjJPdJ u h;jjJ5IPTJ u h ;19`J~dJC9`J19I~x  Vb +,I[$IfH,G@G09rGLG@e[^_Keyboard reset did not work, attempting CPU shutdown Udh *h辔h@Bp*hhI "ؐU WVSEU p 9߿)ׁ1ۉM]@]9X4M9H4u ]9X0 9)ǁ)M )ӉډU9vU )ׅtjjjjWURjjjV>"t1 e[^_UScK9cK54JjlÃC$@I;tC$@ICBSfC$s fK(fAfK$@IC$@ItC$@IC$@IXC$@IC$@IC4J?4J0I1]U=7KtSUE=v Ð1aicJUS]{T~QCTVV9fFpFpFtFxFxF|FhFhFldžh4SI1҃FlCFl^l,BvhPIsfdžt.@@(hj džC@(Sh;S ^xufdžfdžfdž1ҐR@@@@B~fdže[^_UWVS}GEpXOMuX\I hI \IE^ht;t CBCFlSM \IUҡtIt-/&^ht";t CBCFlSuG(C {wCPwkGCGC G C$C( Mu\I hI \IEFtCFt^tGJJPSh fu VMu#M \IUҡtIt31 SV-e[^_UEx4~@4UUWVSEfU rV҉t6x tF@PFujd Kuԅuu ~(u e[^_U$WVS}ffEE E%EЉу _pEEEUUE E䐐CH1v8ArV;t CB CGtCfLJE`EEXpȋUU@U u]KEKEEe[^_aic%d: can't find matching acb aic6360panic for historical reasonsU WVS]KMy}wXy(C C(>SC$A$C(ATjRICOKC C}0{ C$ C Fpt FpX^t^pNpK}@Wljf!0M@09džfdžV}}G$G($My(uC t A( C$}G$MI9u huoh OhIMσ-fǃ`SfǃL@Jt hoSxMσ-fǃ@Jt hnSfǃ@@Jt h nMMσG(MKJ9xJdEPo1TK tIxJ)J1TK tIJJ15J h>K UK4Ch>K@h>K@J|JJJÐJh>KJ9xJEP迄1TK tIxJh>Kh>K UK4Ch>K@h>K@J+xJ @ э ȍ MTKʉUTKTK=?B~TKTKJJ8JUUM B=Nv ÐJt t吐J9tJuJ |JJtJ1U=JuJE$? C1øUJt tJJ Ð1U=JuJC1ÐUj @tUR譊UXE0C@@ҋEP ʉUVS]=h>Ku5JJ5Jƅ!)ڍҍSX%JӉȉ?BEUjh@BuuӉ3)y  h>Ky1)˅e[^Ua$aJUWVSu} \I\Ij6(t)=Ju \IҡtItOBB=Jua a=JWjh$# \IҡtIt1e[^_U=JuÐjh$耆j1UEpq䄉Calibrating clock(s) ... i586 clock: %u Hz, i8254 clock: %u Hz failed, using default i8254 clock of %u Hz U WVS=It h/gj RSj 9} K7j!ǃ}j |jǃ9}u K ƅ95h>KE@Iw0}j | jǃE9h>K9vE+h>K)Ɖ+EEu9}uKtY럐@Iw*u1P=It)5OKhIf=It uh]fE =It5JhqkfJe[^_UVSU YEJƉ1Ɖ5xJ5h>K UK4Ch>K@h>K@Qe[^UVS4C@@ JuhJл1Ɖ )ȉE1u 3Ke[^CLK_USE_I8254_CALIBRATION not specified - using default frequency %d Hz differs from default of %d Hz by more than 1%% CLK_USE_I586_CALIBRATION not specified - using old calibration method UWVSJ pq pq5JJ5JGǃ9=Js +JU J)MJعd19us%=It hNd=J=J(=It5JWhS"d OK5JJ5J=OKt =It hcOK@Iw-0h@Bl5J1ƉVe[^_Invalid time in real time clock. Check and reset the date immediately! UWVSU\I\ITKTK\IҡtItj vGj a|1j Qlj 9}OB9|~uGj|89}unm@9|jjj֍RR8K@=/Kt?K¡\I\ITK\IҡtIt{h ah4 ae[^_UWVS=|6Kk\I\ITK\IҡtIt pq8K R =/Kt?K))ˉؾ<1Ӊz0pq1ӉzpqȾ1ӉzpqˍKȾ1׈UѰpqEm9]w+]GEmuEn߉dz pqEUPuuG9r)Eᐋu{pq{pq J pqe[^_clock_batteryROM_cksumconfig_unitmemory_sizefixed_diskinvalid_timeRTC BIOS diagnostic error %b U=/KtJJp3K|3Kjh Jh\jjj%`I`I!`I桃=OKt1h?KJ pq pq=/Kugjtƒth Rh ^ jhJhjjj %`I`I!`I桊J pqU}u J& J)J pqUVSuJEVjEPu2-Ãu8~t2=Jt $5JJu5J5OK9؍e[^8Ii8254_freqUWVS}U u OK[1]u]u1QRuu&Euuh@BjZ=OKu50K KRe[^_UVSu@Iv-7OKEVjEPu+Ãu~t5Ju(؍e[^Xi586_freq%s: C/H/S start %d/%d/%d, start %lu: allow %s: C/H/S end %d/%d/%d, end %lu: allow : OK%s: type 0x%x, start %lu, end = %lu, size %lu %s %s: C/H/S start %d/%d/%d (%lu) != start %lu: invalid %s: C/H/S end %d/%d/%d (%lu) != end %lu: invalid U$WVS]EEEM IME @% ME @?EM QE‹M|EEߋEM AE9s8M9MuEH9u }t.}tU)E E1utM u.Jt!uuE @PuuhZ}M IME @% ME @?EM QE‹MtEEދ]M Y K9s6E9EuEH9u }t-}t)M M1tM Iu+JtSuE @PuuhZ9}u9t EE=It0E}tDRM q SuAPuhJY9}t+=It"uWuM IQuuh|Y9t&=ItSVuE @PuuhjYEe[^_error reading primary partition table %s: invalid primary partition table: no magic %s: Found "Ontrack Disk Manager" on this disk. %s: invalid primary partition table: historical U8WVSjjhIE܋ME@@ u܃hV IыE@WEH$ PeE?G~j@h JutX u%JtVhVEEEE1]SC%T9U}US?9U}UCP9U}UG~E1]U E  ‰Uؐu {u{ t-EPjGPuuSCuuuuSVR,G~}]]t1EMA,EA0Y8U9Q%s: too many slices U\WVSMq(rE] X<]MYTMA(]C4K$SMS_y t(ujjhuS_4hoS]C@Uu tPEPjjU E  Ru@ǃ=IWhSEMq@ƾ][ ][MDEU E  ‰U]Du~u ~ ~u{EPjjuu$@WMMQ0}Hwh,u.u0u,u(u$VEPM$N]LF DmEPjuuu?u0u,u(uVW,}~Wh7WRE(MN] F CNK]C EE`E}EM|t+u0u,u(u$ttuuuu u,E}~‹]K$ S_e[^_U=`Ju`JUSM}0Ku]fdcJUVSuV BUK~>F CS0jdSuV6 …t1e[^fdc%d: unload UMA J|tDq hPUEp fdfdc%d: %sfdc%d: too many errors, not logging any more USM] AUKDDt3|DcSQh-PA<VKdu Qh P]cmd %x failed at out byte %d of %d cmd %02x failed at in byte %d of %d U1ېjujjuu-u@BR,jEPWuEtC~juuD EE@8MH@ uh H@tvw' tFw0`t_w PtX@t$h GE@h !Gh!GMA]h+!rGE@FhG!ZGMA.hU!BGE@hb!*GMAE@Exte[^_fdu %d >= NFD fdc%d: 1.44MB 3.5in PCMCIA UWVSExGEƁUKUKF !FF V0FHFHFL@@ ~Wh%`FOҍJEjjWAh@BF@EPjjjjWf(u-Et'jj jjjWIhjjV(EPVu4Et.jj jjjW uhnjjVD1ېjjjjWu-u@BR3jEPVuEtC~jjWN Eu9E@0@@ Wh% EE@1e[^_UWVS}M ]GUKEEte E !Eu EueE uEM OUKLEED }t)jjhjjWD t UKPbe[^_UVSMJJxt 9Hu5JJPQht(6a=\I5hI 5\Ibjr0 \IӡtIt{e[^UVSEJ \I5hI 5\I˃bJ9Pux u 0\IҡtIte[^US]JBu'J jrJ05JJSh(H`]UVSuVN jdVN jdVF jjhjjSF tVe[^ready for output in input input ready timeout UWVSuFF,N$F41u>~T-15^T 1ËE@ PUF8F41؋U9v39vF,N$sE)؉EȉMV4)ʉV8}tTFTF|\IhI \IVEHPWht([u,\IӋtIt >Vvde[^_USU\I hI \IÍBFDC status :%lx %lx %lx %lx %lx %lx %lx No status available [controller is dead now] ST0 = %x, PCN = %x ULWVSu EEE^Hu4F~~vh18FF^C<EԍF8F,F {<}C= S< ЉCjSƃ#tC%t׋}=\IUҡtIt胋#uSSC%ts,Ma(jJSe[^_UWVSu] }DžJRfd?md AF5P?F,=F@3@F@gd>F,@DedAhS Iы( ыJPЋylj8fDž Sh- P+Džu Dž}EeVDž GtjuS Sh-Vz tM9ntDžuuV‹}4J EPMI1…t ‹E ǃOEUу M 0t&t(M t0uA:0@(+uǃXE ǃkE P$Eǃ ǃtE}t!tPu E ExtxUJ v =v!ω}WQEphuE"1UB tEE@ tE tlulUJAMEH`UˆUEfx u҉UfU|JUfB EpɀtwUrɀUJ $@E EЈEUfz uEfEJEfP UrUfz urhE!EƃUzB?vB t ƃ ƃƃU EȈUE1ɐT숄A~}tMtP숃$ @P N u u<ui讉MMփȉu-k $? @ƃ E@Uփɀ% uU ME$@ˆUq $u EqƃWI1Ƀ9sf<tTMQ蕈QUrhE2}^t 0P$3A9r}t&t 0P$ e[^_3c503ed%d: Invalid irq configuration (%d) must be 3-5,9 for 3c503 UWVSuFÁJfVffFfуɃtv  0tc' t7 t<@tu ~t[1~tH됁~0t<ߐ~Pt0Ӑ~Pt$ǐ~t뻐~t 믐~uPȃ tL t]뉐@t#uv蛆= tK^v脆= t4Gvl= t/vT= j2蚲h|ƃǃMƃƃ EME@E~уE!Uу0U0ɨt°!Ft;F t ƃƃƃƃ  6ƃƃ ƃ&EU BN t9t"T t;uGу1 @=F t@HPvhMEP%PvhEE M M M 0WIE9}sU< wBU9r~e[^_UWVS}0۹1A~t1%1ɐT숄9A~e[^_NE2000LinksysNE1000U4WVS]1fE fffE fƒhJ!h3Sqƒƃƃƃ Ẻƒ ŨHUB Ũ@ƃj h hJSj uVh S j VhJZƒ t}ẺƒIUB@Ũƃj h@hJSJj Vh@Sd j VhJƒ t1tƃǃRJSǃt)ƒIƃƃǃRƃǃR   ȉE̊Ë?vEt ƃ ‰ŮEMʁw ƃ@ u,jEPjS1@ŠD(Bvڃ e[^_UUBJBr rrPUMQTJqXRqDPu1UMQTJqXRPHP-PCLAN+U0WVS}GƁJfWffGffdžƆÀPRQffFFwF4fFF|dždžXdž }uV8VJV xt Rt3:ut*:t%@@@jPTRPLJLJ8J1e[^_ep%d: strange connector type in EEPROM: assuming AUI U WVS}\IpI \IEfufff 1ff1fff1ɐA~ꋓ(fXffuf1ɋ A~hf>xf>pfSGtt 5G tt G@tt1fffE%?Eff UЉftxt ]t/Ut^f f<t2fh|h fHfO@fgt"聈ǃǃЈfffW(U\IҡtItDe[^_U$WVSEE\I pI \IUfuMAtu5\I֡tIUUuE}tE@ EUUuEEEE=vFMALut*Fu ǁUBMuu u܉fۉ]Mu\9]sZfEfEfUffUf}9s&MfIu5\I֡tI~UUt-Juu džE@UMfEf1fUUMtDu^ }EMqou^ tGF $FƉn6EX ڋMpuщfo@ tEDUUlM}tM0M}uMfAAHufufMtfM \Iы5tItAe[^_UE@JuP,ep%d: strange status - PC-card removed? UWVSU\IEhI \IEE׉pff>AuhƉMcشhf0t WO몐t0fFfff fVtfFFDWKfF ؄}[@uE8t@Xfu uFPFLHftf 0뗐fff fVhff>>pfE\IUҡtIt?e[^_U(5\IҡtIt>jj}à f}=\I}ܡpI \Iu܃=3Ku jj%|3KCt%C+UK J lQKC3K5\IҡtIt>{tCCKC C(C$]UMqqfmE@ fEfMUf}}EfUfMMCtSS$CC CC )Ƌ}Љ}9vuЋuЅ]С\IE܋pI \Iu܃=8Ku jjGz8KtR 8Kf |QKfCf~QKC{{fC5\I։uءtIt/<(5\IҡtIti tz4i 2i !i t0OMxuUSuWʌ jEPP wfGfAf@ugSXS~JMy8MAG42Su: Su<ƃ4uS_1M \IUҡtIt7e[^_US]ufcS3]UMf@ffuPff(fXffuhfxfpffUVSu1ۊE hm1ɐfۉ] A~؍e[^UE1ɋAЅtPuUWVSuVtGt؀̀fe[^_feUWVS}u ]MIxwFCIye[^_UWVS}u ]UJUxwCFMye[^_0JUS]{T~MCTPJC`fCdfCPtCP t1]fe%d: unload USEXTShjS]UEpT @`@@` @btUWVSMAPf1e[^_US]M yt!C"A8At1yu߸]UU ` UWVSEffEUffUE0 WE E𳀃0Ʉ]tȉW|u0EWb}]uEU BU EW6}]uEU BU E}TU0Ue[^_ @`@pxPfe%d: strange I/O config? FMV-183FMV-183 (on-board)FMV-181FMV-181AFMV-184 (CSR = 2)FMV-184 (CSR = 1)FMV-182FMV-182AFMV-184 (CSR = 3)unknown FMV-180 versionfe%d: %s: %x-%x-%x-%x fe%d: check IRQ in config; it may be incorrect UVSu] 1ҐfUԘf9tB~?1ҐfffSB~hSE ƒfUԘf9tCPhj ‰уǃƒ$c@,Tؚt tǃ"ǃ*tt{ǃ=nǃEbu]ǃNQuIǃ`=t t -t#ǃrǃz ǃu[ǃ%P%P%P%PhCPhj] f~ ufUfF %fF f9UtCPhęj jPjSu u 1ƃƃƃZƃƃ0heɀhe0 e[^`@@   @pAT-1700T/RE2001AT-1700BT/RE2003AT-1700FT/RE2009AT-1700AT/RE2005unknown AT-1700/RE2000 ?U,VSu] EE1fUf9tB~1ҐfffSB~h.SfMf9ˆUˆU؍EPS08UhUt# t?tt&0ǃ:.ǃJ"ǃ[ǃl ǃ}f~ ukȊU@t3 t 0t5Pt`t(fM&&fMEt fMfMfF jPEP% =ƃƃƃZƃƃǃhbɀhb0 3}Ѐ}% tEE1e[^US]h?bɀhb0h,b]Gateway Ethernet w/ Fujitsu chipsetUSE] fx f1fffSB~hLJSǃajPjSGƃƃƃUƃƃh:aɀha0 1]MBH10302 (PCMCIA)USE] fx f1ҐfffSB~haJSǃkjPjSOt|ƃƃƃZƃƃǃh)`ɀh `0 1]US]h_ɀh_0]Generic MB8696x Ethernet (PCMCIA)USE] fx tL1ҐfffSB~hJS]tǃڢu u1gƃƃƃZƃƃh^ɀh^0]:fe%d: address %6D, type %s UVSuFPJJfCfCC@C|ǃتǃǃfCu d~ } N  t t2" tfǃ$fǃ fǃF\IEpI \Iut SЃhZɀȉhYhY ȉhYjPjS$ȉjh0jS(ȉ0ŠŠ0°0Š00hXhX@uCPhtjvSK@S S5\I։utItK!e[^_UEf&fBfP&'ƀ&ff$ƀ(' fe%d: inconsistent txb variables (%d, %d) fe%d: transmitter idle with %d buffered packets UVSE&f$f9%9t+$P&PCPhzj"ƃ&&t+'u"&PCPhjS)u{f$vmt[Fu ǃFt3VS&t'u SYVb듐fcfKe[^UWVSM] ~ff19}f9|e[^_fe%d: emptying receive buffer fe%d: could not empty receive buffer UWVS]CPhGj裾 M1U}9}@uf9|@tCPhfj<Ee[^_USM] t"(}xt uQP'()AH(AL(APƁ'fafA&tQ[]partialbigfe%d: received a %s packet? (%u bytes) UWVS]E tCD1@fMfˆ$< tCuCDPSeff=v4Pޭf;w֭QCPhj貼CDS#VS}CDVS9C@GLe[^_USUҍBJ$EutvEt PS}tEPS)tf&uSfcCxSNj]SIOCSIFFLAGS(DEBUG)UWVSEU }1\I pI \IE2i "1i  i t*i tz 4i !i tDKxuCPnWSo CPRjGPP蒵 CtC@uCPC@t CPSCt_hSj M1i u SWWSPƃ4u(S1x @C4M \IUҡtIt?e[^_UWVSfM fM\I=pI =\Iƃ=8Ku jjFW8KtQ8Kf |QKfCf~QKCKKfC5\IҡtIt0)5\IҡtItjjXÃu (f}b\I=pI =\Iƃ=3Ku jjW3KCt"+UK J lQKC3K5\IҡtIt{tCCKC C(C$CuS\wMKECC ss@fmsMAt%u jEPV tS[CC CSVuj1e[^_fe%d: got an out-of-spec packet (%u bytes) to send U WVS]ffEU fRfUffvEPCPh0j襷CL}MM};w <+M܉Mf]f]fu܋EE¸fMM}#uvVhEf@UEf9}t=URRhۥMfuMfvMσ@fσ1fـۉڃ؉MMt-qEu ǀUBMuutEEEUZ ًzUfoE@ tD;UUu˃}~!M˃1fE}}tM˃0M˃1f˃ UfMAHu^FuffufNfFe[^_sn: Receive interrupt with nothing on FIFO sn%d: Successful packet caused interrupt UWVSEUB,K]\IhI \IEfCEǃfu EM0M %E#EEtfCDEtHUуfMff}hvuEtefcSZUEfM MfMME$M`fMftuhQCLtCPN1ffffuffcSUttEfu e1fMffMCPfUSPffcSNE tuulUуfu MEЉE\IЋtIte[^_sn: snread() kernel memory allocation problem UWVSE@P ,KMfM˃f˃ffÀf]fEftUBD tfE \IM=pI =\Iu=8Ku jj*<8KtQ8Kf |QKfCf~QKCSSfC5\I։u tIt.'5\IҡtItljjg=ÃG}{ECC \IU pI \Iu=3Ku jj;3KCt%C+UK J lQKC3K5\IҡtIt{tCCKC C(C$CuS@}GDh˞{CEUfMfփfmfEt$MщM}MA@}{{ CSuQ6 EÃfMfuMfff_e[^_U WVS]M uuSB,KEU1tcG\I5pI 5\IE1i  i t>i tz4i 2i !i t0KuxuYCP7VS

1ɐ1بt A~F~؍e[^_ J:Iintr_inuse%s%d not %sed due to %s conflict with %s%d at UVSUE ]up@puurBphaSVZ$hMe[^attachprob0x%xI/O addressmaddr%dirqdrqUWVS]M }y({8itbt+y(t%S9QAA(H9hnhsVRt0yt*S9QwAAH9whnhVs^t,fy t%fA f9C uhhVC t@H)t0fyt)fAf9CuhhVCPQS1e[^_UWVS} 1DJ=DJt#WSu ƃ @{u>J=>Jt"WSu ƃ @{uCJ=CJtWSub ƃ ua@{u什FJ=FJtWSu6 ƃ u5@{uHJ=HJtWSu ƃ u @{ue[^_Probing for devices on the ISA bus: imasks: bio %x, tty %x, net %x US\Ih訕DJ=DJt#Cx thdIS@{u>J=>Jt"Cx thhIS@{uCJ=CJt"Cx thlIS@{uເFJ=FJt"Cx thpISX@{uHJ=HJtCx t jS+@{uDJ=DJt!Cx uhdIS@{u>J=>Jt"Cx uhhIS@{uCJ=CJt"Cx uhlIS@{uເFJ=FJt"Cx uhpISl@{uHJ=HJtCx u jS?@{u hI hIpIpIdI dI=ItRPQh肓DJ=DJt5dIS@{u>J=>Jt5hIS@{uCJ=CJt5lIS`@{u軀FJ=FJt5pIS8@{uHJ=HJthS@{u\ItItb]Uju uUju u%s%d: disabled, not probed. %s%d at 0x%x-0x%x irq %d drq %d maddr 0x%lx msize %d flags 0x%x on motherboard on eisa slot %d on isa%s%d not foundUWVS]uCE{4u%=Isph6蜑Eu-jS{tC>KSt s(C0 1C0SEЉǃ{06sUrhS t+shXCH9KtQhaf{ tC t@HPhgÐf{tCPho誐{tsPhw莐 {tshx{ ts hb{t C uh-{~C uC Ph,hh MuS {(SE@Ѓf{ } t S E su ss,3S tBJR [ !`I`I! `I{0t SUR҃uB{0sEphM {tshX7h*Of{ tHS `I`I! `IsS tBJRt } t [ ЋU !e[^_US1ېjSH C~ J! !!!! 栰(桰桰桰桰 栋]isa_dmainit(%d, %d) failed UWVSu} <0JjjWà tVWS tKjSstPjhjjjWvÃuWVh4ݍ Je[^_isa_dma_acquire: channel %d already in use UMJrJ J1ÐQheUMJs J J JUUuр Ðрֈisa_dmastatus: channel %d not in use UWVS]JrSh豌JrJr1m @EU0U0UЉU9r  0EAɃ~ɉȍe[^_isa_dmastart: channel %d not acquired isa_dmastart: channel %d busy isa_dmastart: bad bounce bufferU WVS}]JrSh膋UuJsShaJSWu 9 tU<Jt 9<0Js h .EUJ4JMu WVu G u u ewV5WƋEtJ JutEtt T! XUt D H 0 UЋJOuF Utt $ T#$ XMt $ D$ H0؍UU ЋUȋJOuuԍe[^_isa_dmastop: channel %d not acquired isa_dmastop: channel %d not active US]JrSh"JrJrShAt $  $  S]isa_dmadone: channel %d not active UVSu]JrJrSh肈Js)tuu 4J豁 J Je[^isa_dmacheck: no physical page presentUWVS]E 1EEtE9s^SRtP$Tu ht*wt9u 1ЅEt ց9r1e[^_RAM parity error, likely hardware failure.I/O channel check, likely hardware failure.EISA watchdog timer expired, likely hardware failure.EISA bus timeout, likely hardware failure.EISA I/O port status error. NMI ISA %x, EISA %x UaȺa%} h:K)@t he9)=u1Ð} h)@t h) t h(PQh1stray irq %d too many stray irq %d's; not logging any more US]J=>Jt&\B(@v9Z BB(H9}@zu޺FJ=FJt*\B(@v9ZBB(H9O@zuںHJ=HJt*\B(@v9ZBB(H9@zujEPWG1e[^_KJNcheckioUWVSE }t=E@EEDJ=DJt5}9𐐐B@v9rw BBH9s@zu޺>J=>Jt6}9B@v9rwBBH9g@zuںFJ=FJt6}9B@v9rwBBH9#@zuںHJ=HJt6}9B@v9ZwBBH9@zujEPu}G1e[^_`MJcheckmemttUWVS\I=dI =\I1ۉ׉}J𐐍[}9Ju\ItIEtrjk[Jg}JDDD J@D@<D8\ItIEt[J!CW\IҡtIt1e[^_UEU H P 9%UU1ɋB9BuB89BQE؃!!uQE8Pj/Ne[^_UWVS'U:WUUÃ!!t:u"j%PEPVjNy1 j؍e[^_UWVSU:'Wt^j}ȉ؃!!u*ttu>QE8؃!uQEPjNe[^_US]StE 1]US]StE 1]US]StE 1]US]hSrt u S1]UWVS}u WtWƃtK։e[^_UWVS}u Wot!G8G<W@ƃtKȉe[^_UWVS}u WtWÃt u=NЅ~4uWtWÃuN؉؍e[^_UWVS}u Wt)G8G<W`Ãt u;N…~2uWCtW"ÃuN؉؍e[^_US]C9CtC C89Cu`H8Pt4`@tOR0PhgjWe-؍e[^lplp%d: TCP/IP capable interface USE] P@@fX2@Lf@6ǀǀ@D"@G@Fǀ2R0Shf]US=JujjhJ =Jt = Ju#jjh Ju 1ې J% J$  J$x J؃xC~1ې Jځ؃p  J$ڀЈ JҀ $8ˆ Jҁ؃8ˆCy1]UWVS]M SB4PJ}2i 31i i tO i tEi tH i@t(4i 3i xKfCfAf@u0cCC@uTjjFLPt:K@kjjGPb u 7:tjSGFL$FLGtt/ 1e[^_lp%d: Too many errors, Going off-line. U,WVSEUB<}PJ}ԋE䋀PJEU䋲PJFPJ}\I\IEUB7U} KuRɰU| Ku.ۉ]0U= J MɃE} MuVɰU| Mu2}0U= J} J 8MɃJMˋUԋRL91}ԋ}E} MuVɰU| Mu2}0U= J} J 8MɃM؋U BUKp} KuRɰU| Ku.ۉ]0U= J MɃ]E+ǀK9K K#}GX_ljWjSEԋPA= Ku K KH KKxI xI tI@}ԋ}EԋXLCMU@t IȈE0U}J8J UBUUU萉E@u8Et 4$8EtIސKj]}+LJK9KGX_ljWjSUԋRnA= Ku K KH KKxI xI tI0U}G\d~$uh^ L^0Ug6LJ}=\IסtIte[^_U,WVSE@PPJuPJGPJEEEؕEH@E\I\IU]C| [S@Uu IEM t Y ]ԋ uEԈˆU@ڡ JU} Iu6] JU| Iu]؈EԹ@С JU} Iu]ԡ JU| Iu1ɋ J]ؐMȈEE@ЋE؊U} Mu]ԋE؊U| Mu`MA ~@ JU} Iu. J@U| Iu@ JU} Iu JU| IuEM  J]qu\E؊EU؊UEEڋE芄U} Mu]ԋEU| Mu_I y u u] JU}Iu)] JU|Iu 0UE}t ]CLuFHE @FXu xc@t][S0@J@U@u IuJU@t IuJU@u IuJU@tIu~M J]quTE؊EEEЋEU@u Mu<]ԋE䊄U@t MuI y u uE][5JȋU}t ]CLuFHE @FXu U@t][Su5\I֡tIt1e[^_U=|Ju!Ejh0JEPV}|JJninhJUS]S J~AǁCPctCPt1]UEP ǂJPUEp 6USEX5J@ B<wSS_ t1]USEPJƄDŽJDŽJJt@äJXP֢1]UE@JP׭PMUEx4~@4UUEJEE7ǀeeeUPFE Q QE@l"@p#UVSMMM M\I hI \IUEЃJujjj,4J 5\IҡtItEEЋJe[^USM \IhI \I\IҡtItʹ]UM@eeeeeM EUWVSExu@UBE^~jOeE1^NGv1ED$ @@GvE@fh%&e[^_UWVSu} ]CPRPLt*X CBC B@ C(1e[^_nin%d/%d/%d (%s%d) timed out UWVSuF X \I hI \ICu)SBPBpBPPBPhbTV}C(C jVn =\IҡtIte[^_UWVS]E{CpXtVSVhJ u u\I hI \IES5JVSVt&uGM \IUҡtItCuCJJPVhwp1{(te[^_UWVS]} uNQF8PtaFVRPFCd{ GCC @CFCdVL$Cht RʀSL F@ CLCTu-F8t%CTCMCNCOCPCQ CTe[^_UWVS}J t W/jN݀Kf@cfCfe[^_U WVSEÁJMEtj }ujS ǃCEt/E{EtCDKEEOwEE ~FCdS R BPSeOwEE@uwGEMe߰EUM@MEUCdL$EQUA$eE!EU'AUEU w}}1L$!AAF~WEu?EtJWWˆU{t{gu Sw {gu SEtEfPSuE1EF9|Cfǃe[^_U(WVS}E @E܋U ZEGhtEEGfENN}t"NMFE䐐U CȋUMuE^^h,E1ۃNMFEUUMjC.EtEt*ENN jMҐjUM IEUʀU܃^"NME܉E!M!M܈ME܋UjMEUEUjEMMMEUGEGDUNM؍FE䐰UUÈ]u#È]tOEUUEuɉMMEGEEEUUNMذ^EGEU0U0M@MUEM IT$UEJMB$eE!UE'UE@WVj2LJ.NN0 jWgfgfGf1e[^_U WVSEÁJEUEǃeeeECFEO w0ClD#Cp\#0Q0EG°CC0&EEu SǃO"wutǃWW0CFE1ɐfM\JfDKtAvStRu5MMKFO OE tCl"Cp#EtClD#Cp\#WWe[^_UWVSu} F X SBPP}Vhh{(KSfe[^_UEH @lA E@pA$E@FEM@ME EEUVS]EEMuЉU%EU΁tC P+P1e[^UWUEt} fm} m}UVUEtu fou ouUWU} Ml}UVUu MnuU WVSuV U~trEuhWE}^vSvWUB Ѓ \IhI \I^)^F X \IщMtItm닐Et]~tWVJÃ|SvWUB Ѓ \IhI \I^)^F X \IщMtIte[^_U WVSuV U~trEuhWE}^vSvWUB$Ѓ \IhI \I^)^F X \IщMtIte닐EtGVHÃt8\IhI \I^)^F X \IщMtIte[^_U WVSuEF EOOM*~f}<ˆUM Eff}~ExWEEV@ˁSvWE@ Ѓ\IUhI \IM)^^V ZEdž \IщMtIt1ۍWUEu*UE}EGjC ~̃}*VSvWE@ Ѓ\IUhI \IM)^^V Z \IщMtItDˆUeߋENfdžEVÃSvWUR ҃ \IEhI \IM^)^F X \IщMtIt莣ˆUeߋENfdže[^_UWVSuEEV U~f!ˆUM EffUEUBEEU~w^SvuE@$Ѓ \IUhI \I)^^V ZE\IЋtItC~udžPE\Edž1ۋ}GUEuE|jC ~ۃ}Et dže[^_U WVSuFEUEEP] MPÀ]~f}<ˆUM Eff}UEMAE}EU EtaVËMMU}l\IhI \IE])^MN~ _EE\IЋtIt葠}keVvËMMU}l\IhI \IE)^MىNv u^}=\IסtIt$e[^_UWVS}GEUEP] ]Pf}<ˆUM EgfUBE}cEU w_Mʋun\IhI \I)_MىOw ^\IЉEtIEt*e[^_UVS]E {fStL{guSt;\IEhI \I)KKS JE\IЋtIt蜞ˆUeߋEKfE tnCFEeeV VES BB;ujS ǃ; u  CdT$t" C x tqE $E CgЃwX$---------S.S2&SSS"Sje[^UUBdBB%LtFz t@B x t7@ x ~@ 3t R]ÐtuRRUUt@z t:B x t1BBB @ x ~@ tRRzUWVSMw_E}}EE_wA @Q BEA @AQ RQA @Ae[^_UWVSu~L~Tu FLFTCEEuVKCE$?E<-u0~TuEUK#UVwGNT~TuEt~TtESSe[^_UWVS}EWLUEEGTw F @\$MEE$?E-0ۃ=ktl=ItPh>-jjPj Pbt#t=It Ph>r-%9kw=It h>H-1]pcibus_setup(1): mode 1 addr port (0x0cf8) is 0x%08lx pcibus_setup(1a): mode1res=0x%08lx (0x%08lx) pcibus_setup(1b): mode1res=0x%08lx (0x%08lx) pcibus_setup(2): mode 2 enable port (0x0cf8) is 0x%02x pcibus_setup(2a): mode2res=0x%02x (0x%02x) pcibus_setup(2a): now trying mechanism 2 UVS ƃ=ItVhg?+kk 0 É=IthSh?+ t  É=IthSh?d+ %=u b ȈE=ItQh?&+Euekk ˊE=ItjVh2@* u=It h^@*ukke[^US]]U ]]1ɀv1kkt t-UwME U +w%f E E ȋ]UUE ktt%  ‰UM1kt tÐ%É%UM1kt tÐ Ð?%UM1kt tÐÐUWVSM] 1us=kt t(_ Ή 1 9] ވȺ Ⱥ Ή0 e[^_UVSM] tt5ktt*b Ή E 1 =] ވȺ Ⱥ ΋E0 e[^pci irq%dpci irqnnpcibus_ihandler_attach: counting pci irq%d's as clk0 irqs @@@ pcibus_ihandler_attach: result=%d UWVSuhDEP(IEE EPSt/}޿D uMMCuE}'~}(uEEuuhD'uuu juu*Ãu5ءEMEE!`I`I!`I1ShD&؍e[^_@@@ pcibus_ihandler_detach: result=%d USMU  `I`I!`IRQƢÃtSh F*&؋]UMU u1Ðu 1ÐUMU u1Ðt !贠1øpsmpsm: ENABLE_DEV return code:%04x UShuÃ= J~ ShGj#%]psm: DISABLE_DEV return code:%04x UShu诪Ã= J~ ShgGj#%]DATASTATUSpsm: SEND_AUX_DEV_%s return code:%04x datastatuspsm: %s %02x %02x %02x UWVS}u }t}tjW觭SWÃ= J~!SG}uGPhGj"t1O19]~W|C9]= Jt%vv6H}uGPh Hjl"؍e[^_psm: SEND_DEV_ID return code:%04x psm: device ID: %04x UVSujVĬhV Ã= J~ShHj! t-h'V<Ã= J~ Sh Ij!؍e[^psm: SET_SAMPLING_RATE (%d) %04x UVSu VhuRà = J~SVhIjV!ue[^2111psm: SET_SCALING%s return code:%04x UVS] tt Suƃ= J~ VJu JPhJj %e[^psm: SET_RESOLUTION (%d) %04x UVSu VhuRà = J~SVhJjV ue[^psm: SET_STREAM_MODE return code:%04x UShuÃ= J~ Sh Kj%]U S]jS>uKjStjjEPuWuhNjhe[^_psm%d: failed to enable the device (doopen). psm%d: failed to get status (doopen). psm%d: failed to enable the aux interrupt (doopen). U WVSu} Jsus/WscVhPijjEPsTVhQjg  PsPs褪 t1$stWsGVhFQje[^_psm%d: unable to lock the controller. psm%d: current command byte:%04x psm%d: unable to get the current command byte value. psm%d: unable to set the command byte. psm%d: unknown device type (%d). psm%d: SET_DEFAULTS return code:%04x psm%d: failed to get data. psm%d: failed to get status. UWVSuVU}Jjjhdʃà hdSIЋFCPCv s C =It Jjs趙u+uh;R=Ie JZj sZsڧ$݉EsE= JtPuhbRH }uuhR2jj3s sѦEtk~-t=u!= JtTuuhM ?sus} = J\uuhM Dspu9sus2 = Juh NUstsu2us= Juh2NjjEPsh~EC4CPEC8CTC4CPC8CTC s!C,Pu5usJ= J)s,uhRj C,tt tC$C$ C$sCE=JtUuSJЃt*= J~3JPuh[NEEJuEJC(C\C`C %CXC t CdEJCdCeC0sLEJCDhsE= J~PuhS  C tHPs'C8jjEPsquh*SCHU"SHSIjsjjEPs.uhFSEC4CPEC8CTE Pj3ss uLus!uhRT=It Jus諣js-jS}1(}JE "Ps|jse[^_psm%d: model %s, device ID %d psm%d: model %s, device ID %d, %d buttons psm%d: config:%08x, flags:%08x, packet size:%d psm%d: syncmask:%02x, syncbits:%02x UVSEpJu 1C= Jus,s(PVhXDss,s(PVhXsDss VhY(CIPCHPVh1Y=It Je[^psm%d: unable to set the command byte (psmopen). UWVS}Jt{| gCt VfCC\C@CLC0ǃǃǃChClCpCtCxC|ǃ`jLPIǃ\js袒u \I dI \IsEtjsȠPsT u9jsC5\IҡtItoWhZj:5\IҡtItouWƃuKjsܑe[^_psm%d: failed to disable the aux int (psmclose). psm%d: failed to disable the device (psmclose). psm%d: failed to get status (psmclose). psm%d: failed to disable the aux port (psmclose). UWVS}Jjsu U\I dI \IsIEu*js謐5\IҡtItUn멐jsPsv uPh[j 5\IҡtItnj s臘{}Ss uPh\j jjEPsuPh9\j E Ps2Ps辞 uPhb\jH j scjs艏1e[^_UVSEu Mx@uxF$Ft F J V ~}} QV~}} Qx@F!J V ~}A(ˆQV~}A(ˆQV~}ÀY(ˆ$AF$A\e[^psmreaUWVSEJ1{|  \I dI \Iǃщ Et"=\ItI t~k#Kjhq_hS6ƀct!=\ItI }5ks{|"=\ItI Ak7_=\IҡtItjM y\I dI \INjM 9q}qv+9vGPP@P+PPVP )1񉓄=\IҡtItiu Vƃ u [^_UWVSu} jv֋u \I dI \Iv1tjvPv艚 u*\IҡtIt.ijv`:jv螓v蒒dž\ \IҡtIth1e[^_UWVSu] 1jvL3SvXPvujvΊe[^_ULWVSu EJEM@]MMMM@ MDMDyM@M@tFM@M@M@fM@@\I dI \I‹C}C GC$GC,G \I dI \I‹Es{@@ \I dI \I‹C@tttM }C4MAC8ACC vh+C v95Jt؍e[^_sio%d: type 8250 16450 16450? 16550? 16550A fifo disabled ST16650A 16550A lookalike with %d bytes FIFO, console with a bogus IIR_TXRDY registerU$WVSEH,pu@EjjKhlOE u1hlu5I֋EuFFJJE‰Vuv uE$uF Efx F FlEp(p4ulp,u,p0ulpHulpXuppphplUPt‹uV EFxEF|E@dždždžKdžu95!JulEǀ+ǀǀǀǀǀ5!J40Eǀ%ǀ%]ÈS=}Ǵډ uhp E@"u8UðZEu}Zth6UjdxuF Vl@t- tt t(hhh|uF thȆ6E@ uF"t@ @ hކEp#EphqEx u$xu @uvhDU0u95!Ju h#E@"t h h\I5dI 5\IuE4J\IҡtIt@Ejht!JuVE@ ue[^_siodtrsiobisiodcdUWVSEEUUvJg{]E`t1E H JM쉋UU\IdI \IE=jhhCP臞ƃUFke[^spc%d: ?????? spc%d: target=%d, lun=%d is busy spc%d: reset controller by higher module UWVSEpU RUBxU Bu1UTx<tEWSE0hR躹UUTxE 9tU2hC艹E@Ux|]DxU E@UE@ ǂN0N`ExǍ^ ^ ^ F^ E1(U2ht͸uMEe[^_spc%d: cannot send IDENTIFY MSG spc%d: cannot send No Operation MSG spc%d: invalid message 0x%x spc%d: invalid phase 0x%x U WVS]sxDx|Uh>0h@KL>0Kt tN򐐅tEǀU2h 豨Eǀ1e[^_spc%d: cleanup current id=%d current lun=%d state=%d spc%d: cleanup id=%d lun=%d UWVS}w|x7hE1MMMDxVu7hDCtS{t|CCt R0CHC@(s\I hI \Iƒpu_pGt_t\IҡtIt&MDxFFE}-e[^_`Uscsc%d: no video adapter is found. US]s sNu=It sh1%C9Js su1C u]U=9Jt=5K%Ð5K 9J f f Zf f=Zt2 f f Zf f=Zt,5K1Ð5K 9J9JfjW=ƒ} u9J9J€uz9J9JhJx ʁ v =w7ʁ v =w :Jsc%d: unable to lock the controller. sc%d: unable to get the current command byte value. sc%d: the current keyboard controller command byte %04x sc%d: unable to set the command byte. sc%d: failed to get response from the keyboard. sc%d: failed to reset the keyboard. sc%d: unable to set the XT keyboard mode. sc%d: unable to enable the keyboard port and intr. UWVS}59J#9JjP$ uWhs莣E 4%j 59JO-59J2$E59J2ÃuWh=ItSWh' 59JE059J1jj59J2u WhKU tU tjh59J'59J* =j 59J|,59J/59J0=IWh.59J,u>j 59J),59Jj/59J70=IWh_yu*jh59J' =t WhM㿉؃H PjY59J1 t%E P59J01j59J"OWh蝡tSh59J1 EU u P59J0j59J["1e[^_U9J9J9J9J9J9J1sc%d: BIOS video mode:%d sc%d: VGA registers upon power-up sc%d: video mode:%d sc%d: VGA registers in BIOS for mode:%d sc%d: VGA registers to be used for mode:%d sc%d: rows_offset:%d sc%d: WARNING: video mode switching is only partially supported sc%d: VGA monoVGA colorEGA monoEGA colorCGAMDA/hercules <%d virtual consoles, flags=0x%x> system keyboardUWVSE [TMA 9J=9Ju%9J5hJ=9Jt&FF@TJjjP PJ tjjFFP ‰FFPRhJsNMFFBFlFhF~~$VfF|f}ffFxFtjj@MPx ‰84$t@MPRIЃ40FdFh+5KE9Jtaf~pffuFhff f^pf9t V(v9Jt 9Jtuf9uFhf9t VvXMfFhff f^p9Jt 9Jt-f%pf=puupf%f=uMfj0vdQk=9J=IIPMqh`MqhPhJqPMqh.$PMqhhJqPVUÃt!PMqhڜSq5:JMqh0軜 =9Ju=:JuMqhF薜Mqh胜9Jw\$@pT=9Juh2h*=9Juhhhh 59JjhdžHXdžLdžPdžTDPjjjh$-? jh:JEP1e[^_UU=9Ju1ÐuJÐuJÐwBXJÐ1UWVS}uWÃu N=u ǃ ǃǃ{XC\ t#C]FxS#Jǃ+ǃǃKǃǃ%ǃ%PSYSCTjSlUЉ=u :JL CcNEcPd [QU1 =9Ju u␋E֐59JU2ǐE뷐U:: "u65:Ju& Et 9J %9JUt=9J 9J %9JOKBd>5\IdI \IűOKSl+ 5Kfspf4 9Jt S iOK|ph|+255Ku9Jtzfzpffu|@hff Ӌ|f^pf9t Vh9Jt 9Jf9u|@hf9t|rhdUf|vhff Ë|fZp9Jt 9Jt/fpfpu upffuufẸ\IMыtIut 9J %9JEt 9J@%9JU:K:9}ω}ă0t@{{d}dx:J9UOKBe0|ǃ0t jVzEC@d}d}ăd}d)M x:Jjj@҉UR|@uV|IЋ|840u|=9J c}E쉅|UMI$Tp|GOFNRW|VGFF  }:JV$s|wC~Gf:Jw |I%$p<<h|RJw)|vE P0ǃǃ ǃCeKdHstsxC(CCC,CeccdC(SSS,^|fvfs||f@fC~|fRfS||fvfs~SeS||Ps~p@ X|@,:J|R0:J|v 54:J|8u P$:J (:J3 $:J :J|~u ~u~ t ˉ :J OKAetId@J ^$:J:JʀU䋵|N~}ˉ%e EU(ӈe E䋕|J~}ۉe UU(ӈ]1ۿPUJhJL+QT҃C~݃=:J~|N ~}ˉEUU*]$E$:JUE$EPU𐐐JhJL+QT҃C~݋OKtv|fRf t@] 9 t*OKǂǂ ǂOK 9n|>uc=PJtZ OK9FtHAduBfVftQje 5OKf OKt Q-h|~u ~|fPOKfP||fvfp~PIb|@|z|~~fVOKf v 5$:J'|fHfыOKf!p!5$:J(:J3$:J  :J OKAetId@J $:J:JʀU܋$:Je UeeEeee1ۃ=:J.JhJL+QdU҃C=:J~҃~ҋOKtf tA 9 t+OKǂǂ ǂ+OK 6 OKBd=PJ|H t|J˅}Yڀ)уt& tt#t.5OKx5OKbp5OKc`5OKdP|~tA5OKae4|xt5OKe OKuQoc(>KXJ[M}ԤJ AAA A"]}ԤJ :JKt t*CCC C" CCC CCCM}ԤJ`y Q?}ԤJC:Juh}ԤJ#E8 U:J<}ԤJ5\IdI \Iű} :J :J$:J(:J,:J0:J4:JỦ\IMы5tI}ԤJkEf8 UfJfsfrfCfBfSufV fCfFS\UEF S\ UEF S`UEFS` UEFFFV[d^u=9J%EPSn<EЃ\I5dI 5\IU|t(Ẹ\IMыtIM@CcdSf0t7KDž|d9|}|@{+|y1ɉME%j$hhhhhDDTT:Ju'Ủ\IMы5tIKdCPC<C$Q:Ju'Ẹ\IMыtIE;KdCPC2C$:Ju'ủ5\IMѡtIOKdCPC+C$KdCPCURS$:Ju'ủ5\IMѡtIw҉U~'ủ5\IMѡtIMCKdUSuv5:JsE@C$ssCC$C j3jjSSUR7 1Ƀ19KKI9{{OK{su3C EKhSSUfufs|C C EfUfS~ʉș{$KM f{|f}ffҍQSxSt=PJt)SSB9TJ}C=PJtj5PJSSBTJjjRI PJ tẸ\IMыtIt#0|ǃ0tjVEx:JKd9}ωS@jjR| t@҉UR|5Iփ|8409OKu SKScdU9Suu9srfCUff[f]fjjrhh+D=9J_%EPS5EЃ@\I5dI 5\IU|hcdSS`KdUSuv5:JEHΉK C$SSUfufs|C C EfUfS~ủ5\IMѡtIt79OKu SYJU9Suu9s )fCUff[ f]fjjrh*=9Jt%EPS4EЃu  \I5dI 5\IU|cdS_KdC@C C$Ủ\IMы5tIt.9OKu SPIE9CuU9S  fsEff[ f]fjjph)UfRfJfZufvfNfGEf@fHf4j(Rut(U$r0 ju(REt: ttw9|J{dcdf9|J{dcd xJ(u4Id,R$)9xJuMCetGcd9JEU؍u؍4VuJ `E؃}v׸cUJRSJMu>wՋMEH9EU:u9OKu0u6dJ(jhhS6|t EURuv6 |=Q~ EI80Ua8xu tt=9Jt hhK\\IdI \IE9|t'ủ5\IMѡtIcdSS[KdỦ\IMы5tIt=9Jt SEcdS \IdI \IE|^cdSZKdỦ\IMы5tIB8[d]E$E9OK RHU:ecd2 KdKd9OKQD[dEU:!=9Ju6VhCEt: ttcdKd Pcd߀Kd@@9OKu0Cd t*9J9J9J9J9J9JcdCd uCd@t0ɋU u>t$F JJȾQEPRRSY9OKU:tH Jȋu16j6` t >BBa€a8a$a %Uu>cd KdKd9OKQB[dUuf>_Dl3JT RVl3JQnuȊ\]^Uf:_]JvQ l3JQSRm{v 1|3J)huhH1KhhH1KurmEUH1KE؈JE؁}vh uh@#J59Jh*hB-JIh h@#Juh*uhB-J9Jh*hB-Ju=9JhhJul :J OK Ad,y$ "hJjj3J 9J5OKK=9Jc:JVhuhJ7=9J7hhKul :J OK AdQ$}hKjjI 9J_5OK_JO=9J:JhuhK=9Jhh8Kuqk :J OK Ady$h8KjjH 9J5OKI=9Jt#:Jthuh8KjcUԋRTuuuWuԋ`U։|}1uuWu貽|}EU|\[^_UWVSMqXx@d=9J\I dI \IËMA\I\8|My8t`}hW|ƃ \IҡtItBVWx \I dI \IË|9uMa\Q?\IҡtItl[^_UWVSu\I dI \I|F\u2N\^8~8t}hWS ;uf\V| \I|ҡtIt]p[^_US]tx:Jup pu fCC fC59JH9J]U#UKXJXJ:J(>K9= :J~5|:JCdu=9Ju =9Jt JJ NOK= :J jSi=:Jt!XJ:J(>K9~ j|:JЃJJPjhΈ 5\IҡtIt7e[^U WVSuV(9V,|$F,)ЍEP5KRPd } wFe@txFetBu'Ft+9F(}NMFt)9F, VLfd'NMFt)9F(Ft+9F,| VIFeFh9FlFl+9F(9F,}Nl+5KfFpfFhFlFh+5KE9Jtaf~pffuFhff f^pf9t VB9Jt 9Jtuf9uFhf9t VAXMfFhff f^p9Jt 9Jt-f%pf=puupf%f=uMVh+9F(9F,5KU9Jt_f~pffuFhff f^pf9t V.A9Jt 9Jtsf9uFhf9t VAVMfFhff f^p9Jt 9Jt-f%pf=puupf%f=uM9JFh+5KE9Jt`f~pffuFhff f^pf9t VK@9Jt 9Jttf9uFhf9t V#@WMfFhff f^p9Jt 9Jt-f%pf=puupf%f=uMf9JtVJF,NNN(e[^_UE=|:Ju |:J1ÐUE9|:Jt Ð|:J= :J~P1UEjС(>KXJOK@(PPP,h :J'scrsavU1ҡ(>KXJ= :J~3jhhh :Jj$¡(>KXJu = :J͉US]119SSJ9CCHSCCKMЉChClCCP3h1K CXPm_C(KKK,SI]UWVS}u =9Jt#OK .9$t9Jw4=9Ju+OK(u@dut*FJ ujh WI)=9Ju =9JtF5:J 9JOK|JhJxJ(P%xJ9|Ju9J:J|J$t" B9$t |Jƀ(xJ$t" 9$t xJƀ(|J(uJd*$?xJ(uJd,P$9J1e[^_US|JP@}1҅}19QQJ9AAHQAAY]ЉAhxJOK |J8uAdt=9Jt5xJ1xJP@}1҅}19QQJ9AAHQAAY]ЉAhxJ@du9Jt P;|J@dt=9Jt hhK4G|JBd uxJ@d u Bd@u@d@t*9J9J9J9J9J9JxJP4xJpd0:JxJ@(XXX,]UWVS}] 0Ã؃;$ h   \ G0G8O4 MD<AM~G4~GWJ GHGPOMP7ZwW}G0w0 < w4G89G4 O8AO4ÃŃ?.$ 𐐐(   4 t    Tpxp 0XG0G8O4 MD<AM~G4w<_G)}1ۅ}19__K9GGH_G w<_G}1ۅ}19__K9GGH_G w<GWa w<G)WE w<1҉Gy19WWJ9GGHWG4 w<1ҋG)y19WWJ9GGHWG 4u"119WWJ9GGHWG 4G@HWw<G+G9~ƋGGEGMAEfGffOf)fMىGPuuS_MY]GPuh1K GXPSGG9G(~G(GG9G,}G,GG9G(rGGzw<G+G9~ƋOhM qMfGffOf)fMSuuIS]]Vuh1K GXPRGh+9G(~G(Gh+9G,}G,Gh+U9G(Gh+Uw<G+G9~ƋOhM qMfGffOf)fMPuuRVuh1K GXPERGh+9G(~G(Gh+9G,}G,Gh+U9G("Gh+U"w<9w}wG)GP7GPRGPG)GP>w<9w}wG)GPGP7QGP7h1K GXPaQG(OOO,ow<G+G9~Vwhh1K GXPQGh+9G(~G(Gh+9G,}G,Gh+9G(~ G(Gh+9G,G,w<OM9Ou)M )E}}EUG}1҅}19WWJ9GGHWGw<FWgw<GWMw<_F}1ۅ}19__K9GGH_G5w<_G}1ۅ}19__K9GGH_G4uGTG\GXEM9O4_0MtG<t 9J %9JG<t=9Jt 9J%%9J4uO<OrO@OsOK@d\I dI \IEOKKl+ 5KfCpf=9Jt9Jt S\)5OKFh+5KE9JthfNpfMffu˷Fhff f^pf9]t V )9Jt 9Jtwf9]uFhf9t V(YMfFhff f^p9Jt 9Jt-f%pf=puupf%f=uMfM \IUҡtI(4gTG\%W< ЉG\GXc4ufgTߋG\%W< ЉG\GX;4u>G`%W<4u"G`%W< ЉG`G0PGPG0e[^_UWVS]u 9OKu (>KXJ9J{0tPFSM>w< v >C+CU9~f{Pf}Kh%H1K%f EfFJt>wۊ< vӀ>vΉ+Ch)ECCh+9C(~C(Ch+9C,}C,+9C(~C(+9C,}C,KhC9CaCCR?$pR R R R R R R R R R R R R R D PPS.2 Ch9+9C(~C(Ch+9C,}C,ChCh+9C(~C(Ch+9C,}C,{~ KeCHCCKPCh+9C(~C(Ch+9C,}C,C)ljChCh+9C(~C(Ch+9C,}C,CS)ЉC9CCCCh+9C(~C(Ch+9C,}C,{}ChCh+9C(~C(뷐Ch+9C,}C,룐SkCh+9C(~C(Ch+9C,}C,{})ChCh+9C(~C(Ch+9C,}C,CC0C4FMCC9ChS/0t^{}P43lE{}4{}4@}0 9v 04CHCP3{}PEsCHCPh1K CXPD{})ChKC({{{,} 9J=:Jt :JHPS e[^_UWVS=9J 9J 9J F0 0ɉM ˁv 9JGJ9JhJJhJ,5hJ5OK=:JCjth\JIj@hJhJ:JPChJ:JPhJ}tSj5:Jh\J/JhJ:J@H)‰:J j5:Jh\JhJ\JJJhJ:J@H)‰:J:J(J .:JhJ\JJ:JhJPPURhJ55KB5hJFxJFtJJhJ]JPlPh5hJvhfhJfBpؾP1ӉhJXhJJ hJAvJJ9JJJJ9JJ1ɐȈJH1KAv=9Jt(h8Kjj>:J+5hJ e[^_U(>KXJ=Iu%OK(uhJ(ujR9JUVS]u M19}B9| B~e[^USM1һ;J𐐍8;Ju D Bv]UE <v%P<v1Ð%\JUSjjhXڱSjjCCP迱ClChC~{$SfC|f}ffCxCtjj@MPt‰84(@MPRIЋ40SChffCp؋]USM9J$`&&&&&|&&&=9Ju Ɓ ƁA$Z=9Jt0Ɓ.=9Ju Ɓ&ƁƁA$ƁA$APAYYYY$Y AAAA YYY(A,A0ATJA\AXAPBA`ƁaAr`AsfYffY|AA$fA~ǁǁǁǁǁ fǁ fǁ1 tAdIdǁ ǁ$Ɓ(ǁ0ǁ8ǁ4Qd9}A@]USEM t%Ѓ`w|3Jl3J1]UVSu19V~WNMPZF)P8+0@)Й@0P< 9VF(NNN,e[^UM8+0@QQ)Й@094u Ð8+0@+A@08Q 1UM894uÐ8+0@A@08Q1No debugger in kernel U WVSEt 59Jƒu 59JƒtU| (>KXJ}u]S!GOK@d E$E;J t%Ut( 8tin=;J|;J=;Jejh 5OKz%;J A=;J4;J;JE;J;JEPA$+𐐨,,***********************,*,,**************,,,*-*-*- -(-0-8-*******@-H-P-EYEZE[E\E]E^E_E`EaEbwEcoEdgEe_EfWEgOEiGEj?Ek7;J};J;J}EEh}u OK@d@tE$ E% OK0BdbdBeJd4<19Z~{OKBEP4z}:W7 OKAE4y}4@E0 9v 04COK9XOK48PEP ?$..H/t//////.d//OK48PL=OK4+0@OOKHʉЋ=OK@ҋ=OK08Wk5OK 5OK5␐1ۡOK9XR COK9Zo1ۡOK9X[RM COK9Z7=;J UQ6OIG}o8MK`,Rt{|p|hE;J ҍT &E;J ҍT E;J ҍT У;JX;J‰;J@=;Jt;J;J#=9JЀ=9Jtр=9Jt=9JuOK@duOK@duEEB#JB t OK@duB tOK@dt}LRw2wtbtittw tItM%9J%9Jv%9Jj%9J^%9JR%9JF:J::J.:J"9J:J 9J=;Je=;JX;J;JnR$3*7$707`5$55T77<77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777H7`76l7x7676*=:J:JOKBdt bdOKHds=:J:JOKBdt bdHOKHd7=:Jp:JOKBdbdBe<19r~aOKBEPz}:WS0 OKAEڋ@}0 9v0FOK9pOK`d<4Hd@(OKxxx,.PXJP@OKHd2=:Jl:JOKBdtbd OKHdOKpd39J0 9J ] h)5 9J 9J 9J 9J 9J 9J9J9J9JS9|BJ J΅}r$)9uE9JawwyxB-JB-J9wC@Ѐ|u9Jjh 5OK 9J9uC@D-J9J9J=9Jt9Jjh 5OK& SwR5OKlC_=9Jtk9J@Ѝ,J9J u ,J@1ɐ |2tD29u \2"A3~jh 5OK =9Jt؍e[^_UE =w  ÐUEH$tBtP( P0 t@(% @0% @(ttUS=9Jtzj59J足tf\I dI \Iu u59J臸 =th59Jͷ\IҡtItj59JI]UEf=@#Jv t $;JPhAUHS]9OKrPSWj@EPQ'+ q+$:<<<<>>><>>>>>>>>>>><<<<<<<>>>><<<<<<>=>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<EEGEOMEE>EEEEEWEEEPU‰S$ :Jt=hJj*{$~:Jt#h8Kj:JthKjj] \IE00E\IЋtItǍ9Jt SC(CCC,MeMe޿M@EPE,E E>EE۬EEEEEPC$P]USM9J؃wC$L>𐐆>>x>`>`>9J1 9J$]U WVS]\IE\I}01ɐD A~C 09JF1ɋ59JBUȉAwD UA~ދ9J1ɐȺD #A~1ɐȺD 7A~ 9J =\I׉}tItNje[^_UWVSuj@VIЃ\IU\I}01ɻ3CA~N 01ɻ ȋ9J@3CA~1ɻ#9JȺ3CA~1ɻ7Ⱥ3CA~ 9J JVFLVMF=\I׉}tItze[^_UWVS}u 1ɐ$;Jt)9"$;J1"$;J8t 981t1A?vȉ4e[^_%02x UVSu1ې3PhTA1+Cu hZA+?~֍e[^U S\IE\I9JEEHEHEHEH 9JEH 9JEX fffffU\IҡtIt谈]UVSM\IE\I]59JA fffAfffQfffAfff=9JuA f f A ff f9J\IҡtItÇe[^U WVSM t~tEE EM Ⱥ]S119M~IƃU׉U}t]ˋE1 Uʊ1 EA9MG~URFM߈Ⱥe[^_U(S]{$ J{$~ 8KKCe@t]{pus$EPY{pus$EPD{pus$EP,{pus$EPs$EPCpC$P 1Cr9|Cs9~Cr9C$ C$H9uD*B~ԋ9Jt]Sj PEPq S]UVSMfy|}fA|fy~}fA~Adt8Q|AH9~ fqfNfq|Q~A H9fq fNfq~Q|qC9~fKfY|Q~YY$C9~fKfY~A|9d;Ju A~9h;JtEIdA~y$QfA|f}ffAtAd%`=`uQte[^UVSMu +Йy9Q~> u B9QЍe[^UVSM ʋE+Ћ]{J| 9 uJyЍe[^UWVSu11Ft9wU9vE9rG=PJPJA tω+~FH9u PJ G9]wPJ+~9N~; u A9N9N29s  PJ PJD8+9F(~F(+9F,}F,+9F(~F(+9F,}F,e[^_UVSuFe@Ft9u'9uPJV`vtV9F_vtVËFt+~FDXFt+~@FPJ PJ@Nd 4FtƒPJPJ@Nd F(VVV,1ې@|tcTU_4y LfW>RO|+L1M9tM9}9g@UR]܃|t!\M)QutIEÉ]E@Jft G$hE}ӉEؙ}EE}UMI<JtuF&u]y ]ԋ] fg$G$tE0E@&tE [v?,~6fO$EUB&tE,09v*0"E0MA&tE LJ0=p;Jt% p;Jup;Jdh^r W(|( 4KuSuuuW th ^WudWV͐GuF&h'jXW } hI^WV'EG%t=E܋]y ]9,} ,U܋M90~0G%t#w EX@UыWo G ËUZ@MWfo] )(|(H?Ke[^_wdintr: timeout waiting for statusreverting to non-multi sector modehard errorsoft eccwdintr: read intr arrived earlywdintr: read error detected latesoft errorUWVSJtEJUMM}J|||u#u+DpURJEH<}G< ȉE4JFh'jV }h}bVWN ~CURJut  uFF%t#VthbVuzdž, F$u N$F%tMA,I$dFtJ}JD| D8hbVuUB,J$hbVu MA$%=*}<J0 ]9}<} 90~} 0 EF$X~:F$u4F$u MA&u}J<F6fF$f fu&fFf$N$URJRf$MIJ}9{u G@CU9S uBC Myt yAG UBCMAy89C uC URJF My4)ljy8VǀJNǀJfFu+(|(!4K}JVWYe[^_wdopenwdopn1wdopn2UWVS}fM  wu;Jt 4Ju F @J|uDff$~$}^$jhhjS~$|h"hvkN$FhSIЋ48<@ D$H(hdJh;Jjh\SLPuWhQqÀf$4h)hv؍[^_wdcontrol: wdcommand failedwdcontrol: recal failedwdcontrolUWVS}W<G< ‹Js C<t <t?vJjjjjjSth~i$C1Cu SHtUhiSW Ct SCvJD|uG,O$(vJChiҤe[^_wd(%d,%d): disk aSLEEP wd(%d,%d): disk is BUSY UWVSu}^F!@K%EC%EEC%EEC%EEC%EEC%EE=u=It1vvhjS %lu wddump: timeout waiting to to give commandwddump: timeout waiting for DRQ%ld wddump: timeout waiting for statuswddump: extra DRQ, or errorU@WVS}#Bu ÉUЃF JMt8;Jt+u~~"LU؍R]؋\ u  I MԋEԋM14E8uDEUUԋMЋuLE܍@UL2Mu˃=0>K|E0>K9E} =;Jt ;Jjjjjjjuu%h'jPu uut=hgs^hsQhsEh t9xEH$E0>K}VE}~Lș}E؉ؙ}Uԉ9ut})׍ MuF$LUR|tl]9}eM+MQuLE@t0UUԃM9t$)߅tsuRShs EЍ9E|ؙ}щƉș}ؙ}j0WRQVuhsuj7 Mu$ctjjE%Pjjj5I5<1Kqjh'jXu-uF%t E%IV޹o"E%IUR޹foEMu ]} PhsMOjNh'jPu[uF]>}1e[^_wd%d: %s: badblkuncorrid_crcno_idaborttr000no_dambusyrdywrtfltseekdonedrqecc_corindexerrwd%d: status %b error %b UVSM] uuVshbx 0LfA>@t CPjVhQQhmxCPhxCPshxJe[^US]E S RJ\IЋtItQ hI \IC @J]UWVS]1sh'jS Th'uTh'jPSv…tVC<tTe[^_UWVS}\I hI \IEJt1}<Jt)ju j֍7JP譯Ju׋M \IUҡtItPe[^_Last time I say: interrupt timeout. Probably a portable PC.interrupt timeoutUWVSu\I hI \Iǀ~t^NuYJ=JuhzVJJh{Sjs SbWSfCK$s5JJVh{= =\IҡtItOe[^_wdunwedge failedUS]1ɐJt9tB9Cu z~BA~h GSu>jjjjjSu'h'jPS2 uS)u1h{Sjs]UWVS}U UWUuj輅G94J , removable, cmd16, cmd%d, intr, accel, drq%d, ovlap, idma, dma, iordis, iordy wdc%d: unit %d: unknown ATAPI protocol=%d wdc%d: unit %d: unknown ATAPI type=%d wdc%d: ATAPI streaming tapes not supported yet wdc%d: ATAPI optical disks not supported yet U@WVSMI<Ku uZ Eăj(uVEă6PEj]SEă.PESVu uh},MĀ9} h}u]Ċt.uh}YOMĊPh}=]Ċtt :t1OCh}O.h}OMĊPh}GtgG$<ugO]Cc t h}MĀyc} h}]Cct h}yMAct h}]Cct h}Qh}DfMf]_M D9gLJ,G 9rZ49sO O]ĊC$VSy|Cu#VS}STƐVSe[^atapi%d.%d: controller not ready for cmd atapi%d.%d: start UWVSu] C2C1>{tȉjP} sFPhˋNC0cUA0MMMCCMMFtsFPh1e[^_mchgaborteomilibusyreadyfaultopdonedrqcorrcheckatapi%d.%d: invalid command phase, ireason=0x%x, status=%b, error=%b UWVSE@u2@t '11ۅ~GM ʃʃ‹M Q1A1% à tj t u1NM A0EBˆQ2hЌI2QhE @1PWM qE@Phe[^_atapi%d.%d: send cmd %s %x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x UWVS] U:EBtECƋMfoUBtoCPCPCPCPCPCPCPCPCPCPC PC PC PC PC PCPPPsMAPh+e[^_atapi%d: stray interrupt USE@<KCuCPh(81PS S|1]atapi%d.%d: %s res.code 0x%x st 0x%x err 0x%x LBA %d cnt %d UVSu] {(uCfC%PC PC2PC1PC0Pj(PsFPhe[^atapi%d.%d: controller not ready, status=%b, error=%b atapi%d.%d: intr ireason=0x%x, len=%d, status=%b, error=%b atapi%d.%d: unknown phase atapi%d.%d: no cmd drq atapi%d.%d: invalid data direction U$WVS] jEPE܃}LUC1UBC2C0hЌS2RhK1QsuvVh/C}?C1M AC2M MffMuEff MuȉM܈EUBt1hЌK2Qhs1V}WusBPhf$E$S1%E܃ w5$$PPPPPPpPsURRhCC0C1usMIQhC0Su{~suvVSE9}SC0{ߋE‹s fof{ff}fEf9s>UUܐ1UffEfMf9Mrfuf}?Ɖs foEC C{}s}WhՐ=C0E9C}[C0{tESщ‹{ fmfCfEfUf9sM M䐋UffEfMf9Mrfsfuf}fE׉щ‹{ fmEC )CFC1!tSuC0/{}C0 {~C0ss IC01e[^_atapi%d.%d: req cb %x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x len=%d UhA6hY.ho&hhhhȟhҟnPhjztztPEzt h /hŚ"]Warning, opening track %d at %d UVSE`}uSV&u!MCPEx81](v(19}G9|UU{0 u*UtuUC8$hEtUyS0S4C0Et8u3S= datalen %x %s data phase miss %s pio read timeout U WVSuEV(U:ˀUUMAM} }EM~bUf؅uU$<tCJ9r@)tU싎KUfm}FPhԗe[^_%s pio write timeout U WVS]C(E芓9UEЋUEUBUMMu uO~~UuvUff=w^E Mu)tUNuMUfoE{CPh蹖e[^_%s xfer tout UWVSEx(Ut _:_E91}~vWUMUEE9uKUuKۋEPh)EtËM F E F؉M}_E:Ee[^_UWVS}w(FE˃tCKjSW?t=JC@=JC3S/t@S,PPCJJPSh\Ph,跋1e[^UE4JzUEu P%s short of memory UWVSu} udžjjjdà uPh&.jdSIЉ{ sC CC؍e[^_USEtjP ؅u]UVSu1ېSV%C~jVu1 Ve[^%s: scsi bus hangup UWVSu\I=hI =\IE1ۋtBt FBFMF]tp M]ð^MV~ F8G<G$]ǃGt^j ]SIЋMƁ^Ɓ NFMN F$ F@Gtr}t1t7F@>JFF$F@GOGtWBuQg[tGGF(F)F*G\F+G[F,F8FJFF$F@$BFBFBF B F$R V@~@F@F@F offset %d period 0x%x chip(0x%x) %d.%d M/sUWVS]KME1CC8C\w)CD8C[r!tKCMt}MWuSQ@CYPuWVs EPhO|,}t" 1u 1RPh'| hB|1e[^_UVSu] N~<FAu~<vF<9F<FAVB =tNw==VC)x9C$r|jjnC xu VaQ@ C(C)C*C+C,C85Q@ C(C)C*C+C8 jjVF<e[^unexpected msg rejectcmd rejectedidentify msg rejectedsynchrnous msg rejected%s: %s US]CtNS4tt *"{P} {Pu {QuQPh *zK$]%s: illegal msg[0x%x] UWVSuE UU~9F targ 0x%x nexus 0x%x discs %d %s(%d:%d) ph<%s> msgptr %x msg[0] %x status %x tflags %x msgout %x emsgout %x ti_omsglen %x flags %b datalen %x dataaddr %x cmdlen %x cmdaddr %x cmd[0] %x odatalen %xbusyparitymsgerrpdmaerrtimeoutabortfatalerror flags %b UWVS}] ut^ VSPh%/uM1҅tVC04L>JRs PhTtsC8PC@Ps?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc  !"#$%&'()0123456789@ABCDEFGHIPQRSTUVWXY`abcdefghipqrstuvwxy0123456789abcdefghijklmnopqrstuvwxyzUWVSUM ]u}ڃىUM UM1}ډڃكډjQRuuqt؃ڍe[^_%d.%d.%d.%dUE PE PE PEPhhJ>sJUEU 8t 8t@1UWVSUM ]u}ڃىUM UM1}ىكۃىURSQuuEUt؃ڍe[^_UWVS]uEM 9M}7)MKMDKf ‹MfKAMM 9M|ӋMKMfKe[^_UhWVSu} }u7}u1>JU1uEԉE؃}(M1y9}wu%9uv }tU2zMMЍUU̍M܉Mȉuԉ}fEUUfMfMfUfUMMfUfUfMfMUUԋUU؋MMfUfUfMfMUUfMfMfUfUEf}M}MqUB1fE]MI 1Ӊ]MI 1MI 1փ}t1ɉUMMUUQfM щM؉EMfyJ+UUMfyuMEUfzt+]x MfYKy+UMȍ QMEUrwEv}~&uUURu7uUJRŨR#EMfIfMщUMIMUMfQfDQftQf9]u (% 1uӉNjE 9v!O]wU׉ 9w1]~;E؋UBM Y))֋Uf4Bu)KȋUMQ)֋Uf4QutDO1]~0MىMUJMYЉEƋUMf4QKыUMf4QUMfJUVS>JÉЍBB BC))х >Jȍe[^UVSU u]M9s%0uB9r)Ѝe[^UMEU 9s 8u@9r)‰USUM Ӏ;t B:uABu؋]UUM Bu1ÐA8tA)‰USMU ˊt BAu؋]UUЀ:t @8u)USU] M C)‰C8uBtIu1]UVSuUt$] CAuJtAJuJue[^UjUMRQU MRQUURUMRQU MRQaEUUWVSu} jjjà u1Ns{ jjhC ujS&1$JtJXJCJ؍e[^_Intel 82371 (Triton) Bus-master IDE controllerU} 0t1ø UWVS]} Jj S;%Jj@S'ƃJf})W t jj@t jjf}&W  t jj@t jj(?K< ,?K 0?K 4?K8?KLe[^_piix>JUMU Jt9P u9Htuwd82371: too many segments UWVS}EX1ɋJPEtEu E % ˸)9rf)fDf|DE )fLAE E % ‰Uw~4TUT9UuDE=wft0~fdEftfLA~ hb )u g %E%M E}u0UU$1e[^_UE JH1҅t US]S#JC1҅t$ȋ]USE1ɋJX1҅t%tttȋ]U0 0  1 81 d1 1 1 1 2@2l222 23"H3 -x3 63 A3 K 4 U<4 ah4 m4 z445D5p55 55 6L6x66 66(7+T767C7P7]8078001@1l11112H2t2222$3T33334D4p4444 5L5x5555(6T6666707\777PXdTF0!d"PN|"RR"CE(#ST#NMT CL 0PL 0RE!@RR"CE(#ST#SLRR"CE(#ST#ER#CE(#ST#+02822x334 4 5l7p`:cd966000 0D1D@18l1 81(81`81729H2Dt2\;2p;2|;2}$3;T3D3D3D3D4DD4Dp4l=4$B4B4| 5L5 Cx5PC5p7C5D5xC(6DT6D6D6D7D07D\7D8x01K:00/0D1D@1/l191(81`81721H2H4t262P72;27$3;T3D3D3D3D4DD4Dp4;4;4;4| 5L5 Cx5PC58785D5xC(6p:T6:6;6;7;07}\7D7;8x?K<00D#0D1D@1\#l1H(1(81`8172(&H2&t2p'2'2)2}$3)T3D3D3D3D4DD4Dp4)4)4)4| 5L5 Cx5PC5'7)5D5xC(6T)T6)6)6)7)07}\7D8xd>Kx=F@X0|GGGG> ?=KxCopyright (c) 1992-1998 FreeBSD Inc. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. w`?(xzL{d{{{D||{|l|Z|%x`d%8XvTX\|С]X\tRLc(bX,00xPTP,x l̥dAP%%w %% D|\HpsdGKKp%̆% NRRW\DO^O%@\W%D |_%lXDPx\PT  P (TW^S Tl%PFdc,L@Ld0pL@b%%%%%%%%N1;21H2H4t262P72;27$3;T3;3;3;3;4;D4;p4;4;4;4} 5}L58x5858785H:5}(6p:T6:6;6;7;07}\7}8x7;t3K@];Zx0Nm<[y1On!#$%&'()-0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{}~Ͼ󨷵ǎԐѥ噞᷵ǎԐѥ???????????????????????????????? !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~?Ѫ?????????????????????????????յݯ????  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@`4P,Nbmsdos. .. 00j0`1@1(l11@112|H2t202<2H2x$3TT3\3334xD4\p44T4 4X 5XL5x554755`(6T6|68x$Ktc2^^p e4pL dee,2X@ǯ4hW bb4hy4h, |(@d0j4hH4h,NH4h!H4 t%8&4h.mH4h,nH4hH@E`f4hXK  X}E(D@2T^(@AAA==(A*mmmmm1(0  1ZZ'wbK0"0ѦjA +0 !SѥZeN#ΤS:{b*K(ܣ*ģ*79+N[7[)[Zۢ[â?J,{/UKD 1H?סD= $j&JI4 L>_)%ٟC˟?(YN;&&)GEt?K&(F  XROKOD?O:)$!: !!!ӱ!ϱ!ϱ!!!!OO!_xJ&(@\\P,p# H ~~0~L~d~8x~! #?>~*&N>*>N>6^>>>^>6^>>>^*>>*>>.n>>>>*>n>6^>>>^>6^>>>^&66.66&n666>.>nN^^n^^nN^^^~n~N>6^>>>^>6^>>>^>6^>>>^>>>>>>>~>>>>>>~*>>*>>.n>>>>*>n>>>>>>>~>>>>>>~N^^n^^nN^^^~n~NΊΞΊ        @    !     !@xxxy@{#{{\%l&(*+zufs00@S0|1|@1T}l1}1}1P12\,H2/t2222,9$3T33303Ē4@D4p4ė4x44P 5hRL5Px585C755(6T6666707<\7758x/K {00/0;1;@1/l1Ȟ1}1P12|H2t262P72;2,9$3;T3;3;3;3;4;D4;p4;4;4;4P 5hRL5Px58587855(6p:T6:6;6;6;707}\77;8xx/K|00D#0)1)@1\#l11}1P12<H2`t2p'2'2)2,9$3)T3)3)3)3)4)D4)p4)4)4)4P 5hRL5Px585'7)55(6T)T6)6)6)6)707}\78xJ};>#{{ @l&(*+@@PmfsMFS Filesystem goes here 08^6  ]]6`/Z /tmp/mnt_xx<T 08]]6  ]]6`/Z<TU ^6 h  WUdWA]]6`]6`]6gs[JAU]6`]6`]6dSfU]6U]6`]6 (08@HPXpAY]6`]6`]6[3!sY6sY6`]6)Q!sY6sY6`]6m!sY6sY6`]6. !Y6Y6`]6 W!Y6Y6`]6 x6!Y6Y6`]6 3y:$!Y6Y6`]6 i^!sY6sY6`]6 64!Y6Y6`]62/!Y6Y6`]62lz!Y6Y6`]6m!Y6Y6`]6G!Y6Y6`]6D!Y6Y6`]6ʱ!Y6Y6`]6j)!Y6Y6`]6am!Y6Y6`]6}P!Y6Y6`]6!q!!Y6Y6`]6!Y6Y6`]6~!Y6Y6`]6+R!Y6Y6`]6 V!Y6Y6`]6 ~1!Y6Y6`]6 Fhd!Y6Y6`]6 j}U!Y6Y6`]6 }8!Y6Y6`]6v N!Y6Y6`]67~b!Y6Y6`]6-!Y6Y6`]6ҡQ!Y6Y6`]6"!Y6Y6`]6D@!Y6Y6`]6(B!Y6Y6`]6Uo!Y6Y6`]6zRs!Y6Y6`]6aRj!Y6Y6`]6 a!Y6Y6`]6>^!Y6Y6`]6NE!Y6Y6`]6!Y6Y6`]6#v!Y6Y6`]60_!Y6Y6`]6qj!Y6Y6`]6dAU]6U]6`]6Gs\A []6^6^6K<|AZ]6`]6`]6)# Z]6Z]6`]6{ 'B 5'B 5`]6h]F555`]6p#8 &B 5&B 5`]6xZza&B 5&B 5`]6t #rp 66`]6ooV&B 5&B 5`]6~+Dx6Dx6`]6 YjTY4Y4`]6~ Y, &B 5&B 5`]6qd Y4Y4`]6"Y4Y4`]6U%B 5%B 5`]6-OxY4Y4`]6 t 55`]6p1%B 5%B 5`]6I8Y4Y4`]6jC7NY4Y4`]6 +E!=[4=[4`]6,AU]6`]6`]6%!AU]6`]6`]6GgQU]6U]6`]6V1jU]6U]6`]6sYgJ V]6V]6`]6 (08@H=yRAV]6`]6`]6yZDPV]6V]6`]6v%V]6V]6`]6nV]6V]6`]6!y(9V]6V]6`]6}YWSfV]6V]6`]6pg'kV]6V]6`]6.3KAV]6`]6`]6OAV]6`]6`]6L AV]6`]6`]6PLzV]6V]6`]6(xIV]6V]6`]6)pzV]6V]6`]608?[&V]6V]6`]6?uV]6V]6`]6.OKOAV]6`]6`]6/,AV]6`]6`]6@)#ZV]6V]6`]6A&/rV]6V]6`]6B.2V]6V]6`]6HF UaR+V]6V]6`]6PX` f+V]6V]6`]6fL3G V]6V]6`]6g fV]6V]6`]6h~vAZ]6`]6`]6ixh9&66`]6pxj_766`]6?L5L5`]6nYjL5L5`]6^h L5L5`]6O'L5L5`]6 2oxL5L5`]6yPQ-"66`]6` L5L5`]6N] L5L5`]6rUxL5L5`]6 2Mq66`]6IJL5L5`]6 Al! L5L5`]6h@ L5L5`]6kSW L5L5`]6% L5L5`]6\Q8 cL5L5`]6'NAV]6`]6`]6ϭAV]6`]6`]6nW]6W]6`]6    ( 0 8 @ H P X ` E'rAV]6`]6`]6f(V]6V]6`]6 YxV]6V]6`]6    ( 0 8 @ H P X aMV]6V]6`]6 W]6W]6`]6L,m`T]6T]6a]6    ( 0 8 @ YVvAZ]6a]6a]6eF4F4a]6qC7{\6{\6a]6NZ]6Z]6a]6IMA[]6a]6a]6UnEx6Ex6a]68SKEx6Ex6a]6&>Ob8\Ex6Ex6a]6/BLWEx6Ex6a]6 Lz1Ex6Ex6a]6 p"'Ex6Ex6a]6(0Ex6Ex6a]68@HPX`hpxIuA[]6a]6a]6~fw6w6a]6͌hZw6w6a]62/3 >3w6w6a]6q6Ow6w6a]6 2{\w6w6a]6/JOw6w6a]6(p1"w6w6a]6 (08@HPH#!^6^6^6SYTeEqjѷ"9TlX*U=. 'H?%Z"~|-Ŗ(({~里|V3SW:wpxd[ni\:1~-Y`p6l`0|-2chMe QSQcT!:rD"wvRQ{!8g=$p4j ^LFGt*.t5x~*Z*vHbҾ(W"p#A(_bH2bv<ΨM|4iH22: l0џK^{KAX6),9o  4exQaS~9Z{hB8!M|&o&mު)Ȇ}e9+RBT=Z(wY>ErMcg+ByyXMh\/GJiE*q*h+căN1drfoϖ 6 )1i&rIvNX 6 -tzF2F`B hl*cB>@vh"Z1 ph6I ys5X.s5 |B }lo"zy #Nc%:!BkF$]fzCkHH`Jev, 1\Qqy|>'dEe֙$* p9B r [CVW=S@nUAq q-k@pT`/'`QCTHRe @ ?L\'yg„ܪ8yNa? @F]D3i0gT>A>aq,!  G&98z,v7zchTp:K'_Gwm) h;jH}P",3M_( Oi0kV-8I1 KS #Jy,28#^#8ɥIpO+JRoʋQM/AeOu0ofWT qy̝6[$5Zdnh ~hAX 66\ hXC'r(RoYtsD כIEDupTb 9ǎ`\J!aT+RQDXeF&j{*:Q!@ EJ;[dEup2~ åKMh,7`zP)詇u>v-P[Q gH#6*3tRsKTF8'!,h"RHڲ.No@}F248E(͸ttypd?ttype@ttypfAttypgBttyphCttypiDttypjEttypkFttyplGttypmHttypnIttypoJttyppKttypqLttyprMttypsNttyptOttypuPPttypvQ ...R . ..Shelp͜g PAO help.ja_JPI18N  boot.help boot_crunch shfind pwd sysinstallnewfsgzipcpiobad144fsckifconfigroute mount_nfsgunzipzcat -shpccarddpccardc etctexts texts.ja_JP@symbolsS .R ..T COPYRIGHT.hlpU usage.hlpVtcp.hlpW slice.hlpX shortcuts.hlpY pccard.hlpZ register.hlp[ partition.hlp\ options.hlp]network_device.hlp^ media.hlp_html.hlp` fixit.hlpa drives.hlpbdistributions.hlpc configure.hlpd anonftp.hlpe usermgmt.hlpf\i18n.hlp . .. etc devQ mntRstand# $Id: COPYRIGHT,v 1.1.8.1 1998/09/13 23:08:58 brian Exp $ # @(#)COPYRIGHT 8.2 (Berkeley) 3/21/94 All of the documentation and software included in the 4.4BSD and 4.4BSD-Lite Releases is copyrighted by The Regents of the University of California. Copyright 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by the University of California, Berkeley and its contributors. 4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The Institute of Electrical and Electronics Engineers and the American National Standards Committee X3, on Information Processing Systems have given us permission to reprint portions of their documentation. In the following statement, the phrase ``this text'' refers to portions of the system documentation. Portions of this text are reprinted and reproduced in electronic form in the second BSD Networking Software Release, from IEEE Std 1003.1-1988, IEEE Standard Portable Operating System Interface for Computer Environments (POSIX), copyright C 1988 by the Institute of Electrical and Electronics Engineers, Inc. In the event of any discrepancy between these versions and the original IEEE Standard, the original IEEE Standard is the referee document. In the following statement, the phrase ``This material'' refers to portions of the system documentation. This material is reproduced with permission from American National Standards Committee X3, on Information Processing Systems. Computer and Business Equipment Manufacturers Association (CBEMA), 311 First St., NW, Suite 500, Washington, DC 20001-2178. The developmental work of Programming Language C was completed by the X3J11 Technical Committee. The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of the Regents of the University of California. # PC-card sample configuration file # Tatsumi Hosokawa # # Removing all IRQ conflicts from this file can't be done because of some # IRQ-selfish PC-cards. So if you want to use some of these cards in # your machine, you will be forced to modify their IRQ parameters from # the following list. # # $Id: pccard.conf.sample,v 1.1.1.1.2.10.2.6.2.21.2.11 1999/01/10 10:11:45 toshi Exp $ # Generally available IO ports io 0x240-0x2e0 0x300-0x360 # Generally available IRQs (DEPRECATED, USE OF THE OPTION IS DISCOURAGED) #irq 10 11 # Unavailable IRQs #ignirq 9 # refrain from using SoundBlaster's IRQ, by default. ignirq 5 # it may be helful for most of notebook PCs #ignirq 15 # Available memory slots memory 0xd4000 96k #----------------------------------------------------------------------- # Were not for special reasons, please add new entries at the top of # this file when you wrote new entries for unsupported cards. # And, if you succeed using new unsupported cards, please e-mail me # the new entries. # Tatsumi Hosokawa #----------------------------------------------------------------------- # ......... for unsupported cards ......... #----------------------------------------------------------------------- # Fast Ethernet Cards #----------------------------------------------------------------------- # PLANEX (PLANET) FNW-3600-T card "Fast Ethernet" "Adapter" config 0x1 "ed0" any insert echo PLANEX FNW-3600-T inserted insert /etc/pccard_ether $device remove echo PLANEX FNW-3600-T removed remove /etc/pccard_ether_remove $device # Laneed LD-10/100CD card "Laneed" "LD-10/100CD" config default "ed0" any insert echo Laneed LD-10/100CD inserted insert /etc/pccard_ether $device remove echo Laneed LD-10/100CD removed remove /etc/pccard_ether_remove $device # Linksys EtherFast 10/100 PC Card (NE2000 Compatible) card "Linksys" "EtherFast 10/100 PC Card \(PCMPC100\)" config default "ed0" any insert echo Linksys EtherFast 10/100 inserted insert /etc/pccard_ether $device remove echo Linksys EtherFast 10/100 removed remove /etc/pccard_ether_remove $device # Logitec LPM-LN100TX 100BASE-TX Ethernet LAN CARD card "Logitec" "LPM-LN100TX" config default "ed0" any insert echo Logitec LPM-LN100TX Ethernet inserted insert /etc/pccard_ether $device remove echo Logitec LPM-LN100TX Ethernet removed remove /etc/pccard_ether_remove $device # BayNetworks NETGEAR FA410TXC Fast Ethernet card "NETGEAR" "FA410TX" "Fast Ethernet" config default "ed0" any insert echo NETGEAR FA410TX inserted insert /etc/pccard_ether $device remove echo NETGEAR FA410TX removed remove /etc/pccard_ether_remove $device # Telecom Device SuperSocket RE550T card "Telecom Device K\.K\." "SuperSocket RE550T" config default "ed0" any insert echo Telecom Device SuperSocket RE550T inserted insert /etc/pccard_ether $device remove echo Telecom Device SuperSocket RE550T removed remove /etc/pccard_ether_remove $device # ONTEC LN-2221 10/100 Ethernet Adapter card "ONTEC & SMC" "LN-2221 Ethernet PCCard" config default "sn0" any insert echo ONTEC LN-2221 Ethernet inserted insert /etc/pccard_ether $device remove echo ONTEC LN-2221 Ethernet removed remove /etc/pccard_ether_remove $device # COREGA FastEther PCC-TX card "corega K.K." "corega FastEther PCC-TX" config default "ed0" any insert echo corega FastEther PCC-TX inserted insert /etc/pccard_ether $device remove echo corega FastEther PCC-TX removed remove /etc/pccard_ether_remove $device # I/O DATA PCET/TX card "IO DATA" "PCETTX" config default "ed0" any insert echo IODATA PCETTX inserted insert /etc/pccard_ether $device remove echo IODATA PCETTX removed remove /etc/pccard_ether_remove $device #----------------------------------------------------------------------- # Ethernet Cards #----------------------------------------------------------------------- #IBM PCMCIA Ethernet I/II, RIOS PC CARD II ETHERNET card "IBM Corp\." "Ethernet" config default "ed0" any ether 0xff0 # 08:00:5a 00:04:ac 00:06:29 insert echo IBM PCMCIA Ethernet inserted insert /etc/pccard_ether $device remove echo IBM PCMCIA Ethernet removed remove /etc/pccard_ether_remove $device # Planet Smart COM 2000, Melco LPC-T card "PCMCIA" "UE2212" config default "ed0" any 0x10 ether 0xff0 00:00:e8 insert echo UE2212 inserted insert /etc/pccard_ether $device remove echo UE2212 card removed remove /etc/pccard_ether_remove $device # Accton EN2212 card "ACCTON" "EN2212" config default "ed0" any 0x30 ether 0xff0 00:00:e8 insert echo Accton EN2212 inserted insert /etc/pccard_ether $device remove echo Accton EN2212 removed remove /etc/pccard_ether_remove $device # Planet Communications Ethernet Card ENW-3501-T card "IC-CARD+" "IC-CARD+" config default "ed0" any 0x10 insert echo Planet ENW-3501-T inserted insert /etc/pccard_ether $device remove echo Planet ENW-3501-T removed remove /etc/pccard_ether_remove $device # Planet Smart COM 3500, IC-Card Ethernet, SYSCOM SC100 Ethernet Card card "IC-CARD" "IC-CARD" config default "ed0" any 0x20 # config default "ed0" any 0x10 insert echo Planet Smart Com 3500 inserted insert /etc/pccard_ether $device remove echo Planet Smart Com 3500 removed remove /etc/pccard_ether_remove $device # 3Com Etherlink III 3C589, 3C589B, 3C589C, 3C589D card "3Com Corporation" "3C589" config default "ep0" any insert echo 3Com Etherlink III inserted insert /etc/pccard_ether $device remove echo 3Com Etherlink III removed remove /etc/pccard_ether_remove $device # 3Com Megahertz 3CXE589ET card "3Com" "Megahertz 589E" config default "ep0" any insert echo 3Com Megahertz 3C589E inserted insert /etc/pccard_ether $device remove echo 3Com Megahertz 3C589E removed remove /etc/pccard_ether_remove $device # Farallon EtherMac card "Farallon" "ENet" config default "ep0" any insert echo Farallon EtherMac inserted insert /etc/pccard_ether $device remove echo Farallon EtherMac removed remove /etc/pccard_ether_remove $device # Fujitsu FMV-J181 card "PCMCIA MBH10302" "01" config 0xc "fe0" any insert echo Fujitsu FMV-J181 inserted insert /etc/pccard_ether $device remove echo Fujitsu FMV-J181 removed remove /etc/pccard_ether_remove $device # NextCom J Link NC5310 card "NextComK\.K\." "NC5310 Ver1\.0.*" config 0x14 "fe0" any # config 0x1a "fe0" any insert echo NextCom J Link NC5310 inserted insert /etc/pccard_ether $device remove echo NextCom J Link NC5310 removed remove /etc/pccard_ether_remove $device # HITACHI HT-4840-11 card "HITACHI" "HT-4840-11" config 0x1a "fe0" any insert echo HT-4840-11 inserted insert /etc/pccard_ether $device remove echo HT-4840-11 removed remove /etc/pccard_ether_remove $device # CONTEC C-NET(PC)C Ethernet card "CONTEC Co\.,Ltd\." "C-NET\(PC\)C.*" config default "fe0" any ether 0x58 00:80:4c insert echo CONTEC C-NET inserted insert /etc/pccard_ether $device remove echo CONTEC C-NET removed remove /etc/pccard_ether_remove $device # TDK LAC-CD021, LAC-CD021A card "TDK" "LAC-CD02x" config default "fe0" any # These cards have same ID strings, and different MAC address # locations. ether 0x92 00:80:98 # LAC-CD021, LAC-021A ether 0x96 00:80:98 # LAC-CD021BX insert echo TDK LAC-CD021 inserted insert /etc/pccard_ether $device remove echo TDK LAC-CD021 removed remove /etc/pccard_ether_remove $device # Fujitsu FMV-J182, FMV-J182A card "FUJITSU" "LAN Card\(FMV-J182\)" config 0x32 "fe0" any # These cards have same ID strings, and different MAC address # locations. ether 0xf2c 00:00:0e #FMV-J182 ether 0x1cc 00:00:0e #FMV-J182A insert echo Fujitsu FMV-J182 insert /etc/pccard_ether $device remove echo Fujitsu FMV-J182 remove /etc/pccard_ether_remove $device # Megahertz X-Jack Ethernet CC10BT/2 card "Megahertz" "CC10BT/2" config default "sn0" any ether attr2hex 00:00:86 insert echo X-Jack Ethernet inserted insert /etc/pccard_ether $device remove echo X-Jack Ethernet removed remove /etc/pccard_ether_remove $device # Megahertz Ethernet Adapter card "Megahertz" "ETHERNET ADAPTOR" config default "sn0" any ether attr2hex 00:00:86 insert echo Megahertz Ethernet inserted insert /etc/pccard_ether $device remove echo Megahertz Ethernet removed remove /etc/pccard_ether_remove $device # Dayna Communications CommuniCard E card "Dayna Communications, Inc\." "CommuniCard E" config default "ed0" any 0x10 ether 0x110 00:80:19 insert echo Dayna CommuniCard inserted insert /etc/pccard_ether $device remove echo Dayna CommuniCard remove remove /etc/pccard_ether_remove $device # GVC NIC-2000P Ethernet Card card "GVC" "NIC-2000p" config default "ed0" any 0x10 insert echo GVC NIC-200P inserted insert /etc/pccard_ether $device remove echo GVC NIC-200P removed remove /etc/pccard_ether_remove $device # No-brand NE-2000 compatible card card "PCMCIA" "ETHERNET V1.0" config default "ed0" any 0x10 ether 0xff0 # MAC address field should be filled insert echo PCMCIA ETHERNET V1.0 inserted insert /etc/pccard_ether $device remove echo PCMCIA ETHERNET V1.0 removed remove /etc/pccard_ether_remove $device # Eiger Labs Ethernet COMBO card "EIGER Labs Inc\." "Ethernet COMBO Card" config default "ed0" any 0x10 insert echo Eiger Labs Ethernet COMBO inserted insert /etc/pccard_ether $device remove echo Eiger Labs Ethernet COMBO inserted remove /etc/pccard_ether_remove $device # D-Link DE-650 Ethernet Card card "D-Link" "DE-650" config default "ed0" any 0x10 # New models of DE650 has no ether MAC address definition in CIS tupples. # If you have an older one, please uncomment the following line. # ether 0x40 00:80:c8 insert echo D-link DE-650 inserted insert /etc/pccard_ether $device remove echo D-link DE-650 removed remove /etc/pccard_ether_remove $device # National Semiconductor InfoMover 4100 card "National Semiconductor" "InfoMover 4100" config default "ed0" any ether 0xff0 08:00:17 insert echo National Semiconductor InfoMover inserted insert /etc/pccard_ether $device remove echo National Semiconductor InfoMover removed remove /etc/pccard_ether_remove $device # Accton EN2216 EtherCard card "ACCTON" "EN2216-PCMCIA-ETHERNET" config 0x22 "ed0" any 0x10 ether 0x1c0 00:00:e8 insert /etc/pccard_ether $device insert echo Accton EN2216 inserted remove /etc/pccard_ether_remove $device remove echo Accton EN2216 removed # Accton UE2216 Ethernet OEM card "PCMCIA" "PCMCIA-ETHERNET-CARD" config 0x22 "ed0" any 0x10 ether 0x1c0 00:00:e8 insert echo UE2216 Ethernet inserted insert /etc/pccard_ether $device remove echo UE2216 Ethernet removed remove /etc/pccard_ether_remove $device # NDC Instant-Link card "NDC" "Ethernet" config default "ed0" any 0x30 insert echo NDC Instant-Link insert /etc/pccard_ether $device remove echo NDC Instant-Link remove /etc/pccard_ether_remove $device #Laneed PCMCIA Ethernet card. ELECOM LD-CDWA (DP83902A) card "MACNICA" "ME1-JEIDA" config default "ed0" any ether 0xb8 08:00:42 insert echo MACNICA PCMCIA Ethernet inserted insert /etc/pccard_ether $device remove echo MACNICA PCMCIA Ethernet removed remove /etc/pccard_ether_remove $device # Digital DEPCM-BA Ethernet card "DIGITAL" "DEPCM-XX" config default "ed0" any 0x10 insert echo Digital DEPCM-BA Ethernet inserted insert /etc/pccard_ether $device remove echo Digital DEPCM-BA Ethernet removed remove /etc/pccard_ether_remove $device # Matsushita Electric Industrial Co.,LTD. CF-VEL211P-B card "Matsushita Electric Industrial Co.,LTD." "CF-VEL211" config default "ed0" any ether 0xff0 00:80:45 insert echo Panasonic CF-VEL211 inserted insert /etc/pccard_ether $device remove echo Panasonic CF-VEL211 removed remove /etc/pccard_ether_remove $device # ADDTRON EP-210A card "EP-210 PCMCIA LAN CARD\." ".*" config default "ed0" any 0x10 ether 0x110 00:40:33 insert echo ADDTRON EP-210A inserted insert /etc/pccard_ether $device remove echo ADDTRON EP-210A removed remove /etc/pccard_ether_remove $device # PreMax PE-200 Ethernet Card card "PMX " "PE-200" config default "ed0" any 0x10 ether 0x7f0 00:20:e0 insert echo PREMAX PE-200 inserted insert /etc/pccard_ether $device remove echo PREMAX PE-200 removed remove /etc/pccard_ether_remove $device # No-brand NE2000 compatible card (FCC ID: LXLC1LANTB) card " " "Ethernet Combo card" config default "ed0" any 0x10 insert echo NE2000 compatible card inserted insert /etc/pccard_ether $device remove echo NE2000 compatible card removed remove /etc/pccard_ether_remove $device # RATOC REX-5588 (now testing...) card "PCMCIA LAN MBH10304 ES" " 01" # Kouji Yamamoto reported that # following entry worked with his REX-5588, but the card I borrowed # has no such config index on CIS tupple. Minor version problem? # # config 0x3a "fe0" 5 # ether 0x328 00:c0:d0 # # I tried to drive it by following entry on my DHU II, but it does # not work! # # config 0x1f "fe0" any config 0x3a "fe0" any # config 0x38 "fe0" any ether 0x32c 00:c0:d0 # many minor revs.... ether 0x328 00:c0:d0 ether 0x200 00:c0:d0 insert echo RATOC REX-5588 Ethernet inserted insert /etc/pccard_ether $device remove echo RATOC REX-5588 Ethernet removed remove /etc/pccard_ether_remove $device # SCM Ethernet Combo (*Not SMC :-)*) card "SCM" "Ethernet Combo card" config default "ed0" any 0x10 ether 0xff0 00:20:cb insert echo SCM Ethernet card inserted insert /etc/pccard_ether $device remove echo SCM Ethernet card removed remove /etc/pccard_ether_remove $device # Linksys Combo PCMCIA Ethernet Card card "LINKSYS" "E-CARD" config default "ed0" any 0x10 insert echo PCMCIA ETHERNET V1.0 inserted insert /etc/pccard_ether $device remove echo PCMCIA ETHERNET V1.0 removed remove /etc/pccard_ether_remove $device # Linksys Combo PCMCIA Ethernet Card card "Linksys" "Combo PCMCIA EthernetCard \(EC2T\)" config default "ed0" any 0x10 insert echo Linksys PCMCIA Ethernet inserted insert /etc/pccard_ether $device remove echo Linksys PCMCIA Ethernet removed remove /etc/pccard_ether_remove $device # I/O DATA PCLA/T card "I-O DATA" "PCLA" config default "ed0" any 0x10 ether 0x1c0 00:a0:b0 ether 0xff0 00:a0:b0 insert echo I-O DATA PCLA/T Ethernet inserted insert /etc/pccard_ether $device remove echo I-O DATA PCLA/T Ethernet removed remove /etc/pccard_ether_remove $device # I/O DATA PCLA/TE card "IO DATA" "PCLATE" config default "ed0" any 0x10 insert echo I-O DATA PCLA/TE Ethernet inserted insert /etc/pccard_ether $device remove echo I-O DATA PCLA/TE Ethernet removed remove /etc/pccard_ether_remove $device # Fujitsu Towa LA501 Ethernet card "FUJITSU TOWA" "LA501" config 0x29 "fe1" any 0x10 ether 0x332 00:00:0e insert echo Fujitsu Towa LA501 Ethernet inserted insert /etc/pccard_ether $device remove echo Fujitsu Towa LA501 Ethernet removed remove /etc/pccard_ether_remove $device # Grey Cell GCS2220 Ethernet Card card "Grey Cell" "GCS2220" config default "ed0" any 0x10 insert echo Grey Cell GCS2220 inserted insert /etc/pccard_ether $device remove echo Grey Cell GCS2220 removed remove /etc/pccard_ether_remove $device # Epson EEN10B Ethernet Card card "Seiko Epson Corp\." "Ethernet" config default "ed0" any 0x10 ether 0xff0 00:00:48 insert echo Epson EEN10B Ethernet Card inserted insert /etc/pccard_ether $device remove echo Epson EEN10B Ethernet Card removed remove /etc/pccard_ether_remove $device # COREGA Ethernet Card card "Corega,K.K." "(Ethernet LAN Card)" config default "ed0" any ether 0xff0 00:00:f4 insert echo Corega,K.K. Ethernet LAN Card inserted insert /etc/pccard_ether $device remove echo Corega,K.K. Ethernet LAN Card removed remove /etc/pccard_ether_remove $device # COREGA Ether PCC-T card "corega K.K." "corega Ether PCC-T" config default "ed0" any insert echo corega Ether PCC-T inserted insert /etc/pccard_ether $device remove echo corega Ether PCC-T removed remove /etc/pccard_ether_remove $device # Telecom Device SuperSocket RE450T card "Ethernet" "Adapter" config 0x3 "ed0" any # There's another minor revision of this card that has no MAC address in # CIS tupple. This revision does not require "ether" definition. If you # have it, please comment out the following line. ether 0x110 00:e0:98 # Please note that if the log message says that the MAC address of the # card is 00:00:00:00:00:00, please uncomment the "ether" definition again # and set it to proper value. insert echo Telecom Device SuperSocket RE450T inserted insert /etc/pccard_ether $device remove echo Telecom Device SuperSocket RE450T removed remove /etc/pccard_ether_remove $device # Telecom Device SuperSocket RE450T card "Telecom Device K.K." "SuperSocket RE450T" config default "ed0" any insert echo Telecom Device SuperSocket RE450T inserted insert /etc/pccard_ether $device remove echo Telecom Device SuperSocket RE450T removed remove /etc/pccard_ether_remove $device # RPTI EP401 Ethernet NE2000 compatible card "RPTI" "EP401 Ethernet NE2000 Compatible" config default "ed0" any insert echo RPTI EP401 Ethernet inserted insert /etc/pccard_ether $device remove echo RPTI EP401 Ethernet removed remove /etc/pccard_ether_remove $device # Nihon Unisys, Ltd. JPF0400-LAN card "Nihon Unisys, Ltd." "JPF0400-LAN" config default "ed0" any ether 0xff0 00:80:45 insert echo Nihon Unisys JPF0400-LAN inserted insert /etc/pccard_ether $device remove echo Nihon Unisys JPF0400-LAN removed remove /etc/pccard_ether_remove $device # Nihon Unisys, Ltd. JPF0400-ETH card "Nihon Unisys, Ltd." "JPF0400-ETH" config default "ed0" any ether 0xff0 00:80:45 insert echo Nihon Unisys JPF0400-ETH inserted insert /etc/pccard_ether $device remove echo Nihon Unisys JPF0400-ETH removed remove /etc/pccard_ether_remove $device # SURECOM EtherPerfect EP-427 Adapter card "TAMARACK" "Ethernet" config default "ed0" any ether attr2hex 00:47:43 insert echo SURECOM EtherPerfect EP-427 inserted insert /etc/pccard_ether $device remove echo SURECOM EtherPerfect EP-427 removed remove /etc/pccard_ether_remove $device # RATOC REX-R280 card "RATOC System Inc\." "10BASE_T CARD R280" config 0x3a "fe0" any ether 0x1fc 00:c0:d0 insert echo RATOC REX-R280 10BASE-T LAN card inserted insert /etc/pccard_ether $device remove echo RATOC REX-R280 10BASE-T LAN card removed remove /etc/pccard_ether_remove $device # D-Link DE-660 Ethernet Card card "D-Link" "DE-660" config default "ed0" any 0x10 insert echo D-link DE-660 inserted insert /etc/pccard_ether $device remove echo D-link DE-660 removed remove /etc/pccard_ether_remove $device # D-Link DFE-650 Ethernet Card card "D-Link" "DFE-650" config default "ed0" any 0x10 insert echo D-link DFE-650 inserted insert /etc/pccard_ether $device remove echo D-link DFE-650 removed remove /etc/pccard_ether_remove $device # Allied Telesis Ethernet Card card "Allied Telesis,K\.K" "Ethernet LAN Card" config default "ed0" any 0x10 ether 0xff0 00:00:f4 insert echo Allied Telesis Ethernet Card inserted insert /etc/pccard_ether $device remove echo Allied Telesis Ethernet Card removed remove /etc/pccard_ether_remove $device # Toshiba Joho System PTJ-LAN/T card "TJ" "Ethernet" config default "ed0" any 0x10 insert echo TJ Ethernet card inserted insert /etc/pccard_ether $device remove echo TJ Ethernet card removed remove /etc/pccard_ether_remove $device # NextCom Next Hawk Etherneet Adapter card "NextCom K.K." "Next Hawk" config default "ed0" any insert echo NextCom Next Hawk Ethernet inserted insert /etc/pccard_ether $device remove echo NextCom Next Hawk Ethernet removed remove /etc/pccard_ether_remove $device # Logitec LPM-LN20T card "Logitec" "LPM-LN20T" config default "ed0" any insert echo Logitec LPM-LN20T inserted insert /etc/pccard_ether $device insert echo Logitec LPM-LN20T removed remove /etc/pccard_ether_remove $device # CentreCOM LA-PCM V2 card "Allied Telesis, K\.K\." "CentreCOM LA-PCM_V2" config 0x20 "ed0" any 0x10 insert echo CentreCOM LA-PCM V2 inserted insert /etc/pccard_ether $device remove echo CentreCOM LA-PCM V2 removed remove /etc/pccard_ether_remove $device # Map Japan MPL-972 card "2408LAN" "Ethernet" config default "ed0" any insert echo 2408LAN inserted insert /etc/pccard_ether $device remove echo 2408LAN removed remove /etc/pccard_ether_remove $device # EXPsys PCMCIA Ethernet Combo, Relia PCMCIA Ethernet card "PCMCIA LAN" "Ethernet" config default "ed0" any insert echo PCMCIA LAN Ethernet inserted insert /etc/pccard_ether $device remove echo PCMCIA LAN Ethernet removed remove /etc/pccard_ether_remove $device # CyQ've ELA-010 10BASE-T LAN Card card "CyQ've" "ELA-010" config default "ed0" any 0x10 insert echo CyQ\'ve ELA-010 LAN card inserted insert /etc/pccard_ether $device remove echo CyQ\'ve ELA-010 LAN card removed remove /etc/pccard_ether_remove $device # Billionton LNT-10TB card "Billionton" "LNT-10TB" config 0x20 "ed0" any insert echo Billionton LNT-10TB inserted. insert /etc/pccard_ether $device remove echo Billionton LNT-10TB removed. remove /etc/pccard_ether_remove $device # MELCO LPC2-T card "MELCO" "LPC2-T" config default "ed0" any insert echo MELCO LPC2-T inserted insert /etc/pccard_ether $device remove echo MELCO LPC2-T removed remove /etc/pccard_ether_remove $device # CNet PCMCIA PowerNIC CN40BC(BT) card "CNet" "CN40BC Ethernet" config default "ed0" any 0x10 insert echo CNet CN40BC inserted insert /etc/pccard_ether $device remove echo CNet CN40BC removed remove /etc/pccard_ether_remove $device # Kingston KNE-PCM/x Ethernet card "Kingston Technology Corp\." "EtheRx PC Card Ethernet.*" config default "ed0" any ether 0xff0 00:c0:f0 insert echo Kingston KNE-PCM/x Ethernet inserted insert /etc/pccard_ether $device remove echo Kingston KNE-PCM/x Ethernet removed remove /etc/pccard_ether_remove $device #----------------------------------------------------------------------- # Modem Cards #----------------------------------------------------------------------- # Most of modem cards does not match these definitions. Please read # "wildcard entries" listed at the end of this file. #----------------------------------------------------------------------- # Omron MD24XCA FAX/Data Modem card "OMRON Corp\." "MD24XCA" config 0x23 "sio2" pio reset 10000 insert echo OMRON MD24XCA Modem inserted remove echo OMRON MD24XCA Modem removed # US Robotics Sportster PCMCIA V.34 # US Robotics COURIER PCMCIA V.34 card "USRobotics" "PCMCIA 28800.*" config 0x3 "sio2" any insert echo USRobotics PCMCIA Modem inserted remove echo USRobotics PCMCIA Modem removed # TDK 28.8K modem series card "TDK" "DF2814.*" config 0x33 "sio2" any reset 1000 insert echo TDK 28.8K modem inserted remove echo TDK 28.8K modem removed # TDK 33.6K modem series (1) # (don't put this entry under "(2)") card "TDK" "DF3314E DATA/FAX MODEM" config 0x23 "sio2" any reset 1000 insert echo TDK 33.6K modem inserted remove echo TDK 33.6K modem removed # TDK 33.6K modem series (2) card "TDK" "DF3314.*" config 0x33 "sio2" any reset 1000 insert echo TDK 33.6K modem inserted remove echo TDK 33.6K modem removed # MEGASOFT STARFAX CARD 288 card "MEGASOFT Inc\." "SFI-.*" config 0x33 "sio2" any reset 1000 insert echo MEGASOFT STARFAX CARD inserted remove echo MEGASOFT STARFAX CARD removed # Lasat Credit 288, V34 Data/Fax Modem card "LASAT COMMUNICATIONS A/S" "LASAT CREDIT 288" config 0x18 "sio2" any insert echo LASAT Modem inserted remove echo LASAT Modem removed # Microcom Travelcard 28.8 FAX/Modem card "MICROCOM, Inc\." "TRAVELCARD 28\.8P DATA/FAX MODEM" config 0x33 "sio2" any insert echo Microcom Modem inserted remove echo Microcom Modem removed # Motorola Marine multifunction card (as modem) card "Motorola, Inc\." "MARINER MODEM/FAX/LAN" config 0x35 "sio2" any insert echo Microcom Modem inserted remove echo Microcom Modem removed # MOTOROLA 28.8K modem card "Motorola" "MONTANA*" config 0x23 "sio1" any reset 1000 insert echo Motorola 28.8K modem inserted remove echo Motorola 28.8k modem removed # Fujitsu 14.4K modem FMV-JMD713 card "FUJITSU" "FC14F*" config 0x24 "sio2" any insert echo Fujitsu FMV-JMD713 inserted remove echo Fujitsu FMV-JMD713 removed # Fujitsu 28.8K modem FMV-JMD911 card "FUJITSU" "FC28F*" config 0x22 "sio1" any insert echo Fujitsu FMV-JMD911 inserted remove echo Fujitsu FMV-JMD911 removed # PCMCIA MAKER FM5600-LJ DataFax card "PCMCIA MAKER" "FM5600-LJ DataFax" config default "sio2" any reset 100 insert echo PCMCIA MAKER 56K modem inserted remove echo PCMCIA MAKER 56K modem removed # Xircom CreditCard Ethernet 10/100+ Modem 56 (as modem) card "Xircom" "CreditCard Ethernet" config 0x27 "sio2" any insert echo Xircom CEM56 Card inserted as Modem remove echo Xircom CEM56 Card removed # TDK V.90/K56flex modem DF5633EX card "TDK" "DF5633E/J MODEM" config 0x5 "sio1" any reset 1000 insert echo TDK V.90/K56flex modem inserted remove echo TDK V.90/K56flex modem removed # IO-DATA V.90/K56flex FAX/Modem PCML-560 card "IO DATA DEVICE,INC\." "DATA&FAX MODEM PCML560" config 0x5 "sio2" any insert echo IO DATA V.90 Modem PCML560 inserted remove echo IO DATA V.90 Modem PCML560 removed #----------------------------------------------------------------------- # ISDN Serial Cards #----------------------------------------------------------------------- # BUG Linkboy D64K (ISDN) card "BUG Inc\." "Linkboy D64K" config 0x23 "sio2" any insert echo BUG Linkboy D64K inserted remove echo BUG Linkboy D64K removed # BUG Linkboy D128 (ISDN) card "B\.U\.G\.,Inc\." "Linkboy D128" # choose one line. # config default "sio0" any # config 0x21 "sio1" any # config 0x22 "sio2" any config 0x23 "sio3" any reset 1000 insert echo BUG Linkboy D128 inserted remove echo BUG Linkboy D128 removed # IO DATA PCINS2128 card "IO DATA DEVICE,INC." "PCINS2128" config 0x33 "sio2" any insert echo IO DATA PCINS2128 inserted remove echo IO DATA PCINS2128 removed # NEC AtermIC20 card "NEC" "Aterm IC20 " config 0x12 "sio2" any insert echo NEC Aterm IC20 inserted remove echo NEC Aterm IC20 removed # NTT-IT ThunderCard card "NTT Intelligent Technology Co., Ltd." "ThunderCard DD128" config 0x22 "sio2" any 0x80 reset 1000 insert echo Thunder-card inserted remove echo Thunder-card removed # TDK DN1280 card "TDK" "DN1280" config 0x22 "sio2" any reset 1000 insert echo TDK ISDN Adapter DN1280 inserted remove echo TDK ISDN Adapter DN1280 removed #----------------------------------------------------------------------- # Digital Cellular Cards #----------------------------------------------------------------------- # NTT DoCoMo DATA/FAX Adapter card "NTT DoCoMo" "PCMCIA DATA/FAX.*" config 0x22 "sio3" any 0x82 insert echo NTT DoCoMo DATA/FAX Adapter inserted remove echo NTT DoCoMo DATA/FAX Adapter removed # NTT DoCoMo MFCard96F1 card "NTT DoCoMo" "MFCard96F1" config 0x20 "sio3" any insert echo NTT DoCoMo MFCard96F1 Adapter inserted remove echo NTT DoCoMo MFCard96F1 Adapter removed # NTT DoCoMo Mobile D Card 96P1 card "NTT DoCoMo" "Mobile D Card 96P1" config 0x22 "sio3" any 0x82 insert echo NTT DoCoMo Mobile D Card 96P1 Adapter inserted remove echo NTT DoCoMo Mobile D Card 96P1 Adapter removed #----------------------------------------------------------------------- # PHS Digital Communication Cards #----------------------------------------------------------------------- # ASTEL 32kbps Data card XN-11 card "ASTEL" "32kbps Data card" config 0x11 "sio3" any insert echo ASTEL 32kbps Data card inserted remove echo ASTEL 32kbps Data card removed # ASTEL 32kbps Data Fax card XN-12 card "ASTEL" "32kbps Data Fax card" config 0x11 "sio3" any insert echo ASTEL 32kbps Data Fax card inserted remove echo ASTEL 32kbps Data Fax card removed # FUJITSU PHS CARD FMV-J931 card "FUJITSU" "MC32F " config 0x22 "sio3" any insert echo FUJITSU PHS CARD FMV-J931 inserted remove echo FUJITSU PHS CARD FMV-J931 removed # NTT Personal Paldio DataFAX Card DC-2S card "NTT Personal" "Paldio DataFAX Card" "DC-2S" config 0x22 "sio3" any insert echo NTT Personal Paldio DataFAX Card DC-2S inserted remove echo NTT Personal Paldio DataFAX Card DC-2S removed # NTT Personal Paldio DataFax Card card "NTT Personal" "Paldio DataFAX Card" config 0x13 "sio3" any insert echo NTT Personal Paldio DataFax Card inserted remove echo NTT Personal Paldio DataFax Card removed # NTT Personal Paldio Data Card DC-1N card "NTT Personal" "Paldio Data Card" "DC-1N" config 0x13 "sio3" any insert echo NTT Personal Paldio Data Card DC-1N inserted remove echo NTT Personal Paldio Data Card DC-1N removed # NTT Personal Paldio Data Card DC-1S card "NTT Personal" "Paldio Data Card" "DC-1S" config 0x22 "sio3" any insert echo NTT Personal Paldio Data Card DC-1S inserted remove echo NTT Personal Paldio Data Card DC-1S removed # NTT Personal Paldio Data/Fax Card DC-1S card "NTT Personal" "Paldio Data/Fax Card" "DC-1S" config 0x22 "sio3" any 0x40000 insert echo NTT Personal Paldio Data/Fax Card DC-1S inserted remove echo NTT Personal Paldio Data/Fax Card DC-1S removed # other NTT Personal Paldio Data Cards (may need some changes on "config" line) card "NTT Personal" "Paldio Data Card" config 0x22 "sio3" any insert echo NTT Personal Paldio Data Card inserted remove echo NTT Personal Paldio Data Card removed # NTT DoCoMo (formerly NTT Personal) Paldio 321S card "NTT Personal" "32K Paldio 321S PC CARD" config 0x22 "sio2" any 0x40000 insert echo NTT Personal Paldio 321S PC Card inserted remove echo NTT Personal Paldio 321S PC Card removed # SII PHS Two LINK DATA MC-P110/TD card "SII" "PHS Two LINK DATA MC-P110/TD" config 0x22 "sio2" any insert echo PHS Two LINK DATA Card inserted remove echo PHS Two LINK DATA Card removed # SII PHS DATA LINK MC-P100 card "SII" "PHS DATA LINK" config 0x22 "sio3" any insert echo SII PHS DATA LINK MC-P100 inserted remove echo SII PHS DATA LINK MC-P100 removed # Intel EtherExpress(TM) PRO/100 LAN/Modem PC Card Adapter (as modem) card "Intel" "EtherExpress\(TM\) PRO/100 LAN/Modem PC Card Adapter" config 0x1f "sio2" any insert echo Intel EtherExpress PRO/100 LAN/Modem as Modem remove echo Intel EtherExpress PRO/100 LAN/Modem # KYOEI CO., LTD. SHURIKEN FAX MODEM S-336FM card "KYOEI CO., LTD." "S-336FM" config 0x23 "sio2" any reset 1000 insert echo KYOEI SHURIKEN MODEM inserted remove echo KYOEI SHURIKEN MODEM removed # KYOCERA DataScope DS-320 card "KYOCERA" "DATA MODEM" config 0x20 "sio2" any insert echo KYOCERA DATA MODEM Adapter inserted remove echo KYOCERA DATA MODEM Adapter removed #----------------------------------------------------------------------- # Misc. Serial Cards #----------------------------------------------------------------------- # Panasonic FM-RADIO card card "Panasonic" "CF-JVR101" config 0x22 "sio3" pio insert echo Panasonic FM radio card inserted remove echo Panasonic FM radio card removed # SONY GPS card card "SONY PACY" "CNV10 Ver\.1\.0" config 0x22 "sio3" any insert echo SONY GPS card inserted remove echo SONY GPS card removed # SRC-230 card "CTI" "SRC-230" config 0x5 "sio2" any insert echo SRC-230 inserted remove echo SRC-230 removed # RATOC REX-5056 Serial Interface card card "RATOC System,Inc\." "REX5056 RS232C PC Card" config 0x2c "sio2" any reset 1000 # safety reset time insert echo RATOC Serial Card inserted remove echo RATOC Serial Card removed #----------------------------------------------------------------------- # SCSI Cards #----------------------------------------------------------------------- # Adaptec SlimSCSI card "Adaptec, Inc\." "APA-1460.*" config default "aic0" any insert echo Adaptec Slim SCSI inserted remove echo Adaptec Slim SCSI removed # New Media Corporation BASICS SCSI # (Do not put this entry under Bustoaster) card "BASICS by New Media Corporation" "SCSI Sym53C500" config 0x14 "ncv0" any insert echo New Media BASICS SCSI inserted remove echo New Media BASICS SCSI removed # NewMedia Bustoaster SCSI card "New Media" "SCSI" config 0x22 "aic0" any insert echo New Media Bus Toaster inserted remove echo New Media Bus Toaster removed # RATOC REX-5536AM, REX-9836A, ICM PSC-2401 SCSI # (Don't put this entry under REX5535 series!) # There's a buggy revision of this card which has broken CIS tupples. # if you can't use this card, please use the point enabler. (for example, # type "pccardc enabler 0 stg0 -a 0x4140 -i 5" from root command prompt) card "PCMCIA SCSI MBH10404" "01" config 0x37 "stg0" any insert echo REX-5536AM SCSI card inserted remove echo REX-5536AM SCSI card removed # RATOC REX-5535AC, REX-5535X, REX-9835X, REX-9835Z SCSI card "PCMCIA SCSI MBH1040" "01" config 0x3a "spc0" any insert echo REX-5535 SCSI card inserted remove echo REX-5535 SCSI card removed # RATOC REX-5536M card "PCMCIA SCSI2 CARD" "01" config 0x5 "stg0" any 0 insert echo REX-5536M inserted remove echo REX-5536M removed # RATOC REX-5572 (as SCSI only) card "RATOC System Inc\." "SOUND/SCSI2 CARD.*" config default "ncv0" any 0x84d00000 cardio 0x640 0x10 insert echo RATOC SOUND/SCSI2 REX-5572 inserted remove echo RATOC SOUND/SCSI2 REX-5572 removed # RATOC REX-5536, Melco IFC-SC card "1195 RATOC System Inc\." "REX5536 SCSI2 CARD" config 0x7 "stg0" any 0 insert echo REX5536 inserted remove echo REX5536 removed # RATOC REX-9530 card "RATOC System Inc." "SCSI2 CARD.*" config default "ncv0" any 0x84d00000 insert echo RATOC SCSI2 PCMCIA Card inserted remove echo RATOC SCSI2 PCMCIA Card removed # IO DATA PCSC-DV # Macnica Miracle SCSI mPS100 card "MACNICA" "MIRACLE SCSI" "mPS100" "D.0" config 0x11 "ncv0" any 0xb6250000 insert echo Miracle SCSI inserted remove echo Miracle SCSI removed # Macnica Miracle SCSI-II mPS110 card "MACNICA" "MIRACLE SCSI-II mPS110" config 0x15 "ncv0" any 0 insert echo Miracle SCSI-II inserted remove echo Miracle SCSI-II removed # IBM SCSI PCMCIA Card card "IBM Corp\." "SCSI PCMCIA Card" config default "stg0" any insert echo IBM SCSI PCMCIA Card inserted remove echo IBM SCSI PCMCIA Card removed # Future Domain SCSI2GO card "Future Domain Corporation" "SCSI PCMCIA Credit Card Controller" config default "stg0" any insert echo IBM SCSI PCMCIA Card inserted remove echo IBM SCSI PCMCIA Card removed # KME (TAXAN ICD-400PN, etc.) card "KME" "KXLC002" config 0x26 "ncv0" any 0xb4d00000 insert echo KME SCSI PCMCIA Card inserted remove echo KME SCSI PCMCIA Card removed # Qlogic Fast SCSI card "QLOGIC CORPORATION" "pc05" config 0x2f "ncv0" any 0x84d00000 insert echo Qlogic Fast SCSI inserted remove echo Qlogic Fast SCSI removed # Media Intelligent SCSI-2 PC Card MSC-200 card "EPSON" "SCSI-2 PC Card SC200" config 0x12 "ncv0" any insert echo EPSON SCSI-2 PC Card MSC200 inserted remove echo EPSON SCSI-2 PC Card MSC200 removed # NEC PC-9801N-J03R card "NEC" "PC-9801N-J03R" config 0x15 "ncv0" any 0 insert echo PC-9801N-J03R inserted remove echo PC-9801N-J03R removed # WORKBIT Ninja SCSI series card "WBT" "NinjaSCSI-3" config default "nin0" any insert echo Workbit NinjaSCSI-3 inserted remove echo Workbit NinjaSCSI-3 removed #------------------------ untested ---------------------------- #------------------------ untested ---------------------------- # If these entry do not work, try other config index than default. # Please e-mail me whether it works or not. Thanks # Tatsumi Hosokawa card "MIDORI ELECTRONICS.*" "CN-SC43.*" config default "ncv0" any 0x80100000 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org card "EIger Labs" "PCMCIA-to-SCSI Adapter" config default "ncv0" any insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org card "SCSI PCMCIA Adapter Card" ".*" config 0x20 "stg0" any insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org card " SIMPLE TECHNOLOGY Corporation" "SCSI PCMCIA Credit Card Controller" config default "stg0" any insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org card "KME" "KXLC003" config 0x26 "ncv0" any 0xb4d00000 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org #----------------------------------------------------------------------- # ATAPI CD-ROM Cards #----------------------------------------------------------------------- # IO Data CBIDE (bundled with CDP-FX24, etc.) card "WIT" "IDE16" config default "wdc1" any insert echo IO Data CBIDE inserted remove echo IO Data CBIDE removed # DHU Mobile Media CD-ROM # (no hotplug support) card "Digital Equipment Corporation\." "Digital Mobile Media CD-ROM" config 0xb "wdc1" 15 # Caravelle PSC-IDE 6x ATAPI CD-ROM card "Caravelle" "PSC-IDE " config 0x2a "wdc1" any 0x1 insert echo Caravelle PSC-IDE card inserted remove echo Caravelle PSC-IDE card removed # IBM Portable 4X Speed CD-ROM Drive CD-400 card "IBM" "PCMCIA CD-ROM Drive CD-400" config 0x1 "wdc1" any 0x1000 cardio 0x250 0x20 insert echo IBM PCMCIA CD-ROM CD-400 inserted remove echo IBM PCMCIA CD-ROM CD-400 removed # IO Data PCIDEII (bundled with CDP-TX10, etc.) card "IO DATA" "PCIDEII" config default "wdc1" any insert echo IO Data PCIDEII inserted remove echo IO Data PCIDEII removed # IBM CD-20XSeries(IDE PC Card) card "IBM" "PCMCIA Portable CD-ROM Drive" config 0x1 "wdc1" any 0x1000 cardio 0x250 0x20 insert echo IBM CD-20XS inserted remove echo IBM CD-20XS removed # NOVAC Station Series card "PCMCIA" "CD-ROM" config default "wdc1" any insert echo Novac Station CD-ROM inserted remove echo Novac Station CD-ROM removed #----------------------------------------------------------------------- # Flash ATA Cards #----------------------------------------------------------------------- # SunDisk Flash ATA card "SunDisk" ".*" config 0x03 "wdc1" any insert echo SunDisk Flash ATA inserted remove echo SunDisk Flash ATA removed # Midori Elec. Flash ATA card "Midori Elec\." ".*FLASH.*" config 0x03 "wdc1" any insert echo Midori Flash ATA inserted remove echo Midori Flash ATA removed # IO DATA PCMF144/20 (as Flash ATA only) card "IO DATA" "ATA&MODEM" config 0x7 "wdc1" any insert echo IO DATA PCMF144/20 inserted remove echo IO DATA PCMF144/20 removed #----------------------------------------------------------------------- # ATA HDD Cards #----------------------------------------------------------------------- card "Maxtor" "MXL.*" config 0x03 "wdc1" any insert echo Maxtor ATA HDD inserted remove echo Maxtor ATA HDD removed #----------------------------------------------------------------------- # ATA External HDD Adapters #----------------------------------------------------------------------- # Greystone Diskdock card "GREYSTONE PERIPHERAL DISKDOCK" ".*" config default "wdc1" any insert echo Greystone Diskdock inserted remove echo Greystone Diskdock removed # card "INTEGRAL PERIPHERALS" "ATA CARD" config default "wdc1" any insert echo Integral Peripherals inserted remove echo Integral Peripherals removed # DATAFAB PCMMD2 card "DATAFAB" "PCMCIA-TO-IDE" config 0x1 "wdc1" any insert echo DATAFAB PCMMD2 inserted remove echo DATAFAB PCMMD2 removed # PCM250AM 2.5in HDD adapter card "PC CARD MANUFACTURER" "PCMCIA ATA/ATAPI Adapter" config 0xd "wdc1" any insert echo PCM250AM inserted remove echo PCM250AM removed # Sicon Peripheral PCMCIA ATA/ATAPI Adapter card "Sicon Peripheral" "PCMCIA ATA/ATAPI Adapter" config default "wdc1" any insert echo Sicon Peripherals inserted remove echo Sicon Peripherals removed # Microtech XpressDock card "Microtech International Inc\." "IDE PCCARD" config default "wdc1" any 0x2000 cardio 0x170 0x10 insert echo Microtech XpressDock inserted remove echo Microtech XpressDock removed #----------------------------------------------------------------------- # ATAPI LS120 Floppy Disk #----------------------------------------------------------------------- # LK-RM120 card "Panasonic" "LMEK0406" config 0x22 "wdc1" any 0x1 insert echo Panasonic LMEK0406 inserted remove echo Panasonic LMEK0406 removed #----------------------------------------------------------------------- # # Ongoing Projects ---- These entries are for ongoing projects of # our package. Most of these entries do not work. # #----------------------------------------------------------------------- #----------------------------------------------------------------------- # Sound cards #----------------------------------------------------------------------- # RATOC REX-5570 Sound Card card "1195 RATOC System Inc\." "REX5570 SOUND CARD" config default "opl0" any #----------------------------------------------------------------------- # Multifunction cards #----------------------------------------------------------------------- # Multifunction card support is still under development. If you want # to use them as modem only in conservative way, uncomment "modem-only" # definitions, comment-out multifunction definitions, and recompile # pccardd and kernel without MULTIFUNC option. (see # PAO-dir/usr.sbin/pccard/pccardd and PAO config file for details) # Tatsumi Hosokawa # APEX DATA MultiCard (as Modem only) card "APEX DATA" "MULTICARD" config 0xb "sio2" any insert echo APEX DATA MultiCard inserted as Modem remove echo APEX DATA MultiCard removed # Megahertz multifunction card: # The second multifunction definition does not work (under development). # if you want to use this card as modem, uncomment the first one. # Megahertz X-Jack Ethernet/Modem 14.4K (as Modem only) card "Megahertz" "XJEM1144/CCEM1144" config 0x27 "sio2" any insert echo Megahertz X-Jack Multifunction Card inserted as Modem. remove echo Megahertz X-Jack Multifunction Card removed. # Megahertz X-Jack Ethernet/Modem 14.4K #card "MEGAHERTZ" "XJEM1144/CCEM1144" # multifunc # config default "sn0" any # config 0x27 "sio2" shared # insert echo Megahertz X-Jack Multifunction Card inserted # remove echo Megahertz X-Jack Multifunction Card removed # TDK Multifunctioon Card (as Modem) card "TDK" "GlobalNetworker 3410/3412" config default "sio2" any insert echo TDK Multifunction Card inserted as Modem remove echo TDK Multifunction Card removed # Toshiba Modem/LAN card IPC5001B card "TOSHIBA" "Modem/LAN Card" config 0x25 "sio2" any insert echo TOSHIBA IPC5001B Multifunction Card inserted as Modem remove echo TOSHIBA IPC5001B Multifunction Card removed #----------------------------------------------------------------------- # Wireless LAN #----------------------------------------------------------------------- # NCR Wavelan PCMCIA # If you want to use Japanese version, uncomment the second config # line and comment-out the first line. card "NCR" "WaveLAN/PCMCIA" config default "wlp0" any # US version (915MHz) # config default "wlp0" any 0x01 # Japanese version (2.4GHz) ether wavelan insert echo WaveLAN PCMCIA inserted insert /etc/pccard_ether $device remove echo WaveLAN PCMCIA removed remove /etc/pccard_ether_remove $device # AT&T GIS Wavelan PCMCIA # If you want to use Japanese version, uncomment the second config # line and comment-out the first line. card "AT&T" "WaveLAN/PCMCIA" config default "wlp0" any # US version (915MHz) # config default "wlp0" any 0x01 # Japanese version (2.4GHz) ether wavelan insert echo WaveLAN PCMCIA inserted insert /etc/pccard_ether $device remove echo WaveLAN PCMCIA removed remove /etc/pccard_ether_remove $device # Digital RoamAbout/DS card "Digital" "RoamAbout/DS" config default "wlp0" any ether wavelan insert echo Digital RoamAbout/DS inserted insert /etc/pccard_ether $device remove echo Digital RoamAbout/DS removed remove /etc/pccard_ether_remove $device # NetWave AirSurfer # NOTE: For some machines, wait cycle for memory access is required. # you should change "0x40" on the last part of "cardmem" line to "0x44", # like: # cardmem 0xd4000 0x20000 0x9000 0x44 # IBM ThinkPads are known to require this change. card "Xircom" "CreditCard Netwave" config 0x01 "cnw0" any cardmem 0xd4000 0x20000 0x9000 0x40 # config 0x01 "cnw1" any # cardmem 0xdd000 0x20000 0x9000 0x40 ether 0x126 00:80:c7 00:20:d8 insert echo Netwave Ethernet inserted insert /etc/pccard_ether $device remove echo Netwave Ethernet removed remove /etc/pccard_ether_remove $device # Victor M-MOIL CARD card "JVC" "MiniMoil Ethernet Card" config 0x01 "sn0" any insert echo MiniMoil Ethernet inserted insert /etc/pccard_ether $device remove echo MiniMoil Ethernet removed remove /etc/pccard_ether_remove $device #----------------------------------------------------------------------- # Video Capture Cards #----------------------------------------------------------------------- # IBM Smart Capture Card card "IBM Corp\." "Video Capture" config default "scc0" pio cardmem 0xd4000 0x0 0x8000 insert echo Smart Capture Card inserted remove echo Smart Capture Card removed #----------------------------------------------------------------------- # Speech Synthesizer Cards #----------------------------------------------------------------------- # Hitachi microcomputer speech synthesizer card card "HITACHI MICROCOMPUTER SYSTEM LTD." "MSSHVPC02" config default "hss0" pio insert echo Hitachi microcomputer speech synthesizer inserted remove echo Hitachi microcomputer speech synthesizer removed #----------------------------------------------------------------------- # Joystick Port Cards #----------------------------------------------------------------------- card "IO DATA" "PCJOY" config default "joy0" pio # config 0x1 "joy0" pio # config 0x2 "joy0" pio insert echo IO DATA PCJOY inserted remove echo IO DATA PCJOY removed #----------------------------------------------------------------------- # Floppy Drive Cards #----------------------------------------------------------------------- # Libretto floppy drive. card "Y-E DATA" "External FDD" config 0x4 "fdc1" any insert echo Y-E DATA External FDD inserted remove echo Y-E DATA External FDD removed # ------------------------------------------------------------------- # # Experimental ---- If you have one of them, please e-mail me *WHETHER # IT WORKS OR NOT*. I wrote these entries by reading Linux PCMCIA driver # package. I've not tested them. I need results of your experiences. # Especially, if the ed_probe() is succeeded, it does not always mean # that probed MAC address is correct. If you have or if your friend # has these cards, send me the result of the results of # # pccardc dumpcis # and # pccardc rdattr 0 0 1000 (the first 0 means slot number) # # of these cards. I can write more accurate pccard.conf entries if I # can read these result. # # I NEED YOUR HELP!!!! # # Thanks. # # My e-mail address is hosokawa@jp.FreeBSD.org (Tatsumi Hosokawa) # # ------------------------------------------------------------------- #----------------------------------------------------------------------- # Ethernet Cards #----------------------------------------------------------------------- # CNet CN30BC Ethernet Card card "CNet.*" "CN30BC" config default "ed0" any 0x10 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # DataTrek NetCard card "DataTrek\." "NetCard" config default "ed0" any 0x10 ether 0xff0 00:20:e8 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # D-Link DE-650 Ethernet Card card ".*D-Link PC Ethernet Card.*" ".*" config default "ed0" any 0x10 ether 0x40 00:80:c8 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # D-Link DE-650 Ethernet Card card ".*" ".*D-Link PC Ethernet Card.*" config default "ed0" any 0x10 ether 0x40 00:80:c8 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # Edimax Ethernet Combo card "Edimax Technology Inc\." "PCMCIA" config default "ed0" any 0x10 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # EP-210 Ethernet Card card "Ethernet PCMCIA adapter" "EP-210" config default "ed0" any 0x10 ether 0x110 00:40:33 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # Katron PE-520 Ethernet Card card "KCI" "PE520 PCMCIA Ethernet Adapter" config default "ed0" any 0x10 ether 0x110 00:40:f6 insert echo Untested card in`serted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # Linksys Ethernet Card card ".*E-CARD PC Ethernet Card.*" ".*" config default "ed0" any 0x10 insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # Linksys Ethernet Card card ".*" ".*E-CARD PC Ethernet Card.*" config default "ed0" any 0x10 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # Linksys Ethernet Card card "E-CARD" "E-CARD" config default "ed0" any 0x10 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # Maxtech PCN2000 Ethernet card "MAXTECH" "PCN2000" config default "ed0" any 0x10 ether 0x5000 00:00:e8 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # NE2000 Compatible Ethernet Card card "NE2000 Compatible" "PCMCIA" config default "ed0" any 0x10 ether 0xff0 00:a0:0c insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # RPTI EP400 Ethernet Card card "RPTI LTD\." "EP400" config default "ed0" any 0x10 ether 0x110 00:40:95 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # SCM Ethernet Combo card "SCM" "Ethernet Combo card" config default "ed0" any 0x10 ether 0xff0 00:20:cb insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # SMC EliteCard Ethernet card "SMC" "PCM Ethernet Adapter" config default "sn0" any ether attr2hex insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # Socket EA LAN Adapter # This card should not work because of its broken DMA status register, # if you have this card, please fix this bug. card "Socket Communications Inc" "Socket EA PCMCIA LAN.*" # This card has broken CIS tupples # We can't use "default" config 0x1 "ed0" any 0x30 ether 0x4000 00:c0:1b insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # ------------------------------------------------------------------- # # "Wildcard" entries # # ------------------------------------------------------------------- # GENERIC PCMCIA modem function serial config 0x23 "sio2" any # config 0x23 "sio2" pio # alternative definitions # config 0x21 "sio2" any # ......... # config 0x22 "sio2" any # config 0x21 "sio2" pio # config 0x22 "sio2" pio # config 0x23 "sio2" 5 # config 0x21 "sio2" 5 # config 0x22 "sio2" 5 # reset 100 # default reset 1000 # safety reset time # reset 10000 # for unstable cards insert echo PCMCIA Modem inserted remove echo PCMCIA Modem removed # GENERIC Flash ATA / ATA HDD function fixed_disk # config default "wdc1" 15 # config default "wdc1" any # config 0x03 "wdc1" 15 config 0x03 "wdc1" any insert echo Flash ATA / ATA HDD inserted remove echo Flash ATA / ATA HDD removed HOW TO USE THIS SYSTEM ====================== [press the PageDown key to go to the next screen when you finish reading this one] The following keys are recognized in most of the dialogs you'll encounter during this installation: KEY ACTION --- ------ SPACE Select or toggle the current item. ENTER Finish with a menu or item. UP ARROW Move to previous item (or up, in a text display box). DOWN ARROW Move to next item (or down, in a text display box). TAB Move to next item or group. RIGHT ARROW Move to next item or group (same as TAB). SHIFT-TAB Move to previous item or group. LEFT ARROW Move to previous item or group (same as SHIFT-TAB). PAGE UP In text display boxes, scrolls up one page. PAGE DOWN In text display boxes, scrolls down one page. F1 Display associated help text. If you see small "^(-)" or "v(+)" symbols at the edges of a menu, it means that there are more items above or below the current one that aren't being shown (due to insufficient screen space). In text display boxes, the amount of text above the current point will be displayed as a percentage in the lower right corner. Using the Up/Down arrow keys will cause the object to scroll by line. The PageUp and PageDown keys will scroll by entire screens. Selecting OK in a menu will confirm whatever action it's controlling. Selecting Cancel will cancel the operation and generally return you to the previous menu. Note also that "checkbox" menus use SPACE to select their items, not ENTER! Pressing ENTER will leave the menu with either an OK or Cancel status, depending on which button at the bottom is selected, and is probably not what you wanted to do if still selecting options. Remember the spacebar! Most screens obey the Help key (F1) - USE IT! It generally offers useful context-specific hints on what to do at each stage of the installation, and if you're at all unsure about what to do at a given stage in the installation, hit F1! SPECIAL FEATURES: ================= It is possible to select a menu item by typing the first character of its name, if unique. This will generally be an item number. The console driver contains a scroll-back buffer for reviewing things that may have scrolled off the screen. To use scroll-back, press the "Scroll Lock" key on your keyboard and use the arrow or Page Up/Page Down keys to move through the saved text. To leave scroll-back mode, press the Scroll Lock key again. This feature is most useful for reading back through your boot messages (go ahead, try it now!) though it's also useful when dealing with sub-shells or other "wizard modes" that don't use menus and tend to scroll their output off the top of the screen. FreeBSD also supports multiple "virtual consoles" which you can use to in order to have several active sessions at once. Use ALT-F to switch between screens, where `F' is the function key corresponding to the screen you wish to see. By default, the system comes with 3 virtual consoles enabled - you can enable more by editing the /etc/ttys file and turning the "off" field to "on" in the relevant vty entries (up to 12). e latest development snapshot version of PAO can be found at ftp://jaz.jp.FreeBSD.org/pub/FreeBSD-jp/PAO/snap/. If you have any problem with this version, please try to use these snapshots. Let's enjoy mobile computing with FreeBSD! This screen allows you to set up your general network parameters (hostname, domain name, DNS server, etc) as well as the settings for a given interface (which was selected from the menu before this screen). PLIP/SLIP users - please read through to the end of this doc! You can move through the fields with the TAB, BACK-TAB and ENTER keys. To edit a field, use DELETE or BACKSPACE. You may also use ^A (control-A) to go to the beginning of the line, ^E (control-E) to go to the end, ^F (control-F) to go forward a character, ^B (control-B) to go backward one character, ^D (control-D) to delete the character under the cursor and ^K (control-K) to delete to the end of the line. Basically, the standard EMACS motion sequences. The "Extra options to ifconfig" field is kind of special (read: a hack :-): If you're running SLIP or PLIP, you also need to use it for specifying the remote end of the link (simply type the foreign IP address in). In the specific case where you're running PLIP with a Linux host peer rather than a FreeBSD one, you also must add the "-link0" flag after the foreign address. If you're dealing with an ethernet adaptor with multiple media connectors (e.g. AUI, 10BT, 10B2, etc), you can use this field to specify which one to use. The following strings are recognized: "media 10base5/AUI" - Select the AUI port. "media 10baseT/UTP" - Select the twisted pair port. "media 10base2/BNC" - Select the BNC connector. "media 100baseTX" - Select 100BaseT on a 100/10 dual adaptor. When you're done with this form, select OK. user distribution distSetXUser Select X user distribution distSetMinimum Select minimal distribution distSetEverything Select all distributions distSetDES Select DES sub-distributions distSetSrc Select source sub-distributions distSetXF86 Select XFree86 sub-distributions distExtractAll Extract all selected distributions docBrowser Browse documentation installCommit Commit any pending installation operations installExpress Express installation installUpgrade Upgrade installation installFixup Go into "fixit" mode mediaSetCDROM Select CDROM media mediaSetFloppy Select floppy media mediaSetDOS Select DOS media mediaSetTape Select tape media mediaSetFTP Select FTP media mediaSetFTPPassive Select FTP media in passive mode mediaSetUFS Select UFS media mediaSetNFS Select NFS media mediaSetFtpUserPass Prompt for FTP username and password mediaSetCPIOVerbosity Prompt for CPIO verbosity mediaGetType Prompt for media type optionsEditor Go to options editor register Go to registration editor. Examples: /stand/sysinstall mediaSetFTP configPackages Selects an FTP site and then goes to the package configuration menu. /stand/sysinstall disk=sd0 diskPartitionEditor Invokes the disk partition editor on disk sd0. If /stand/sysinstall is linked to another filename, say `/usr/local/bin/configPackages', then the basename will be used as an implicit command name. This is the Main Slice (``FDISK'' or PC-style Partition) Editor. Possible commands are printed at the bottom and the Master Boot Record contents are shown at the top. You can move up and down with the arrow keys and (C)reate a new slice whenever the highlighted selection bar is over a slice whose type is marked as "unused." You are expected to leave this screen with at least one slice marked "FreeBSD." Note that unlike Linux, you don't need to create multiple FreeBSD FDISK partition entries for different things like swap, file systems, etc. The usual convention is to create ONE FreeBSD slice (FDISK partition) per drive and then subsection this slice into swap and file systems with the Label editor. No actual changes will be made to the disk until you (C)ommit from the Install menu or use the (W)rite option here! You're working with what is essentially a copy of the disk label(s), both here and in the Label Editor. If you want to use the entire disk for FreeBSD, type `A'. You'll be asked whether or not you wish to keep the disk (potentially) compatible with other operating systems, i.e. the information in the FDISK table should be kept valid. If you select the default of `Yes', slices will be aligned to fictitious cylinder boundaries and space will be reserved in front of the FreeBSD slice for a [future] possible boot manager. For the truly dedicated disk case, you can select `No' at the compatibility prompt. In that case, all BIOS geometry considerations will no longer be in effect and you can safely ignore any ``The detected geometry is invalid'' warning messages you may later see. It is also not necessary in this case to set a slice bootable or install an MBR boot manager as both things are then irrelevant. The FreeBSD slice will start at absolute sector 0 of the disk (so that FreeBSD's disk label is identical to the Master Boot Record) and extend to the very last sector of the disk medium. Needless to say, such a disk cannot have any sort of a boot manager, `disk manager', or anything else that has to interact with the BIOS. This option is therefore only considered safe for SCSI disks and most IDE disks and is primarily intended for people who are going to set up a dedicated FreeBSD server or workstation, not a typical `home PC'. The flags field has the following legend: '=' -- This slice is properly aligned. '>' -- This slice doesn't end before cylinder 1024 'R' -- This slice contains the root (/) filesystem 'B' -- Slice employs BAD144 bad-spot handling 'C' -- This is the FreeBSD 2.0-compatibility slice (default) 'A' -- This slice is marked active. If you select a slice for Bad144 handling, it will be scanned for bad blocks before any new filesystems are made on it. If no slice is marked Active, you will need to either install a Boot Manager (the option for which will be presented later in the installation) or set one Active before leaving this screen. To leave the slice editor, type `Q'. Which binary to run for the HTML browser. The full pathname to the main executable in Browser Package Media Type: Which media type is being used. This is mostly informational and indicates which media type (if any) was last selected in the Media menu. It's also a convenient short-cut to the media menu itself. Package Temp: Where package temporary files should go Some packages, like emacs, can use a LOT of temporary space - up to 20 or 30MB. If you are going to configure a small / directory (and hence a small /tmp) then you may wish to set this to point at another location (say, /usr/tmp). Use Defaults: Use default values. Reset all options back to their default values. /stand/sysinstall now supports command-line "shortcuts" which can often replace outdated commands, like pkg_manage. Multiple commands can be invoked in sequence, and variables may be set on-the-fly to customize the installation program's behavior in various ways. Syntax: /stand/sysinstall [var=value ..] [command ..] Where "var" can be one or more of: blanktime Screen blank time setting in seconds bootManager Select boot manager: booteasy, standard or none browserBinary Which doc browser to use (default: lynx) browserPackage Which package to get browser from (default: lynx) cpioVerbose How verbose to be with cpio: high, medium or low debug Extra debugging? disk Which disk to operate on (wd0, sd0, etc). domainname Domain name editor Which screen editor to use ifconfig_ For each in network_devices ftpDirectory Root of the FreeBSD distribution tree on FTP server ftpOnError Set to retry or abort ftpPass Which password to use when logging into FTP server ftp Which FTP site/dir to use (URL ftp://site/dir/..) ftpPort Which FTP port to use (default: 21) ftpRetryCount How many times to retry a fetch operation ftpUser Which username to use when logging into FTP server ftpHost Which FTP hostname to use (overrides ftp variable) gated Use gated instead of routed defaultrouter IP address of default route geometry Geometry to use for selected disk ("cyl/hd/sec") hostname Fully qualified domain name for host. network_interfaces Which network interfaces to configure ipaddr IP address for this host's primary interface nameserver IP address of name server netmask Netmask for this host's primary interface nfs Full host:/path/ specification to NFS media nfsHost Host portion of nfs path nfsSecure Use NFS secure mount (-P flag) nfs_server Configure this machine as an NFS server noConfirm Don't ask for confirmation on non-fatal errors ntpDate Which ntp clock synchronization server to use pcnfsd Install the PCNFSD package ports Path to the ports collection releaseName Which FreeBSD release to install rootSize Size of the root partition to create for Auto routedflags Which flags to pass to routed, if enabled serialSpeed How fast to run a SLIP/PPP connection slowEthernetCard PC ethernet card is uncommonly slow swapSize Size of the swap partition to create for Auto tapeBlocksize Tape size in blocks ufs Full path to UFS media directory usrSize Size of the /usr partition to create for Auto varSize Size of the /var partition to create for Auto And "command" can be one or more of: addUser Add a new user to the system addGroup Add a new group to the system configAnonFTP Configure system for anonymous FTP configApache Configure and install the Apache WEB server configGated Configure and install gated configNFSServer Configure host as an NFS server configSamba Configure and install Samba configPackages Browse / install packages diskPartitionEditor Partition a new or existing disk diskPartitionWrite Write out any changed partition information diskLabelEditor Label/Newfs/Mount new or existing filesystems diskLabelCommit Write out any changed label information distReset Reset distribution information distSetDeveloper Select developer distribution distSetXDeveloper Select X developer distribution distSetKernDeveloper Select kernel developer distribution distSetUser Select FreeBSD 2.2.8-RELEASE PC-card Installer Tatsumi Hosokawa BSD-nomads team, Japan 1. What's this floppy? The kernel and sysinstall of this floppy includes PAO PC-card package for FreeBSD. You can install FreeBSD with this floppy from various PC-cards (Ethernet, SCSI CDROM, ATAPI CDROM, etc.). This floppy is based on FreeBSD 2.2.8-RELEASE and PAO-19990114. Therefore, supported cards are same as the cards supported by PAO-19990114. PAO is a package that supports moble computing on FreeBSD. Part of old PAO packages have been incorporated into original FreeBSD souce tree, and now also the code in this package is waiting for integration. Part of codes in PAO has been less reviewed and it includes some experimental (pre-alpha level) codes that is not suited to be incorported into the original source tree at current status, but PAO is more useful and support more card compared to current FreeBSD PC-card suppot. *Important Note about 2.2.8-RELEASE* PAO for 2.2.8 explicitly specifies IRQ for PC-card controllers. Default IRQ is 5. Some laptop has a soundcard at IRQ 5. On such machines, you have to configure IRQ to free IRQ with UserConfig. To do that, select "CLI" configuration of UserConfig from the first menu of this boot floppy and type -------------------------------------------------------------------- config> irq pcic0 9 ~~~~~~~~~~~ -------------------------------------------------------------------- where IRQ 9 is free. Currently, pcic0 does not support "visual" mode of UserConfig. You also have to do it again after the PAO kernel is compiled. To execute UserConfig on installed system, -------------------------------------------------------------------- boot: -c ~~ -------------------------------------------------------------------- from boot prompt. 2. PC-card Basics To use this floppy, you have to know at least some basic ideas of PC-card architecture. PC-card uses I/O port, IRQ, and shared memory like many ISA devices, but the address and IRQ level are dynamically allocated by a special hardware called PC-card controller (or PC-card bridge). Each PC-card slot has eight memory windows, two I/O windows and a unnumbered IRQ line. PC-card controller maps these resources onto ISA or PCI space. PC-card can be controlled by CPU like ordinaly ISA devices because this mapping function works transparently. (All memory windows and I/O Window 1 are unused) +---------+ +------------+ / | |--------------------| |-----------/ ISA BUS | Modem | I/O Window 0 | PC-card | 3f8 - 3ff / | PC-card |--------------------| Controller |-----------/ | |<==================>| |<=========>/ +---------+ unnumbered IRQ +------------+ IRQ 3 / fig.1 Modem card is mapped as a serial chip on ISA bus To determine the value of these parameters, operating system uses "CIS (Card Information Structure) tupples" described in EEPROM memory in the cards. Operating system gets this information also via PC-card controller. PC-card controller requires 16 kilobytes of memory address for this purpose (it maps EEPROM memory onto this area). You can read these data by typing "/stand/pccardc dumpcis" from command prompt after the installation. A sample output of "/stand/pccardc dumpcis" follows. ----------------------------------------------------------------------- Tuple #6, code = 0x1b (Configuration entry), length = 16 000: e0 41 99 49 55 26 25 aa 60 f8 03 07 30 ff ff 28 Config index = 0x20(default) Interface byte = 0x41 (I/O) +RDY/-BSY active Vcc pwr: Nominal operating supply voltage: 5 x 1V Continuous supply current: 2 x 100mA Power down supply current: 2 x 10mA Card decodes 10 address lines, 8 Bit I/O only I/O address # 1: block start = 0x3f8 block length = 0x8 IRQ modes: Level IRQs: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Max twin cards = 0 Misc attr: (Audio-BVD2) (Power down supported) Tuple #7, code = 0x1b (Configuration entry), length = 7 000: 21 08 aa 60 f8 02 07 Config index = 0x21 Card decodes 10 address lines, 8 Bit I/O only I/O address # 1: block start = 0x2f8 block length = 0x8 ----------------------------------------------------------------------- fig.2 Sample CIS tupples (part of CIS in Megahertz XJ3288) This floppy uses 0xd0000-0xd3ffff for this scratch area by default, but if your hardware uses this area for other purposes, you can select another addresses (0xd4000, 0xd8000, and 0xdc000) from the first menu of this floppy. If you're uncertain of the detailed spec of your hardware, proceed without selecting optional values, and test other options after it causes any problems :-). 0xd0000 is appropreate value on most laptop hardware. There's another additional menu about PC-card in this floppy. The second menu is used to choose the free IRQ pool for PC-cards. PC-card requires a free IRQ that is not used by other devices. Operating system must manages free IRQ pool for this purpose. You can choose this free IRQ pool from the menu. The default is IRQ 10 and 11. Please note that there are some machines that have sound card which occupies IRQ 10 (and too bad that can't be probed by installation floppy, of course). If you have such machines, you can't use IRQ 10 for this purpose. IRQ 5 and 11 would be good alternative, but use IRQ 11 only if you have another devices which occupies IRQ 5. 3. FreeBSD installation note If you want to use PC-card after the installation is finished, you must recompile kernel with PC-card support. Therefore, you *MUST* install kernel sources. This floppy automatically adds "src/ssys" (kernel sources) distribution on "User" and "X-User" distribution sets, but if you want to install "minimum" distributsion set or if you want to choose distribution by yourself, you have to add "src/ssys" distribution to distribution set manually. 4. After installation If you installed 2.2.7-RELEASE with this floppy, you can install PAO kernel without getting PAO package from net or CDROM. This floppy installs PAO patches in /stand/PAO/sys, /etc files in /stand/PAO/etc, and pccardd (PC-card daemon) and pccardc (PC-card controller) in /stand, respectively. Moreover, you can recompile PAO kernel from "Config" menu of /stand/sysinstall. When you've installed FreeBSD with this floppy and reboot the machine, log in the machine as root user and execute /stand/sysinstall. You can recompile and install PAO kernel from the menu of this installer. Select the "PC-card" in "Config" menu of sysinstall. Note that these operations have to be done just after the system is installed. Especially if you've made any patches onto kernel sources, these operations may fail. Please do it as soon as possible. If you have selected non-default parameters for PC-card controller scratch memory or untouchable IRQ, please modify the following paramters manually (sorry, this can't be done automatically now). PC-card controller memory --> "pccardmem" in /etc/sysconfig IRQ's that cannot be used by PC-cards --> IRQ 5 "noirq 5" in /etc/pccard.conf IRQ 10 "noirq 10" in /etc/pccard.conf IRQ 1-9 "noirq 1 2 3 4 5 6 7 8 9" in /etc/pccard.conf IRQ 1-10 "noirq 1 2 3 4 5 6 7 8 9 10" in /etc/pccard.conf The FAQ list of PAO is placed at /stand/PAO/doc/PAO-FAQ. Please read it before asking us about your problems. Many typical questions are answered in this file. This floppy does not have the device drivers and utilities that is not necessary for installation (e.g. Video Capture, Voice Synthesizer, LS120 Super Floppy, etc.) To install these drivers, you have to recompile the kernel with original PAO package. You can found PAO package and information at PAO Webpage (http://www.jp.FreeBSD.org/PAO/) and PAO anonymous FTP server (ftp://jaz.jp.FreeBSD.org/pub/FreeBSD-jp/PAO/). ThThis screen allows you to register yourself with the FreeBSD Project's user counter & statistics database. ** IT IS VERY IMPORTANT THAT YOU DO THIS! ** Believe me, I hate filling out forms as much as anyone, and most people's understandable reaction to a registration form is to say "Eh, what's this? They want to send me junk mail and then on top of that they expect me to go to *extra* trouble in order to make it easy for them?! Forget it!" This is not that kind of registration, and I strongly urge you to take just a few minutes to read this and find out how much the simple act of registering can help both you and FreeBSD. 1. It is very much in your best interest, as a FreeBSD user, to stand up and be counted so that various software vendors will begin to take you and your operating system seriously. There are numerous ISVs (Independent Software Vendors) who would be only too happy to port the kinds of applications that many FreeBSD users are currently screaming for (everything from spreadsheets and word processing packages to games) if they only had some idea that it might be worth the trouble. The only way to convince the ISVs that FreeBSD is worth their trouble is to show them how many users we have, and to do that we need your registration! At this time we literally do not know how many users FreeBSD has, and that's hardly helpful when you're trying to convince someone to port software to it. 2. We will not send you *anything* you do not ask for. Some people are genuinely interested in new product announcements for FreeBSD or want to hear about security issues & other important advisories as they come up, and for such people we've added registration options for selecting various types of additional material they might be interested in receiving as a side-effect of registration. The default behavior is to NOT put the user on any special mailing lists or provide their names in mailing list data sent to (carefully screened) FreeBSD product advertisers - all of that must be specifically requested during the registration. Most fields in the form are fairly self-explanatory. At the minimum, you should enter your first and last name as well as your email address so that we can weed obvious duplicates from the counter. You will NOT be sent any mail at this address unless you also sign up for one of the additional notification services, and it's only used to provide us with a way of differentiating "John Smith " from "John Smith " in the simple, no-frills registration case. If you do not have an email address, some sort of postal address will serve the same purpose. If you also wish to receive the FreeBSD Newsletter, published and distributed free of charge by Walnut Creek CDROM in printed form, then you must specify some sort of postal address. Likewise, if you elect to receive notification on the email version then you should specify a valid Email address. Back-issues of the FreeBSD newsletter are available at http://ftp.freebsd.org/pub/FreeBSD/newsletter/ Should you wish to unsubscribe to the FreeBSD Newsletter or otherwise de-register yourself at a later time, you can simply send mail to register-request@freebsd.org. If you subscribe to the announce mailing list (and it's a good idea) then you can modify your subscription at any time by sending mail to majordomo@freebsd.org Your cooperation with this new registration service is greatly appreciated, and by taking just 5 minutes to fill this out now you will be helping us to gather data which will greatly assist FreeBSD in firmly establishing a position as a serious UN*X operating system contender. Regards, Jordan Hubbard, FreeBSD PR Officer This is the FreeBSD DiskLabel Editor. NOTE: If you're entering this editor from the update procedure then you probably shouldn't (C)reate anything at all but rather use only the (M)ount command to check and mount existing partitions for upgrading. If you would like the label editor to do most of the following for you, simply type `A' for automatic partitioning of the disk. If you wish to create partitions manually you may do so by moving the highlighted selection bar with the arrow keys over the FreeBSD partition(s) displayed at the top of the screen. Typing (C)reate while a partition with available free space is selected will allow you to create a BSD partition inside of it using some or all of its available space. Typing (M)ount over an existing partition entry (displayed in the middle of the screen) will allow you to set a mount point for it without initializing it. If you want it initialized, use the (T)oggle command to flip the Newfs flag. When Newfs is set to "Y", the filesystem in question will be ERASED and rebuilt from scratch! You should use this editor to create at least the following filesystems: Name Purpose Min Size? Optional? ---- ------- --------- --------- / Root filesystem 20MB No swap Swap space 2 * MEM No /usr System & user files 80MB or more Yes Note: If you do not create a /usr filesystem then your / filesystem will need to be bigger - at least 100MB. This is not recommended as any media errors that may occur during disk I/O to user files will corrupt the filesystem containing vital system files as well. It is for this reason that / is generally kept on its own filesystem, where it should be considered essentially "read only" in your administration of it. Swap space is a little tricker, and the rule of "2 * MEM" is simply a best-guess approximation and not necessarily accurate for your intended usage of the system. If you intend to use the system heavily in a server or multi-user application, you may be well advised to increase this size. You may also create swap space on multiple drives for a larger "total" swap and this is, in fact, recommended if you have multiple, fast drives for which such load-balancing can only help overall I/O performance. The /usr filesystem should be sized according to what kind of distributions you're trying to load and how many packages you intend to install in locations like /usr/local. You can also make /usr/local a separate filesystem if you don't want to risk filling up your /usr by mistake. Another useful filesystem to create is /var, which contains mail, news printer spool files and other temporary items. It is a popular candidate for a separate partition and should be sized according to your estimates of the amount of mail, news or spooled print jobs that may be stored there. WARNING: If you do not create a separate filesystem for /var, space for such files will be allocated out of the root (/) filesystem instead. You may therefore wish to make the / partition bigger if you expect a lot of mail or news and do not want to make /var its own partition. If you're new to this installation, you might also want to read the following explanation of how FreeBSD's new "slice" paradigm for looking at disk storage works: In FreeBSD's new system, a device name can be broken up into up to 3 parts. Take a typical name like ``/dev/sd0s1a'': The first three characters represent the drive name. If we had a system with two SCSI drives on it then we'd see /dev/sd0 and /dev/sd1 as the device entries representing the entire drives. Next you have the "slice" (or "FDISK Partition") number, as seen in the Partition Editor. Assuming that our sd0 contained two slices, a FreeBSD slice and a DOS slice, that would give us /dev/sd0s1 and /dev/sd0s2 as device entries pointing to the entire slices. Next, if a slice is a FreeBSD slice, you can have a number of (confusingly named) "partitions" inside of it. These partitions are where various filesystems or swap areas live, and using our hypothetical two-SCSI-disk machine again, we might have something like the following layout on sd0: Name Mountpoint ---- ---------- sd0s1a / sd0s1b sd0s1e /usr Because of historical convention, there is also a short-cut, or "compatibility slice", that is maintained for easy access to the *first* FreeBSD slice on a disk. This gives some backwards compatibility to utilities that still may not know how to deal with the new slice scheme. The compatibility slice names for our filesystem above would also look like: Name Mountpoint ---- ---------- sd0a / sd0b sd0e /usr Again, let it be noted: FreeBSD automatically maps the compatibility slice to the first FreeBSD slice it finds (in this case, sd0s1). You may have multiple FreeBSD slices on a drive, but only the first one will be mapped to the compatibility slice! The compatibility slice has essentially been phased out, but it's important to be aware of when looking at or upgrading older systems. Once you understand all this, then the purpose of the label editor becomes fairly clear: You're carving up the FreeBSD slices displayed at the top of the screen into smaller pieces, which are displayed in the middle of the screen, and then assigning FreeBSD file system names (mount points) to them. You can also use the label editor to mount existing partitions/slices into your filesystem hierarchy, as is frequently done for DOS FAT slices. For FreeBSD partitions, you can also toggle the "newfs" state so that the partitions are either (re)created from scratch or simply checked and mounted (the contents are preserved). When you're done, type `Q' to exit. No actual changes will be made to the disk until you (C)ommit from the Install menu or (W)rite directly from this one. You're working with what is essentially a copy of the disk label(s), both here and in the FDISK Partition Editor, and the actual on-disk labels won't be affected by any changes you make until you explicitly say so. In this screen, you can jump to remote or local HTML resources such as the FreeBSD Handbook & FreeBSD FAQ (Frequently Asked Questions) documents located in: file:/usr/share/doc/ If you've loaded the doc distribution. The default browser package used is lynx (a text based browser), which will be automatically loaded from the installation media if it is available. You may change the selection of browser & browser package to auto-load by visiting the Options editor. In order to visit remote URLs, you naturally must have some sort of working Internet connection. If you have not yet brought up any network interfaces, please visit the ``Networking'' item in the Configuration menu before attempting to reference any http://.. style URLs. A special shell will be launched by this option with a fixit floppy (or 2nd CDROM) mounted as /mnt2. This provides access to extra commands under /mnt2 as well as a more complete set of device files in /mnt2/dev. Some device operations, like fsck and disklabel, may therefore require you to go to /mnt2/dev and use the entries there rather than assuming that they will be present in the default /dev (which came from the boot floppy and is very minimal). The following options may be set from this screen. Use the SPACE key to toggle an option's value, Q to leave when you're done. NFS Secure: NFS server talks only on a secure port This is most commonly used when talking to Sun workstations, which will not talk NFS over "non privileged" ports. NFS Slow: User is using a slow PC or Ethernet card Use this option if you have a slow PC (386) or an Ethernet card with poor performance being "fed" by NFS on a higher-performance workstation. This will throttle the workstation back to prevent the PC from becoming swamped with data. Debugging: Turn on the extra debugging flag This turns on a lot of extra noise over on the second screen (ALT-F2 to see it, ALT-F1 to switch back). If your installation should fail for any reason, PLEASE turn this flag on when attempting to reproduce the problem. It will provide a lot of extra debugging at the failure point and may be very helpful to the developers in tracking such problems down! Yes To All: Assume "Yes" answers to all non-critical dialogs This flag should be used with caution. It will essentially decide NOT to ask the user about any "boundary" conditions that might not constitute actual errors but may be warnings indicative of other problems. It's most useful to those who are doing unattended installs. FTP username: Specify username and password instead of anonymous. By default, the installation attempts to log in as the anonymous user. If you wish to log in as someone else, specify the username and password with this option. Install Root: Specify some directory other than / as your "root". This should be left as / unless you have a really good reason to change it. One good reason might be if you were installing to a disk other than your own, as might happen if you needed to prepare a disk for another machine which couldn't load FreeBSD directly for some reason. Note: If you set this option, you will only be able to install packages if the bin distribution is also installed (usually the case anyway) since /usr/sbin/pkg_add will otherwise not be found after the chroot() call. Editor: Specify which screen editor to use. At various points during the installation it may be necessary to customize some text file, at which point the user will be thrown unceremoniously into a screen editor. A relatively simplistic editor which shows its command set on-screen is selected by default, but UNIX purists may wish to change this setting to /usr/bin/vi Tape Blocksize: Specify block size in 512 byte blocks of tape. This defaults to 20 blocks, which should work with most tape drive + tar combinations. It may not allow your particular drive to win any records for speed, however, and the more adventurous among you might try experimenting with larger sizes. Extract Detail: How to show filenames on debug screen as they're extracted. While a distribution is being extracted, the default detail level of "high" will show the full file names as they're extracted. If you would prefer a more terse form for this, namely dots, select the "medium" detail level. If you want nothing to be printed on the debugging screen during extraction, select "low". Release Name: Which release to attempt to load from installation media. You should only change this option if you're really sure you know what you are doing! This will change the release name used by sysinstall when fetching components of any distributions, and is a useful way of using a more recent installation boot floppy with an older release (say, on CDROM). Browser Package: Which package to load for an HTML browser. By default, this is set to lynx but may also be set to any other text capable HTML browser for which a package exists. If you set this to an X based browser, you will not be able to use it if you're running in text mode! :) Browser Exec: You can do network installations over 3 types of communications links: Serial port: SLIP / PPP Parallel port: PLIP (laplink cable) Ethernet: A standard Ethernet controller (includes some PCMCIA networking cards). SLIP support is rather primitive and limited primarily to directly connected links, such as a serial cable running between a laptop computer and another PC. The link must be hard-wired as the SLIP installation doesn't currently offer a dialing capability (that facility is offered by the PPP utility, which should be used in preference to SLIP whenever possible). When you choose the SLIP option, you'll be given the option of later editing the slattach command before it's run on the serial line. It is expected that you'll run slattach (or some equivalent command) on the other end of the link at that time and bring up the line. FreeBSD will then install itself at serial speeds of up to 115.2K/baud (the recommended speed for a hardwired cable). If you're using a modem then PPP is almost certainly your only choice. Make sure that you have your service provider's information handy as you'll need to know it fairly early in the installation process. You will need to know, at the minimum, your service provider's IP address and possibly your own (though you can also leave it blank and allow PPP to negotiate it with your ISP if your ISP supports such dynamic negotiation). You will also need to know how to use the various "AT commands" to dial the ISP with your particular brand of modem as the PPP dialer provides only a very simple terminal emulator and has no "modem capabilities database". If a hard-wired connection to another FreeBSD (2.0R or later) machine is available, you might also consider installing over a "laplink" parallel port cable. The data rate over the parallel port is much higher than what is typically possible over a serial line, and speeds of over 50KB/sec are not uncommon. Finally, for the fastest possible network installation, an Ethernet adaptor is always a good choice! FreeBSD supports most common PC Ethernet cards, a table of which is provided in the FreeBSD Hardware Guide (see the Documentation menu on the boot floppy). If you are using one of the supported PCMCIA Ethernet cards, also be sure that it's plugged in _before_ the laptop is powered on! FreeBSD does not, unfortunately, currently support "hot insertion" of PCMCIA cards. You will also need to know your IP address on the network, the "netmask" value for your address class, and the name of your machine. Your system administrator can tell you which values to use for your particular network setup. If you will be referring to other hosts by name rather than IP address, you'll also need a name server and possibly the address of a gateway (if you're using PPP, it's your provider's IP address) to use in talking to it. If you do not know the answers to all or most of these questions then you should really probably talk to your system administrator _first_ before trying this type of installation! Choosing the wrong IP address on a busy network will NOT make you popular with your systems administrator! :-) This menu allows you to configure your system after the installation process is complete. At the minimum, you should probably set the system manager's password and the system time zone. For extra goodies like bash, emacs, Pascal, etc., you should look at the Packages item in this menu. For setting the timezone after the system is installed, type ``tzsetup''. For more information on the overall general system configuration, see the ``/etc/rc.conf'' file. You can install from the following types of media: CDROM requires one of the following supported CDROM drives: Sony CDU 31/33A Matushita/Panasonic "Sound Blaster" CDROM. Mitsumi FX-001{A-D} (older non-IDE drives). IDE CDROM SCSI - Any standard SCSI CDROM drive hooked to a supported controller (see Hardware Guide). DOS A DOS primary partition with the required FreeBSD distribution files copied onto it (e.g. C:\FREEBSD\) FS Assuming a disk or partition with an existing FreeBSD file system and distribution set on it, get the distribution files from there. Floppy Get distribution files from one or more DOS or UFS formatted floppies. Such floppies are assumed to contain the appropriate distribution pieces - see ABOUT.TXT for more information about making floppy distribution media. FTP Get the distribution files from an anonymous ftp server (you will be presented with a list). Please note that there are also two ways of invoking FTP in either "Active" and "Passive" mode. Active mode is the standard way of fetching files and Passive mode is for use when you're behind a firewall or some other security mechanism that blocks active FTP connections. If you chose "other" in the FTP menu, please also note that all paths are *relative* to the home directory of the user being logged in as. By default, this is the user "ftp" (anonymous ftp) but you may change this in the Options screen. NFS Get the distribution files from an NFS server somewhere (make sure that permissions on the server allow this!). If this install method hangs on you or refuses to work properly, you may need to set some special options for your NFS server. See the Options screen for more details. Tape Extract distribution files from tape into a temporary directory and install from there. If the tape was created with blocksize other than 20, you may wish to change this in the Options screen. his problem and should check your disk addresses very carefully. If you find that you have insufficient space below cylinder 1024 to make a root partition for FreeBSD (and again, this ONLY applies to the root partition - once FreeBSD's kernel is loaded, it doesn't care about the geometry issues) then you will probably need to install on a completely different disk (see the boot manager section above) or resize your existing partitions so that both operating systems can have boot partitions below cylinder 1024. You may blame IBM for the limitations of a 10 bit cylinder address. "No one will have a disk with more than 1024 cylinders." I'm sure someone said. dly and comfortable shells can be found in the ports and packages collection. Boot Manager Selection: ----------------------- If you wish to switch between multiple operating systems on your machine, or if you are trying to install FreeBSD on a drive other than your 1st drive, then you must install a boot manager. In the case where you wish to boot off an alternate drive, it should also be noted that you still need to install a boot manager on the FIRST drive! Even if you do not intend to create a FreeBSD partition on that drive (e.g. it's being wholly used by something else), the boot manager still needs to reside on the first disk in order to function as a "redirector" for the boot process. To do this, simply select your 1st drive in the drive selection menu and when the partition editor comes up, don't make any changes - just (Q)uit. At the boot manager menu which follows, select the first option (install a boot manager) and then proceed to setup the other drive(s) for FreeBSD as normal. It should also be noted that "operating systems" such as Windows 95 will completely overwrite your boot manager without so much as a polite "may I please destroy your boot manager?" prompt if you make the mistake of installing them second. If this happens to you after FreeBSD is already installed, all is not lost! Simply revisit your FreeBSD distribution directory and look for a tools/ subdirectory, in which you'll find "bootinst.exe" and "boot.bin". To reinstall, simply say "bootinst boot.bin" while in the tools/ subdirectory. If you see the boot manager displaying ``F?'' when you try to come up for the first time and it refuses to change, no matter how often you whap on the function key assigned to FreeBSD, then you have a geometry mismatch problem and you should read the next section for important information on how to prevent that exact problem from happening! Geometry Translation / Sharing the disk(s) with another OS: ---------------------------------------------------------- If you are going to actually install some portion of FreeBSD on a drive then PLEASE BE VERY CERTAIN that the Geometry reported in the Partition Editor is the correct one for your drive and controller combination! IDE drives often have a certain geometry set during the PC BIOS setup, or (in the case of larger IDE drives) have their geometry "translated" by either the IDE controller or a special boot-sector translation utility such as that by OnTrack Systems. In these cases, knowing the correct geometry gets even more complicated as it's not something you can easily tell by looking at the drive or the PC BIOS setup. The best way of verifying that your geometry is being correctly calculated in such situations is to boot DOS (from the hard disk, not a floppy!) and run the ``pfdisk'' utility provided in the tools/ subdirectory of the FreeBSD CDROM or FTP site. It will report the geometry that DOS sees, which is generally the correct one. If you have no DOS partition sharing the disk at all, then you may find that you have better luck with Geometry detection if you create a very small DOS partition first, before installing FreeBSD. Once FreeBSD is installed you can always delete it again if you need the space. It's actually not a bad idea (believe it or not) to have a small bootable DOS partition on your FreeBSD machine anyway: Should the machine become unstable or exhibit strange behavior at some point in the future (which is not uncommon behavior for PC hardware!) you can then at least use DOS for installing and running one of the commercially available system diagnostic utilities. IMPORTANT NOTE: Any root partition you try to boot from must also reside below the 1024th cylinder. If you're using a translated geometry then this is probably not a problem, but if you are using a native disk geometry which exceeds 1024 cylinders then you could have a failure to boot if you end up installing a root partition (or even just the kernel file in a root partition) out past cylinder 1024. If you are trying to share your first disk with FreeBSD and another OS which was installed previously, you are particularly susceptible to tDISTRIBUTION INFORMATION ------------------------ An ``X-'' prefixed before a distribution set means that the XFree86 3.3.2.3 base distribution, libraries, manual pages, SVGA server and a set of default fonts will be selected in addition to the set itself. If you select such a set, you will also be presented with a set of menus for customizing the selections to your desired X Window System setup. Any distribution may be further customized by selecting the `Custom' item before leaving the menu. N.B. All references in this document to `complete source' mean the complete source tree minus any legally encumbered cryptography code. The current "canned" installations are provided: Developer: Base ("bin") distribution, man pages, dictionary files, profiling libraries and the complete source tree. Kern-Developer: As above, but with only kernel sources instead of the complete source tree. User: The base distribution, man pages, dictionary files and the FreeBSD 1.x, 2.0 and 2.1.x compatibility sets. Minimal: Only the base distribution. Everything: The base distribution, man pages, dictionary files, profiling libraries, the FreeBSD 1.x and the FreeBSD 2.0 compatibility libraries, the complete source tree, games and your choice of XFree86 distribution components. Note that the cryptography source code is NOT included in this collection. You will need to select that by hand if you're inside the United States. Custom: Allows you to create or modify your distribution set on a piece-by-piece basis. Reset: Clear all currently selected distributions. --- ENCRYPTION SOFTWARE: -------------------- You may notice that certain distributions, like "des" and "krb", are marked "NOT FOR EXPORT!" This is because it's illegal to export them from the United States (or any other country which considers encryption technology to be on its restricted export list). Since breaking this law only gets the _originating_ site (US!) in trouble, please do not load these distributions from U.S. servers! We don't like these restrictions any more than you do, but can't do much about it (write your U.S. congress person!). A number of "foreign" servers do exist for the benefit of non-U.S. sites, the official site being: ftp://ftp.internat.freebsd.org/pub/FreeBSD Please get all such export restricted software from there if you are outside the U.S., thanks! This screen allows you to configure the anonymous FTP user. The following configuration values are editable: UID: The user ID you wish to assign to the anonymous FTP user. All files uploaded will be owned by this ID. Group: Which group you wish the anonymous FTP user to be in. Comment: String describing this user in /etc/passwd FTP Root Directory: Where files available for anonymous FTP will be kept. Upload subdirectory: Where files uploaded by anonymous FTP users will go. These screens allow you to add groups and users to your system. You can move through the fields with the TAB, BACK-TAB and ENTER keys. To edit a field, use DELETE or BACKSPACE. You may also use ^A (control-A) to go to the beginning of the line, ^E (control-E) to go to the end, ^F (control-F) to go forward a character, ^B (control-B) to go backward one character, ^D (control-D) to delete the character under the cursor and ^K (control-K) to delete to the end of the line. Basically, the standard EMACS motion sequences. When you're done with this form, select OK. Many of the settings get reasonable defaults if you leave them blank. The first time you have entered the name of the new group or user, the system will show you what it would chose for most of these fields. You are free to change them, of course. User groups =========== It's certainly almost generally a good idea to first create a new group for your users. Common names for such a group are "users", or even simply "other". Group names are used to control file access permissions for users that belong to the same group. Several group names are already used for system files. The numerical user or group IDs are often nothing you want to care for explicitly. If you don't fill in these fields, the system will chose reasonable defaults. However, these numbers (rather than the associated names) are what the operating system actually uses to distinguish users and groups -- hence they should normally be unique to each person or group, respectively. (The initial membership list for a new group is currently unimplemented, sorry.) Users ===== The user's login ID is a short (8 characters) alphanumeric ID the user must enter when logging into the system. It's often the initial letters of the user's name, and commonly used in lower case. It's also the local mail name for this user (though it's possible to also setup more descriptive mail alias names later). The user's login group determines which group access rights the user will initially get when logging in. If an additional list of groups is provided where the user will become a member of, (s)he will also be able to access files of those groups later without providing any additional password etc. Except for the "wheel" case mentioned below, the additional group membership list should normally not contain the login group again. The user's password can also be set here, and should be chosen with care - 6 or more characters, intermixing punctuation and numerics, and *not* a word from the dictionary or related to the username is a good password choice. Some of the system's groups have a special meaning. In particular, members of group "wheel" are the only people who are later allowed to become superuser using the command su(1). So if you're going to add a new user who should later perform administrative tasks, don't forget to add him to this group! (Well, ``he'' will most likely be yourself in the very first place. :) Also, members of group "operator" will by default get permissions for minor administrative operations, like performing system backups, or shutting down the system -- without first becoming superuser! So, take care with adding people to this group. The ``full name'' field serves as a comment only. It is also used by mail front ends to determine the real name of the user, hence you should actually fill in the first and last name of this user. By convention, this field can be divided into comma-separated subfields, where the office location, the work phone number, and the home phone number follow the full name of the user. The home directory is the directory in the filesystem where the user is being logged into, and where his personalized setup files (``dot files'', since they usually begin with a `.' and are not displayed by the ls(1) command by default) will be looked up. It is often created under /usr/home/ or /home/. Finally, the shell is the user's initial command interpreter. The default shell is /bin/sh, some users prefer the more historic /bin/csh. Other, often more user-frienI18N boot.flp for FreeBSD Hosokawa Tatsumi Please read I18N documentation of each language.... $Id: i18n.hlp,v 225.1 1997/11/02 02:14:20 hosokawa Exp hosokawa $ g .R ..h sysl etcsbinh .g ..i syspatch.shj sysbackup.shksys.pao-flp.patch#!/bin/sh cd /usr/src cat /stand/PAO/sys/sys.pao-flp.patch | patch -p0 cd /usr/src/sys/i386/include cp apm_bios.h clock.h /usr/include/machine cp /usr/src/sys/pccard/*.h /usr/include/pccard cd /usr/src/sys/i386/conf config PAO cd ../../compile/PAO make depend && make && make install #!/bin/sh cd /usr/src mkdir sys.2.2.8-RELEASE cd sys.2.2.8-RELEASE (cd ../sys ; tar cf - . ) | tar xvfp - l .g ..m rc.pccardnrc.confopccard_ether_removep pccard_etherq pccard.confr| etcinst.sh#!/bin/sh - # # PC-card startup script # HOSOKAWA, Tatsumi # echo 'Initial rc.pccard configuration:' if [ "x$pccardc" != "x" ] ; then if [ ! -x $pccardc ] ; then pccardc=/usr/sbin/pccardc fi else pccardc=/usr/sbin/pccardc fi if [ "x$pccardd" != "x" ] ; then if [ ! -x $pccardd ] ; then pccardd=/usr/sbin/pccardd fi else pccardd=/usr/sbin/pccardd fi if [ "x$pccard_enable" != "xNO" ] ; then if [ "x$pccard_mem" != "xDEFAULT" ] ; then echo " pcic-memory=$pccard_mem" $pccardc pccardmem $pccard_mem else echo " pcic-memory=0xd0000" $pccardc pccardmem 0xd0000 fi if [ "x$pccardd_flags" = "xNO" ] ; then pccardd_flags="" fi echo " execute pccardd" $pccardd $pccardd_flags & fi if [ "x$pccard_beep" != "xNO" ] ; then echo " pccard-beep=$pccard_beep" $pccardc beep $pccard_beep fi echo '.' diff -urN sys.2.2.8-RELEASE/i386/apm/apm.c sys/i386/apm/apm.c --- sys.2.2.8-RELEASE/i386/apm/apm.c Tue Jul 7 14:22:36 1998 +++ sys/i386/apm/apm.c Thu Jan 14 11:54:07 1999 @@ -4,6 +4,7 @@ * Copyright (c) 1994 UKAI, Fumitoshi. * Copyright (c) 1994-1995 by HOSOKAWA, Tatsumi * Copyright (c) 1996 Nate Williams + * Copyright (c) 1998 NAKAGAWA, Yoshihisa * * This software may be used, modified, copied, and distributed, in * both source and binary form provided that the above copyright and @@ -25,6 +26,7 @@ #endif /*DEVFS*/ #include #include +#include #include #include #include @@ -34,19 +36,31 @@ #include #include #include +#ifdef NECMG +#include +#endif /* NECMG */ static int apm_display __P((int newstate)); -static int apm_int __P((u_long *eax, u_long *ebx, u_long *ecx)); +static int apm_int __P((u_long *eax, u_long *ebx, u_long *ecx, u_long *edx)); static void apm_resume __P((void)); +#ifdef PC98 +static int get_batt_life_pc98 __P((u_char status)); +static int apm_get_info_pc98 __P((apm_info_t aip)); +#endif + +#define APM_FORCE_APM10_FLAG 0x02 +#define APM_NO_CLOCK_ADJUST_FLAG 0x04 + /* static data */ struct apm_softc { int initialized, active; int always_halt_cpu, slow_idle_cpu; int disabled, disengaged; + int suspending; u_int minorversion, majorversion; u_int cs32_base, cs16_base, ds_base; - u_int cs_limit, ds_limit; + u_int cs16_limit, cs32_limit, ds_limit; u_int cs_entry; u_int intversion; struct apmhook sc_suspend; @@ -77,15 +91,15 @@ /* setup APM GDT discriptors */ static void -setup_apm_gdt(u_int code32_base, u_int code16_base, u_int data_base, u_int code_limit, u_int data_limit) +setup_apm_gdt(u_int code32_base, u_int code16_base, u_int data_base, u_int code32_limit, u_int code16_limit, u_int data_limit) { /* setup 32bit code segment */ gdt_segs[GAPMCODE32_SEL].ssd_base = code32_base; - gdt_segs[GAPMCODE32_SEL].ssd_limit = code_limit; + gdt_segs[GAPMCODE32_SEL].ssd_limit = code32_limit; /* setup 16bit code segment */ gdt_segs[GAPMCODE16_SEL].ssd_base = code16_base; - gdt_segs[GAPMCODE16_SEL].ssd_limit = code_limit; + gdt_segs[GAPMCODE16_SEL].ssd_limit = code16_limit; /* setup data segment */ gdt_segs[GAPMDATA_SEL ].ssd_base = data_base; @@ -97,36 +111,44 @@ ssdtosd(gdt_segs + GAPMDATA_SEL , &gdt[GAPMDATA_SEL ].sd); } -/* 48bit far pointer */ -static struct addr48 { +/* 48bit far pointer. Do not staticize - used from apm_setup.s */ +struct addr48 { u_long offset; u_short segment; } apm_addr; static int apm_errno; -__inline -int -apm_int(u_long *eax, u_long *ebx, u_long *ecx) -{ - u_long cf; - __asm __volatile(" - pushfl - cli - lcall _apm_addr - movl $0, %3 - jnc 1f - incl %3 - 1: - popfl - " - : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=D" (cf) - : "0" (*eax), "1" (*ebx), "2" (*ecx) - : "dx", "si", "memory" - ); +#ifdef NECMG +# define apm_int(eax, ebx, ecx, edx) necmg_apm_int(eax, ebx, ecx) +#else /* NECMG */ +static int apm_bios_busy = 0; + +static int +apm_int(u_long *eax, u_long *ebx, u_long *ecx, u_long *edx) +{ + struct apm_bios_arg apa; + int cf; + int n = 0; + + apa.eax = *eax; + apa.ebx = *ebx; + apa.ecx = *ecx; + apa.edx = *edx; + while (apm_bios_busy && n++ < 50) { + DELAY(100000L); + } + ++apm_bios_busy; + cf = apm_bios_call(&apa); + apm_bios_busy = 0; + *eax = apa.eax; + *ebx = apa.ebx; + *ecx = apa.ecx; + *edx = apa.edx; apm_errno = ((*eax) >> 8) & 0xff; return cf; } +#endif /* NECMG */ /* enable/disable power management */ @@ -135,7 +157,7 @@ { struct apm_softc *sc = &apm_softc; - u_long eax, ebx, ecx; + u_long eax, ebx, ecx, edx; eax = (APM_BIOS << 8) | APM_ENABLEDISABLEPM; @@ -144,20 +166,21 @@ else ebx = 0xffff; /* APM version 1.0 only */ ecx = enable; - return apm_int(&eax, &ebx, &ecx); + edx = 0; + return apm_int(&eax, &ebx, &ecx, &edx); } /* Tell APM-BIOS that WE will do 1.1 and see what they say... */ static void -apm_driver_version(void) +apm_driver_version(int version) { - u_long eax, ebx, ecx; + u_long eax, ebx, ecx, edx; eax = (APM_BIOS << 8) | APM_DRVVERSION; ebx = 0x0; - /* XXX - The APM 1.1 specification is only supported for now */ - ecx = 0x0101; - if(!apm_int(&eax, &ebx, &ecx)) + ecx = version; + edx = 0; + if(!apm_int(&eax, &ebx, &ecx, &edx)) apm_version = eax & 0xffff; } @@ -165,25 +188,27 @@ static int apm_engage_disengage_pm(int engage) { - u_long eax, ebx, ecx; + u_long eax, ebx, ecx, edx; eax = (APM_BIOS << 8) | APM_ENGAGEDISENGAGEPM; ebx = PMDV_ALLDEV; ecx = engage; - return(apm_int(&eax, &ebx, &ecx)); + edx = 0; + return(apm_int(&eax, &ebx, &ecx, &edx)); } /* get PM event */ static u_int apm_getevent(void) { - u_long eax, ebx, ecx; + u_long eax, ebx, ecx, edx; eax = (APM_BIOS << 8) | APM_GETPMEVENT; ebx = 0; ecx = 0; - if (apm_int(&eax, &ebx, &ecx)) + edx = 0; + if (apm_int(&eax, &ebx, &ecx, &edx)) return PMEV_NOEVENT; return ebx & 0xffff; @@ -191,15 +216,16 @@ /* suspend entire system */ static int -apm_suspend_system(void) +apm_suspend_system(int state) { - u_long eax, ebx, ecx; + u_long eax, ebx, ecx, edx; eax = (APM_BIOS << 8) | APM_SETPWSTATE; ebx = PMDV_ALLDEV; - ecx = PMST_SUSPEND; + ecx = state; + edx = 0; - if (apm_int(&eax, &ebx, &ecx)) { + if (apm_int(&eax, &ebx, &ecx, &edx)) { printf("Entire system suspend failure: errcode = %ld\n", 0xff & (eax >> 8)); return 1; @@ -216,12 +242,13 @@ static int apm_display(int newstate) { - u_long eax, ebx, ecx; + u_long eax, ebx, ecx, edx; eax = (APM_BIOS << 8) | APM_SETPWSTATE; ebx = PMDV_DISP0; ecx = newstate ? PMST_APMENABLED:PMST_SUSPEND; - if (apm_int(&eax, &ebx, &ecx)) { + edx = 0; + if (apm_int(&eax, &ebx, &ecx, &edx)) { printf("Display off failure: errcode = %ld\n", 0xff & (eax >> 8)); return 1; @@ -229,6 +256,35 @@ return 0; } +/* + * Shutdown the system completely + * + * It does not work on some laptops. I think it works on some desktops + * that has ATX power supply. + */ +void +apm_power_off(int howto, void *dummy_arg) +{ + u_long eax, ebx, ecx, edx; + + if (howto & RB_POWEROFF) { + if (!apm_softc.active) + return; + + /* wait 1sec before turning off the system power */ + DELAY(1000000); + + eax = (APM_BIOS << 8) | APM_SETPWSTATE; + ebx = PMDV_ALLDEV; + ecx = PMST_OFF; + edx = 0; + if (apm_int(&eax, &ebx, &ecx, &edx)) { + printf("Power off failure: errcode = %ld\n", + 0xff & (eax >> 8)); + } + } +} + /* APM Battery low handler */ static void @@ -329,6 +385,7 @@ static struct timeval suspend_time; static struct timeval diff_time; +static int apm_no_clock_adjust = 0; static int apm_default_resume(void *arg) @@ -337,21 +394,26 @@ u_int second, minute, hour; struct timeval resume_time, tmp_time; - /* modified for adjkerntz */ - pl = splsoftclock(); - inittodr(0); /* adjust time to RTC */ - microtime(&resume_time); - tmp_time = time; /* because 'time' is volatile */ - timevaladd(&tmp_time, &diff_time); - time = tmp_time; - splx(pl); - second = resume_time.tv_sec - suspend_time.tv_sec; - hour = second / 3600; - second %= 3600; - minute = second / 60; - second %= 60; - log(LOG_NOTICE, "resumed from suspended mode (slept %02d:%02d:%02d)\n", - hour, minute, second); + if (apm_no_clock_adjust) { + log(LOG_NOTICE, "resumed from suspended mode\n"); + } else { + /* modified for adjkerntz */ + pl = splsoftclock(); + inittodr(0); /* adjust time to RTC */ + microtime(&resume_time); + tmp_time = time; /* because 'time' is volatile */ + timevaladd(&tmp_time, &diff_time); + time = tmp_time; + splx(pl); + second = resume_time.tv_sec - suspend_time.tv_sec; + hour = second / 3600; + second %= 3600; + minute = second / 60; + second %= 60; + log(LOG_NOTICE, + "resumed from suspended mode (slept %02d:%02d:%02d)\n", + hour, minute, second); + } return 0; } @@ -360,17 +422,51 @@ { int pl; - pl = splsoftclock(); - microtime(&diff_time); - inittodr(0); - microtime(&suspend_time); - timevalsub(&diff_time, &suspend_time); - splx(pl); + if (!apm_no_clock_adjust) { + pl = splsoftclock(); + microtime(&diff_time); + inittodr(0); + microtime(&suspend_time); + timevalsub(&diff_time, &suspend_time); + splx(pl); + } return 0; } +/* + * Do not suspend immediately after the system is resumed from + * suspended mode + */ + static void apm_processevent(void); +static u_int apm_standbys = 0; +static u_int apm_op_inprog = 0; + +static void +apm_do_standby(void) +{ + apm_op_inprog = 0; + apm_standbys = 0; + + apm_default_suspend(&apm_softc); + if (apm_suspend_system(PMST_STANDBY) == 0) + apm_processevent(); +} + +static void +apm_lastreq_notify(void) +{ + u_long eax, ebx, ecx, edx; + + eax = (APM_BIOS << 8) | APM_SETPWSTATE; + ebx = PMDV_ALLDEV; + ecx = PMST_LASTREQNOTIFY; + edx = 0; + + apm_int(&eax, &ebx, &ecx, &edx); +} + /* * Public interface to the suspend/resume: * @@ -386,17 +482,49 @@ if (!sc) return; + if (sc->suspending != 0) { /* avoid reentry */ + /* PCG-505: suspend -> save-to-disk */ + if (sc->initialized) { + if (apm_suspend_system(PMST_SUSPEND) == 0) + apm_processevent(); + } + return; + } + sc->suspending = 1; + if (sc->initialized) { +#ifdef NECMG + int s = splhigh(); +#endif apm_execute_hook(hook[APM_HOOK_SUSPEND]); - if (apm_suspend_system() == 0) + if (apm_suspend_system(PMST_SUSPEND) == 0) { apm_processevent(); - else +#ifdef PC98 + /* fail to resume on 98NOTEs with old APM BIOS. */ + if (sc->intversion == INTVERSION(1, 0)) + timeout((void(*)(void*))apm_resume, 0, 3 * hz); +#endif + } else { /* Failure, 'resume' the system again */ apm_execute_hook(hook[APM_HOOK_RESUME]); + } +#ifdef NECMG + splx(s); +#endif } } void +apm_standby(void) +{ + if(apm_standbys) + return; + apm_standbys++; + apm_op_inprog++; + apm_lastreq_notify(); +} + +void apm_resume(void) { struct apm_softc *sc = &apm_softc; @@ -404,31 +532,146 @@ if (!sc) return; + sc->suspending = 0; + if (sc->initialized) apm_execute_hook(hook[APM_HOOK_RESUME]); } /* get APM information */ +#ifdef PC98 +static inline int get_batt_life_pc98(u_char status) +{ + int remain; + + switch (status) { + case 0x11: + remain = 0; break; + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + remain = status & 0x7; break; + case 0x17: + remain = 8; break; + default: + return -1; + } + return ((100*remain)/8); +} + +static int +apm_get_info_pc98(apm_info_t aip) +{ + struct apm_softc *sc = &apm_softc; + u_long eax, ebx, ecx, edx; + int batt1, batt2; + + eax = (APM_BIOS << 8) | APM_GETPWSTATUS_PC98; + ebx = PMDV_ALLDEV; + ecx = 0; + edx = 0xffff; /* default to unknown battery time */ + if (apm_int(&eax, &ebx, &ecx, &edx)) + return 1; + + aip->ai_infoversion = (sc->intversion >= INTVERSION(1, 2)) ? 1 : 0; + aip->ai_acline = ebx & 0x01; + aip->ai_batt_stat = 255; /* unknown */ + + batt1 = get_batt_life_pc98(ecx & 0xff); + batt2 = get_batt_life_pc98((ecx >> 8) & 0xff); + + if (batt1 > 0 && batt2 > 0){ + aip->ai_batt_life = (batt1 + batt2)/2; + }else if (batt1 > 0){ + aip->ai_batt_life = batt1; + }else if (batt2 > 0){ + aip->ai_batt_life = batt2; + }else{ + aip->ai_batt_life = 255; + } + + aip->ai_major = (u_int)sc->majorversion; + aip->ai_minor = (u_int)sc->minorversion; + aip->ai_status = (u_int)sc->active; + edx &= 0xffff; + if (edx == 0xffff) /* Time is unknown */ + aip->ai_batt_time = -1; + else if (edx & 0x8000) /* Time is in minutes */ + aip->ai_batt_time = (edx & 0x7fff) * 60; + else /* Time is in seconds */ + aip->ai_batt_time = edx; + + eax = (APM_BIOS << 8) | APM_GETCAPABILITIES; + ebx = 0; + ecx = 0; + edx = 0; + if (apm_int(&eax, &ebx, &ecx, &edx)) { + aip->ai_batteries = -1; /* Unknown */ + aip->ai_capabilities = 0xff00; /* Unknown, with no bits set */ + } else { + aip->ai_batteries = ebx & 0xff; + aip->ai_capabilities = ecx & 0xf; + } + + bzero(aip->ai_spare, sizeof aip->ai_spare); + + return 0; +} +#endif /*PC98*/ + static int apm_get_info(apm_info_t aip) { struct apm_softc *sc = &apm_softc; - u_long eax, ebx, ecx; + u_long eax, ebx, ecx, edx; +#ifdef PC98 + if (sc->intversion == INTVERSION(1, 0)){ + return apm_get_info_pc98(aip); + } +#endif eax = (APM_BIOS << 8) | APM_GETPWSTATUS; ebx = PMDV_ALLDEV; ecx = 0; + edx = 0xffff; /* default to unknown battery time */ - if (apm_int(&eax, &ebx, &ecx)) + if (apm_int(&eax, &ebx, &ecx, &edx)) return 1; + aip->ai_infoversion = (sc->intversion >= INTVERSION(1, 2)) ? 1 : 0; aip->ai_acline = (ebx >> 8) & 0xff; aip->ai_batt_stat = ebx & 0xff; aip->ai_batt_life = ecx & 0xff; aip->ai_major = (u_int)sc->majorversion; aip->ai_minor = (u_int)sc->minorversion; aip->ai_status = (u_int)sc->active; + edx &= 0xffff; + if (edx == 0xffff) /* Time is unknown */ + aip->ai_batt_time = -1; + else if (edx & 0x8000) /* Time is in minutes */ + aip->ai_batt_time = (edx & 0x7fff) * 60; + else /* Time is in seconds */ + aip->ai_batt_time = edx; + + eax = (APM_BIOS << 8) | APM_GETCAPABILITIES; + ebx = 0; + ecx = 0; + edx = 0; + if (apm_int(&eax, &ebx, &ecx, &edx)) { + aip->ai_batteries = -1; /* Unknown */ + aip->ai_capabilities = 0xff00; /* Unknown, with no bits set */ + } else { + aip->ai_batteries = ebx & 0xff; + aip->ai_capabilities = ecx & 0xf; + } + + bzero(aip->ai_spare, sizeof aip->ai_spare); return 0; } @@ -441,11 +684,11 @@ struct apm_softc *sc = &apm_softc; if (sc->active) { - u_long eax, ebx, ecx; + u_long eax, ebx, ecx, edx; eax = (APM_BIOS <<8) | APM_CPUIDLE; - ecx = ebx = 0; - apm_int(&eax, &ebx, &ecx); + edx = ecx = ebx = 0; + apm_int(&eax, &ebx, &ecx, &edx); } /* * Some APM implementation halts CPU in BIOS, whenever @@ -473,11 +716,11 @@ * necessary. */ if (sc->slow_idle_cpu && sc->active) { - u_long eax, ebx, ecx; + u_long eax, ebx, ecx, edx; eax = (APM_BIOS <<8) | APM_CPUBUSY; - ecx = ebx = 0; - apm_int(&eax, &ebx, &ecx); + edx = ecx = ebx = 0; + apm_int(&eax, &ebx, &ecx, &edx); } } @@ -493,10 +736,18 @@ { struct apm_softc *sc = &apm_softc; + if (apm_op_inprog) + apm_lastreq_notify(); + apm_processevent(); - if (sc->active == 1) + + if (apm_standbys) + apm_do_standby(); + + if (sc->active == 1) { /* Run slightly more oftan than 1 Hz */ - timeout(apm_timeout, NULL, hz - 1 ); + timeout(apm_timeout, NULL, hz - 1); + } } /* enable APM BIOS */ @@ -606,7 +857,7 @@ apm_event = apm_getevent(); switch (apm_event) { OPMEV_DEBUGMESSAGE(PMEV_STANDBYREQ); - apm_suspend(); + apm_standby(); break; OPMEV_DEBUGMESSAGE(PMEV_SUSPENDREQ); apm_suspend(); @@ -624,18 +875,20 @@ apm_resume(); break; OPMEV_DEBUGMESSAGE(PMEV_STANDBYRESUME); - apm_resume(); + apm_default_resume(&apm_softc); break; OPMEV_DEBUGMESSAGE(PMEV_BATTERYLOW); apm_battery_low(); +#ifdef APM_BATT_LOW_SUSPEND apm_suspend(); +#endif /* APM_BATT_LOW_SUSPEND */ break; OPMEV_DEBUGMESSAGE(PMEV_POWERSTATECHANGE); break; OPMEV_DEBUGMESSAGE(PMEV_UPDATETIME); inittodr(0); /* adjust time to RTC */ break; - OPMEV_DEBUGMESSAGE(PMEV_NOEVENT); + case PMEV_NOEVENT: break; default: printf("Unknown Original APM Event 0x%x\n", apm_event); @@ -655,6 +908,21 @@ { #define APM_KERNBASE KERNBASE struct apm_softc *sc = &apm_softc; + int apm_force_apm10 = 0; + int rversion, rmajorversion, rminorversion; + +#ifdef FORCE_APM10 + apm_force_apm10 = 1; +#else /* FORCE_APM10 */ + apm_force_apm10 = (dvp->id_flags & APM_FORCE_APM10_FLAG); +#endif /* FORCE_APM10 */ + +#ifdef APM_NO_CLOCK_ADJUST + apm_no_clock_adjust = 1; +#else /* APM_NO_CLOCK_ADJUST */ + apm_no_clock_adjust = (dvp->id_flags & APM_NO_CLOCK_ADJUST_FLAG); +#endif /* APM_NO_CLOCK_ADJUST */ + sc->initialized = 0; @@ -665,8 +933,11 @@ sc->cs16_base = (apm_cs16_base << 4) + APM_KERNBASE; sc->cs32_base = (apm_cs32_base << 4) + APM_KERNBASE; sc->ds_base = (apm_ds_base << 4) + APM_KERNBASE; - sc->cs_limit = apm_cs_limit; - sc->ds_limit = apm_ds_limit; + sc->cs32_limit = apm_cs32_limit - 1; + if (apm_cs16_limit == 0) + apm_cs16_limit = apm_cs32_limit; + sc->cs16_limit = apm_cs16_limit - 1; + sc->ds_limit = apm_ds_limit - 1; sc->cs_entry = apm_cs_entry; /* Always call HLT in idle loop */ @@ -684,8 +955,8 @@ printf("apm: Code entry 0x%08x, Idling CPU %s, Management %s\n", sc->cs_entry, is_enabled(sc->slow_idle_cpu), is_enabled(!sc->disabled)); - printf("apm: CS_limit=0x%x, DS_limit=0x%x\n", - sc->cs_limit, sc->ds_limit); + printf("apm: CS32_limit=0x%x, CS16_limit=0x%x, DS_limit=0x%x\n", + (u_short)sc->cs32_limit, (u_short)sc->cs16_limit, (u_short)sc->ds_limit); #endif /* APM_DEBUG */ #if 0 @@ -696,36 +967,87 @@ /* setup GDT */ setup_apm_gdt(sc->cs32_base, sc->cs16_base, sc->ds_base, - sc->cs_limit, sc->ds_limit); + sc->cs32_limit, sc->cs16_limit, sc->ds_limit); /* setup entry point 48bit pointer */ apm_addr.segment = GSEL(GAPMCODE32_SEL, SEL_KPL); apm_addr.offset = sc->cs_entry; -#ifdef FORCE_APM10 - apm_version = 0x100; - sc->majorversion = 1; - sc->minorversion = 0; - sc->intversion = INTVERSION(sc->majorversion, sc->minorversion); - printf("apm: running in APM 1.0 compatible mode\n"); -#else - /* Try to kick bios into 1.1 or greater mode */ - apm_driver_version(); + rversion = apm_version; + +#ifdef PC98 + if (rversion & 0x00f0){ + rminorversion = rversion & 0x000f; + }else{ + rminorversion = 0; + } + rmajorversion = ((rversion & 0xf000) >> 12) * 10 + + ((rversion & 0x0f00) >> 8); + sc->minorversion = ((apm_version & 0x00f0) >> 4) * 10 + ((apm_version & 0x000f) >> 0); sc->majorversion = ((apm_version & 0xf000) >> 12) * 10 + ((apm_version & 0x0f00) >> 8); - sc->intversion = INTVERSION(sc->majorversion, sc->minorversion); - + sc->intversion = INTVERSION(1, 0); + if (rmajorversion > 1 || (rmajorversion == 1 && rminorversion >= 2)) { + apm_driver_version(0x102); + sc->intversion = INTVERSION(1, 2); + } else if (rmajorversion == 1 && rminorversion >= 1) { + apm_driver_version(0x101); + sc->intversion = INTVERSION(1, 1); + } + printf("apm: found APM BIOS version %d.%d\n", + sc->majorversion, sc->minorversion); +#else + rminorversion = ((rversion & 0x00f0) >> 4) * 10 + + ((rversion & 0x000f) >> 0); + rmajorversion = ((rversion & 0xf000) >> 12) * 10 + + ((rversion & 0x0f00) >> 8); + + if (apm_force_apm10) { + apm_version = 0x100; + sc->majorversion = 1; + sc->minorversion = 0; + sc->intversion = INTVERSION(1, 0); + printf("apm: running in APM 1.0 compatible mode\n"); + } else { + if (rmajorversion > 1 || + (rmajorversion == 1 && rminorversion >= 2)) { + apm_driver_version(0x102); + sc->intversion = INTVERSION(1, 2); + } else if (rmajorversion == 1 && rminorversion >= 1) { + apm_driver_version(0x101); + sc->intversion = INTVERSION(1, 1); + } + sc->minorversion = ((apm_version & 0x00f0) >> 4) * 10 + + ((apm_version & 0x000f) >> 0); + sc->majorversion = ((apm_version & 0xf000) >> 12) * 10 + + ((apm_version & 0x0f00) >> 8); + + if ((sc->majorversion == 1 && sc->minorversion == 0 + && rmajorversion >= 1 && rminorversion >= 1) + || sc->majorversion > 10 /* for broken APM 1.1 */ + ) { + apm_version = 0x100; + sc->majorversion = 1; + sc->minorversion = 0; + sc->intversion = INTVERSION(1, 0); + printf("apm: running in APM 1.0 compatible mode\n"); + } else { + sc->intversion = + INTVERSION(sc->majorversion, sc->minorversion); #ifdef APM_DEBUG - if (sc->intversion >= INTVERSION(1, 1)) - printf("apm: Engaged control %s\n", is_enabled(!sc->disengaged)); + if (sc->intversion >= INTVERSION(1, 1)) { + printf("apm: Engaged control %s\n", + is_enabled(!sc->disengaged)); + } #endif - - printf("apm: found APM BIOS version %d.%d\n", - sc->majorversion, sc->minorversion); -#endif /* FORCE_APM10 */ + printf("apm: found APM BIOS version %d.%d\n", + sc->majorversion, sc->minorversion); + } + } +#endif /* PC98 */ #ifdef APM_DEBUG printf("apm: Slow Idling CPU %s\n", is_enabled(sc->slow_idle_cpu)); @@ -752,21 +1074,33 @@ } } - /* default suspend hook */ - sc->sc_suspend.ah_fun = apm_default_suspend; - sc->sc_suspend.ah_arg = sc; - sc->sc_suspend.ah_name = "default suspend"; - sc->sc_suspend.ah_order = APM_MAX_ORDER; - - /* default resume hook */ - sc->sc_resume.ah_fun = apm_default_resume; - sc->sc_resume.ah_arg = sc; - sc->sc_resume.ah_name = "default resume"; - sc->sc_resume.ah_order = APM_MIN_ORDER; - - apm_hook_establish(APM_HOOK_SUSPEND, &sc->sc_suspend); - apm_hook_establish(APM_HOOK_RESUME , &sc->sc_resume); + /* default suspend hook */ + sc->sc_suspend.ah_fun = apm_default_suspend; + sc->sc_suspend.ah_arg = sc; + sc->sc_suspend.ah_name = "default suspend"; + sc->sc_suspend.ah_order = APM_MAX_ORDER; + + /* default resume hook */ + sc->sc_resume.ah_fun = apm_default_resume; + sc->sc_resume.ah_arg = sc; + sc->sc_resume.ah_name = "default resume"; + sc->sc_resume.ah_order = APM_MIN_ORDER; + + apm_hook_establish(APM_HOOK_SUSPEND, &sc->sc_suspend); + apm_hook_establish(APM_HOOK_RESUME , &sc->sc_resume); + +#ifndef NECMG + at_shutdown(apm_power_off, NULL, SHUTDOWN_POWER_OFF); +#else /* NECMG */ + at_shutdown(necmg_cpu_poweroff, NULL, SHUTDOWN_POWER_OFF); +#endif /* NECMG */ +#ifdef NECMG + /* + * apm_event_enable() do nothing if sc->initialized = 0. + */ + sc->initialized = 1; +#endif /* NECMG */ apm_event_enable(); sc->initialized = 1; @@ -814,9 +1148,33 @@ else error = EINVAL; break; + + case APMIO_STANDBY: + if (sc->active) + apm_standby(); + else + error = EINVAL; + break; + + case APMIO_GETINFO_OLD: + { + struct apm_info info; + apm_info_old_t aiop; + + if (apm_get_info(&info)) + error = ENODEV; + aiop = (apm_info_old_t)addr; + aiop->ai_major = info.ai_major; + aiop->ai_minor = info.ai_minor; + aiop->ai_acline = info.ai_acline; + aiop->ai_batt_stat = info.ai_batt_stat; + aiop->ai_batt_life = info.ai_batt_life; + aiop->ai_status = info.ai_status; + } + break; case APMIO_GETINFO: if (apm_get_info((apm_info_t)addr)) - error = ENXIO; + error = ENODEV; break; case APMIO_ENABLE: apm_event_enable(); @@ -833,7 +1191,11 @@ case APMIO_DISPLAY: newstate = *(int *)addr; if (apm_display(newstate)) - error = ENXIO; + error = ENODEV; + break; + case APMIO_BIOS: + if (apm_bios_call((struct apm_bios_arg*)addr) == 0) + ((struct apm_bios_arg*)addr)->eax &= 0xff; break; default: error = EINVAL; @@ -854,7 +1216,10 @@ dev = makedev(CDEV_MAJOR,0); cdevsw_add(&dev,&apm_cdevsw,NULL); apm_devsw_installed = 1; - } +#ifdef NECMG + necmg_apm_init(); +#endif /* !NECMG */ + } } SYSINIT(apmdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,apm_drvinit,NULL) diff -urN sys.2.2.8-RELEASE/i386/apm/apm_setup.h sys/i386/apm/apm_setup.h --- sys.2.2.8-RELEASE/i386/apm/apm_setup.h Wed Nov 5 04:02:15 1997 +++ sys/i386/apm/apm_setup.h Wed Dec 23 01:20:38 1998 @@ -10,7 +10,7 @@ * * Sep., 1994 Implemented on FreeBSD 1.1.5.1R (Toshiba AVS001WD) * - * $Id: apm_setup.h,v 1.4.8.1 1997/11/04 19:02:15 nate Exp $ + * $Id: apm_setup.h,v 1.9 1998/06/03 01:59:33 msmith Exp $ */ extern u_long apm_version; @@ -18,7 +18,10 @@ extern u_short apm_cs32_base; extern u_short apm_cs16_base; extern u_short apm_ds_base; -extern u_short apm_cs_limit; +extern u_short apm_cs32_limit; +extern u_short apm_cs16_limit; extern u_short apm_ds_limit; extern u_short apm_flags; extern u_short kernelbase; + +int apm_bios_call __P((struct apm_bios_arg *)); diff -urN sys.2.2.8-RELEASE/i386/apm/apm_setup.s sys/i386/apm/apm_setup.s --- sys.2.2.8-RELEASE/i386/apm/apm_setup.s Wed Nov 5 04:02:17 1997 +++ sys/i386/apm/apm_setup.s Wed Dec 23 01:20:39 1998 @@ -1,5 +1,6 @@ /* * Copyright (C) 1994 by HOSOKAWA, Tatsumi + * Copyright (C) 1997 by Poul-Henning Kamp * * This software may be used, modified, copied, distributed, and sold, * in both source and binary form provided that the above copyright and @@ -10,7 +11,7 @@ * * Sep., 1994 Implemented on FreeBSD 1.1.5.1R (Toshiba AVS001WD) * - * $Id: apm_setup.s,v 1.7.2.1 1997/11/04 19:02:17 nate Exp $ + * $Id: apm_setup.s,v 1.13 1998/06/03 01:59:34 msmith Exp $ */ #include "apm.h" @@ -58,8 +59,12 @@ .globl _apm_ds_base .word 0 -_apm_cs_limit: - .globl _apm_cs_limit +_apm_cs32_limit: + .globl _apm_cs32_limit + .word 0 + +_apm_cs16_limit: + .globl _apm_cs16_limit .word 0 _apm_ds_limit: @@ -168,10 +173,44 @@ shrl $16, %ecx movw %cx, PADDR(_apm_cs32_base) movw %dx, PADDR(_apm_ds_base) - movw %si, PADDR(_apm_cs_limit) + movw %si, PADDR(_apm_cs32_limit) shrl $16, %esi movw %si, PADDR(_apm_ds_limit) movw %di, PADDR(_apm_flags) + ret + +.text + .align 2 + .globl _apm_bios_call +_apm_bios_call: + pushl %ebp + movl 8(%esp),%ebp + pushl %esi + pushl %edi + pushl %ebx + movl 20(%ebp),%edi + movl 16(%ebp),%esi + movl 12(%ebp),%edx + movl 8(%ebp),%ecx + movl 4(%ebp),%ebx + movl 0(%ebp),%eax + pushl %ebp + lcall _apm_addr + popl %ebp + movl %eax,0(%ebp) + jc 1f + xorl %eax,%eax + jz 2f +1: movl $1, %eax +2: movl %ebx,4(%ebp) + movl %ecx,8(%ebp) + movl %edx,12(%ebp) + movl %esi,16(%ebp) + movl %edi,20(%ebp) + popl %ebx + popl %edi + popl %esi + popl %ebp ret #endif NAPM > 0 diff -urN sys.2.2.8-RELEASE/i386/conf/BOOTFLP_PAO sys/i386/conf/BOOTFLP_PAO --- sys.2.2.8-RELEASE/i386/conf/BOOTFLP_PAO Thu Jan 1 09:00:00 1970 +++ sys/i386/conf/BOOTFLP_PAO Thu Jan 14 13:22:00 1999 @@ -0,0 +1,261 @@ +# +# Sample Laptop Configuration +# for lenlen.ntc.keio.ac.jp (Toshiba Libretto 50CT) +# Tatsumi Hosokawa +# + +machine "i386" +cpu "I386_CPU" +cpu "I486_CPU" +cpu "I586_CPU" +cpu "I686_CPU" +ident BOOTFLP_PAO +maxusers 10 + +options MATH_EMULATE #Support for x87 emulation +options INET #InterNETworking +options FFS #Berkeley Fast Filesystem +options NFS #Network Filesystem +options MFS #Memory Filesystem +options MSDOSFS #MSDOS Filesystem +options "CD9660" #ISO 9660 Filesystem +options PROCFS #Process filesystem +options "COMPAT_43" #Compatible with BSD 4.3 [KEEP THIS!] +options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device +options BOUNCE_BUFFERS #include support for DMA bounce buffers +options UCONSOLE #Allow users to grab the console +options FAILSAFE #Be conservative +options USERCONFIG #boot -c editor +options VISUAL_USERCONFIG #visual boot -c editor + +# If your laptop have not had Windoze95-Ready BIOS, please update it. +# Such old BIOS'es sometimes have critical bugs at 32-bit protected +# mode APM BIOS interface (which have not used by Windoze 3.1). + +# PC-card suspend/resume support (experimental) +options APM_PCCARD_RESUME +options PCIC_RESUME_RESET + +# Keep power for serial cards when the system suspends +# (If your machine hangs up when you try to suspend the system with +# FAX/Modem PCMCIA card, uncomment this option). +#options SIO_SUSP_KEEP_PWR + +# Detach SCSI devices when the SCSI card is removed +options SCSI_DETACH + +# Detach ATAPI devices when the ATA card is removed +options ATAPI_DETACH + +# Japanese version of WaveLAN PCMCIA uses 2.4GHz band instead of 915MHz +# band that US version uses. If you want to use Japanese version of +# WaveLAN, uncomment this line, or edit the corresponding config entry +# of /etc/pccard.conf. +#options "WAVELAN_PCMCIA_24" + +# Suspend the system when the battery status is "Low" +#options "APM_BATT_LOW_SUSPEND" + +# If you want to use NTP on laptop machines, uncomment the following +# option. Current APM implementation affects NTP client. +#options "APM_NO_CLOCK_ADJUST" + +# For Win98 BIOS of ThinkPad options +#options "APM_TP_WIN98BIOS" + +# Some X-servers cannot survive suspend/resume on laptop. +# This option kicks her when the system is resumed from suspended mode. +#options SYSCONS_VTY_RESUME + + +config kernel root on wd0 + +controller isa0 +#controller eisa0 +controller pci0 + +# Dont remove these two lines! +pseudo-device card 1 + +# You must use "flags 0x1" when you don't hear any negotiation noise(?) +# if you use modem card, or pccardd doesn't read cis tuple, tell you +# 'No card in database for"(null)"("(null)")' in case of Cirrus Logic's +# pcic is your PC. +#device pcic0 at isa? port 0x3e0 flags 0x1 irq 11 vector pcicintr +device pcic0 at isa? port 0x3e0 irq 11 vector pcicintr +device pcic0 at isa? port 0x3e4 irq 11 vector pcicintr +device pcic1 at isa? port 0x3e2 # for HiNote Ultra II +device pcic1 at isa? port 0x3e4 # for Chandra II + +controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr +disk fd0 at fdc0 drive 0 + +controller fdc1 at isa? disable port "IO_YEFDC" bio irq 6 vector fdintr +disk fd1 at fdc1 drive 0 +options FDC_YE + +options "CMD640" # work around CMD640 chip deficiency +controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr +disk wd0 at wdc0 drive 0 + +controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr +disk wd1 at wdc1 drive 0 + +controller wdc2 at isa? disable port "IO_WD2" bio irq 15 vector wdintr +disk wd2 at wdc2 drive 0 + +controller wdc3 at isa? disable port "IO_WD2" bio irq 15 vector wdintr +disk wd3 at wdc3 drive 0 + +options ATAPI #Enable ATAPI support for IDE bus +options ATAPI_STATIC #Don't do it as an LKM +device wcd0 #IDE CD-ROM +#device wfd0 #IDE floppy (LS-120) + +# A single entry for any of these controllers (ncr, ahb, ahc, amd) is +# sufficient for any number of installed devices. + +#controller ncr0 +#controller amd0 +#controller ahb0 +#controller ahc0 +#controller dpt0 +#controller bt0 at isa? port "IO_BT0" bio irq ? vector bt_isa_intr +#controller uha0 at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr +#controller aha0 at isa? port "IO_AHA0" bio irq ? drq 5 vector ahaintr +controller aic0 at isa? port 0x340 bio irq 11 vector aicintr +#controller nca0 at isa? port 0x1f88 bio irq 10 vector ncaintr +#controller nca1 at isa? port 0x350 bio irq 5 vector ncaintr +controller nin0 at isa? port 0x280 bio irq 5 vector ninintr +#controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr +controller spc0 at isa? port 0x320 bio irq 11 iomem 0xd0000 flags 0x01 vector spcintr + +# Future domain and Q-logic PC-card SCSI drivers +# ported from NetBSD/pc98 (based on NetBSD 1.2) +options SCSI_LOW # XXX: for ncv? and stg? driver +controller ncv0 at isa? port 0x320 bio irq 5 vector ncvintr +controller stg0 at isa? port 0x320 bio irq 5 vector stgintr + +#options DPT_MEASURE_PERFORMANCE # Required by DPT driver?? +#options DPT_VERIFY_HINTR # Some hardware must have it! +#options DPT_TRACK_CCB_STATES # Some hardware must have it! +#options DPT_HANDLE_TIMEOUTS # Some hardware must have it! +#options DPT_TIMEOUT_FACTOR=4 # Some hardware needs more + +controller scbus0 + +device sd0 + +#device od0 #See LINT for possible `od' options. + +#device st0 + +device cd0 #Only need one of these, the code dynamically grows + +#device wt0 at isa? port 0x300 bio irq 5 drq 1 vector wtintr +#device mcd0 at isa? port 0x300 bio irq 10 vector mcdintr + +#controller matcd0 at isa? port 0x230 bio + +#device scd0 at isa? port 0x230 bio + +# syscons is the default console driver, resembling an SCO console +device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr +# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver +#device vt0 at isa? port "IO_KBD" tty irq 1 vector pcrint +#options XSERVER # support for X server +#options FAT_CURSOR # start with block cursor +# If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines +#options PCVT_SCANSET=2 # IBM keyboards are non-std + +# Mandatory, don't remove +device npx0 at isa? port "IO_NPX" flags 0x1 irq 13 vector npxintr + +# +# Laptop support (see LINT for more options) +# +device apm0 at isa? # Advanced Power Management +options APM_BROKEN_STATCLOCK # Workaround some buggy APM BIOS + +device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr +device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr +device sio2 at isa? disable port "IO_COM3" tty irq 5 vector siointr +device sio3 at isa? disable port "IO_COM4" tty irq 9 vector siointr +device sio4 at isa? disable port "IO_COM3" tty irq 5 vector siointr + +device lpt0 at isa? port? tty irq 7 vector lptintr +device lpt1 at isa? port? tty +#device mse0 at isa? port 0x23c tty irq 5 vector mseintr + +device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr + +# Order is important here due to intrusive probes, do *not* alphabetize +# this list of network interfaces until the probes have been fixed. +# Right now it appears that the ie0 must be probed before ep0. See +# revision 1.20 of this file. +#device de0 +#device fxp0 +#device tl0 +#device tx0 +#device vx0 +#device xl0 + +device ed0 at isa? port 0x280 net irq 10 iomem 0xd8000 vector edintr +device ed1 at isa? disable port 0x300 net irq 10 iomem 0xd8000 vector edintr +#device ie0 at isa? port 0x300 net irq 10 iomem 0xd0000 vector ieintr +device ep0 at isa? port 0x300 net irq 10 vector epintr +device ep1 at isa? disable port 0x300 net irq 10 vector epintr +#device ex0 at isa? port? net irq? vector exintr +device fe0 at isa? port 0x300 net irq 10 vector feintr +device fe1 at isa? disable port 0x300 net irq 10 vector feintr +#device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr +#device lnc0 at isa? port 0x280 net irq 10 drq 0 vector lncintr +device sn0 at isa? port 0x300 net irq 10 vector snintr +device sn1 at isa? disable port 0x300 net irq 10 vector snintr +#device wlp0 at isa? port 0x300 net irq 11 vector wlpintr +#device wlp1 at isa? disable port 0x300 net irq 11 vector wlpintr +#device cs0 at isa? disable port 0x300 net irq ? vector csintr +#device cnw0 at isa? port 0x300 net irq 5 vector cnwintr +#device cnw1 at isa? disable port 0x300 net irq 5 vector cnwintr + +# do not enable ze0 and zp0 (these devices are obsolete) +##device ze0 at isa? port 0x300 net irq 5 iomem 0xd8000 vector zeintr +##device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zpintr + +# IBM Smart Capture PCMCIA card +#device scc0 +#device scc1 + +# Hitachi microcomputer system Speach Synthesizer card +#device hss0 +#device hss1 + +# PCMCIA Joystick +#device joy0 at isa? port "IO_GAME" + +pseudo-device loop +pseudo-device ether +#pseudo-device log +#pseudo-device sl 1 +# DHCP uses BPF (Berkeley Packet Filter) +#pseudo-device bpfilter 4 +# ijppp uses tun instead of ppp device +#pseudo-device ppp 1 +#pseudo-device vn 1 +#pseudo-device tun 1 +pseudo-device pty 16 +pseudo-device gzip # Exec gzipped a.out's + +#options DDB + +# KTRACE enables the system-call tracing facility ktrace(2). +# This adds 4 KB bloat to your kernel, and slightly increases +# the costs of each syscall. +#options KTRACE #kernel tracing + +# This provides support for System V shared memory. +# +#options SYSVSHM +#options SYSVSEM +#options SYSVMSG + diff -urN sys.2.2.8-RELEASE/i386/conf/BOOTMFS sys/i386/conf/BOOTMFS --- sys.2.2.8-RELEASE/i386/conf/BOOTMFS Thu Jan 1 09:00:00 1970 +++ sys/i386/conf/BOOTMFS Thu Jan 14 14:31:47 1999 @@ -0,0 +1,260 @@ +# +# Sample Laptop Configuration +# for lenlen.ntc.keio.ac.jp (Toshiba Libretto 50CT) +# Tatsumi Hosokawa +# + +machine "i386" +cpu "I386_CPU" +cpu "I486_CPU" +cpu "I586_CPU" +cpu "I686_CPU" +ident BOOTFLP_PAO +maxusers 4 + +options MATH_EMULATE #Support for x87 emulation +options INET #InterNETworking +options FFS #Berkeley Fast Filesystem +options NFS #Network Filesystem +options MFS #Memory Filesystem +options MSDOSFS #MSDOS Filesystem +options "CD9660" #ISO 9660 Filesystem +options "COMPAT_43" #Compatible with BSD 4.3 [KEEP THIS!] +options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device +options BOUNCE_BUFFERS #include support for DMA bounce buffers +options UCONSOLE #Allow users to grab the console +options FAILSAFE #Be conservative +options USERCONFIG #boot -c editor +options VISUAL_USERCONFIG #visual boot -c editor + +# If your laptop have not had Windoze95-Ready BIOS, please update it. +# Such old BIOS'es sometimes have critical bugs at 32-bit protected +# mode APM BIOS interface (which have not used by Windoze 3.1). + +# PC-card suspend/resume support (experimental) +options APM_PCCARD_RESUME +options PCIC_RESUME_RESET + +# Keep power for serial cards when the system suspends +# (If your machine hangs up when you try to suspend the system with +# FAX/Modem PCMCIA card, uncomment this option). +#options SIO_SUSP_KEEP_PWR + +# Detach SCSI devices when the SCSI card is removed +options SCSI_DETACH + +# Detach ATAPI devices when the ATA card is removed +options ATAPI_DETACH + +# Japanese version of WaveLAN PCMCIA uses 2.4GHz band instead of 915MHz +# band that US version uses. If you want to use Japanese version of +# WaveLAN, uncomment this line, or edit the corresponding config entry +# of /etc/pccard.conf. +#options "WAVELAN_PCMCIA_24" + +# Suspend the system when the battery status is "Low" +#options "APM_BATT_LOW_SUSPEND" + +# If you want to use NTP on laptop machines, uncomment the following +# option. Current APM implementation affects NTP client. +#options "APM_NO_CLOCK_ADJUST" + +# For Win98 BIOS of ThinkPad options +#options "APM_TP_WIN98BIOS" + +# Some X-servers cannot survive suspend/resume on laptop. +# This option kicks her when the system is resumed from suspended mode. +#options SYSCONS_VTY_RESUME + + +config kernel root on wd0 + +controller isa0 +#controller eisa0 +controller pci0 + +# Dont remove these two lines! +pseudo-device card 1 + +# You must use "flags 0x1" when you don't hear any negotiation noise(?) +# if you use modem card, or pccardd doesn't read cis tuple, tell you +# 'No card in database for"(null)"("(null)")' in case of Cirrus Logic's +# pcic is your PC. +#device pcic0 at isa? port 0x3e0 flags 0x1 irq 11 vector pcicintr +device pcic0 at isa? port 0x3e0 irq 11 vector pcicintr +device pcic0 at isa? port 0x3e4 irq 11 vector pcicintr +device pcic1 at isa? port 0x3e2 # for HiNote Ultra II +device pcic1 at isa? port 0x3e4 # for Chandra II + +controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr +disk fd0 at fdc0 drive 0 + +controller fdc1 at isa? disable port "IO_YEFDC" bio irq 6 vector fdintr +disk fd1 at fdc1 drive 0 +options FDC_YE + +options "CMD640" # work around CMD640 chip deficiency +controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr +disk wd0 at wdc0 drive 0 + +controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr +disk wd1 at wdc1 drive 0 + +controller wdc2 at isa? disable port "IO_WD2" bio irq 15 vector wdintr +disk wd2 at wdc2 drive 0 + +controller wdc3 at isa? disable port "IO_WD2" bio irq 15 vector wdintr +disk wd3 at wdc3 drive 0 + +options ATAPI #Enable ATAPI support for IDE bus +options ATAPI_STATIC #Don't do it as an LKM +device wcd0 #IDE CD-ROM +#device wfd0 #IDE floppy (LS-120) + +# A single entry for any of these controllers (ncr, ahb, ahc, amd) is +# sufficient for any number of installed devices. + +#controller ncr0 +#controller amd0 +#controller ahb0 +#controller ahc0 +#controller dpt0 +#controller bt0 at isa? port "IO_BT0" bio irq ? vector bt_isa_intr +#controller uha0 at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr +#controller aha0 at isa? port "IO_AHA0" bio irq ? drq 5 vector ahaintr +controller aic0 at isa? port 0x340 bio irq 11 vector aicintr +#controller nca0 at isa? port 0x1f88 bio irq 10 vector ncaintr +#controller nca1 at isa? port 0x350 bio irq 5 vector ncaintr +controller nin0 at isa? port 0x280 bio irq 5 vector ninintr +#controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr +controller spc0 at isa? port 0x320 bio irq 11 iomem 0xd0000 flags 0x01 vector spcintr + +# Future domain and Q-logic PC-card SCSI drivers +# ported from NetBSD/pc98 (based on NetBSD 1.2) +options SCSI_LOW # XXX: for ncv? and stg? driver +controller ncv0 at isa? port 0x320 bio irq 5 vector ncvintr +controller stg0 at isa? port 0x320 bio irq 5 vector stgintr + +#options DPT_MEASURE_PERFORMANCE # Required by DPT driver?? +#options DPT_VERIFY_HINTR # Some hardware must have it! +#options DPT_TRACK_CCB_STATES # Some hardware must have it! +#options DPT_HANDLE_TIMEOUTS # Some hardware must have it! +#options DPT_TIMEOUT_FACTOR=4 # Some hardware needs more + +controller scbus0 + +device sd0 + +#device od0 #See LINT for possible `od' options. + +#device st0 + +device cd0 #Only need one of these, the code dynamically grows + +#device wt0 at isa? port 0x300 bio irq 5 drq 1 vector wtintr +#device mcd0 at isa? port 0x300 bio irq 10 vector mcdintr + +#controller matcd0 at isa? port 0x230 bio + +#device scd0 at isa? port 0x230 bio + +# syscons is the default console driver, resembling an SCO console +device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr +# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver +#device vt0 at isa? port "IO_KBD" tty irq 1 vector pcrint +#options XSERVER # support for X server +#options FAT_CURSOR # start with block cursor +# If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines +#options PCVT_SCANSET=2 # IBM keyboards are non-std + +# Mandatory, don't remove +device npx0 at isa? port "IO_NPX" flags 0x1 irq 13 vector npxintr + +# +# Laptop support (see LINT for more options) +# +device apm0 at isa? # Advanced Power Management +options APM_BROKEN_STATCLOCK # Workaround some buggy APM BIOS + +device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr +device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr +device sio2 at isa? disable port "IO_COM3" tty irq 5 vector siointr +device sio3 at isa? disable port "IO_COM4" tty irq 9 vector siointr +device sio4 at isa? disable port "IO_COM3" tty irq 5 vector siointr + +device lpt0 at isa? port? tty irq 7 vector lptintr +device lpt1 at isa? port? tty +#device mse0 at isa? port 0x23c tty irq 5 vector mseintr + +device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr + +# Order is important here due to intrusive probes, do *not* alphabetize +# this list of network interfaces until the probes have been fixed. +# Right now it appears that the ie0 must be probed before ep0. See +# revision 1.20 of this file. +#device de0 +#device fxp0 +#device tl0 +#device tx0 +#device vx0 +#device xl0 + +device ed0 at isa? port 0x280 net irq 10 iomem 0xd8000 vector edintr +device ed1 at isa? disable port 0x300 net irq 10 iomem 0xd8000 vector edintr +#device ie0 at isa? port 0x300 net irq 10 iomem 0xd0000 vector ieintr +device ep0 at isa? port 0x300 net irq 10 vector epintr +device ep1 at isa? disable port 0x300 net irq 10 vector epintr +#device ex0 at isa? port? net irq? vector exintr +device fe0 at isa? port 0x300 net irq 10 vector feintr +device fe1 at isa? disable port 0x300 net irq 10 vector feintr +#device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr +#device lnc0 at isa? port 0x280 net irq 10 drq 0 vector lncintr +device sn0 at isa? port 0x300 net irq 10 vector snintr +device sn1 at isa? disable port 0x300 net irq 10 vector snintr +#device wlp0 at isa? port 0x300 net irq 11 vector wlpintr +#device wlp1 at isa? disable port 0x300 net irq 11 vector wlpintr +#device cs0 at isa? disable port 0x300 net irq ? vector csintr +#device cnw0 at isa? port 0x300 net irq 5 vector cnwintr +#device cnw1 at isa? disable port 0x300 net irq 5 vector cnwintr + +# do not enable ze0 and zp0 (these devices are obsolete) +##device ze0 at isa? port 0x300 net irq 5 iomem 0xd8000 vector zeintr +##device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zpintr + +# IBM Smart Capture PCMCIA card +#device scc0 +#device scc1 + +# Hitachi microcomputer system Speach Synthesizer card +#device hss0 +#device hss1 + +# PCMCIA Joystick +#device joy0 at isa? port "IO_GAME" + +pseudo-device loop +pseudo-device ether +#pseudo-device log +#pseudo-device sl 1 +# DHCP uses BPF (Berkeley Packet Filter) +#pseudo-device bpfilter 4 +# ijppp uses tun instead of ppp device +#pseudo-device ppp 1 +#pseudo-device vn 1 +pseudo-device pty 16 +pseudo-device gzip # Exec gzipped a.out's + +#options DDB + +# This adds 4 KB bloat to your kernel, and slightly increases +# the costs of each syscall. + +# This provides support for System V shared memory. +# + +options MFS +options NFS_NOSERVER +options "MAXCONS=4" +options "PCIC_NO_IRQ" +options USERCONFIG_BOOT +options "MFS_ROOT=3200" diff -urN sys.2.2.8-RELEASE/i386/conf/LINT sys/i386/conf/LINT --- sys.2.2.8-RELEASE/i386/conf/LINT Mon Nov 16 06:42:20 1998 +++ sys/i386/conf/LINT Tue Dec 22 13:49:33 1998 @@ -665,10 +665,6 @@ options SLOW_VGA # do byte-wide i/o's to TS and GDC regs options SC_HISTORY_SIZE=200 # number of history buffer lines options SC_DISABLE_REBOOT # disable reboot key sequence -# Try the following option, if the mouse pointer is not drawn correctly -# or font does not seem to be loaded properly. May case flicker on -# some systems. -#options SC_ALT_SEQACCESS # # `flags' for sc0: diff -urN sys.2.2.8-RELEASE/i386/conf/Makefile.kit sys/i386/conf/Makefile.kit --- sys.2.2.8-RELEASE/i386/conf/Makefile.kit Thu Jan 1 09:00:00 1970 +++ sys/i386/conf/Makefile.kit Tue Dec 22 13:49:34 1998 @@ -0,0 +1,41 @@ +# $Id: Makefile.kit,v 1.1.4.1 1998/12/05 22:46:24 itojun Exp $ +# Tatsumi Hosokawa + +all: PAO BOOTFLP_PAO + +PAO: PAO_ALL + sed \ + -e 's/device\([ ]*\)hss/#device\1hss/' \ + -e 's/device\([ ]*\)scc/#device\1scc/' \ + -e 's/device\([ ]*\)wlp/#device\1wlp/' \ + -e 's/device\([ ]*\)cnw/#device\1cnw/' \ + -e 's/ident\([ ]*\)PAO_ALL/ident\1PAO/' \ + < PAO_ALL > PAO + +# CAUTION: Don't remove "device apm0" from BOOTFLP_PAO! +# Typical default value of power management BIOS setup force the machine +# to suspend without typing the keys for minutes (this condition should +# happen if you select many distribution files or install from anonymous +# FTP site over slow links). + +BOOTFLP_PAO: PAO + sed \ + -e 's/device\([ ]*\)wfd/#device\1wfd/' \ + -e 's/device\([ ]*\)od/#device\1od/' \ + -e 's/device\([ ]*\)st/#device\1st/' \ + -e 's/device\([ ]*\)joy/#device\1joy/' \ + -e 's/pseudo-device\([ ]*\)log/#pseudo-device\1log/' \ + -e 's/pseudo-device\([ ]*\)bpfilter/#pseudo-device\1bpfilter/' \ + -e 's/pseudo-device\([ ]*\)vn/#pseudo-device\1vn/' \ + -e 's/pseudo-device\([ ]*\)tun/#pseudo-device\1tun/' \ + -e 's/pseudo-device\([ ]*\)sl/#pseudo-device\1sl/' \ + -e 's/options\([ ]*\)DDB/#options\1DDB/' \ + -e 's/options\([ ]*\)SYSVSHM/#options\1SYSVSHM/' \ + -e 's/options\([ ]*\)SYSVSEM/#options\1SYSVSEM/' \ + -e 's/options\([ ]*\)SYSVMSG/#options\1SYSVMSG/' \ + -e 's/tape\([ ]*\)ft/#tape\1ft/' \ + -e 's/ident\([ ]*\)PAO/ident\1BOOTFLP_PAO/' \ + < PAO > BOOTFLP_PAO + +clean: + rm -f PAO BOOTFLP_PAO BOOTMFS diff -urN sys.2.2.8-RELEASE/i386/conf/PAO sys/i386/conf/PAO --- sys.2.2.8-RELEASE/i386/conf/PAO Thu Jan 1 09:00:00 1970 +++ sys/i386/conf/PAO Thu Jan 14 13:22:00 1999 @@ -0,0 +1,261 @@ +# +# Sample Laptop Configuration +# for lenlen.ntc.keio.ac.jp (Toshiba Libretto 50CT) +# Tatsumi Hosokawa +# + +machine "i386" +cpu "I386_CPU" +cpu "I486_CPU" +cpu "I586_CPU" +cpu "I686_CPU" +ident PAO +maxusers 10 + +options MATH_EMULATE #Support for x87 emulation +options INET #InterNETworking +options FFS #Berkeley Fast Filesystem +options NFS #Network Filesystem +options MFS #Memory Filesystem +options MSDOSFS #MSDOS Filesystem +options "CD9660" #ISO 9660 Filesystem +options PROCFS #Process filesystem +options "COMPAT_43" #Compatible with BSD 4.3 [KEEP THIS!] +options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device +options BOUNCE_BUFFERS #include support for DMA bounce buffers +options UCONSOLE #Allow users to grab the console +options FAILSAFE #Be conservative +options USERCONFIG #boot -c editor +options VISUAL_USERCONFIG #visual boot -c editor + +# If your laptop have not had Windoze95-Ready BIOS, please update it. +# Such old BIOS'es sometimes have critical bugs at 32-bit protected +# mode APM BIOS interface (which have not used by Windoze 3.1). + +# PC-card suspend/resume support (experimental) +options APM_PCCARD_RESUME +options PCIC_RESUME_RESET + +# Keep power for serial cards when the system suspends +# (If your machine hangs up when you try to suspend the system with +# FAX/Modem PCMCIA card, uncomment this option). +PX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx#options SIO_SUSP_KEEP_PWR + +# Detach SCSI devices when the SCSI card is removed +options SCSI_DETACH + +# Detach ATAPI devices when the ATA card is removed +options ATAPI_DETACH + +# Japanese version of WaveLAN PCMCIA uses 2.4GHz band instead of 915MHz +# band that US version uses. If you want to use Japanese version of +# WaveLAN, uncomment this line, or edit the corresponding config entry +# of /etc/pccard.conf. +#options "WAVELAN_PCMCIA_24" + +# Suspend the system when the battery status is "Low" +#options "APM_BATT_LOW_SUSPEND" + +# If you want to use NTP on laptop machines, uncomment the following +# option. Current APM implementation affects NTP client. +#options "APM_NO_CLOCK_ADJUST" + +# For Win98 BIOS of ThinkPad options +#options "APM_TP_WIN98BIOS" + +# Some X-servers cannot survive suspend/resume on laptop. +# This option kicks her when the system is resumed from suspended mode. +#options SYSCONS_VTY_RESUME + + +config kernel root on wd0 + +controller isa0 +#controller eisa0 +controller pci0 + +# Dont remove these two lines! +pseudo-device card 1 + +# You must use "flags 0x1" when you don't hear any negotiation noise(?) +# if you use modem card, or pccardd doesn't read cis tuple, tell you +# 'No card in database for"(null)"("(null)")' in case of Cirrus Logic's +# pcic is your PC. +#device pcic0 at isa? port 0x3e0 flags 0x1 irq 11 vector pcicintr +device pcic0 at isa? port 0x3e0 irq 11 vector pcicintr +device pcic0 at isa? port 0x3e4 irq 11 vector pcicintr +device pcic1 at isa? port 0x3e2 # for HiNote Ultra II +device pcic1 at isa? port 0x3e4 # for Chandra II + +controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr +disk fd0 at fdc0 drive 0 + +controller fdc1 at isa? disable port "IO_YEFDC" bio irq 6 vector fdintr +disk fd1 at fdc1 drive 0 +options FDC_YE + +options "CMD640" # work around CMD640 chip deficiency +controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr +disk wd0 at wdc0 drive 0 + +controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr +disk wd1 at wdc1 drive 0 + +controller wdc2 at isa? disable port "IO_WD2" bio irq 15 vector wdintr +disk wd2 at wdc2 drive 0 + +controller wdc3 at isa? disable port "IO_WD2" bio irq 15 vector wdintr +disk wd3 at wdc3 drive 0 + +options ATAPI #Enable ATAPI support for IDE bus +options ATAPI_STATIC #Don't do it as an LKM +device wcd0 #IDE CD-ROM +device wfd0 #IDE floppy (LS-120) + +# A single entry for any of these controllers (ncr, ahb, ahc, amd) is +# sufficient for any number of installed devices. + +#controller ncr0 +#controller amd0 +#controller ahb0 +#controller ahc0 +#controller dpt0 +#controller bt0 at isa? port "IO_BT0" bio irq ? vector bt_isa_intr +#controller uha0 at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr +#controller aha0 at isa? port "IO_AHA0" bio irq ? drq 5 vector ahaintr +controller aic0 at isa? port 0x340 bio irq 11 vector aicintr +#controller nca0 at isa? port 0x1f88 bio irq 10 vector ncaintr +#controller nca1 at isa? port 0x350 bio irq 5 vector ncaintr +controller nin0 at isa? port 0x280 bio irq 5 vector ninintr +#controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr +controller spc0 at isa? port 0x320 bio irq 11 iomem 0xd0000 flags 0x01 vector spcintr + +# Future domain and Q-logic PC-card SCSI drivers +# ported from NetBSD/pc98 (based on NetBSD 1.2) +options SCSI_LOW # XXX: for ncv? and stg? driver +controller ncv0 at isa? port 0x320 bio irq 5 vector ncvintr +controller stg0 at isa? port 0x320 bio irq 5 vector stgintr + +#options DPT_MEASURE_PERFORMANCE # Required by DPT driver?? +#options DPT_VERIFY_HINTR # Some hardware must have it! +#options DPT_TRACK_CCB_STATES # Some hardware must have it! +#options DPT_HANDLE_TIMEOUTS # Some hardware must have it! +#options DPT_TIMEOUT_FACTOR=4 # Some hardware needs more + +controller scbus0 + +device sd0 + +device od0 #See LINT for possible `od' options. + +device st0 + +device cd0 #Only need one of these, the code dynamically grows + +#device wt0 at isa? port 0x300 bio irq 5 drq 1 vector wtintr +#device mcd0 at isa? port 0x300 bio irq 10 vector mcdintr + +#controller matcd0 at isa? port 0x230 bio + +#device scd0 at isa? port 0x230 bio + +# syscons is the default console driver, resembling an SCO console +device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr +# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver +#device vt0 at isa? port "IO_KBD" tty irq 1 vector pcrint +#options XSERVER # support for X server +#options FAT_CURSOR # start with block cursor +# If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines +#options PCVT_SCANSET=2 # IBM keyboards are non-std + +# Mandatory, don't remove +device npx0 at isa? port "IO_NPX" flags 0x1 irq 13 vector npxintr + +# +# Laptop support (see LINT for more options) +# +device apm0 at isa? # Advanced Power Management +options APM_BROKEN_STATCLOCK # Workaround some buggy APM BIOS + +device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr +device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr +device sio2 at isa? disable port "IO_COM3" tty irq 5 vector siointr +device sio3 at isa? disable port "IO_COM4" tty irq 9 vector siointr +device sio4 at isa? disable port "IO_COM3" tty irq 5 vector siointr + +device lpt0 at isa? port? tty irq 7 vector lptintr +device lpt1 at isa? port? tty +#device mse0 at isa? port 0x23c tty irq 5 vector mseintr + +device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr + +# Order is important here due to intrusive probes, do *not* alphabetize +# this list of network interfaces until the probes have been fixed. +# Right now it appears that the ie0 must be probed before ep0. See +# revision 1.20 of this file. +#device de0 +#device fxp0 +#device tl0 +#device tx0 +#device vx0 +#device xl0 + +device ed0 at isa? port 0x280 net irq 10 iomem 0xd8000 vector edintr +device ed1 at isa? disable port 0x300 net irq 10 iomem 0xd8000 vector edintr +#device ie0 at isa? port 0x300 net irq 10 iomem 0xd0000 vector ieintr +device ep0 at isa? port 0x300 net irq 10 vector epintr +device ep1 at isa? disable port 0x300 net irq 10 vector epintr +#device ex0 at isa? port? net irq? vector exintr +device fe0 at isa? port 0x300 net irq 10 vector feintr +device fe1 at isa? disable port 0x300 net irq 10 vector feintr +#device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr +#device lnc0 at isa? port 0x280 net irq 10 drq 0 vector lncintr +device sn0 at isa? port 0x300 net irq 10 vector snintr +device sn1 at isa? disable port 0x300 net irq 10 vector snintr +#device wlp0 at isa? port 0x300 net irq 11 vector wlpintr +#device wlp1 at isa? disable port 0x300 net irq 11 vector wlpintr +#device cs0 at isa? disable port 0x300 net irq ? vector csintr +#device cnw0 at isa? port 0x300 net irq 5 vector cnwintr +#device cnw1 at isa? disable port 0x300 net irq 5 vector cnwintr + +# do not enable ze0 and zp0 (these devices are obsolete) +##device ze0 at isa? port 0x300 net irq 5 iomem 0xd8000 vector zeintr +##device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zpintr + +# IBM Smart Capture PCMCIA card +#device scc0 +#device scc1 + +# Hitachi microcomputer system Speach Synthesizer card +#device hss0 +#device hss1 + +# PCMCIA Joystick +device joy0 at isa? port "IO_GAME" + +pseudo-device loop +pseudo-device ether +pseudo-device log +pseudo-device sl 1 +# DHCP uses BPF (Berkeley Packet Filter) +pseudo-device bpfilter 4 +# ijppp uses tun instead of ppp device +#pseudo-device ppp 1 +pseudo-device vn 1 +pseudo-device tun 1 +pseudo-device pty 16 +pseudo-device gzip # Exec gzipped a.out's + +options DDB + +# KTRACE enables the system-call tracing facility ktrace(2). +# This adds 4 KB bloat to your kernel, and slightly increases +# the costs of each syscall. +#options KTRACE #kernel tracing + +# This provides support for System V shared memory. +# +options SYSVSHM +options SYSVSEM +options SYSVMSG + diff -urN sys.2.2.8-RELEASE/i386/conf/PAO_ALL sys/i386/conf/PAO_ALL --- sys.2.2.8-RELEASE/i386/conf/PAO_ALL Thu Jan 1 09:00:00 1970 +++ sys/i386/conf/PAO_ALL Wed Dec 23 15:22:56 1998 @@ -0,0 +1,261 @@ +# +# Sample Laptop Configuration +# for lenlen.ntc.keio.ac.jp (Toshiba Libretto 50CT) +# Tatsumi Hosokawa +# + +machine "i386" +cpu "I386_CPU" +cpu "I486_CPU" +cpu "I586_CPU" +cpu "I686_CPU" +ident PAO_ALL +maxusers 10 + +options MATH_EMULATE #Support for x87 emulation +options INET #InterNETworking +options FFS #Berkeley Fast Filesystem +options NFS #Network Filesystem +options MFS #Memory Filesystem +options MSDOSFS #MSDOS Filesystem +options "CD9660" #ISO 9660 Filesystem +options PROCFS #Process filesystem +options "COMPAT_43" #Compatible with BSD 4.3 [KEEP THIS!] +options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device +options BOUNCE_BUFFERS #include support for DMA bounce buffers +options UCONSOLE #Allow users to grab the console +options FAILSAFE #Be conservative +options USERCONFIG #boot -c editor +options VISUAL_USERCONFIG #visual boot -c editor + +# If your laptop have not had Windoze95-Ready BIOS, please update it. +# Such old BIOS'es sometimes have critical bugs at 32-bit protected +# mode APM BIOS interface (which have not used by Windoze 3.1). + +# PC-card suspend/resume support (experimental) +options APM_PCCARD_RESUME +options PCIC_RESUME_RESET + +# Keep power for serial cards when the system suspends +# (If your machine hangs up when you try to suspend the system with +# FAX/Modem PCMCIA card, uncomment this option). +#options SIO_SUSP_KEEP_PWR + +# Detach SCSI devices when the SCSI card is removed +options SCSI_DETACH + +# Detach ATAPI devices when the ATA card is removed +options ATAPI_DETACH + +# Japanese version of WaveLAN PCMCIA uses 2.4GHz band instead of 915MHz +# band that US version uses. If you want to use Japanese version of +# WaveLAN, uncomment this line, or edit the corresponding config entry +# of /etc/pccard.conf. +#options "WAVELAN_PCMCIA_24" + +# Suspend the system when the battery status is "Low" +#options "APM_BATT_LOW_SUSPEND" + +# If you want to use NTP on laptop machines, uncomment the following +# option. Current APM implementation affects NTP client. +#options "APM_NO_CLOCK_ADJUST" + +# For Win98 BIOS of ThinkPad options +#options "APM_TP_WIN98BIOS" + +# Some X-servers cannot survive suspend/resume on laptop. +# This option kicks her when the system is resumed from suspended mode. +#options SYSCONS_VTY_RESUME + + +config kernel root on wd0 + +controller isa0 +#controller eisa0 +controller pci0 + +# Dont remove these two lines! +pseudo-device card 1 + +# You must use "flags 0x1" when you don't hear any negotiation noise(?) +# if you use modem card, or pccardd doesn't read cis tuple, tell you +# 'No card in database for"(null)"("(null)")' in case of Cirrus Logic's +# pcic is your PC. +#device pcic0 at isa? port 0x3e0 flags 0x1 irq 11 vector pcicintr +device pcic0 at isa? port 0x3e0 irq 11 vector pcicintr +device pcic0 at isa? port 0x3e4 irq 11 vector pcicintr +device pcic1 at isa? port 0x3e2 # for HiNote Ultra II +device pcic1 at isa? port 0x3e4 # for Chandra II + +controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr +disk fd0 at fdc0 drive 0 + +controller fdc1 at isa? disable port "IO_YEFDC" bio irq 6 vector fdintr +disk fd1 at fdc1 drive 0 +options FDC_YE + +options "CMD640" # work around CMD640 chip deficiency +controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr +disk wd0 at wdc0 drive 0 + +controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr +disk wd1 at wdc1 drive 0 + +controller wdc2 at isa? disable port "IO_WD2" bio irq 15 vector wdintr +disk wd2 at wdc2 drive 0 + +controller wdc3 at isa? disable port "IO_WD2" bio irq 15 vector wdintr +disk wd3 at wdc3 drive 0 + +options ATAPI #Enable ATAPI support for IDE bus +options ATAPI_STATIC #Don't do it as an LKM +device wcd0 #IDE CD-ROM +device wfd0 #IDE floppy (LS-120) + +# A single entry for any of these controllers (ncr, ahb, ahc, amd) is +# sufficient for any number of installed devices. + +#controller ncr0 +#controller amd0 +#controller ahb0 +#controller ahc0 +#controller dpt0 +#controller bt0 at isa? port "IO_BT0" bio irq ? vector bt_isa_intr +#controller uha0 at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr +#controller aha0 at isa? port "IO_AHA0" bio irq ? drq 5 vector ahaintr +controller aic0 at isa? port 0x340 bio irq 11 vector aicintr +#controller nca0 at isa? port 0x1f88 bio irq 10 vector ncaintr +#controller nca1 at isa? port 0x350 bio irq 5 vector ncaintr +controller nin0 at isa? port 0x280 bio irq 5 vector ninintr +#controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr +controller spc0 at isa? port 0x320 bio irq 11 iomem 0xd0000 flags 0x01 vector spcintr + +# Future domain and Q-logic PC-card SCSI drivers +# ported from NetBSD/pc98 (based on NetBSD 1.2) +options SCSI_LOW # XXX: for ncv? and stg? driver +controller ncv0 at isa? port 0x320 bio irq 5 vector ncvintr +controller stg0 at isa? port 0x320 bio irq 5 vector stgintr + +#options DPT_MEASURE_PERFORMANCE # Required by DPT driver?? +#options DPT_VERIFY_HINTR # Some hardware must have it! +#options DPT_TRACK_CCB_STATES # Some hardware must have it! +#options DPT_HANDLE_TIMEOUTS # Some hardware must have it! +#options DPT_TIMEOUT_FACTOR=4 # Some hardware needs more + +controller scbus0 + +device sd0 + +device od0 #See LINT for possible `od' options. + +device st0 + +device cd0 #Only need one of these, the code dynamically grows + +#device wt0 at isa? port 0x300 bio irq 5 drq 1 vector wtintr +#device mcd0 at isa? port 0x300 bio irq 10 vector mcdintr + +#controller matcd0 at isa? port 0x230 bio + +#device scd0 at isa? port 0x230 bio + +# syscons is the default console driver, resembling an SCO console +device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr +# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver +#device vt0 at isa? port "IO_KBD" tty irq 1 vector pcrint +#options XSERVER # support for X server +#options FAT_CURSOR # start with block cursor +# If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines +#options PCVT_SCANSET=2 # IBM keyboards are non-std + +# Mandatory, don't remove +device npx0 at isa? port "IO_NPX" flags 0x1 irq 13 vector npxintr + +# +# Laptop support (see LINT for more options) +# +device apm0 at isa? # Advanced Power Management +options APM_BROKEN_STATCLOCK # Workaround some buggy APM BIOS + +device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr +device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr +device sio2 at isa? disable port "IO_COM3" tty irq 5 vector siointr +device sio3 at isa? disable port "IO_COM4" tty irq 9 vector siointr +device sio4 at isa? disable port "IO_COM3" tty irq 5 vector siointr + +device lpt0 at isa? port? tty irq 7 vector lptintr +device lpt1 at isa? port? tty +#device mse0 at isa? port 0x23c tty irq 5 vector mseintr + +device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr + +# Order is important here due to intrusive probes, do *not* alphabetize +# this list of network interfaces until the probes have been fixed. +# Right now it appears that the ie0 must be probed before ep0. See +# revision 1.20 of this file. +#device de0 +#device fxp0 +#device tl0 +#device tx0 +#device vx0 +#device xl0 + +device ed0 at isa? port 0x280 net irq 10 iomem 0xd8000 vector edintr +device ed1 at isa? disable port 0x300 net irq 10 iomem 0xd8000 vector edintr +#device ie0 at isa? port 0x300 net irq 10 iomem 0xd0000 vector ieintr +device ep0 at isa? port 0x300 net irq 10 vector epintr +device ep1 at isa? disable port 0x300 net irq 10 vector epintr +#device ex0 at isa? port? net irq? vector exintr +device fe0 at isa? port 0x300 net irq 10 vector feintr +device fe1 at isa? disable port 0x300 net irq 10 vector feintr +#device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr +#device lnc0 at isa? port 0x280 net irq 10 drq 0 vector lncintr +device sn0 at isa? port 0x300 net irq 10 vector snintr +device sn1 at isa? disable port 0x300 net irq 10 vector snintr +device wlp0 at isa? port 0x300 net irq 11 vector wlpintr +device wlp1 at isa? disable port 0x300 net irq 11 vector wlpintr +#device cs0 at isa? disable port 0x300 net irq ? vector csintr +device cnw0 at isa? port 0x300 net irq 5 vector cnwintr +device cnw1 at isa? disable port 0x300 net irq 5 vector cnwintr + +# do not enable ze0 and zp0 (these devices are obsolete) +##device ze0 at isa? port 0x300 net irq 5 iomem 0xd8000 vector zeintr +##device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zpintr + +# IBM Smart Capture PCMCIA card +device scc0 +device scc1 + +# Hitachi microcomputer system Speach Synthesizer card +device hss0 +device hss1 + +# PCMCIA Joystick +device joy0 at isa? port "IO_GAME" + +pseudo-device loop +pseudo-device ether +pseudo-device log +pseudo-device sl 1 +# DHCP uses BPF (Berkeley Packet Filter) +pseudo-device bpfilter 4 +# ijppp uses tun instead of ppp device +#pseudo-device ppp 1 +pseudo-device vn 1 +pseudo-device tun 1 +pseudo-device pty 16 +pseudo-device gzip # Exec gzipped a.out's + +options DDB + +# KTRACE enables the system-call tracing facility ktrace(2). +# This adds 4 KB bloat to your kernel, and slightly increases +# the costs of each syscall. +#options KTRACE #kernel tracing + +# This provides support for System V shared memory. +# +options SYSVSHM +options SYSVSEM +options SYSVMSG + diff -urN sys.2.2.8-RELEASE/i386/conf/PCCARD sys/i386/conf/PCCARD --- sys.2.2.8-RELEASE/i386/conf/PCCARD Sun Nov 2 03:55:45 1997 +++ sys/i386/conf/PCCARD Tue Dec 22 13:49:34 1998 @@ -11,7 +11,7 @@ # device lines is present in the ./LINT configuration file. If you are # in doubt as to the purpose or necessity of a line, check first in LINT. # -# $Id: PCCARD,v 1.1.2.1 1997/11/01 18:55:45 nate Exp $ +# $Id: PCCARD,v 1.1.1.1.6.1 1998/07/27 09:44:05 kim Exp $ machine "i386" cpu "I386_CPU" @@ -53,8 +53,16 @@ options ATAPI #Enable ATAPI support for IDE bus options ATAPI_STATIC #Don't do it as an LKM device wcd0 #IDE CD-ROM +device wfd0 #IDE floppy (LS-120) controller aic0 at isa? port 0x340 bio irq 11 vector aicintr +controller spc0 at isa? port 0x320 bio irq 11 iomem 0xd0000 flags 0x01 vector spcintr + +# Future domain and Q-logic PC-card SCSI drivers +# ported from NetBSD/pc98 (based on NetBSD 1.2) +options SCSI_LOW # XXX: for ncv? and stg? driver +controller ncv0 at isa? port 0x320 bio irq 5 vector ncvintr +controller stg0 at isa? port 0x320 bio irq 5 vector stgintr controller scbus0 @@ -79,9 +87,18 @@ options APM_BROKEN_STATCLOCK # Workaround some buggy APM BIOS # PCCARD (PCMCIA) support -controller card0 -device pcic0 at card? -device pcic1 at card? +# Dont remove these two lines! +pseudo-device card 1 + +# You must use "flags 0x1" when you don't hear any negotiation noise(?) +# if you use modem card, or pccardd doesn't read cis tuple, tell you +# 'No card in database for"(null)"("(null)")' in case of Cirrus Logic's +# pcic is your PC. +#device pcic0 at isa? port 0x3e0 flags 0x1 irq 11 vector pcicintr +device pcic0 at isa? port 0x3e0 irq 11 vector pcicintr +device pcic0 at isa? port 0x3e4 irq 11 vector pcicintr +device pcic1 at isa? port 0x3e2 # for HiNote Ultra II +device pcic1 at isa? port 0x3e4 # for Chandra II device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr @@ -95,6 +112,9 @@ device ed0 at isa? port 0x280 net irq 5 iomem 0xd8000 vector edintr device ep0 at isa? port 0x300 net irq 10 vector epintr device fe0 at isa? port 0x300 net irq ? vector feintr +device sn0 at isa? port 0x300 net irq 10 vector snintr +#device wlp0 at isa? port 0x300 net irq 11 vector wlpintr +device cnw0 at isa? port 0x300 net irq 5 vector cnwintr pseudo-device loop pseudo-device ether diff -urN sys.2.2.8-RELEASE/i386/conf/files.i386 sys/i386/conf/files.i386 --- sys.2.2.8-RELEASE/i386/conf/files.i386 Sun Nov 8 23:08:18 1998 +++ sys/i386/conf/files.i386 Wed Dec 23 15:20:38 1998 @@ -103,7 +103,9 @@ i386/isa/gpib.c optional gp device-driver i386/isa/asc.c optional asc device-driver i386/isa/gsc.c optional gsc device-driver +i386/isa/hss.c optional hss device-driver i386/isa/if_ar.c optional ar device-driver +i386/isa/if_cnw.c optional cnw device-driver i386/isa/if_cs.c optional cs device-driver i386/isa/if_cx.c optional cx device-driver i386/isa/if_ed.c optional ed device-driver @@ -115,8 +117,10 @@ i386/isa/if_ie.c optional ie device-driver i386/isa/if_le.c optional le device-driver i386/isa/if_lnc.c optional lnc device-driver +i386/isa/if_sn.c optional sn device-driver i386/isa/if_sr.c optional sr device-driver i386/isa/if_wl.c optional wl device-driver +i386/isa/if_wlp.c optional wlp device-driver i386/isa/if_ze.c optional ze device-driver i386/isa/if_zp.c optional zp device-driver i386/isa/isa.c optional isa device-driver @@ -130,6 +134,7 @@ i386/isa/mcd.c optional mcd device-driver i386/isa/mse.c optional mse device-driver i386/isa/ncr5380.c optional nca device-driver +i386/isa/nin.c optional nin device-driver i386/isa/npx.c optional npx device-driver i386/isa/pcaudio.c optional pca device-driver i386/isa/matcd/matcd.c optional matcd device-driver @@ -149,6 +154,8 @@ i386/isa/qcamio.c optional qcam device-driver i386/isa/random_machdep.c standard i386/isa/rc.c optional rc device-driver +i386/isa/scc.c optional scc device-driver +i386/isa/scc_subr.c optional scc device-driver i386/isa/scd.c optional scd device-driver i386/isa/seagate.c optional sea device-driver i386/isa/si.c optional si device-driver @@ -206,6 +213,7 @@ i386/isa/sound/trix.c optional trix device-driver i386/isa/sound/sscape.c optional sscape device-driver i386/isa/sound/awe_wave.c optional awe device-driver +i386/isa/spc.c optional spc device-driver i386/isa/spigot.c optional spigot device-driver i386/isa/spkr.c optional speaker device-driver i386/isa/stallion.c optional stl device-driver @@ -237,6 +245,12 @@ i386/scsi/aic7xxx.c optional ahc device-driver \ dependency "aic7xxx_{reg,seq}.h" i386/scsi/bt.c optional bt device-driver +i386/scsi/ncr53c500/ncr53c500.c optional ncv device-driver +i386/scsi/ncr53c500/ncr53c500if.c optional ncv device-driver +i386/scsi/tmc18c30/tmc18c30.c optional stg device-driver +i386/scsi/tmc18c30/tmc18c30if.c optional stg device-driver +i386/scsi/scsi_low/scsi_low.c optional scsi_low +i386/scsi/scsi_low/scsi_low_pisa.c optional scsi_low libkern/bcd.c standard libkern/divdi3.c standard libkern/inet_ntoa.c standard diff -urN sys.2.2.8-RELEASE/i386/conf/majors.i386 sys/i386/conf/majors.i386 --- sys.2.2.8-RELEASE/i386/conf/majors.i386 Wed Sep 9 12:08:09 1998 +++ sys/i386/conf/majors.i386 Tue Dec 22 13:49:34 1998 @@ -124,6 +124,7 @@ 80 xdcp Assigned to Chris Ficklin 81 ?? RocketPort/Steve Gericke 82 ppi Generic Parallel I/O +83 hss Hitachi microcomputer system Speech Synthesizer card (itojun@itojun.org) 87 wfd ATAPI floppy client of "ata" 88 dpt DPT RAID Controller 89 pps Pulse-Per-Second timing interface diff -urN sys.2.2.8-RELEASE/i386/conf/options.i386 sys/i386/conf/options.i386 --- sys.2.2.8-RELEASE/i386/conf/options.i386 Thu Sep 24 22:41:11 1998 +++ sys/i386/conf/options.i386 Tue Dec 22 13:49:34 1998 @@ -83,6 +83,7 @@ FDC_DEBUG opt_fdc.h FDC_PRINT_BOGUS_CHIPTYPE opt_fdc.h +FDC_YE opt_fdc.h # pcvt(4) has a bunch of options FAT_CURSOR opt_pcvt.h diff -urN sys.2.2.8-RELEASE/i386/i386/autoconf.c sys/i386/i386/autoconf.c --- sys.2.2.8-RELEASE/i386/i386/autoconf.c Thu May 21 04:32:10 1998 +++ sys/i386/i386/autoconf.c Tue Dec 22 13:49:37 1998 @@ -225,6 +225,11 @@ enable_intr(); INTREN(IRQ_SLAVE); +#if NCARD > 0 + /* Initialize PC-card support before ISA drivers are initialized */ + pccard_driver_init(); +#endif + #if NEISA > 0 eisa_configure(); #endif diff -urN sys.2.2.8-RELEASE/i386/i386/locore.s sys/i386/i386/locore.s --- sys.2.2.8-RELEASE/i386/i386/locore.s Tue Nov 4 12:22:03 1997 +++ sys/i386/i386/locore.s Tue Dec 22 13:49:40 1998 @@ -301,7 +301,9 @@ * XXX it's not clear that APM can live in the current environonment. * Only pc-relative addressing works. */ +#ifndef NECMG call _apm_setup +#endif #endif call create_pagetables diff -urN sys.2.2.8-RELEASE/i386/i386/machdep.c sys/i386/i386/machdep.c --- sys.2.2.8-RELEASE/i386/i386/machdep.c Thu Jun 25 09:46:43 1998 +++ sys/i386/i386/machdep.c Tue Dec 22 13:49:42 1998 @@ -1073,8 +1073,14 @@ /* Use BIOS values stored in RTC CMOS RAM, since probing * breaks certain 386 AT relics. */ +#ifdef NECMG + /* XXX */ + biosbasemem = bootinfo.bi_basemem; + biosextmem = bootinfo.bi_extmem; +#else /* NECMG */ biosbasemem = rtcin(RTC_BASELO)+ (rtcin(RTC_BASEHI)<<8); biosextmem = rtcin(RTC_EXTLO)+ (rtcin(RTC_EXTHI)<<8); +#endif /* !NECMG */ /* * If BIOS tells us that it has more than 640k in the basemem, diff -urN sys.2.2.8-RELEASE/i386/i386/userconfig.c sys/i386/i386/userconfig.c --- sys.2.2.8-RELEASE/i386/i386/userconfig.c Sun Sep 27 02:36:17 1998 +++ sys/i386/i386/userconfig.c Tue Dec 22 13:49:48 1998 @@ -234,6 +234,9 @@ {"aic", "Adaptec 152x SCSI and compatible sound cards", 0, CLS_STORAGE}, {"nca", "ProAudio Spectrum SCSI and compatibles", 0, CLS_STORAGE}, {"sea", "Seagate ST01/ST02 SCSI and compatibles", 0, CLS_STORAGE}, +{"spc", "Fujitsu MB89352A (SPC) SCSI controller", 0, CLS_STORAGE}, +{"ncv", "NCR/Symbios 53C500/53C406 SCSI controller", 0, CLS_STORAGE}, +{"stg", "Future Domain TMC18C30/18C50 SCSI controller", 0, CLS_STORAGE}, {"wds", "Western Digitial WD7000 SCSI controller", 0, CLS_STORAGE}, {"ncr", "NCR/Symbios 53C810/15/25/60/75 SCSI controller",FLG_FIXED,CLS_STORAGE}, {"wdc", "IDE/ESDI/MFM disk controller", 0, CLS_STORAGE}, @@ -260,6 +263,8 @@ {"tx", "SMC 9432TX Ethernet adapter", 0, CLS_NETWORK}, {"vx", "3COM 3C590/3C595 Ethernet adapters", 0, CLS_NETWORK}, {"xl", "3COM 3C90x/3C90xB/3C980 Ethernet adapters", 0, CLS_NETWORK}, +{"sn", "SMC/Megahertz Ethernet adapters", 0, CLS_NETWORK}, +{"wlp", "AT&T GIS WaveLAN", 0, CLS_NETWORK}, {"ze", "IBM/National Semiconductor PCMCIA Ethernet adapter",0, CLS_NETWORK}, {"zp", "3COM PCMCIA Etherlink III Ethernet adapter", 0, CLS_NETWORK}, {"de", "DEC DC21040 Ethernet adapter", FLG_FIXED, CLS_NETWORK}, @@ -311,6 +316,7 @@ {"vga", "Catchall PCI VGA driver", FLG_INVISIBLE, CLS_MISC}, {"chip", "PCI chipset support", FLG_INVISIBLE, CLS_MISC}, {"piix", "Intel 82371 Bus-master IDE controller", FLG_INVISIBLE, CLS_MISC}, +{"pcic", "PC Card controller", 0, CLS_MISC}, {"","",0,0}}; diff -urN sys.2.2.8-RELEASE/i386/include/apm_bios.h sys/i386/include/apm_bios.h --- sys.2.2.8-RELEASE/i386/include/apm_bios.h Wed Nov 5 04:02:35 1997 +++ sys/i386/include/apm_bios.h Thu Jan 14 11:54:14 1999 @@ -23,8 +23,6 @@ #endif #include -#ifdef KERNEL - /* BIOS id */ #ifdef PC98 #define APM_BIOS 0x9a @@ -62,6 +60,7 @@ #define APM_RESTOREDEFAULT 0x09 #ifdef PC98 #define APM_GETPWSTATUS 0x3a +#define APM_GETPWSTATUS_PC98 0x0a #else #define APM_GETPWSTATUS 0x0a #endif @@ -74,6 +73,10 @@ #define APM_DRVVERSION 0x0e #endif #define APM_ENGAGEDISENGAGEPM 0x0f +#define APM_GETCAPABILITIES 0x10 +#define APM_RESUMETIMER 0x11 +#define APM_RESUMEONRING 0x12 +#define APM_TIMERREQUESTS 0x13 #define APM_OEMFUNC 0x80 /* error code */ @@ -88,6 +91,8 @@ #define APME_UNKNOWNDEVICEID 0x09 #define APME_OUTOFRANGE 0x0a #define APME_NOTENGAGED 0x0b +#define APME_UNSUPPORTFUNC 0x0c +#define APME_RESMTIMERDISABLED 0x0d #define APME_CANTENTERSTATE 0x60 #define APME_NOPMEVENT 0x80 #define APME_NOAPMPRESENT 0x86 @@ -120,7 +125,10 @@ #define PMDV_PCMCIA1 0x0601 #define PMDV_PCMCIA2 0x0602 #define PMDV_PCMCIA3 0x0603 -/* 0x0700 - 0xdfff Reserved */ +/* 0x0700 - 0x7fff Reserved */ +#define PMDV_BATT0 0x8000 +#define PMDV_BATT1 0x8001 +/* 0x8100 - 0xdfff Reserved */ /* 0xe000 - 0xefff OEM-defined power device IDs */ /* 0xf000 - 0xffff Reserved */ @@ -151,11 +159,17 @@ #define APM_HOOK_RESUME 1 #define NAPM_HOOK 2 +#ifdef KERNEL + void apm_suspend(void); +void apm_standby(void); struct apmhook *apm_hook_establish (int apmh, struct apmhook *); void apm_hook_disestablish (int apmh, struct apmhook *); void apm_cpu_idle(void); void apm_cpu_busy(void); +void apm_power_off(int, void*); + +#endif /* KERNEL */ #endif /* !ASSEMBLER && !INITIALIZER */ @@ -163,8 +177,6 @@ #define APM_MID_ORDER 0x80 #define APM_MAX_ORDER 0xff -#endif /* KERNEL */ - /* power management event code */ #define PMEV_NOEVENT 0x0000 #define PMEV_STANDBYREQ 0x0001 @@ -178,7 +190,8 @@ #define PMEV_USERSTANDBYREQ 0x0009 #define PMEV_USERSUSPENDREQ 0x000a #define PMEV_STANDBYRESUME 0x000b -/* 0x000c - 0x00ff Reserved system events */ +#define PMEV_CAPABLITYCHANGE 0x000c +/* 0x000d - 0x00ff Reserved system events */ /* 0x0100 - 0x01ff Reserved device events */ /* 0x0200 - 0x02ff OEM-defined APM events */ /* 0x0300 - 0xffff Reserved */ @@ -186,22 +199,58 @@ #if !defined(ASSEMBLER) && !defined(INITIALIZER) -typedef struct apm_info { +/* + * Old apm_info structure, returned by the APMIO_GETINFO_OLD ioctl. This + * is for backward compatibility with old executables. + */ +typedef struct apm_info_old { u_int ai_major; /* APM major version */ u_int ai_minor; /* APM minor version */ u_int ai_acline; /* AC line status */ u_int ai_batt_stat; /* Battery status */ u_int ai_batt_life; /* Remaining battery life */ u_int ai_status; /* Status of APM support (enabled/disabled) */ +} *apm_info_old_t; + +/* + * Structure returned by the APMIO_GETINFO ioctl. + * + * In the comments below, the parenthesized numbers indicate the minimum + * value of ai_infoversion for which each field is valid. + */ +typedef struct apm_info { + u_int ai_infoversion; /* Indicates which fields are valid */ + u_int ai_major; /* APM major version (0) */ + u_int ai_minor; /* APM minor version (0) */ + u_int ai_acline; /* AC line status (0) */ + u_int ai_batt_stat; /* Battery status (0) */ + u_int ai_batt_life; /* Remaining battery life in percent (0) */ + int ai_batt_time; /* Remaining battery time in seconds (0) */ + u_int ai_status; /* True if enabled (0) */ + u_int ai_batteries; /* Number of batteries (1) */ + u_int ai_capabilities;/* APM Capabilities (1) */ + u_int ai_spare[6]; /* For future expansion */ } *apm_info_t; +struct apm_bios_arg { + u_long eax; + u_long ebx; + u_long ecx; + u_long edx; + u_long esi; + u_long edi; +}; + #define APMIO_SUSPEND _IO('P', 1) -#define APMIO_GETINFO _IOR('P', 2, struct apm_info) +#define APMIO_GETINFO_OLD _IOR('P', 2, struct apm_info_old) #define APMIO_ENABLE _IO('P', 5) #define APMIO_DISABLE _IO('P', 6) #define APMIO_HALTCPU _IO('P', 7) #define APMIO_NOTHALTCPU _IO('P', 8) #define APMIO_DISPLAY _IOW('P', 9, int) +#define APMIO_BIOS _IOWR('P', 10, struct apm_bios_arg) +#define APMIO_GETINFO _IOR('P', 11, struct apm_info) +#define APMIO_STANDBY _IO('P', 12) #endif /* !ASSEMBLER && !INITIALIZER */ diff -urN sys.2.2.8-RELEASE/i386/include/clock.h sys/i386/include/clock.h --- sys.2.2.8-RELEASE/i386/include/clock.h Sun Jan 19 01:16:41 1997 +++ sys/i386/include/clock.h Tue Dec 22 13:50:02 1998 @@ -59,6 +59,7 @@ int release_timer1 __P((void)); #endif int sysbeep __P((int pitch, int period)); +int sysbeep_cancel __P((void)); #ifdef CLOCK_HAIR diff -urN sys.2.2.8-RELEASE/i386/include/console.h sys/i386/include/console.h --- sys.2.2.8-RELEASE/i386/include/console.h Fri Jan 30 19:47:24 1998 +++ sys/i386/include/console.h Tue Dec 22 13:50:04 1998 @@ -152,6 +152,7 @@ #define KD_EGA 4 /* enhanced graphics adapter */ #define KD_VGA 5 /* video graphics adapter */ #define KD_PC98 6 /* PC-98 display */ +#define KD_NECMG 7 /* Mobile Gear display */ #define KD_TEXT 0 /* set text mode restore fonts */ #define KD_TEXT0 0 /* ditto */ diff -urN sys.2.2.8-RELEASE/i386/include/cpu.h sys/i386/include/cpu.h --- sys.2.2.8-RELEASE/i386/include/cpu.h Sat Aug 30 23:08:44 1997 +++ sys/i386/include/cpu.h Tue Dec 22 13:50:05 1998 @@ -129,7 +129,10 @@ #define CPU_DISRTCSET 3 /* int: disable resettodr() call */ #define CPU_BOOTINFO 4 /* struct: bootinfo */ #define CPU_WALLCLOCK 5 /* int: indicates wall CMOS clock */ -#define CPU_MAXID 6 /* number of valid machdep ids */ +#define CPU_INTRINUSE 6 /* int: intrs in use */ +#define CPU_CHECKIO 7 /* int: can we allocate the ioaddr? */ +#define CPU_CHECKMEM 8 /* int: can we allocate the memory? */ +#define CPU_MAXID 9 /* number of valid machdep ids */ #define CTL_MACHDEP_NAMES { \ { 0, 0 }, \ @@ -138,6 +141,9 @@ { "disable_rtc_set", CTLTYPE_INT }, \ { "bootinfo", CTLTYPE_STRUCT }, \ { "wall_cmos_clock", CTLTYPE_INT }, \ + { "intr_inuse", CTLTYPE_INT }, \ + { "checkio", CTLTYPE_INT }, \ + { "checkmem", CTLTYPE_INT }, \ } #ifdef KERNEL diff -urN sys.2.2.8-RELEASE/i386/isa/aic6360.c sys/i386/isa/aic6360.c --- sys.2.2.8-RELEASE/i386/isa/aic6360.c Sun Apr 19 08:25:01 1998 +++ sys/i386/isa/aic6360.c Tue Dec 22 13:50:22 1998 @@ -646,6 +646,7 @@ #define AIC_START(str) #endif +/*void aicintr __P((int));*/ static int aicprobe __P((struct isa_device *)); static int aicattach __P((struct isa_device *)); static void aic_minphys __P((struct buf *)); @@ -657,8 +658,8 @@ static void aic_datain __P((struct aic_data *aic)); static int32_t aic_scsi_cmd __P((struct scsi_xfer *)); static int aic_poll __P((struct aic_data *aic, struct acb *)); -void aic_add_timeout __P((struct acb *, int)); -void aic_remove_timeout __P((struct acb *)); +/*void aic_add_timeout __P((struct acb *, int));*/ +/*void aic_remove_timeout __P((struct acb *));*/ static void aic6360_reset __P((struct aic_data *aic)); static u_short aicphase __P((struct aic_data *aic)); static void aic_msgin __P((struct aic_data *aic)); @@ -670,7 +671,11 @@ void aic_print_active_acb __P((void)); void aic_dump6360 __P((void)); void aic_dump_driver __P((void)); + #endif +#ifdef SCSI_DETACH +static void aicdetach __P((struct isa_device *dev)); +#endif /* SCSI_DETACH */ /* Linkup to the rest of the kernel */ struct isa_driver aicdriver = { @@ -731,10 +736,10 @@ static int already_aicinit[NAIC]; /* validate unit number */ - if (devi->isahd.id_unit >= NAIC) + if (devi->pd_unit >= NAIC) return(ENODEV); /* Make sure it isn't already initialised */ - if (already_aicinit[devi->isahd.id_unit] == 1) { + if (already_aicinit[devi->pd_unit] == 1) { if (aicattach(&devi->isahd) == 0) return(ENXIO); return(0); @@ -748,7 +753,7 @@ if (aicattach(&devi->isahd) == 0) return(ENXIO); - already_aicinit[devi->isahd.id_unit] = 1; + already_aicinit[devi->pd_unit] = 1; return(0); } @@ -764,9 +769,12 @@ void aicunload(struct pccard_devinfo *devi) { - printf("aic%d: unload\n", devi->isahd.id_unit); + printf("aic%d: unload\n", devi->pd_unit); #if 0 - aicstop(devi->isahd.id_unit); + aicstop(devi->pd_unit); +#endif +#ifdef SCSI_DETACH + aicdetach(&devi->isahd); #endif } @@ -776,7 +784,7 @@ static int aic_card_intr(struct pccard_devinfo *devi) { - aicintr(devi->isahd.id_unit); + aicintr(devi->pd_unit); return(1); } #endif /* NCARD > 0 */ @@ -899,6 +907,20 @@ AIC_START(("chip revision %d\n",(int)inb(REV))); return 0; } + +#ifdef SCSI_DETACH +static void +aicdetach(dev) + struct isa_device *dev; +{ + int unit = dev->id_unit; + struct aic_data *aic = aicdata[unit]; + struct scsibus_data *scbus; + + scbus = (struct scsibus_data *)scsi_extend_get(aicdata[unit]->sc_link.scsibus); + scsi_detachdev(scbus); +} +#endif /* SCSI_DETACH */ /* * Attach the AIC6360, fill out some high and low level data structures diff -urN sys.2.2.8-RELEASE/i386/isa/atapi-cd.c sys/i386/isa/atapi-cd.c --- sys.2.2.8-RELEASE/i386/isa/atapi-cd.c Tue Nov 10 01:09:05 1998 +++ sys/i386/isa/atapi-cd.c Wed Dec 23 22:19:05 1998 @@ -84,12 +84,22 @@ #define F_WRITTEN 0x0080 /* The medium has been written to */ static struct acd *acdtab[NUNIT]; +#ifndef ATAPI_DETACH static int acdnlun = 0; /* Number of configured drives */ +#else /* ATAPI_DETACH */ +static int acd_unit_use = 0; /* Number of configured drives */ +#endif /* ATAPI_DETACH */ #ifndef ATAPI_STATIC static #endif int acdattach(struct atapi *, int, struct atapi_params *, int); +#ifdef ATAPI_DETACH +#ifndef ATAPI_STATIC +static +#endif +int acddetach(struct atapi *, int, struct atapi_params *, int); +#endif /* ATAPI_DETACH */ static struct acd *acd_init_lun(struct atapi *, int, struct atapi_params *,int); static void acd_start(struct acd *); static void acd_done(struct acd *, struct buf *, int, struct atapires); @@ -161,8 +171,17 @@ struct atapires result; struct changer *chp; int i, count; + int lun; - if (acdnlun >= NUNIT) { +#ifndef ATAPI_DETACH + lun = acdnlun; +#else /* ATAPI_DETACH */ + for (lun = 0; lun < NUNIT; lun++) { + if (!(acd_unit_use & (1 << lun))) + break; + } +#endif /* ATAPI_DETACH */ + if (lun >= NUNIT) { printf("acd: too many units\n"); return 0; } @@ -170,11 +189,11 @@ printf("acd: configuration error, ATAPI code not present!\n"); return 0; } - if ((cdp = acd_init_lun(ata, unit, ap, acdnlun)) == NULL) { + if ((cdp = acd_init_lun(ata, unit, ap, lun)) == NULL) { printf("acd: out of memory\n"); return 0; } - acdtab[acdnlun] = cdp; + acdtab[lun] = cdp; if (debug) { cdp->flags |= F_DEBUG; @@ -232,6 +251,7 @@ if (result.code == 0) { chp->table_length = htons(chp->table_length); +#ifndef ATAPI_DETACH for (i = 0; i < chp->slots && acdnlun < NUNIT; i++) { if (i > 0) { cdp = acd_init_lun(ata, unit, ap, acdnlun); @@ -250,12 +270,103 @@ printf("acd: too many units\n"); return 0; } +#else /* ATAPI_DETACH */ + for (i = 0; i < chp->slots; i++) { + if (i > 0) { + while (++lun < NUNIT) { + if (!(acd_unit_use & (1 << lun))) + break; + } + if (lun >= NUNIT) { + printf("acd: too many units\n"); + return 0; + } + cdp = acd_init_lun(ata, unit, ap, lun); + if (cdp == NULL) { + printf("acd: out of memory\n"); + return 0; + } + } + cdp->slot = i; + cdp->changer_info = chp; + printf("acd%d: changer slot %d %s\n", lun, i, + (chp->slot[i].present ? "disk present" : "no disk")); + acdtab[lun] = cdp; + acd_unit_use |= (1 << lun); + } +#endif /* ATAPI_DETACH */ } } else +#ifndef ATAPI_DETACH acdnlun++; +#else /* ATAPI_DETACH */ + acd_unit_use |= (1 << lun); +#endif /* ATAPI_DETACH */ return 1; } +#ifdef ATAPI_DETACH +#ifndef ATAPI_STATIC +static +#endif +int +acddetach(struct atapi *ata, int unit, struct atapi_params *ap, int debug) +{ + struct acd *cdp; + struct changer *chp = NULL; + int lun; + int slot[NUNIT]; + int i = 1; + + for (lun = 0; lun < NUNIT; lun++) { + if ((acd_unit_use & (1 << lun))) { + cdp = acdtab[lun]; + if (cdp->ata->port == ata->port && + cdp->ata->ctrlr == ata->ctrlr && + cdp->unit == unit) + break; + } + } + if (lun >= NUNIT) { + printf("acd: not found unit\n"); + return 0; + } + + if ((cdp->flags & F_BOPEN) || cdp->refcnt) + /* The device is opened, cannot unload the driver. */ + return EBUSY; + + slot[0] = lun; + chp = cdp->changer_info; + if (chp) { + while (++lun < NUNIT) { + if ((acd_unit_use & (1 << lun))) { + cdp = acdtab[lun]; + if (cdp->changer_info == chp) { + slot[i++] = lun; + if ((cdp->flags & F_BOPEN) || cdp->refcnt) + /* The device is opened, cannot unload the driver. */ + return EBUSY; + } + } + } + free(chp, M_TEMP); + } + + while (i--) { + lun = slot[i]; + cdp = acdtab[lun]; + + cdp->ata->attached[unit] = 0; + free(cdp, M_TEMP); + acdtab[lun] = NULL; + + acd_unit_use &= ~(1 << lun); + } + return 0; +} +#endif /* ATAPI_DETACH */ + void acd_describe(struct acd *cdp) { @@ -384,8 +495,13 @@ int track = dkslice(dev); /* XXX this is a hack... */ struct acd *cdp; +#ifndef ATAPI_DETACH if (lun >= acdnlun || !atapi_request_immediate) return ENXIO; +#else /* ATAPI_DETACH */ + if (!(acd_unit_use & (1 << lun)) || !atapi_request_immediate) + return ENXIO; +#endif /* ATAPI_DETACH */ cdp = acdtab[lun]; if (!(cdp->flags & F_BOPEN) && !cdp->refcnt) { @@ -1694,16 +1810,46 @@ int acd_unload(struct lkm_table *lkmtp, int cmd) { + struct changer *chp[NUNIT]; + int nch = 0; + +#ifndef ATAPI_DETACH struct acd **cdpp; - for (cdpp = acdtab; cdpp < acdtab + acdnlun; ++cdpp) + for (cdpp = acdtab; cdpp < acdtab + acdnlun; ++cdpp) { if (((*cdpp)->flags & F_BOPEN) || (*cdpp)->refcnt) return EBUSY; + if ((*chpp)->changer_info) + chp[nch++] = (*chpp)->changer_info; + } for (cdpp = acdtab; cdpp < acdtab + acdnlun; ++t) { (*cdpp)->ata->attached[(*cdpp)->unit] = 0; free(*cdpp, M_TEMP); } acdnlun = 0; +#else /* ATAPI_DETACH */ + struct acd *cdp; + int lun; + + for (lun = 0; lun < NUNIT; ++lun) + if (acd_unit_use & (1 << lun)) { + cdp = acdtab[lun]; + if ((cdp->flags & F_BOPEN) || cdp->refcnt) + /* The device is opened, cannot unload the driver. */ + return EBUSY; + if (chp->changer_info) + chp[nch++] = chp->changer_info; + } + for (lun = 0; lun < NUNIT; ++lun) + if (acd_unit_use & (1 << lun)) { + cdp = acdtab[lun]; + cdp->ata->attached[cdp->unit] = 0; + free(cdp, M_TEMP); + } + acd_unit_use = 0; +#endif /* ATAPI_DETACH */ + while (nch--) + free(chp[nch], M_TEMP); bzero(acdtab, sizeof(acdtab)); return 0; } diff -urN sys.2.2.8-RELEASE/i386/isa/atapi.c sys/i386/isa/atapi.c --- sys.2.2.8-RELEASE/i386/isa/atapi.c Sun Nov 8 23:08:26 1998 +++ sys/i386/isa/atapi.c Sun Jan 10 20:41:57 1999 @@ -145,6 +145,12 @@ ++atapi_ndrv; return (1); } + +#ifdef ATAPI_DETACH +int atapi_detach (int ctlr, int unit, int port) +{ +} +#endif /* ATAPI_DETACH */ #else /* ATAPI_STATIC */ /* this code is compiled part of the module */ @@ -176,6 +182,11 @@ extern int acdattach(struct atapi*, int, struct atapi_params*, int); extern int wfdattach(struct atapi*, int, struct atapi_params*, int); extern int wcdattach(struct atapi*, int, struct atapi_params*, int); +#ifdef ATAPI_DETACH +extern int acddetach(struct atapi*, int, struct atapi_params*, int); +extern int wcddetach(struct atapi*, int, struct atapi_params*, int); +extern int wfddetach(struct atapi*, int, struct atapi_params*, int); +#endif /* ATAPI_DETACH */ /* * Probe the ATAPI device at IDE controller `ctlr', drive `unit'. @@ -292,6 +303,9 @@ /* ATAPI Floppy(LS-120) */ if (wfdattach (ata, unit, ap, ata->debug) >= 0) { /* Device attached successfully. */ +#ifdef ATAPI_DETACH + ata->params[unit] = ap; +#endif /* ATAPI_DETACH */ ata->attached[unit] = 1; return (1); } @@ -301,6 +315,9 @@ /* ATAPI CD-ROM & CD-R/RW drives */ if (acdattach (ata, unit, ap, ata->debug) < 0) break; +#ifdef ATAPI_DETACH + ata->params[unit] = ap; +#endif /* ATAPI_DETACH */ ata->attached[unit] = 1; return (1); #else @@ -308,6 +325,9 @@ /* ATAPI CD-ROM drives */ if (wcdattach (ata, unit, ap, ata->debug) < 0) break; +#ifdef ATAPI_DETACH + ata->params[unit] = ap; +#endif /* ATAPI_DETACH */ ata->attached[unit] = 1; return (1); #else @@ -338,6 +358,75 @@ #endif /* ATAPI_MODULE */ } +#ifdef ATAPI_DETACH +#ifdef ATAPI_MODULE +static +#endif +int atapi_detach (int ctlr, int unit, int port) +{ + struct atapi *ata = atapitab + ctlr; + struct atapi_params *ap = ata->params[unit]; + + if (ata->ctrlr == ctlr && + ata->port == port && ap) { + switch (ap->devtype) { + default: + /* unknown ATAPI device */ + break; + + case AT_TYPE_DIRECT: /* direct-access */ +#if NWFD > 0 + /* ATAPI Floppy(LS-120) */ + if (wfddetach (ata, unit, ap, ata->debug) >= 0) { + /* Device detached successfully. */ + ata->attached[unit] = 0; + goto detach_success; + } +#endif + case AT_TYPE_CDROM: /* CD-ROM device */ +#if NACD > 0 + /* ATAPI CD-ROM & CD-R/RW drives */ + if (acddetach (ata, unit, ap, ata->debug) < 0) + break; + /* Device detached successfully. */ + ata->attached[unit] = 0; +#else +#if NWCD > 0 + /* ATAPI CD-ROM drives */ + if (wcddetach (ata, unit, ap, ata->debug) < 0) + break; + /* Device detached successfully. */ + ata->attached[unit] = 0; +#endif +#endif + break; + + case AT_TYPE_TAPE: /* streaming tape (QIC-121 model) */ +#if NWMT > 0 + /* Add your driver here */ +#endif + break; + + case AT_TYPE_OPTICAL: /* optical disk */ +#if NWMD > 0 + /* Add your driver here */ +#endif + break; + } + /* Detach failed. */ + if (ata->attached[unit]) + return EBUSY; + +detach_success: + if (ata->params[unit]) { + free (ata->params[unit], M_TEMP); + ata->params[unit] = 0; + } + } + return (1); +} +#endif /* ATAPI_DETACH */ + static char *cmdname (u_char cmd) { static char buf[8]; @@ -418,7 +507,12 @@ if (atapi_wait (port, 0) < 0) { print (("atapiX.%d at 0x%x: controller busy, status=%b\n", unit, port, inb (port + AR_STATUS), ARS_BITS)); - return (0); + outb(port + AR_COMMAND, ATAPIC_SOFT_RESET); + if (atapi_wait(port, 0) < 0) { + print (("atapiX.%d at 0x%x: controller busy, status=%b\n", + unit, port, inb (port + AR_STATUS), ARS_BITS)); + return (0); + } } /* Issue ATAPI IDENTIFY command. */ @@ -440,6 +534,11 @@ /* Check that device is present. */ if (inb (port + AR_STATUS) == 0xff) { print (("atapiX.%d at 0x%x: no device\n", unit, port)); + outb(port + AR_COMMAND, ATAPIC_SOFT_RESET); + if (atapi_wait(port, 0) < 0) { + print (("atapiX.%d at 0x%x: controller busy, status=%b\n", + unit, port, inb (port + AR_STATUS), ARS_BITS)); + } if (unit == 1) /* Select unit 0. */ outb (port + AR_DRIVE, ARD_DRIVE0); @@ -450,6 +549,11 @@ if (atapi_wait (port, ARS_DRQ) != 0) { print (("atapiX.%d at 0x%x: identify not ready, status=%b\n", unit, port, inb (port + AR_STATUS), ARS_BITS)); + outb(port + AR_COMMAND, ATAPIC_SOFT_RESET); + if (atapi_wait(port, 0) < 0) { + print (("atapiX.%d at 0x%x: controller busy, status=%b\n", + unit, port, inb (port + AR_STATUS), ARS_BITS)); + } if (unit == 1) /* Select unit 0. */ outb (port + AR_DRIVE, ARD_DRIVE0); @@ -466,10 +570,11 @@ /* * Shuffle string byte order. - * Mitsumi and NEC drives don't need this. + * Mitsumi, NEC and SHARP drives don't need this. */ if (! ((ap->model[0] == 'N' && ap->model[1] == 'E') || - (ap->model[0] == 'F' && ap->model[1] == 'X'))) + (ap->model[0] == 'F' && ap->model[1] == 'X') || + (ap->model[0] == 'S' && ap->model[1] == 'H'))) bswap (ap->model, sizeof(ap->model)); bswap (ap->serial, sizeof(ap->serial)); bswap (ap->revision, sizeof(ap->revision)); diff -urN sys.2.2.8-RELEASE/i386/isa/atapi.h sys/i386/isa/atapi.h --- sys.2.2.8-RELEASE/i386/isa/atapi.h Sun Nov 8 23:08:26 1998 +++ sys/i386/isa/atapi.h Sun Jan 10 20:41:57 1999 @@ -107,6 +107,7 @@ */ #define ATAPIC_IDENTIFY 0xa1 /* get drive parameters */ #define ATAPIC_PACKET 0xa0 /* execute packet command */ +#define ATAPIC_SOFT_RESET 0x08 /* software reset */ /* * Mandatory packet commands @@ -279,6 +280,9 @@ #ifndef ATAPI_MODULE int atapi_attach (int ctlr, int unit, int port); +#ifdef ATAPI_DETACH +int atapi_detach (int ctlr, int unit, int port); +#endif #endif /* diff -urN sys.2.2.8-RELEASE/i386/isa/clock.c sys/i386/isa/clock.c --- sys.2.2.8-RELEASE/i386/isa/clock.c Sun Apr 27 22:44:19 1997 +++ sys/i386/isa/clock.c Tue Dec 22 13:50:29 1998 @@ -483,6 +483,17 @@ return (0); } +int +sysbeep_cancel(void) +{ + if (beeping) { + untimeout(sysbeepstop, (void *)NULL); + sysbeepstop((void *)NULL); + return 0; + } + return -1; +} + /* * RTC support routines */ @@ -625,6 +636,32 @@ write_eflags(ef); } +#if 1 /* XXX ncv port */ +unsigned int delaycount; +#define FIRST_GUESS 0x2000 + +static void +findcpuspeed() +{ + int i; + int remainder; + + /* Put counter in count down mode */ + outb(TIMER_MODE, TIMER_SEL0 | TIMER_16BIT | TIMER_RATEGEN); + outb(TIMER_CNTR0, 0xff); + outb(TIMER_CNTR0, 0xff); + for (i = FIRST_GUESS; i; i--) + ; + /* Read the value left in the counter */ + remainder = getit(); + /* + * Formula for delaycount is: + * (loopcount * timer clock speed) / (counter ticks * 1000) + */ + delaycount = (FIRST_GUESS * TIMER_DIV(1000)) / (0xffff-remainder); +} +#endif /* ncv port */ + /* * Initialize 8253 timer 0 early so that it can be used in DELAY(). * XXX initialization of other timers is unintentionally left blank. @@ -634,6 +671,9 @@ { u_int delta, freq; +#if 1 /* XXX ncv port */ + findcpuspeed(); +#endif writertc(RTC_STATUSA, rtc_statusa); writertc(RTC_STATUSB, RTCSB_24HR); diff -urN sys.2.2.8-RELEASE/i386/isa/fd.c sys/i386/isa/fd.c --- sys.2.2.8-RELEASE/i386/isa/fd.c Thu May 7 04:09:05 1998 +++ sys/i386/isa/fd.c Tue Dec 22 13:50:35 1998 @@ -5,6 +5,10 @@ * This code is derived from software contributed to Berkeley by * Don Ahn. * + * Libretto PCMCIA floppy support by David Horwitt (dhorwitt@ucsd.edu) + * aided by the Linux floppy driver modifications from David Bateman + * (dbateman@eng.uts.edu.au). + * * Copyright (c) 1993, 1994 by * jc@irbs.UUCP (John Capo) * vak@zebub.msk.su (Serge Vakulenko) @@ -92,6 +96,10 @@ /* configuration flags */ #define FDC_PRETEND_D0 (1 << 0) /* pretend drive 0 to be there */ +#ifdef FDC_YE +#define FDC_IS_PCMCIA (1 << 1) /* if successful probe, then it's + a PCMCIA device */ +#endif /* internally used only, not really from CMOS: */ #define RTCFDT_144M_PRETENDED 0x1000 @@ -204,6 +212,11 @@ int ftattach(struct isa_device *, struct isa_device *, int); #endif +#ifdef FDC_YE +#include "card.h" +static int yeattach(struct isa_device *); +#endif + /* autoconfig functions */ static int fdprobe(struct isa_device *); static int fdattach(struct isa_device *); @@ -245,6 +258,9 @@ #define RECALWAIT 9 #define MOTORWAIT 10 #define IOTIMEDOUT 11 +#ifdef FDC_YE +#define PIOREAD 12 +#endif #ifdef FDC_DEBUG static char const * const fdstates[] = @@ -261,6 +277,9 @@ "RECALWAIT", "MOTORWAIT", "IOTIMEDOUT" +#ifdef FDC_YE +,"PIOREAD" +#endif }; /* CAUTION: fd_debug causes huge amounts of logging output */ @@ -272,6 +291,102 @@ #define TRACE1(arg1, arg2) #endif /* FDC_DEBUG */ +#ifdef FDC_YE +#if NCARD > 0 +#include +#include +#include +#include + +/* + * PC-Card (PCMCIA) specific code. + */ +static int yeinit(struct pccard_devinfo *); /* init device */ +static void yeunload(struct pccard_devinfo *); /* Disable driver */ +static int yeintr(struct pccard_devinfo *); /* Interrupt handler */ + +static struct pccard_device ye_info = { + "fdc", + yeinit, + yeunload, + yeintr, + 0, /* Attributes - presently unused */ + &bio_imask /* Interrupt mask for device */ +}; + +DATA_SET(pccarddrv_set, ye_info); + +/* + * this is the secret PIO data port (offset from base) + */ +#define FDC_YE_DATAPORT 6 + +/* + * Initialize the device - called from Slot manager. + */ +static int yeinit(struct pccard_devinfo *devi) +{ + fdc_p fdc = &fdc_data[devi->isahd.id_unit]; + + /* validate unit number. */ + if (devi->isahd.id_unit >= NFDC) + return(ENODEV); + + fdc->baseport = devi->isahd.id_iobase; + + /* + * reset controller + */ + outb(fdc->baseport+FDOUT, 0); + DELAY(100); + outb(fdc->baseport+FDOUT, FDO_FRST); + + /* + * wire into system + */ + if (yeattach(&devi->isahd) == 0) + return(ENXIO); + + return(0); +} + +/* + * yeunload - unload the driver and clear the table. + * XXX TODO: + * This is usually called when the card is ejected, but + * can be caused by a modunload of a controller driver. + * The idea is to reset the driver's view of the device + * and ensure that any driver entry points such as + * read and write do not hang. + */ +static void yeunload(struct pccard_devinfo *devi) +{ + + if (fd_data[devi->isahd.id_unit].type == NO_TYPE) + return; + + /* + * this prevents Fdopen() and fdstrategy() from attempting + * to access unloaded controller + */ + fd_data[devi->isahd.id_unit].type = NO_TYPE; + + printf("fdc%d: unload\n", devi->isahd.id_unit); +} + +/* + * yeintr - Shared interrupt called from + * front end of PC-Card handler. + */ +static int yeintr(struct pccard_devinfo *devi) +{ + fdintr((fdcu_t)devi->isahd.id_unit); + return(1); +} +#endif /* NCARD > 0 */ +#endif /* FDC_YE */ + + /* autoconfig structure */ struct isa_driver fdcdriver = { @@ -507,6 +622,14 @@ { return(0); } +#ifdef FDC_YE + /* + * don't succeed on probe; wait + * for PCCARD subsystem to do it + */ + if (dev->id_flags & FDC_IS_PCMCIA) + return(0); +#endif return (IO_FDCSIZE); } @@ -627,7 +750,7 @@ fdc->fdct = FDC_UNKNOWN; break; } - if (fdc->fdct != FDC_NE765 && + if (fdc->fdct != FDC_NE765 && fdc->fdct != FDC_UNKNOWN && enable_fifo(fdc) == 0) { printf("fdc%d: FIFO enabled", fdcu); @@ -797,6 +920,144 @@ return (1); } +#ifdef FDC_YE +/* + * this is a subset of fdattach() optimized for the Y-E Data + * PCMCIA floppy drive. + */ +static int yeattach(struct isa_device *dev) +{ + fdcu_t fdcu = dev->id_unit; + fdc_p fdc = fdc_data + fdcu; + fdsu_t fdsu = 0; /* assume 1 drive per YE controller */ + fdu_t fdu; + fd_p fd; + int st0, st3, i; +#ifdef DEVFS + int mynor; + int typemynor; + int typesize; +#endif + + fdc->fdcu = fdcu; + /* + * the FDC_PCMCIA flag is used to to indicate special PIO is used + * instead of DMA + */ + fdc->flags = FDC_ATTACHED|FDC_PCMCIA; + fdc->state = DEVIDLE; + /* reset controller, turn motor off, clear fdout mirror reg */ + outb(fdc->baseport + FDOUT, ((fdc->fdout = 0))); + bufq_init(&fdc->head); +#if 0 + /* + * assume 2 drives/ "normal" controller + */ + fdu = fdcu * 2; +#else + fdu = fdcu; /* XXX use same unit number, between fdc and fd */ +#endif + if (fdu >= NFD) { + printf("fdu %d >= NFD\n",fdu); + return(0); + }; + fd = &fd_data[fdu]; + + set_motor(fdcu, fdsu, TURNON); + DELAY(1000000); /* 1 sec */ + fdc->fdct = FDC_NE765; + + if ((fd_cmd(fdcu, 2, NE7CMD_SENSED, fdsu, 1, &st3) == 0) && + (st3 & NE7_ST3_T0)) { + /* if at track 0, first seek inwards */ + /* seek some steps: */ + (void)fd_cmd(fdcu, 3, NE7CMD_SEEK, fdsu, 10, 0); + DELAY(300000); /* ...wait a moment... */ + (void)fd_sense_int(fdc, 0, 0); /* make ctrlr happy */ + } + + /* If we're at track 0 first seek inwards. */ + if ((fd_sense_drive_status(fdc, &st3) == 0) && (st3 & NE7_ST3_T0)) { + /* Seek some steps... */ + if (fd_cmd(fdcu, 3, NE7CMD_SEEK, fdsu, 10, 0) == 0) { + /* ...wait a moment... */ + DELAY(300000); + /* make ctrlr happy: */ + (void)fd_sense_int(fdc, 0, 0); + } + } + + for(i = 0; i < 2; i++) { + /* + * we must recalibrate twice, just in case the + * heads have been beyond cylinder 76, since most + * FDCs still barf when attempting to recalibrate + * more than 77 steps + */ + /* go back to 0: */ + if (fd_cmd(fdcu, 2, NE7CMD_RECAL, fdsu, 0) == 0) { + /* a second being enough for full stroke seek*/ + DELAY(i == 0? 1000000: 300000); + + /* anything responding? */ + if (fd_sense_int(fdc, &st0, 0) == 0 && + (st0 & NE7_ST0_EC) == 0) + break; /* already probed succesfully */ + } + } + + set_motor(fdcu, fdsu, TURNOFF); + + if (st0 & NE7_ST0_EC) /* no track 0 -> no drive present */ + return(0); + + fd->track = FD_NO_TRACK; + fd->fdc = fdc; + fd->fdsu = fdsu; + fd->options = 0; + printf("fdc%d: 1.44MB 3.5in PCMCIA\n", fdcu); + fd->type = FD_1440; + +#ifdef DEVFS + mynor = fdcu << 6; + fd->bdevs[0] = devfs_add_devswf(&fd_bdevsw, mynor, DV_BLK, + UID_ROOT, GID_OPERATOR, 0640, + "fd%d", fdu); + fd->cdevs[0] = devfs_add_devswf(&fd_cdevsw, mynor, DV_CHR, + UID_ROOT, GID_OPERATOR, 0640, + "rfd%d", fdu); + /* + * XXX this and the lookup in Fdopen() should be + * data driven. + */ + typemynor = mynor | FD_1440; + typesize = fd_types[FD_1440 - 1].size / 2; + /* + * XXX all these conversions give bloated code and + * confusing names. + */ + if (typesize == 1476) + typesize = 1480; + if (typesize == 1722) + typesize = 1720; + fd->bdevs[FD_1440] = devfs_add_devswf(&fd_bdevsw, typemynor, + DV_BLK, UID_ROOT, GID_OPERATOR, + 0640, "fd%d.%d", fdu, typesize); + fd->cdevs[FD_1440] = devfs_add_devswf(&fd_cdevsw, typemynor, + DV_CHR, UID_ROOT, GID_OPERATOR, + 0640,"rfd%d.%d", fdu, typesize); + for (i = 0; i < MAXPARTITIONS; i++) { + fd->bdevs[1 + NUMDENS + i] = devfs_link(fd->bdevs[0], + "fd%d%c", fdu, 'a' + i); + fd->cdevs[1 + NUMDENS + i] = devfs_link(fd->cdevs[0], + "rfd%d%c", fdu, 'a' + i); + } +#endif /* DEVFS */ + + return (1); +} +#endif + /****************************************************************************/ /* motor control stuff */ /* remember to not deselect the drive we're working on */ @@ -812,7 +1073,6 @@ fdout |= (FDO_MOEN0 << fdsu) + fdsu; } else fdout &= ~(FDO_MOEN0 << fdsu); - if(!turnon && (fdout & (FDO_MOEN0+FDO_MOEN1+FDO_MOEN2+FDO_MOEN3)) == 0) /* gonna turn off the last drive, put FDC to bed */ @@ -1108,6 +1368,17 @@ fd = &fd_data[fdu]; fdc = fd->fdc; fdcu = fdc->fdcu; +#ifdef FDC_YE + if (fd->type == NO_TYPE) { + bp->b_error = ENXIO; + bp->b_flags |= B_ERROR; + /* + * I _refuse_ to use a goto + */ + biodone(bp); + return; + }; +#endif #if NFT > 0 if (FDTYPE(minor(bp->b_dev)) & F_TAPE_TYPE) { @@ -1282,6 +1553,38 @@ ; } +#ifdef FDC_YE +/* + * magic pseudo-DMA initialization for YE FDC. Sets count and + * direction + */ +#define SET_BCDR(wr,cnt,port) outb(port,(((cnt)-1) & 0xff)); \ + outb(port+1,((wr ? 0x80 : 0) | ((((cnt)-1) >> 8) & 0x7f))) + +/* + * fdcpio(): perform programmed IO read/write for YE PCMCIA floppy + */ +static int fdcpio(fdcu_t fdcu, long flags, caddr_t addr, u_int count) +{ + u_char *cptr = (u_char *)addr; + fdc_p fdc = &fdc_data[fdcu]; + int io = fdc->baseport; + + if (flags & B_READ) { + if (fdc->state != PIOREAD) { + fdc->state = PIOREAD; + return(0); + }; + SET_BCDR(0,count,io); + insb(io+FDC_YE_DATAPORT,cptr,count); + } else { + outsb(io+FDC_YE_DATAPORT,cptr,count); + SET_BCDR(0,count,io); + }; + return(1); +} +#endif /* FDC_YE */ + /***********************************************************************\ * The controller state machine. * * if it returns a non zero value, it should be called again immediatly * @@ -1466,6 +1769,9 @@ } fd->track = b_cylinder; +#ifdef FDC_YE + if (!(fdc->flags & FDC_PCMCIA)) +#endif isa_dmastart(bp->b_flags, bp->b_un.b_addr+fd->skip, format ? bp->b_bcount : fdblk, fdc->dmachan); sectrac = fd->ft->sectrac; @@ -1507,6 +1813,12 @@ if(format) { /* formatting */ +#ifdef FDC_YE + if (fdc->flags & FDC_PCMCIA) + (void)fdcpio(fdcu,bp->b_flags, + bp->b_un.b_addr+fd->skip, + bp->b_bcount); +#endif if(fd_cmd(fdcu, 6, NE7CMD_FORMAT, head << 2 | fdu, @@ -1523,6 +1835,23 @@ } else { +#ifdef FDC_YE + if (fdc->flags & FDC_PCMCIA) { + /* + * this seems to be necessary even when + * reading data + */ + SET_BCDR(1,fdblk,fdc->baseport); + + /* + * perform the write pseudo-DMA before + * the WRITE command is sent + */ + if (!read) + (void)fdcpio(fdcu,bp->b_flags, + bp->b_un.b_addr+fd->skip,fdblk); + }; +#endif if (fd_cmd(fdcu, 9, (read ? NE7CMD_READ : NE7CMD_WRITE), head << 2 | fdu, /* head & unit */ @@ -1540,24 +1869,52 @@ return(retrier(fdcu)); } } +#ifdef FDC_YE + if (fdc->flags & FDC_PCMCIA) + /* + * if this is a read, then simply await interrupt + * before performing PIO + */ + if (read && !fdcpio(fdcu,bp->b_flags, + bp->b_un.b_addr+fd->skip,fdblk)) { + timeout(fd_timeout, (caddr_t)fdcu, hz); + return(0); /* will return later */ + }; + + /* + * write (or format) operation will fall through and + * await completion interrupt + */ +#endif fdc->state = IOCOMPLETE; timeout(fd_timeout, (caddr_t)fdcu, hz); return(0); /* will return later */ +#ifdef FDC_YE + case PIOREAD: + /* + * cancel timeout and actually perform the PIO read + */ + untimeout(fd_timeout, (caddr_t)fdcu); + (void)fdcpio(fdcu,bp->b_flags,bp->b_un.b_addr+fd->skip,fdblk); + fdc->state = IOCOMPLETE; + /* FALLTHROUGH */ +#endif case IOCOMPLETE: /* IO DONE, post-analyze */ untimeout(fd_timeout, (caddr_t)fdcu); - if (fd_read_status(fdc, fd->fdsu)) { if (fdc->retry < 6) fdc->retry = 6; /* force a reset */ return retrier(fdcu); } - fdc->state = IOTIMEDOUT; /* FALLTHROUGH */ case IOTIMEDOUT: +#ifdef FDC_YE + if (!(fdc->flags & FDC_PCMCIA)) +#endif isa_dmadone(bp->b_flags, bp->b_un.b_addr+fd->skip, format ? bp->b_bcount : fdblk, fdc->dmachan); if (fdc->status[0] & NE7_ST0_IC) diff -urN sys.2.2.8-RELEASE/i386/isa/fdc.h sys/i386/isa/fdc.h --- sys.2.2.8-RELEASE/i386/isa/fdc.h Mon Oct 6 06:00:35 1997 +++ sys/i386/isa/fdc.h Tue Dec 22 13:50:35 1998 @@ -55,6 +55,10 @@ #define FDC_TAPE_BUSY 0x04 #define FDC_STAT_VALID 0x08 #define FDC_HAS_FIFO 0x10 +#ifdef FDC_YE +#define FDC_PCMCIA 0x20 +#define FDC_UNLOADED 0x40 +#endif struct fd_data *fd; int fdu; /* the active drive */ int state; diff -urN sys.2.2.8-RELEASE/i386/isa/ic/ns16550.h sys/i386/isa/ic/ns16550.h --- sys.2.2.8-RELEASE/i386/isa/ic/ns16550.h Thu Sep 12 20:08:21 1996 +++ sys/i386/isa/ic/ns16550.h Tue Dec 22 13:51:58 1998 @@ -37,19 +37,6 @@ /* * NS16550 UART registers */ -#ifdef PC98 -#define com_data 0x000 /* data register (R/W) */ -#define com_dlbl 0x000 /* divisor latch low (W) */ -#define com_dlbh 0x100 /* divisor latch high (W) */ -#define com_ier 0x100 /* interrupt enable (W) */ -#define com_iir 0x200 /* interrupt identification (R) */ -#define com_fifo 0x200 /* FIFO control (W) */ -#define com_lctl 0x300 /* line control register (R/W) */ -#define com_cfcr 0x300 /* line control register (R/W) */ -#define com_mcr 0x400 /* modem control register (R/W) */ -#define com_lsr 0x500 /* line status register (R/W) */ -#define com_msr 0x600 /* modem status register (R/W) */ -#else /* IBM-PC */ #define com_data 0 /* data register (R/W) */ #define com_dlbl 0 /* divisor latch low (W) */ #define com_dlbh 1 /* divisor latch high (W) */ @@ -61,4 +48,3 @@ #define com_mcr 4 /* modem control register (R/W) */ #define com_lsr 5 /* line status register (R/W) */ #define com_msr 6 /* modem status register (R/W) */ -#endif /* PC98 */ diff -urN sys.2.2.8-RELEASE/i386/isa/if_ed.c sys/i386/isa/if_ed.c --- sys.2.2.8-RELEASE/i386/isa/if_ed.c Sun Oct 25 20:25:58 1998 +++ sys/i386/isa/if_ed.c Tue Dec 22 13:50:46 1998 @@ -137,6 +137,7 @@ u_char rec_page_start; /* first page of RX ring-buffer */ u_char rec_page_stop; /* last page of RX ring-buffer */ u_char next_packet; /* pointer to next unread RX packet */ + u_char delay_output; struct ifmib_iso_8802_3 mibdata; /* stuff for network mgmt */ }; @@ -165,11 +166,6 @@ void *ed_attach_NE2000_pci __P((int, int)); #endif -#include "card.h" -#if NCARD > 0 -static int ed_probe_pccard __P((struct isa_device *, u_char *)); -#endif - static void ds_getmcaf __P((struct ed_softc *, u_long *)); static void ed_get_packet(struct ed_softc *, char *, /* u_short */ int, int); @@ -196,6 +192,9 @@ static u_long ds_crc(u_char *ep); +static int ed_get_Linksys __P((struct ed_softc *)); + +#include "card.h" #if NCARD > 0 #include #include @@ -205,6 +204,8 @@ /* * PC-Card (PCMCIA) specific code. */ +static int ed_probe_pccard __P((struct pccard_devinfo *)); +static int ed_attach_pccard __P((struct pccard_devinfo *)); static int edinit(struct pccard_devinfo *); /* init device */ static void edunload(struct pccard_devinfo *); /* Disable driver */ static int card_intr(struct pccard_devinfo *); /* Interrupt handler */ @@ -227,19 +228,30 @@ static int edinit(struct pccard_devinfo *devi) { - struct ed_softc *sc = &ed_softc[devi->isahd.id_unit]; + int i; + u_char e; + struct ed_softc *sc; + int unit = devi->pd_unit; /* validate unit number. */ - if (devi->isahd.id_unit >= NED) + if (unit >= NED) return(ENODEV); + sc = &ed_softc[unit]; + /* * Probe the device. If a value is returned, the * device was found at the location. */ sc->gone = 0; - if (ed_probe_pccard(&devi->isahd, devi->misc) == 0) + if (ed_probe_pccard(devi)==0) return(ENXIO); - if (ed_attach_isa(&devi->isahd) == 0) + e = 0; + for (i = 0; i < ETHER_ADDR_LEN; ++i) + e |= devi->misc[i]; + if (e) + for (i = 0; i < ETHER_ADDR_LEN; ++i) + sc->arpcom.ac_enaddr[i] = devi->misc[i]; + if (ed_attach_pccard(devi) == 0) return(ENXIO); return(0); @@ -257,17 +269,23 @@ static void edunload(struct pccard_devinfo *devi) { - struct ed_softc *sc = &ed_softc[devi->isahd.id_unit]; - struct ifnet *ifp = &sc->arpcom.ac_if; + struct ed_softc *sc; + struct ifnet *ifp; + int unit = devi->pd_unit; + + if (unit >= NED) + return; + sc = &ed_softc[unit]; + ifp = &sc->arpcom.ac_if; if (sc->gone) { - printf("ed%d: already unloaded\n", devi->isahd.id_unit); + printf("ed%d: already unloaded\n", unit); return; } ifp->if_flags &= ~IFF_RUNNING; if_down(ifp); sc->gone = 1; - printf("ed%d: unload\n", devi->isahd.id_unit); + printf("ed%d: unload\n", unit); } /* @@ -277,7 +295,7 @@ static int card_intr(struct pccard_devinfo *devi) { - edintr_sc(&ed_softc[devi->isahd.id_unit]); + edintr_sc(&ed_softc[devi->pd_unit]); return(1); } #endif /* NCARD > 0 */ @@ -1060,6 +1078,24 @@ return (ED_3COM_IO_PORTS); } +static int +ed_get_Linksys(sc) + struct ed_softc *sc; +{ + u_char sum; + int i; + + for (sum = 0, i = 0x14; i < 0x1c; i++) + sum += inb(sc->nic_addr + i); + if (sum != 0xff) + return 0; + for (i = 0; i < ETHER_ADDR_LEN; i++) { + sc->arpcom.ac_enaddr[i] = inb(sc->nic_addr + 0x14 + i); + /* printf("%02x.", sc->arpcom.ac_enaddr[i]); */ + } + return 2; +} + /* * Probe and vendor-specific initialization routine for NE1000/2000 boards */ @@ -1074,6 +1110,7 @@ u_char romdata[16], tmp; static char test_pattern[32] = "THIS is A memory TEST pattern"; char test_buffer[32]; + int linksys = 0; sc->asic_addr = port + ED_NOVELL_ASIC_OFFSET; sc->nic_addr = port + ED_NOVELL_NIC_OFFSET; @@ -1164,13 +1201,22 @@ sc->type = ED_TYPE_NE2000; sc->type_str = "NE2000"; - } else { + } +#if NCARD > 0 + else if (linksys = ed_get_Linksys(sc)) { + outb(sc->nic_addr + ED_P0_DCR, ED_DCR_WTS | ED_DCR_FT1 | ED_DCR_LS); + sc->isa16bit = 1; + sc->type = ED_TYPE_NE2000; + sc->type_str = "Linksys"; + } +#endif /* NCARD > 0 */ + else { sc->type = ED_TYPE_NE1000; sc->type_str = "NE1000"; } /* 8k of memory plus an additional 8k if 16bit */ - memsize = 8192 + sc->isa16bit * 8192; + memsize = 8192 + (sc->isa16bit + linksys) * 8192; #if 0 /* probably not useful - NE boards only come two ways */ /* allow kernel config file overrides */ @@ -1184,7 +1230,7 @@ /* The start address is tied to the bus width */ sc->mem_start = (char *) 8192 + sc->isa16bit * 8192; sc->mem_end = sc->mem_start + memsize; - sc->tx_page_start = memsize / ED_PAGE_SIZE; + sc->tx_page_start = (u_int) sc->mem_start / ED_PAGE_SIZE; #ifdef GWETHER { @@ -1256,16 +1302,19 @@ if ((memsize < 16384) || (flags & ED_FLAGS_NO_MULTI_BUFFERING)) sc->txb_cnt = 1; else - sc->txb_cnt = 2; + sc->txb_cnt = 2 + linksys; sc->rec_page_start = sc->tx_page_start + sc->txb_cnt * ED_TXBUF_SIZE; - sc->rec_page_stop = sc->tx_page_start + memsize / ED_PAGE_SIZE; + n = sc->tx_page_start + memsize / ED_PAGE_SIZE; + sc->rec_page_stop = (n > 0xff) ? 0xff : n; sc->mem_ring = sc->mem_start + sc->txb_cnt * ED_PAGE_SIZE * ED_TXBUF_SIZE; - ed_pio_readmem(sc, 0, romdata, 16); - for (n = 0; n < ETHER_ADDR_LEN; n++) - sc->arpcom.ac_enaddr[n] = romdata[n * (sc->isa16bit + 1)]; + if (!linksys) { + ed_pio_readmem(sc, 0, romdata, 16); + for (n = 0; n < ETHER_ADDR_LEN; n++) + sc->arpcom.ac_enaddr[n] = romdata[n * (sc->isa16bit + 1)]; + } #ifdef GWETHER if (sc->arpcom.ac_enaddr[2] == 0x86) { @@ -1297,23 +1346,37 @@ * supplied (from the CIS), relying on the probe to find it instead. */ static int -ed_probe_pccard(isa_dev, ether) - struct isa_device *isa_dev; - u_char *ether; +ed_probe_pccard(devi) + struct pccard_devinfo *devi; { - int nports; + struct ed_softc *sc = &ed_softc[devi->pd_unit]; + int nports; - nports = ed_probe_WD80x3(isa_dev); + nports = ed_probe_Novell_generic(sc, devi->pd_iobase, + devi->pd_unit, devi->pd_flags); if (nports) return (nports); - nports = ed_probe_Novell(isa_dev); +#if 0 + nports = ed_probe_WD80x3(isa_dev); if (nports) return (nports); +#endif return (0); } +static int +ed_attach_pccard(devi) + struct pccard_devinfo *devi; +{ + struct ed_softc *sc = &ed_softc[devi->pd_unit]; + int unit = devi->pd_unit; + int port = devi->pd_iobase; + int isa_flags = devi->pd_flags; + + return ed_attach(sc, unit, isa_flags); +} #endif /* NCARD > 0 */ #define ED_HPP_TEST_SIZE 16 @@ -1645,6 +1708,8 @@ { struct ifnet *ifp = &sc->arpcom.ac_if; + sc->delay_output = (flags & ED_FLAGS_DELAY_OUTPUT); + /* * Set interface to stopped condition (reset) */ @@ -2931,7 +2996,8 @@ * irrecoverably jamming the ISA bus. */ while (((inb(sc->nic_addr + ED_P0_ISR) & ED_ISR_RDC) != ED_ISR_RDC) && --maxwait); - + if (sc->delay_output) + DELAY(5); } else if ((sc->vendor == ED_VENDOR_HP) && (sc->type == ED_TYPE_HP_PCLANPLUS)) { diff -urN sys.2.2.8-RELEASE/i386/isa/if_edreg.h sys/i386/isa/if_edreg.h --- sys.2.2.8-RELEASE/i386/isa/if_edreg.h Fri Oct 9 02:24:11 1998 +++ sys/i386/isa/if_edreg.h Tue Dec 22 13:50:47 1998 @@ -598,6 +598,13 @@ #define ED_FLAGS_FORCE_PIO 0x0010 /* + * This flag is for cards with incomplete DMA status register. I don't + * know whether it works, but Linux PCMCIA package has this flag. + * Tatsumi Hosokawa (hosokawa@jp.FreeBSD.org) + */ +#define ED_FLAGS_DELAY_OUTPUT 0x0020 + +/* * Definitions for Western digital/SMC WD80x3 series ASIC */ /* @@ -996,6 +1003,25 @@ * Reset register; reading from this register causes a board reset */ #define ED_NOVELL_RESET 0x0f + +/* + * Definitions for PCCARD + */ +#define ED_PC_PAGE_OFFSET 0x40 /* page offset for NIC access to mem */ +#define ED_PC_IO_PORTS 32 +#define ED_PC_RESET 0x1f +#define ED_PC_MISC 0x18 +#define ED_PC_ASIC_OFFSET 0x10 + +/* + * if_ze.h constants + */ + +#define ZE_PAGE_OFFSET 0x40 /* mem buffer starts at 0x4000 */ + +#define ZE_DATA_IO 0x10 +#define ZE_MISC 0x18 +#define ZE_RESET 0x1F /* * Definitions for PCCARD diff -urN sys.2.2.8-RELEASE/i386/isa/if_ep.c sys/i386/isa/if_ep.c --- sys.2.2.8-RELEASE/i386/isa/if_ep.c Fri Sep 18 03:02:17 1998 +++ sys/i386/isa/if_ep.c Tue Dec 22 13:50:49 1998 @@ -129,10 +129,13 @@ static void epinit __P((struct ep_softc *)); static void epread __P((struct ep_softc *)); -void epreset __P((int)); +/*void epreset __P((int));*/ static void epstart __P((struct ifnet *)); static void epstop __P((struct ep_softc *)); static void epwatchdog __P((struct ifnet *)); +static size_t ep_countmcast __P((struct ep_softc *)); +static void ep_setmcast __P((struct ep_softc *)); +/*void epintr(int unit);*/ #if 0 static int send_ID_sequence __P((int)); @@ -189,31 +192,30 @@ ep_pccard_init(devi) struct pccard_devinfo *devi; { - struct isa_device *is = &devi->isahd; - struct ep_softc *sc = ep_softc[is->id_unit]; + struct ep_softc *sc = ep_softc[devi->pd_unit]; struct ep_board *epb; int i; - epb = &ep_board[is->id_unit]; + epb = &ep_board[devi->pd_unit]; if (sc == 0) { - if ((sc = ep_alloc(is->id_unit, epb)) == 0) { + if ((sc = ep_alloc(devi->pd_unit, epb)) == 0) { return (ENXIO); } ep_unit++; } /* get_e() requires these. */ - sc->ep_io_addr = is->id_iobase; - sc->unit = is->id_unit; + sc->ep_io_addr = devi->pd_iobase; + sc->unit = devi->pd_unit; - epb->epb_addr = is->id_iobase; + epb->epb_addr = devi->pd_iobase; epb->epb_used = 1; epb->prod_id = get_e(sc, EEPROM_PROD_ID); /* 3C589's product id? */ if (epb->prod_id != 0x9058) { - printf("ep%d: failed to come ready.\n", is->id_unit); + printf("ep%d: failed to come ready.\n", devi->pd_unit); return (ENXIO); } @@ -232,12 +234,11 @@ ep_pccard_attach(devi) struct pccard_devinfo *devi; { - struct isa_device *is = &devi->isahd; - struct ep_softc *sc = ep_softc[is->id_unit]; + struct ep_softc *sc = ep_softc[devi->pd_unit]; u_short config; sc->ep_connectors = 0; - config = inw(IS_BASE + EP_W0_CONFIG_CTRL); + config = inw(devi->pd_iobase + EP_W0_CONFIG_CTRL); if (config & IS_BNC) { sc->ep_connectors |= BNC; } @@ -266,15 +267,15 @@ ep_unload(devi) struct pccard_devinfo *devi; { - struct ep_softc *sc = ep_softc[devi->isahd.id_unit]; + struct ep_softc *sc = ep_softc[devi->pd_unit]; if (sc->gone) { - printf("ep%d: already unloaded\n", devi->isahd.id_unit); + printf("ep%d: already unloaded\n", devi->pd_unit); return; } sc->arpcom.ac_if.if_flags &= ~IFF_RUNNING; sc->gone = 1; - printf("ep%d: unload\n", devi->isahd.id_unit); + printf("ep%d: unload\n", devi->pd_unit); } /* @@ -285,7 +286,7 @@ card_intr(devi) struct pccard_devinfo *devi; { - epintr(devi->isahd.id_unit); + epintr(devi->pd_unit); return(1); } #endif /* NCARD > 0 */ @@ -590,10 +591,11 @@ struct sockaddr_dl *sdl; u_short *p; int i; + static int ep_attached[NEP]; int attached; sc->gone = 0; - attached = (ifp->if_softc != 0); + attached = ep_attached[sc->unit]; printf("ep%d: ", sc->unit); /* @@ -674,6 +676,7 @@ bpfattach(ifp, DLT_EN10MB, sizeof(struct ether_header)); } #endif + ep_attached[sc->unit] = 1; return 0; } @@ -734,12 +737,7 @@ outw(BASE + EP_COMMAND, SET_INTR_MASK | S_5_INTS); - if (ifp->if_flags & IFF_PROMISC) - outw(BASE + EP_COMMAND, SET_RX_FILTER | FIL_INDIVIDUAL | - FIL_GROUP | FIL_BRDCST | FIL_ALL); - else - outw(BASE + EP_COMMAND, SET_RX_FILTER | FIL_INDIVIDUAL | - FIL_GROUP | FIL_BRDCST); + ep_setmcast(sc); /* * S.B. @@ -968,6 +966,14 @@ while ((status = inw(BASE + EP_STATUS)) & S_5_INTS) { +#if NCARD > 0 + if (status == 0xffff) { + printf("ep%d: strange status - PC-card removed?\n", + sc->unit); + return; + } +#endif /* NCARD > 0 */ + /* first acknowledge all interrupt sources */ outw(BASE + EP_COMMAND, ACK_INTR | (status & S_MASK)); @@ -1351,12 +1357,20 @@ } break; case SIOCADDMULTI: + error = ether_addmulti(ifr, &sc->arpcom); + if (error == ENETRESET) { + /* update multicast filter list. */ + ep_setmcast(sc); + error = 0; + } + break; case SIOCDELMULTI: - /* Now this driver has no support for programmable - * multicast filters. If some day it will gain this - * support this part of code must be extended. - */ - error = 0; + error = ether_delmulti(ifr, &sc->arpcom); + if (error == ENETRESET) { + /* update multicast filter list. */ + ep_setmcast(sc); + error = 0; + } break; default: error = EINVAL; @@ -1453,6 +1467,39 @@ for (i = 0; i < 16; i++) data = (data << 1) | (inw(id_port) & 1); return (data); +} + +static size_t +ep_countmcast(sc) + struct ep_softc *sc; +{ + register struct ether_multi *enm; + register struct ether_multistep step; + size_t count; + + count = 0; + ETHER_FIRST_MULTI(step, &sc->arpcom, enm); + while (enm != NULL) { + count++; + ETHER_NEXT_MULTI(step, enm); + } + + return count; +} + +static void +ep_setmcast(sc) + struct ep_softc *sc; +{ + struct ifnet *ifp = (struct ifnet *)sc; + u_short filter; + + filter = FIL_INDIVIDUAL | FIL_BRDCST; + if (ep_countmcast(sc) != 0) + filter |= FIL_GROUP; + if (ifp->if_flags & IFF_PROMISC) + filter |= FIL_ALL; + outw(BASE + EP_COMMAND, SET_RX_FILTER | filter); } #endif /* NEP > 0 */ diff -urN sys.2.2.8-RELEASE/i386/isa/if_fe.c sys/i386/isa/if_fe.c --- sys.2.2.8-RELEASE/i386/isa/if_fe.c Sun Apr 19 08:25:11 1998 +++ sys/i386/isa/if_fe.c Tue Dec 22 13:50:53 1998 @@ -250,6 +250,7 @@ static void fe_start ( struct ifnet * ); static void fe_reset ( int ); static void fe_watchdog ( struct ifnet * ); +/*void feintr ( int unit );*/ /* Local functions. Order of declaration is confused. FIXME. */ static int fe_probe_fmv ( DEVICE *, struct fe_softc * ); @@ -356,7 +357,7 @@ struct fe_softc *sc; /* validate unit number. */ - if (devi->isahd.id_unit >= NFE) + if (devi->pd_unit >= NFE) return (ENODEV); /* * Probe the device. If a value is returned, @@ -365,7 +366,7 @@ #if FE_DEBUG >= 2 printf("Start Probe\n"); #endif - sc = &fe_softc[devi->isahd.id_unit]; + sc = &fe_softc[devi->pd_unit]; memcpy(sc->sc_enaddr, devi->misc, ETHER_ADDR_LEN); if (fe_probe(&devi->isahd) == 0) return (ENXIO); @@ -390,9 +391,13 @@ static void feunload(struct pccard_devinfo *devi) { - struct fe_softc *sc = &fe_softc[devi->isahd.id_unit]; - printf("fe%d: unload\n", devi->isahd.id_unit); - fe_stop(devi->isahd.id_unit); + struct fe_softc *sc; + int unit=devi->pd_unit; + if (unit >= NFE) + return; + sc = &fe_softc[unit]; + printf("fe%d: unload\n", unit); + fe_stop(unit); } /* @@ -402,7 +407,7 @@ static int fe_card_intr(struct pccard_devinfo *devi) { - feintr(devi->isahd.id_unit); + feintr(devi->pd_unit); return (1); } #endif /* NCARD > 0 */ diff -urN sys.2.2.8-RELEASE/i386/isa/if_sn.c sys/i386/isa/if_sn.c --- sys.2.2.8-RELEASE/i386/isa/if_sn.c Thu Jan 1 09:00:00 1970 +++ sys/i386/isa/if_sn.c Wed Dec 23 12:09:35 1998 @@ -0,0 +1,1766 @@ +/* + * Copyright (c) 1996 Gardner Buchanan + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Gardner Buchanan. + * 4. The name of Gardner Buchanan may not be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $Id: if_sn.c,v 1.1.8.2 1998/12/23 03:00:16 itojun Exp $ + */ + +/* + * This is a driver for SMC's 9000 series of Ethernet adapters. + * + * This FreeBSD driver is derived from the smc9194 Linux driver by + * Erik Stahlman and is Copyright (C) 1996 by Erik Stahlman. + * This driver also shamelessly borrows from the FreeBSD ep driver + * which is Copyright (C) 1994 Herb Peyerl + * All rights reserved. + * + * It is set up for my SMC91C92 equipped Ampro LittleBoard embedded + * PC. It is adapted from Erik Stahlman's Linux driver which worked + * with his EFA Info*Express SVC VLB adaptor. According to SMC's databook, + * it will work for the entire SMC 9xxx series. (Ha Ha) + * + * "Features" of the SMC chip: + * 4608 byte packet memory. (for the 91C92. Others have more) + * EEPROM for configuration + * AUI/TP selection + * + * Authors: + * Erik Stahlman erik@vt.edu + * Herb Peyerl hpeyerl@novatel.ca + * Andres Vega Garcia avega@sophia.inria.fr + * Serge Babkin babkin@hq.icb.chel.su + * Gardner Buchanan gbuchanan@shl.com + * + * Sources: + * o SMC databook + * o "smc9194.c:v0.10(FIXED) 02/15/96 by Erik Stahlman (erik@vt.edu)" + * o "if_ep.c,v 1.19 1995/01/24 20:53:45 davidg Exp" + * + * Known Bugs: + * o The hardware multicast filter isn't used yet. + * o Setting of the hardware address isn't supported. + * o Hardware padding isn't used. + */ + +/* + * Modifications for Megahertz X-Jack Ethernet Card (XJ-10BT) + * + * Copyright (c) 1996 by Tatsumi Hosokawa + * BSD-nomads, Tokyo, Japan. + */ +/* + * Multicast support by Kei TANAKA + * Special thanks to itojun@itojun.org + */ +#include "sn.h" +#if NSN > 0 + +#undef SN_DEBUG /* (by hosokawa) */ + +#include "bpfilter.h" + +#include +#if defined(__FreeBSD__) +#include +#include +#endif +#include +#include +#include +#include +#include +#if defined(__NetBSD__) +#include +#endif + +#include +#include +#include + +#ifdef INET +#include +#include +#include +#include +#include +#endif + +#ifdef INET6 +#ifndef INET +#include +#endif +#include +#endif + +#ifdef NS +#include +#include +#endif + +#if NBPFILTER > 0 +#include +#include +#endif + +#if defined(__FreeBSD__) +#include +#endif + +#ifdef PC98 +#include +#else /*PC98*/ +#include +#endif /*PC98*/ +#include +#include + +/* PCCARD suport */ +#include "card.h" +#if NCARD > 0 +#include +#include +#include +#include +#endif /* NCARD > 0 */ + +#include + +/* for PCMCIA Ethernet */ +static int sn_pccard[NSN]; /* set to 1 if it's PCMCIA card */ +static u_char sn_pccard_macaddr[NSN][6]; +static int sn_import_macaddr[NSN]; + +static int snprobe __P((struct isa_device *)); +static int snattach __P((struct isa_device *)); +static int snioctl __P((struct ifnet * ifp, int, caddr_t)); + +static int smc_probe __P((int ioaddr, int pccard)); +static void snresume __P((struct ifnet *)); + +void sninit __P((int)); +void snintr __P((int)); +void snread __P((struct ifnet *)); +void snreset __P((int)); +void snstart __P((struct ifnet *)); +void snstop __P((int)); +void snwatchdog __P((struct ifnet *)); + +static void sn_setmcast(struct sn_softc *); +static int sn_getmcf(struct arpcom *ac, u_char *mcf); +static u_int smc_crc(u_char *); + +/* I (GB) have been unlucky getting the hardware padding + * to work properly. + */ +#define SW_PAD + +struct sn_softc sn_softc[NSN]; + +struct isa_driver sndriver = { + snprobe, + snattach, + "sn", + 0 +}; + + +/* PCCARD Support */ +#if NCARD > 0 +/* + * PC-Card (PCMCIA) specific code. + */ +static int sn_card_intr(struct pccard_devinfo *); /* Interrupt handler */ +static void snunload(struct pccard_devinfo *); /* Disable driver */ +static int sn_card_init(struct pccard_devinfo *); /* init device */ + +static struct pccard_device sn_info = +{ + "sn", + sn_card_init, + snunload, + sn_card_intr, + 0, /* Attributes - presently unused */ + &net_imask /* Interrupt mask for device */ + /* This should also include net_imask?? */ +}; + +DATA_SET(pccarddrv_set, sn_info); + +static int +sn_card_init(struct pccard_devinfo *devi) +{ + int unit = devi->pd_unit; + struct sn_softc *sc = &sn_softc[devi->pd_unit]; + + sn_pccard[unit] = 1; + sn_import_macaddr[unit] = 0; + if (devi->misc[0] | devi->misc[1] | devi->misc[2]) { + int i; + for (i = 0; i < 6; i++) { + sn_pccard_macaddr[unit][i] = devi->misc[i]; + } + sn_import_macaddr[unit] = 1; + } + sc->gone = 0; + /* + * validate unit number. + */ + if (unit >= NSN) + return ENODEV; + /* + * Probe the device. If a value is returned, the + * device was found at the location. + */ +#ifdef SN_DEBUG +printf("snprobe()\n"); +#endif + if (snprobe(&devi->isahd)==0) + return ENXIO; +#ifdef SN_DEBUG +printf("snattach()\n"); +#endif + if (snattach(&devi->isahd)==0) + return ENXIO; + /* initialize interface dynamically */ + sc->arpcom.ac_if.if_snd.ifq_maxlen = ifqmaxlen; + + return 0; +} + +static void +snunload(struct pccard_devinfo *devi) +{ + int unit = devi->pd_unit; + struct sn_softc *sc = &sn_softc[devi->pd_unit]; + + if (sc->gone) { + printf("sn%d: already unloaded.\n", unit); + return; + } + + snstop(unit); + sc->gone = 1; + sc->arpcom.ac_if.if_flags &= ~IFF_RUNNING; + printf("sn%d: unload.\n", unit); +} + +static int +sn_card_intr(struct pccard_devinfo *devi) +{ + int unit = devi->pd_unit; + snintr(unit); + return(1); +} + +#endif /* NCARD > 0 */ + + +int +snprobe(struct isa_device *is) +{ + /* + * Device was configured with 'port ?' In this case we complain + */ + if (is->id_iobase == -1) { /* port? */ + printf("sn%d: SMC91Cxx cannot determine ioaddr\n", is->id_unit); + return 0; + } + /* + * Device was configured with 'irq ?' In this case we complain + */ + if (is->id_irq == 0) { + printf("sn%d: SMC91Cxx cannot determine irq\n", is->id_unit); + return (0); + } + /* + * Device was configured with 'port xxx', 'irq xx' In this case we + * search for the card with that address + */ + if (smc_probe(is->id_iobase, sn_pccard[is->id_unit]) != 0) + return (0); + + return (SMC_IO_EXTENT); +} + + +static int +snattach(struct isa_device *is) +{ + struct sn_softc *sc = &sn_softc[is->id_unit]; + struct ifnet *ifp = &sc->arpcom.ac_if; + u_short i; + int j; + u_char *p; + struct ifaddr *ifa; + struct sockaddr_dl *sdl; + int rev; + u_short address; +#if NCARD > 0 + static int alredy_ifatch[NSN]; +#endif + + /* + * This is the value used for BASE + */ + sc->sn_io_addr = is->id_iobase; + + sc->pages_wanted = -1; + + printf("sn%d: ", is->id_unit); + + SMC_SELECT_BANK(3); + rev = inw(BASE + REVISION_REG_W); + if (chip_ids[(rev >> 4) & 0xF]) + printf("%s ", chip_ids[(rev >> 4) & 0xF]); + + SMC_SELECT_BANK(1); + i = inw(BASE + CONFIG_REG_W); + printf(i & CR_AUI_SELECT ? "AUI" : "UTP"); + + if (sn_import_macaddr[is->id_unit]) { + for (j = 0; j < 3; j++) { + u_short w; + + w = (u_short)sn_pccard_macaddr[is->id_unit][j * 2] | + (((u_short)sn_pccard_macaddr[is->id_unit][j * 2 + 1]) << 8); + outw(BASE + IAR_ADDR0_REG_W + j * 2, w); + } + } + + /* + * Read the station address from the chip. The MAC address is bank 1, + * regs 4 - 9 + */ + SMC_SELECT_BANK(1); + p = (u_char *) & sc->arpcom.ac_enaddr; + for (i = 0; i < 6; i += 2) { + address = inw(BASE + IAR_ADDR0_REG_W + i); + p[i + 1] = address >> 8; + p[i] = address & 0xFF; + } + printf(" MAC address %6D\n", sc->arpcom.ac_enaddr, ":"); + ifp->if_unit = is->id_unit; + ifp->if_name = "sn"; + ifp->if_mtu = ETHERMTU; + ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; + ifp->if_output = ether_output; + ifp->if_start = snstart; + ifp->if_ioctl = snioctl; + ifp->if_watchdog = snwatchdog; +#ifdef ALTQ + ifp->if_altqflags |= ALTQF_READY; +#endif + + ifp->if_timer = 0; + +#if NCARD > 0 + if (alredy_ifatch[is->id_unit] != 1) { + if_attach( ifp ); + alredy_ifatch[is->id_unit] = 1; + } +#else + if_attach(ifp); +#endif + ether_ifattach(ifp); + /* + * Fill the hardware address into ifa_addr if we find an AF_LINK + * entry. We need to do this so bpf's can get the hardware addr of + * this card. netstat likes this too! + */ + ifa = ifp->if_addrlist; + while ((ifa != 0) && (ifa->ifa_addr != 0) && + (ifa->ifa_addr->sa_family != AF_LINK)) + ifa = ifa->ifa_next; + + if ((ifa != 0) && (ifa->ifa_addr != 0)) { + sdl = (struct sockaddr_dl *) ifa->ifa_addr; + sdl->sdl_type = IFT_ETHER; + sdl->sdl_alen = ETHER_ADDR_LEN; + sdl->sdl_slen = 0; + bcopy(sc->arpcom.ac_enaddr, LLADDR(sdl), ETHER_ADDR_LEN); + } + snstop(is->id_unit); + +#if NBPFILTER > 0 + bpfattach(ifp, DLT_EN10MB, sizeof(struct ether_header)); +#endif + + return 1; +} + + +/* + * Reset and initialize the chip + */ +void +sninit(int unit) +{ + register struct sn_softc *sc = &sn_softc[unit]; + register struct ifnet *ifp = &sc->arpcom.ac_if; + int s; + int flags; + int mask; + +#if NCARD > 0 + if (sc->gone) + return; +#endif + s = splimp(); + + /* + * This resets the registers mostly to defaults, but doesn't affect + * EEPROM. After the reset cycle, we pause briefly for the chip to + * be happy. + */ + SMC_SELECT_BANK(0); + outw(BASE + RECV_CONTROL_REG_W, RCR_SOFTRESET); + SMC_DELAY(); + outw(BASE + RECV_CONTROL_REG_W, 0x0000); + SMC_DELAY(); + SMC_DELAY(); + + outw(BASE + TXMIT_CONTROL_REG_W, 0x0000); + + /* + * Set the control register to automatically release succesfully + * transmitted packets (making the best use out of our limited + * memory) and to enable the EPH interrupt on certain TX errors. + */ + SMC_SELECT_BANK(1); + outw(BASE + CONTROL_REG_W, (CTR_AUTO_RELEASE | CTR_TE_ENABLE | + CTR_CR_ENABLE | CTR_LE_ENABLE)); + + /* Set squelch level to 240mV (default 480mV) */ + flags = inw(BASE + CONFIG_REG_W); + flags |= CR_SET_SQLCH; + outw(BASE + CONFIG_REG_W, flags); + + /* + * Reset the MMU and wait for it to be un-busy. + */ + SMC_SELECT_BANK(2); + outw(BASE + MMU_CMD_REG_W, MMUCR_RESET); + while (inw(BASE + MMU_CMD_REG_W) & MMUCR_BUSY) /* NOTHING */ + ; + + /* + * Disable all interrupts + */ + outb(BASE + INTR_MASK_REG_B, 0x00); + + sn_setmcast(sc); + + /* + * Set the transmitter control. We want it enabled. + */ + flags = TCR_ENABLE; + +#ifndef SW_PAD + /* + * I (GB) have been unlucky getting this to work. + */ + flags |= TCR_PAD_ENABLE; +#endif /* SW_PAD */ + + outw(BASE + TXMIT_CONTROL_REG_W, flags); + + + /* + * Now, enable interrupts + */ + SMC_SELECT_BANK(2); + + mask = IM_EPH_INT | + IM_RX_OVRN_INT | + IM_RCV_INT | + IM_TX_INT; + + outb(BASE + INTR_MASK_REG_B, mask); + sc->intr_mask = mask; + sc->pages_wanted = -1; + + + /* + * Mark the interface running but not active. + */ + ifp->if_flags |= IFF_RUNNING; + ifp->if_flags &= ~IFF_OACTIVE; + + /* + * Attempt to push out any waiting packets. + */ + snstart(ifp); + +#ifdef INET6 + in6_ifattach(&sc->arpcom.ac_if, IN6_IFT_802, + (caddr_t)sc->arpcom.ac_enaddr, 0); +#endif /* INET6 */ + + splx(s); +} + + +void +snstart(struct ifnet *ifp) +{ + register struct sn_softc *sc = &sn_softc[ifp->if_unit]; + register u_int len; + register struct mbuf *m; + struct mbuf *top; + int s, pad; + int mask; + u_short length; + u_short numPages; + u_char packet_no; + int time_out; + +#if NCARD > 0 + if (sc->gone) + return; +#endif + + s = splimp(); + + if (sc->arpcom.ac_if.if_flags & IFF_OACTIVE) { + splx(s); + return; + } + if (sc->pages_wanted != -1) { + splx(s); + printf("sn%d: snstart() while memory allocation pending\n", + ifp->if_unit); + return; + } +startagain: + + /* + * Sneak a peek at the next packet + */ +#ifdef ALTQ + if(ALTQ_IS_ON(ifp)) + m = (*ifp->if_altqdequeue)(ifp, ALTDQ_PEEK); + else +#endif + m = sc->arpcom.ac_if.if_snd.ifq_head; + if (m == 0) { + splx(s); + return; + } + /* + * Compute the frame length and set pad to give an overall even + * number of bytes. Below we assume that the packet length is even. + */ + for (len = 0, top = m; m; m = m->m_next) + len += m->m_len; + + pad = (len & 1); + + /* + * We drop packets that are too large. Perhaps we should truncate + * them instead? + */ + if (len + pad > ETHER_MAX_LEN - ETHER_CRC_LEN) { + + printf("sn%d: large packet discarded (A)\n", ifp->if_unit); + + ++sc->arpcom.ac_if.if_oerrors; +#ifdef ALTQ + if (ALTQ_IS_ON(ifp)){ + m = (*ifp->if_altqdequeue)(ifp, ALTDQ_DEQUEUE); + if (m != top) + panic("snstart: different mbuf dequeued!"); + }else +#endif + IF_DEQUEUE(&sc->arpcom.ac_if.if_snd, m); + m_freem(m); + goto readcheck; + } +#ifdef SW_PAD + + /* + * If HW padding is not turned on, then pad to ETHER_MIN_LEN. + */ + if (len < ETHER_MIN_LEN - ETHER_CRC_LEN) + pad = ETHER_MIN_LEN - ETHER_CRC_LEN - len; + +#endif /* SW_PAD */ + + length = pad + len; + + /* + * The MMU wants the number of pages to be the number of 256 byte + * 'pages', minus 1 (A packet can't ever have 0 pages. We also + * include space for the status word, byte count and control bytes in + * the allocation request. + */ + numPages = (length + 6) >> 8; + + + /* + * Now, try to allocate the memory + */ + SMC_SELECT_BANK(2); + outw(BASE + MMU_CMD_REG_W, MMUCR_ALLOC | numPages); + + /* + * Wait a short amount of time to see if the allocation request + * completes. Otherwise, I enable the interrupt and wait for + * completion asyncronously. + */ + + time_out = MEMORY_WAIT_TIME; + do { + if (inb(BASE + INTR_STAT_REG_B) & IM_ALLOC_INT) + break; + } while (--time_out); + + if (!time_out) { + + /* + * No memory now. Oh well, wait until the chip finds memory + * later. Remember how many pages we were asking for and + * enable the allocation completion interrupt. Also set a + * watchdog in case we miss the interrupt. We mark the + * interface active since there is no point in attempting an + * snstart() until after the memory is available. + */ + mask = inb(BASE + INTR_MASK_REG_B) | IM_ALLOC_INT; + outb(BASE + INTR_MASK_REG_B, mask); + sc->intr_mask = mask; + + sc->arpcom.ac_if.if_timer = 1; + sc->arpcom.ac_if.if_flags |= IFF_OACTIVE; + sc->pages_wanted = numPages; + + splx(s); + return; + } + /* + * The memory allocation completed. Check the results. + */ + packet_no = inb(BASE + ALLOC_RESULT_REG_B); + if (packet_no & ARR_FAILED) { + printf("sn%d: Memory allocation failed\n", ifp->if_unit); + goto startagain; + } + /* + * We have a packet number, so tell the card to use it. + */ + outb(BASE + PACKET_NUM_REG_B, packet_no); + + /* + * Point to the beginning of the packet + */ + outw(BASE + POINTER_REG_W, PTR_AUTOINC | 0x0000); + + /* + * Send the packet length (+6 for status, length and control byte) + * and the status word (set to zeros) + */ + outw(BASE + DATA_REG_W, 0); + outb(BASE + DATA_REG_B, (length + 6) & 0xFF); + outb(BASE + DATA_REG_B, (length + 6) >> 8); + + /* + * Get the packet from the kernel. This will include the Ethernet + * frame header, MAC Addresses etc. + */ +#ifdef ALTQ + if(ALTQ_IS_ON(ifp)){ + m = (*ifp->if_altqdequeue)(ifp, ALTDQ_DEQUEUE); + if(m != top) + panic("snstart: different mbuf dequeued!"); + }else +#endif + IF_DEQUEUE(&sc->arpcom.ac_if.if_snd, m); + + /* + * Push out the data to the card. + */ + for (top = m; m != 0; m = m->m_next) { + + /* + * Push out words. + */ + outsw(BASE + DATA_REG_W, mtod(m, caddr_t), m->m_len / 2); + + /* + * Push out remaining byte. + */ + if (m->m_len & 1) + outb(BASE + DATA_REG_B, *(mtod(m, caddr_t) + m->m_len - 1)); + } + + /* + * Push out padding. + */ + while (pad > 1) { + outw(BASE + DATA_REG_W, 0); + pad -= 2; + } + if (pad) + outb(BASE + DATA_REG_B, 0); + + /* + * Push out control byte and unused packet byte The control byte is 0 + * meaning the packet is even lengthed and no special CRC handling is + * desired. + */ + outw(BASE + DATA_REG_W, 0); + + /* + * Enable the interrupts and let the chipset deal with it Also set a + * watchdog in case we miss the interrupt. + */ + mask = inb(BASE + INTR_MASK_REG_B) | (IM_TX_INT | IM_TX_EMPTY_INT); + outb(BASE + INTR_MASK_REG_B, mask); + sc->intr_mask = mask; + + outw(BASE + MMU_CMD_REG_W, MMUCR_ENQUEUE); + + sc->arpcom.ac_if.if_flags |= IFF_OACTIVE; + sc->arpcom.ac_if.if_timer = 1; + +#if NBPFILTER > 0 + if (ifp->if_bpf) { + bpf_mtap(ifp, top); + } +#endif + + sc->arpcom.ac_if.if_opackets++; + m_freem(top); + + +readcheck: + + /* + * Is another packet coming in? We don't want to overflow the tiny + * RX FIFO. If nothing has arrived then attempt to queue another + * transmit packet. + */ + if (inw(BASE + FIFO_PORTS_REG_W) & FIFO_REMPTY) + goto startagain; + + splx(s); + return; +} + + + +/* Resume a packet transmit operation after a memory allocation + * has completed. + * + * This is basically a hacked up copy of snstart() which handles + * a completed memory allocation the same way snstart() does. + * It then passes control to snstart to handle any other queued + * packets. + */ +static void +snresume(struct ifnet *ifp) +{ + register struct sn_softc *sc = &sn_softc[ifp->if_unit]; + register u_int len; + register struct mbuf *m; + struct mbuf *top; + int pad; + int mask; + u_short length; + u_short numPages; + u_short pages_wanted; + u_char packet_no; + + if (sc->pages_wanted < 0) + return; + + pages_wanted = sc->pages_wanted; + sc->pages_wanted = -1; + + /* + * Sneak a peek at the next packet + */ + m = sc->arpcom.ac_if.if_snd.ifq_head; + if (m == 0) { + printf("sn%d: snresume() with nothing to send\n", ifp->if_unit); + return; + } + /* + * Compute the frame length and set pad to give an overall even + * number of bytes. Below we assume that the packet length is even. + */ + for (len = 0, top = m; m; m = m->m_next) + len += m->m_len; + + pad = (len & 1); + + /* + * We drop packets that are too large. Perhaps we should truncate + * them instead? + */ + if (len + pad > ETHER_MAX_LEN - ETHER_CRC_LEN) { + + printf("sn%d: large packet discarded (B)\n", ifp->if_unit); + + ++sc->arpcom.ac_if.if_oerrors; + IF_DEQUEUE(&sc->arpcom.ac_if.if_snd, m); + m_freem(m); + return; + } +#ifdef SW_PAD + + /* + * If HW padding is not turned on, then pad to ETHER_MIN_LEN. + */ + if (len < ETHER_MIN_LEN - ETHER_CRC_LEN) + pad = ETHER_MIN_LEN - ETHER_CRC_LEN - len; + +#endif /* SW_PAD */ + + length = pad + len; + + + /* + * The MMU wants the number of pages to be the number of 256 byte + * 'pages', minus 1 (A packet can't ever have 0 pages. We also + * include space for the status word, byte count and control bytes in + * the allocation request. + */ + numPages = (length + 6) >> 8; + + + SMC_SELECT_BANK(2); + + /* + * The memory allocation completed. Check the results. If it failed, + * we simply set a watchdog timer and hope for the best. + */ + packet_no = inb(BASE + ALLOC_RESULT_REG_B); + if (packet_no & ARR_FAILED) { + + printf("sn%d: Memory allocation failed. Weird.\n", ifp->if_unit); + + sc->arpcom.ac_if.if_timer = 1; + + goto try_start; + return; + } + /* + * We have a packet number, so tell the card to use it. + */ + outb(BASE + PACKET_NUM_REG_B, packet_no); + + /* + * Now, numPages should match the pages_wanted recorded when the + * memory allocation was initiated. + */ + if (pages_wanted != numPages) { + + printf("sn%d: memory allocation wrong size. Weird.\n", ifp->if_unit); + + /* + * If the allocation was the wrong size we simply release the + * memory once it is granted. Wait for the MMU to be un-busy. + */ + while (inw(BASE + MMU_CMD_REG_W) & MMUCR_BUSY) /* NOTHING */ + ; + outw(BASE + MMU_CMD_REG_W, MMUCR_FREEPKT); + + return; + } + /* + * Point to the beginning of the packet + */ + outw(BASE + POINTER_REG_W, PTR_AUTOINC | 0x0000); + + /* + * Send the packet length (+6 for status, length and control byte) + * and the status word (set to zeros) + */ + outw(BASE + DATA_REG_W, 0); + outb(BASE + DATA_REG_B, (length + 6) & 0xFF); + outb(BASE + DATA_REG_B, (length + 6) >> 8); + + /* + * Get the packet from the kernel. This will include the Ethernet + * frame header, MAC Addresses etc. + */ + IF_DEQUEUE(&sc->arpcom.ac_if.if_snd, m); + + /* + * Push out the data to the card. + */ + for (top = m; m != 0; m = m->m_next) { + + /* + * Push out words. + */ + outsw(BASE + DATA_REG_W, mtod(m, caddr_t), m->m_len / 2); + + /* + * Push out remaining byte. + */ + if (m->m_len & 1) + outb(BASE + DATA_REG_B, *(mtod(m, caddr_t) + m->m_len - 1)); + } + + /* + * Push out padding. + */ + while (pad > 1) { + outw(BASE + DATA_REG_W, 0); + pad -= 2; + } + if (pad) + outb(BASE + DATA_REG_B, 0); + + /* + * Push out control byte and unused packet byte The control byte is 0 + * meaning the packet is even lengthed and no special CRC handling is + * desired. + */ + outw(BASE + DATA_REG_W, 0); + + /* + * Enable the interrupts and let the chipset deal with it Also set a + * watchdog in case we miss the interrupt. + */ + mask = inb(BASE + INTR_MASK_REG_B) | (IM_TX_INT | IM_TX_EMPTY_INT); + outb(BASE + INTR_MASK_REG_B, mask); + sc->intr_mask = mask; + outw(BASE + MMU_CMD_REG_W, MMUCR_ENQUEUE); + +#if NBPFILTER > 0 + if (ifp->if_bpf) { + bpf_mtap(ifp, top); + } +#endif + + sc->arpcom.ac_if.if_opackets++; + m_freem(top); + +try_start: + + /* + * Now pass control to snstart() to queue any additional packets + */ + sc->arpcom.ac_if.if_flags &= ~IFF_OACTIVE; + snstart(ifp); + + /* + * We've sent something, so we're active. Set a watchdog in case the + * TX_EMPTY interrupt is lost. + */ + sc->arpcom.ac_if.if_flags |= IFF_OACTIVE; + sc->arpcom.ac_if.if_timer = 1; + + return; +} + + +void +snintr(int unit) +{ + int status, interrupts; + register struct sn_softc *sc = &sn_softc[unit]; + struct ifnet *ifp = &sc->arpcom.ac_if; + int x; + + /* + * Chip state registers + */ + u_char mask; + u_char packet_no; + u_short tx_status; + u_short card_stats; + +#if NCARD > 0 + if (sc->gone) + return; +#endif + + /* + * if_ep.c did this, so I do too. Yet if_ed.c doesn't. I wonder... + */ + x = splbio(); + + /* + * Clear the watchdog. + */ + ifp->if_timer = 0; + + SMC_SELECT_BANK(2); + + /* + * Obtain the current interrupt mask and clear the hardware mask + * while servicing interrupts. + */ + mask = inb(BASE + INTR_MASK_REG_B); + outb(BASE + INTR_MASK_REG_B, 0x00); + + /* + * Get the set of interrupts which occurred and eliminate any which + * are masked. + */ + interrupts = inb(BASE + INTR_STAT_REG_B); + status = interrupts & mask; + + /* + * Now, process each of the interrupt types. + */ + + /* + * Receive Overrun. + */ + if (status & IM_RX_OVRN_INT) { + + /* + * Acknowlege Interrupt + */ + SMC_SELECT_BANK(2); + outb(BASE + INTR_ACK_REG_B, IM_RX_OVRN_INT); + + ++sc->arpcom.ac_if.if_ierrors; + } + /* + * Got a packet. + */ + if (status & IM_RCV_INT) { +#if 1 + int packet_number; + + SMC_SELECT_BANK(2); + packet_number = inw(BASE + FIFO_PORTS_REG_W); + + if (packet_number & FIFO_REMPTY) { + + /* + * we got called , but nothing was on the FIFO + */ + printf("sn: Receive interrupt with nothing on FIFO\n"); + + goto out; + } +#endif + snread(ifp); + } + /* + * An on-card memory allocation came through. + */ + if (status & IM_ALLOC_INT) { + + /* + * Disable this interrupt. + */ + mask &= ~IM_ALLOC_INT; + sc->arpcom.ac_if.if_flags &= ~IFF_OACTIVE; + snresume(&sc->arpcom.ac_if); + } + /* + * TX Completion. Handle a transmit error message. This will only be + * called when there is an error, because of the AUTO_RELEASE mode. + */ + if (status & IM_TX_INT) { + + /* + * Acknowlege Interrupt + */ + SMC_SELECT_BANK(2); + outb(BASE + INTR_ACK_REG_B, IM_TX_INT); + + packet_no = inw(BASE + FIFO_PORTS_REG_W); + packet_no &= FIFO_TX_MASK; + + /* + * select this as the packet to read from + */ + outb(BASE + PACKET_NUM_REG_B, packet_no); + + /* + * Position the pointer to the first word from this packet + */ + outw(BASE + POINTER_REG_W, PTR_AUTOINC | PTR_READ | 0x0000); + + /* + * Fetch the TX status word. The value found here will be a + * copy of the EPH_STATUS_REG_W at the time the transmit + * failed. + */ + tx_status = inw(BASE + DATA_REG_W); + + if (tx_status & EPHSR_TX_SUC) { + printf("sn%d: Successful packet caused interrupt\n", unit); + } else { + ++sc->arpcom.ac_if.if_oerrors; + } + + if (tx_status & EPHSR_LATCOL) + ++sc->arpcom.ac_if.if_collisions; + + /* + * Some of these errors will have disabled transmit. + * Re-enable transmit now. + */ + SMC_SELECT_BANK(0); + +#ifdef SW_PAD + outw(BASE + TXMIT_CONTROL_REG_W, TCR_ENABLE); +#else + outw(BASE + TXMIT_CONTROL_REG_W, TCR_ENABLE | TCR_PAD_ENABLE); +#endif /* SW_PAD */ + + /* + * kill the failed packet. Wait for the MMU to be un-busy. + */ + SMC_SELECT_BANK(2); + while (inw(BASE + MMU_CMD_REG_W) & MMUCR_BUSY) /* NOTHING */ + ; + outw(BASE + MMU_CMD_REG_W, MMUCR_FREEPKT); + + /* + * Attempt to queue more transmits. + */ + sc->arpcom.ac_if.if_flags &= ~IFF_OACTIVE; + snstart(&sc->arpcom.ac_if); + } + /* + * Transmit underrun. We use this opportunity to update transmit + * statistics from the card. + */ + if (status & IM_TX_EMPTY_INT) { + + /* + * Acknowlege Interrupt + */ + SMC_SELECT_BANK(2); + outb(BASE + INTR_ACK_REG_B, IM_TX_EMPTY_INT); + + /* + * Disable this interrupt. + */ + mask &= ~IM_TX_EMPTY_INT; + + SMC_SELECT_BANK(0); + card_stats = inw(BASE + COUNTER_REG_W); + + /* + * Single collisions + */ + sc->arpcom.ac_if.if_collisions += card_stats & ECR_COLN_MASK; + + /* + * Multiple collisions + */ + sc->arpcom.ac_if.if_collisions += (card_stats & ECR_MCOLN_MASK) >> 4; + + SMC_SELECT_BANK(2); + + /* + * Attempt to enqueue some more stuff. + */ + sc->arpcom.ac_if.if_flags &= ~IFF_OACTIVE; + snstart(&sc->arpcom.ac_if); + } + /* + * Some other error. Try to fix it by resetting the adapter. + */ + if (status & IM_EPH_INT) { + snstop(unit); + sninit(unit); + } + +out: + /* + * Handled all interrupt sources. + */ + + SMC_SELECT_BANK(2); + + /* + * Reestablish interrupts from mask which have not been deselected + * during this interrupt. Note that the hardware mask, which was set + * to 0x00 at the start of this service routine, may have been + * updated by one or more of the interrupt handers and we must let + * those new interrupts stay enabled here. + */ + mask |= inb(BASE + INTR_MASK_REG_B); + outb(BASE + INTR_MASK_REG_B, mask); + sc->intr_mask = mask; + + splx(x); +} + +void +snread(register struct ifnet *ifp) +{ + struct sn_softc *sc = &sn_softc[ifp->if_unit]; + struct ether_header *eh; + struct mbuf *m; + short status; + int packet_number; + u_short packet_length; + u_char *data; + + SMC_SELECT_BANK(2); +#if 0 + packet_number = inw(BASE + FIFO_PORTS_REG_W); + + if (packet_number & FIFO_REMPTY) { + + /* + * we got called , but nothing was on the FIFO + */ + printf("sn: Receive interrupt with nothing on FIFO\n"); + return; + } +#endif +read_another: + + /* + * Start reading from the start of the packet. Since PTR_RCV is set, + * packet number is found in FIFO_PORTS_REG_W, FIFO_RX_MASK. + */ + outw(BASE + POINTER_REG_W, PTR_READ | PTR_RCV | PTR_AUTOINC | 0x0000); + + /* + * First two words are status and packet_length + */ + status = inw(BASE + DATA_REG_W); + packet_length = inw(BASE + DATA_REG_W) & RLEN_MASK; + + /* + * The packet length contains 3 extra words: status, length, and a + * extra word with the control byte. + */ + packet_length -= 6; + + /* + * Account for receive errors and discard. + */ + if (status & RS_ERRORS) { + ++sc->arpcom.ac_if.if_ierrors; + goto out; + } + /* + * A packet is received. + */ + + /* + * Adjust for odd-length packet. + */ + if (status & RS_ODDFRAME) + packet_length++; + + /* + * Allocate a header mbuf from the kernel. + */ + MGETHDR(m, M_DONTWAIT, MT_DATA); + if (m == NULL) + goto out; + + m->m_pkthdr.rcvif = &sc->arpcom.ac_if; + m->m_pkthdr.len = m->m_len = packet_length; + + /* + * Attach an mbuf cluster + */ + MCLGET(m, M_DONTWAIT); + + /* + * Insist on getting a cluster + */ + if ((m->m_flags & M_EXT) == 0) { + m_freem(m); + ++sc->arpcom.ac_if.if_ierrors; + printf("sn: snread() kernel memory allocation problem\n"); + goto out; + } + eh = mtod(m, struct ether_header *); + + /* + * Get packet, including link layer address, from interface. + */ + + data = (u_char *) eh; + insw(BASE + DATA_REG_W, data, packet_length >> 1); + if (packet_length & 1) { + data += packet_length & ~1; + *data = inb(BASE + DATA_REG_B); + } + ++sc->arpcom.ac_if.if_ipackets; + +#if NBPFILTER > 0 + if (sc->arpcom.ac_if.if_bpf) + { + bpf_mtap(&sc->arpcom.ac_if, m); + + /* + * Note that the interface cannot be in promiscuous mode if + * there are no BPF listeners. And if we are in promiscuous + * mode, we have to check if this packet is really ours. + */ + if ((sc->arpcom.ac_if.if_flags & IFF_PROMISC) && + (eh->ether_dhost[0] & 1) == 0 && + bcmp(eh->ether_dhost, sc->arpcom.ac_enaddr, + sizeof(eh->ether_dhost)) != 0 && + bcmp(eh->ether_dhost, etherbroadcastaddr, + sizeof(eh->ether_dhost)) != 0) { + m_freem(m); + goto out; + } + } +#endif + + /* + * Remove link layer addresses and whatnot. + */ + m->m_pkthdr.len = m->m_len = packet_length - sizeof(struct ether_header); + m->m_data += sizeof(struct ether_header); + + ether_input(&sc->arpcom.ac_if, eh, m); + +out: + + /* + * Error or good, tell the card to get rid of this packet Wait for + * the MMU to be un-busy. + */ + SMC_SELECT_BANK(2); + while (inw(BASE + MMU_CMD_REG_W) & MMUCR_BUSY) /* NOTHING */ + ; + outw(BASE + MMU_CMD_REG_W, MMUCR_RELEASE); + + /* + * Check whether another packet is ready + */ + packet_number = inw(BASE + FIFO_PORTS_REG_W); + if (packet_number & FIFO_REMPTY) { + return; + } + goto read_another; +} + + +/* + * Handle IOCTLS. This function is completely stolen from if_ep.c + * As with its progenitor, it does not handle hardware address + * changes. + */ +static int +snioctl(register struct ifnet *ifp, int cmd, caddr_t data) +{ + register struct ifaddr *ifa = (struct ifaddr *) data; + struct sn_softc *sc = &sn_softc[ifp->if_unit]; + struct ifreq *ifr = (struct ifreq *) data; + int s, error = 0; + +#if NCARD > 0 + if (sc->gone) { + ifp->if_flags &= ~IFF_RUNNING; + return ENXIO; + } +#endif + + s = splimp(); + + switch (cmd) { + case SIOCSIFADDR: + ifp->if_flags |= IFF_UP; + switch (ifa->ifa_addr->sa_family) { +#ifdef INET + case AF_INET: + sninit(ifp->if_unit); /* before arpwhohas */ + arp_ifinit((struct arpcom *) ifp, ifa); + break; +#endif +#ifdef IPX + case AF_IPX: + { + register struct ipx_addr *ina = &IA_SIPX(ifa)->sipx_addr; + + if (ipx_nullhost(*ina)) + ina->x_host = + *(union ipx_host *) (sc->sc_arpcom.ac_enaddr); + else { + ifp->if_flags &= ~IFF_RUNNING; + bcopy((caddr_t) ina->x_host.c_host, + (caddr_t) sc->sc_arpcom.ac_enaddr, + sizeof(sc->sc_arpcom.ac_enaddr)); + } + /* Set new address. */ + sninit(sc); + break; + } +#endif +#ifdef NS + case AF_NS: + { + register struct ns_addr *ina = &(IA_SNS(ifa)->sns_addr); + + if (ns_nullhost(*ina)) + ina->x_host = + *(union ns_host *) (sc->arpcom.ac_enaddr); + sn else { + ifp->if_flags &= ~IFF_RUNNING; + bcopy((caddr_t) ina->x_host.c_host, + (caddr_t) sc->arpcom.ac_enaddr, + sizeof(sc->arpcom.ac_enaddr)); + } + sninit(ifp->if_unit); + break; + } +#endif + default: + sninit(ifp->if_unit); + break; + } + break; + case SIOCGIFADDR: + { + struct sockaddr *sa; + + sa = (struct sockaddr *) & ifr->ifr_data; + bcopy((caddr_t) sc->arpcom.ac_enaddr, + (caddr_t) sa->sa_data, ETHER_ADDR_LEN); + } + break; + case SIOCSIFFLAGS: + if ((ifp->if_flags & IFF_UP) == 0 && ifp->if_flags & IFF_RUNNING) { + ifp->if_flags &= ~IFF_RUNNING; + snstop(ifp->if_unit); + break; + } else { + /* reinitialize card on any parameter change */ + sninit(ifp->if_unit); + break; + } + break; + +#ifdef notdef + case SIOCGHWADDR: + bcopy((caddr_t) sc->sc_addr, (caddr_t) & ifr->ifr_data, + sizeof(sc->sc_addr)); + break; +#endif + + case SIOCSIFMTU: + + /* + * Set the interface MTU. + */ + if (ifr->ifr_mtu > ETHERMTU) { + error = EINVAL; + } else { + ifp->if_mtu = ifr->ifr_mtu; + } + break; + case SIOCADDMULTI: + error = ether_addmulti(ifr, &sc->arpcom); + if (error == ENETRESET) { + /* update multicast filter list. */ + sn_setmcast(sc); + error = 0; + } + break; + case SIOCDELMULTI: + error = ether_delmulti(ifr, &sc->arpcom); + if (error == ENETRESET) { + /* update multicast filter list. */ + sn_setmcast(sc); + error = 0; + } + break; + default: + error = EINVAL; + } + + splx(s); + + return (error); +} + +void +snreset(int unit) +{ + int s; + struct sn_softc *sc = &sn_softc[unit]; + +#if NCARD > 0 + if (sc->gone) + return; +#endif + s = splimp(); + snstop(unit); + sninit(unit); + + splx(s); +} + +void +snwatchdog(struct ifnet *ifp) +{ + int s; + struct sn_softc *sc = &sn_softc[ifp->if_unit]; + +#if NCARD > 0 + if (sc->gone) + return; +#endif + s = splimp(); + snintr(ifp->if_unit); + splx(s); +} + + +/* 1. zero the interrupt mask + * 2. clear the enable receive flag + * 3. clear the enable xmit flags + */ +void +snstop(int unit) +{ + struct sn_softc *sc = &sn_softc[unit]; + struct ifnet *ifp = &sc->arpcom.ac_if; + +#if NCARD > 0 + if (sc->gone) + return; +#endif + /* + * Clear interrupt mask; disable all interrupts. + */ + SMC_SELECT_BANK(2); + outb(BASE + INTR_MASK_REG_B, 0x00); + + /* + * Disable transmitter and Receiver + */ + SMC_SELECT_BANK(0); + outw(BASE + RECV_CONTROL_REG_W, 0x0000); + outw(BASE + TXMIT_CONTROL_REG_W, 0x0000); + + /* + * Cancel watchdog. + */ + ifp->if_timer = 0; +} + + + +/* + * Function: smc_probe( int ioaddr, int pccard ) + * + * Purpose: + * Tests to see if a given ioaddr points to an SMC9xxx chip. + * Tries to cause as little damage as possible if it's not a SMC chip. + * Returns a 0 on success + * + * Algorithm: + * (1) see if the high byte of BANK_SELECT is 0x33 + * (2) compare the ioaddr with the base register's address + * (3) see if I recognize the chip ID in the appropriate register + * + * + */ +static int +smc_probe(int ioaddr, int pccard) +{ + u_int bank; + u_short revision_register; + u_short base_address_register; + + /* + * First, see if the high byte is 0x33 + */ + bank = inw(ioaddr + BANK_SELECT_REG_W); + if ((bank & BSR_DETECT_MASK) != BSR_DETECT_VALUE) { +#ifdef SN_DEBUG +printf("test1 failed\n"); +#endif + return -ENODEV; + } + /* + * The above MIGHT indicate a device, but I need to write to further + * test this. Go to bank 0, then test that the register still + * reports the high byte is 0x33. + */ + outw(ioaddr + BANK_SELECT_REG_W, 0x0000); + bank = inw(ioaddr + BANK_SELECT_REG_W); + if ((bank & BSR_DETECT_MASK) != BSR_DETECT_VALUE) { +#ifdef SN_DEBUG +printf("test2 failed\n"); +#endif + return -ENODEV; + } + /* + * well, we've already written once, so hopefully another time won't + * hurt. This time, I need to switch the bank register to bank 1, so + * I can access the base address register. The contents of the + * BASE_ADDR_REG_W register, after some jiggery pokery, is expected + * to match the I/O port address where the adapter is being probed. + */ + outw(ioaddr + BANK_SELECT_REG_W, 0x0001); + base_address_register = inw(ioaddr + BASE_ADDR_REG_W); + + /* + * This test is nonsence on PC-card architecture, so if + * pccard == 1, skip this test. (hosokawa) + */ + if (!pccard && (ioaddr != (base_address_register >> 3 & 0x3E0))) { + + /* + * Well, the base address register didn't match. Must not + * have been a SMC chip after all. + */ + /* + * printf("sn: ioaddr %x doesn't match card configuration + * (%x)\n", ioaddr, base_address_register >> 3 & 0x3E0 ); + */ + +#ifdef SN_DEBUG +printf("test3 failed ioaddr = 0x%x, base_address_register = 0x%x\n", + ioaddr, base_address_register >> 3 & 0x3E0); +#endif + return -ENODEV; + } + /* + * Check if the revision register is something that I recognize. + * These might need to be added to later, as future revisions could + * be added. + */ + outw(ioaddr + BANK_SELECT_REG_W, 0x3); + revision_register = inw(ioaddr + REVISION_REG_W); + if (!chip_ids[(revision_register >> 4) & 0xF]) { + + /* + * I don't regonize this chip, so... + */ + /* + * printf("sn: ioaddr %x unrecognized revision register: + * %x\n", ioaddr, revision_register ); + */ + +#ifdef SN_DEBUG +printf("test4 failed\n"); +#endif + return -ENODEV; + } + /* + * at this point I'll assume that the chip is an SMC9xxx. It might be + * prudent to check a listing of MAC addresses against the hardware + * address, or do some other tests. + */ + return 0; +} + +#define MCFSZ 8 + +static void +sn_setmcast(struct sn_softc *sc) +{ + struct ifnet *ifp = (struct ifnet *)sc; + int flags; + /* + * Set the receiver filter. We want receive enabled and auto strip + * of CRC from received packet. If we are promiscuous then set that + * bit too. + */ + flags = RCR_ENABLE | RCR_STRIP_CRC; + + if (ifp->if_flags & IFF_PROMISC) { + flags |= RCR_PROMISC | RCR_ALMUL; + } else if (ifp->if_flags & IFF_ALLMULTI) { + flags |= RCR_ALMUL; + } else { + u_char mcf[MCFSZ]; + if (sn_getmcf(&sc->arpcom, mcf)) { + /* set filter */ + SMC_SELECT_BANK(3); + outw(BASE + MULTICAST1_REG_W, + ((u_short)mcf[1] << 8) | mcf[0]); + outw(BASE + MULTICAST2_REG_W, + ((u_short)mcf[3] << 8) | mcf[2]); + outw(BASE + MULTICAST3_REG_W, + ((u_short)mcf[5] << 8) | mcf[4]); + outw(BASE + MULTICAST4_REG_W, + ((u_short)mcf[7] << 8) | mcf[6]); + } else { + flags |= RCR_ALMUL; + } + } + SMC_SELECT_BANK(0); + outw(BASE + RECV_CONTROL_REG_W, flags); +} + +static int +sn_getmcf(struct arpcom *ac, u_char *mcf) +{ + int i; + struct ether_multi *enm; + struct ether_multistep step; + u_int a, b; + + bzero(mcf, MCFSZ); + ETHER_FIRST_MULTI(step, ac, enm); + while (enm) { + if (bcmp(enm->enm_addrlo, enm->enm_addrhi, 6) != 0) { + /* impossible to hash */ + bzero(mcf, MCFSZ); + return 0; + } + a = smc_crc(enm->enm_addrlo) & 0x3f; + b = 0; + for (i=0; i < 6; i++) { + b <<= 1; + b |= (a & 0x01); + a >>= 1; + } + mcf[b >> 3] |= 1 << (b & 7); + ETHER_NEXT_MULTI(step, enm); + } + return 1; /* use multicast filter */ +} + +static u_int +smc_crc(u_char *s) +{ + int perByte; + int perBit; + const u_int poly = 0xedb88320; + u_int v = 0xffffffff; + u_char c; + + for (perByte = 0; perByte < ETHER_ADDR_LEN; perByte++) { + c = s[perByte]; + for (perBit = 0; perBit < 8; perBit++) { + v = (v >> 1)^(((v ^ c) & 0x01) ? poly : 0); + c >>= 1; + } + } + return v; +} +#endif diff -urN sys.2.2.8-RELEASE/i386/isa/if_snreg.h sys/i386/isa/if_snreg.h --- sys.2.2.8-RELEASE/i386/isa/if_snreg.h Thu Jan 1 09:00:00 1970 +++ sys/i386/isa/if_snreg.h Tue Dec 22 13:50:58 1998 @@ -0,0 +1,446 @@ +/* + * Copyright (c) 1996 Gardner Buchanan + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Gardner Buchanan. + * 4. The name of Gardner Buchanan may not be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $Id: if_snreg.h,v 1.1.8.1 1998/12/05 22:47:24 itojun Exp $ + */ + +/* + * This file contains register information and access macros for + * the SMC91xxx chipset. + * + * Information contained in this file was obtained from the SMC91C92 + * and SMC91C94 manuals from SMC. You will need one of these in order + * to make any meaningful changes to this driver. Information about + * obtaining one can be found at http://www.smc.com in the components + * division. + * + * This FreeBSD driver is derived in part from the smc9194 Linux driver + * by Erik Stahlman and is Copyright (C) 1996 by Erik Stahlman. + * It is also derived in part from the FreeBSD ep (3C509) driver which + * is Copyright (c) 1993 Herb Peyerl (hpeyerl@novatel.ca) All rights + * reserved. + * + */ +#ifndef _IF_SNREG_H_ +#define _IF_SNREG_H_ + + +/* + * Ethernet software status per interface. The first element MUST + * be the arpcom struct since the address of the arpcom struct is + * used as a backdoor to obtain the address of this whole structure + * in many cases. + */ +struct sn_softc { + struct arpcom arpcom; /* Ethernet common part */ + short sn_io_addr; /* i/o bus address (BASE) */ + int pages_wanted; /* Size of outstanding MMU ALLOC */ + int intr_mask; /* Most recently set interrupt mask */ +#if NCARD > 0 + int gone; +#endif /* NCARD > 0 */ +}; + + +/* + * Wait time for memory to be free. This probably shouldn't be + * tuned that much, as waiting for this means nothing else happens + * in the system + */ +#define MEMORY_WAIT_TIME 1000 + + +/* The SMC91xxx uses 16 I/O ports + */ +#define SMC_IO_EXTENT 16 + + +/* + * A description of the SMC registers is probably in order here, + * although for details, the SMC datasheet is invaluable. + * The data sheet I (GB) am using is "SMC91C92 Single Chip Ethernet + * Controller With RAM", Rev. 12/0/94. Constant definitions I give + * here are loosely based on the mnemonic names given to them in the + * data sheet, but there are many exceptions. + * + * Basically, the chip has 4 banks of registers (0 to 3), which + * are accessed by writing a number into the BANK_SELECT register + * (I also use a SMC_SELECT_BANK macro for this). Registers are + * either Byte or Word sized. My constant definitions end in _B + * or _W as appropriate. + * + * The banks are arranged so that for most purposes, bank 2 is all + * that is needed for normal run time tasks. + */ + +/* + * Bank Select Register. This also doubles as + * a chip identification register. This register + * is mapped at the same position in all banks. + */ +#define BANK_SELECT_REG_W 0x0e +#define BSR_DETECT_MASK 0xff00 +#define BSR_DETECT_VALUE 0x3300 + + +/* BANK 0 + */ + +/* Transmit Control Register controls some aspects of the transmit + * behavior of the Ethernet Protocol Handler. + */ +#define TXMIT_CONTROL_REG_W 0x00 + +#define TCR_ENABLE 0x0001 /* if this is 1, we can transmit */ +#define TCR_LOOP 0x0002 /* Enable internal analogue loopback */ +#define TCR_FORCOL 0x0004 /* Force Collision on next TX */ +#define TCR_PAD_ENABLE 0x0080 /* Pad short packets to 64 bytes */ +#define TCR_NOCRC 0x0100 /* Do not append CRC */ +#define TCR_MON_CSN 0x0400 /* monitors the carrier status */ +#define TCR_FDUPLX 0x0800 /* receive packets sent out */ +#define TCR_STP_SQET 0x1000 /* stop transmitting if Signal quality error */ +#define TCR_EPH_LOOP 0x2000 /* Enable internal digital loopback */ + + +/* Status of the last transmitted frame and instantaneous status of + * the Ethernet Protocol Handler jumbled together. In auto-release + * mode this information is simply discarded after each TX. This info + * is copied to the status word of in-memory packets after transmit + * where relevent statuses can be checked. + */ +#define EPH_STATUS_REG_W 0x02 + +#define EPHSR_TX_SUC 0x0001 /* Transmit was successful */ +#define EPHSR_SNGLCOL 0x0002 /* Single collision occurred */ +#define EPHSR_MULCOL 0x0004 /* Multiple Collisions occurred */ +#define EPHSR_LTX_MULT 0x0008 /* Transmit was a multicast */ +#define EPHSR_16COL 0x0010 /* 16 Collisions occurred, TX disabled */ +#define EPHSR_SQET 0x0020 /* SQE Test failed, TX disabled */ +#define EPHSR_LTX_BRD 0x0040 /* Transmit was a broadcast */ +#define EPHSR_DEFR 0x0080 /* TX deferred due to carrier det. */ +#define EPHSR_LATCOL 0x0200 /* Late collision detected, TX disabled */ +#define EPHSR_LOST_CAR 0x0400 /* Lost carrier sense, TX disabled */ +#define EPHSR_EXC_DEF 0x0800 /* Excessive deferrals in TX >2 MAXETHER + * times */ +#define EPHSR_CTR_ROL 0x1000 /* Some ECR Counter(s) rolled over */ +#define EPHSR_RX_OVRN 0x2000 /* Receiver overrun, packets dropped */ +#define EPHSR_LINK_OK 0x4000 /* Link integrity is OK */ +#define EPHSR_TXUNRN 0x8000 /* Transmit underrun */ + + +/* Receiver Control Register controls some aspects of the receive + * behavior of the Ethernet Protocol Handler. + */ +#define RECV_CONTROL_REG_W 0x04 + +#define RCR_RX_ABORT 0x0001 /* Received huge packet */ +#define RCR_PROMISC 0x0002 /* enable promiscuous mode */ +#define RCR_ALMUL 0x0004 /* receive all multicast packets */ +#define RCR_ENABLE 0x0100 /* IFF this is set, we can recieve packets */ +#define RCR_STRIP_CRC 0x0200 /* strips CRC */ +#define RCR_GAIN_BITS 0x0c00 /* PLL Gain control (for testing) */ +#define RCR_FILT_CAR 0x4000 /* Enable 12 bit carrier filter */ +#define RCR_SOFTRESET 0x8000 /* Resets the EPH logic */ + + +/* TX Statistics counters + */ +#define COUNTER_REG_W 0x06 + +#define ECR_COLN_MASK 0x000f /* Vanilla collisions */ +#define ECR_MCOLN_MASK 0x00f0 /* Multiple collisions */ +#define ECR_DTX_MASK 0x0f00 /* Deferred transmits */ +#define ECR_EXDTX_MASK 0xf000 /* Excessively deferred transmits */ + +/* Memory Information + */ +#define MEM_INFO_REG_W 0x08 + +#define MIR_FREE_MASK 0xff00 /* Free memory pages available */ +#define MIR_TOTAL_MASK 0x00ff /* Total memory pages available */ + +/* Memory Configuration + */ +#define MEM_CFG_REG_W 0x0a + +#define MCR_TXRSV_MASK 0x001f /* Count of pages reserved for transmit */ + + +/* Bank 0, Register 0x0c is unised in the SMC91C92 + */ + + +/* BANK 1 + */ + +/* Adapter configuration + */ +#define CONFIG_REG_W 0x00 + +#define CR_INT_SEL0 0x0002 /* Interrupt selector */ +#define CR_INT_SEL1 0x0004 /* Interrupt selector */ +#define CR_DIS_LINK 0x0040 /* Disable 10BaseT Link Test */ +#define CR_16BIT 0x0080 /* Bus width */ +#define CR_AUI_SELECT 0x0100 /* Use external (AUI) Transceiver */ +#define CR_SET_SQLCH 0x0200 /* Squelch level */ +#define CR_FULL_STEP 0x0400 /* AUI signalling mode */ +#define CR_NOW_WAIT_ST 0x1000 /* Disable bus wait states */ + +/* The contents of this port are used by the adapter + * to decode its I/O address. We use it as a varification + * that the adapter is detected properly when probing. + */ +#define BASE_ADDR_REG_W 0x02 /* The select IO Base addr. */ + +/* These registers hold the Ethernet MAC address. + */ +#define IAR_ADDR0_REG_W 0x04 /* My Ethernet address */ +#define IAR_ADDR1_REG_W 0x06 /* My Ethernet address */ +#define IAR_ADDR2_REG_W 0x08 /* My Ethernet address */ + +/* General purpose register used for talking to the EEPROM. + */ +#define GENERAL_REG_W 0x0a + +/* Control register used for talking to the EEPROM and + * setting some EPH functions. + */ +#define CONTROL_REG_W 0x0c +#define CTR_STORE 0x0001 /* Store something to EEPROM */ +#define CTR_RELOAD 0x0002 /* Read EEPROM into registers */ +#define CTR_EEPROM_SEL 0x0004 /* Select registers for Reload/Store */ +#define CTR_TE_ENABLE 0x0020 /* Enable TX Error detection via EPH_INT */ +#define CTR_CR_ENABLE 0x0040 /* Enable Counter Rollover via EPH_INT */ +#define CTR_LE_ENABLE 0x0080 /* Enable Link Error detection via EPH_INT */ +#define CTR_AUTO_RELEASE 0x0800 /* Enable auto release mode for TX */ +#define CTR_POWERDOWN 0x2000 /* Enter powerdown mode */ +#define CTR_RCV_BAD 0x4000 /* Enable receipt of frames with bad CRC */ + + +/* BANK 2 + */ + +/* Memory Management Unit Control Register + * Controls allocation of memory to receive and + * transmit functions. + */ +#define MMU_CMD_REG_W 0x00 +#define MMUCR_BUSY 0x0001 /* MMU busy performing a release */ + +/* MMU Commands: + */ +#define MMUCR_NOP 0x0000 /* Do nothing */ +#define MMUCR_ALLOC 0x0020 /* Or with number of 256 byte packets - 1 */ +#define MMUCR_RESET 0x0040 /* Reset MMU State */ +#define MMUCR_REMOVE 0x0060 /* Dequeue (but not free) current RX packet */ +#define MMUCR_RELEASE 0x0080 /* Dequeue and free the current RX packet */ +#define MMUCR_FREEPKT 0x00a0 /* Release packet in PNR register */ +#define MMUCR_ENQUEUE 0x00c0 /* Enqueue the packet for transmit */ +#define MMUCR_RESETTX 0x00e0 /* Reset transmit queues */ + +/* Packet Number at TX Area + */ +#define PACKET_NUM_REG_B 0x02 + +/* Packet number resulting from MMUCR_ALLOC + */ +#define ALLOC_RESULT_REG_B 0x03 +#define ARR_FAILED 0x80 + +/* Transmit and receive queue heads + */ +#define FIFO_PORTS_REG_W 0x04 +#define FIFO_REMPTY 0x8000 +#define FIFO_TEMPTY 0x0080 +#define FIFO_RX_MASK 0x7f00 +#define FIFO_TX_MASK 0x007f + +/* The address within the packet for reading/writing. The + * PTR_RCV bit is tricky. When PTR_RCV==1, the packet number + * to be read is found in the FIFO_PORTS_REG_W, FIFO_RX_MASK. + * When PTR_RCV==0, the packet number to be written is found + * in the PACKET_NUM_REG_B. + */ +#define POINTER_REG_W 0x06 +#define PTR_READ 0x2000 /* Intended access mode */ +#define PTR_AUTOINC 0x4000 /* Do auto inc after read/write */ +#define PTR_RCV 0x8000 /* FIFO_RX is packet, otherwise PNR is packet */ + +/* Data I/O register to be used in conjunction with + * The pointer register to read and write data from the + * card. The same register can be used for byte and word + * ops. + */ +#define DATA_REG_W 0x08 +#define DATA_REG_B 0x08 +#define DATA_1_REG_B 0x08 +#define DATA_2_REG_B 0x0a + +/* Sense interrupt status (READ) + */ +#define INTR_STAT_REG_B 0x0c + +/* Acknowledge interrupt sources (WRITE) + */ +#define INTR_ACK_REG_B 0x0c + +/* Interrupt mask. Bit set indicates interrupt allowed. + */ +#define INTR_MASK_REG_B 0x0d + +/* Interrupts + */ +#define IM_RCV_INT 0x01 /* A packet has been received */ +#define IM_TX_INT 0x02 /* Packet TX complete */ +#define IM_TX_EMPTY_INT 0x04 /* No packets left to TX */ +#define IM_ALLOC_INT 0x08 /* Memory allocation completed */ +#define IM_RX_OVRN_INT 0x10 /* Receiver was overrun */ +#define IM_EPH_INT 0x20 /* Misc. EPH conditions (see CONTROL_REG_W) */ +#define IM_ERCV_INT 0x40 /* not on SMC9192 */ + +/* BANK 3 + */ + +/* Multicast subscriptions. + * The multicast handling in the SMC90Cxx is quite complicated. A table + * of multicast address subscriptions is provided and a clever way of + * speeding the search of that table by hashing is implemented in the + * hardware. I have ignored this and simply subscribed to all multicasts + * and let the kernel deal with the results. + */ +#define MULTICAST1_REG_W 0x00 +#define MULTICAST2_REG_W 0x02 +#define MULTICAST3_REG_W 0x04 +#define MULTICAST4_REG_W 0x06 + +/* These registers do not exist on SMC9192, or at least + * are not documented in the SMC91C92 data sheet. + * The REVISION_REG_W register does however seem to work. + */ +#define MGMT_REG_W 0x08 +#define REVISION_REG_W 0x0a /* (hi: chip id low: rev #) */ +#define ERCV_REG_W 0x0c + +/* These are constants expected to be found in the + * chip id register. + */ +#define CHIP_9190 3 +#define CHIP_9194 4 +#define CHIP_9195 5 +#define CHIP_91100 7 + +static const char *chip_ids[15] = { + NULL, NULL, NULL, + /* 3 */ "SMC91C90/91C92", + /* 4 */ "SMC91C94", + /* 5 */ "SMC91C95", + NULL, + /* 7 */ "SMC91C100", + NULL, NULL, NULL, NULL, + NULL, NULL, NULL +}; + + +/* When packets are stuffed into the card or sucked out of the card + * they are set up more or less as follows: + * + * Addr msbyte lsbyte + * 00 SSSSSSSS SSSSSSSS - STATUS-WORD 16 bit TX or RX status + * 02 RRRRR - RESERVED (unused) + * 02 CCC CCCCCCCC - BYTE COUNT (RX: always even, TX: bit 0 ignored) + * 04 DDDDDDDD DDDDDDDD - DESTINATION ADDRESS + * 06 DDDDDDDD DDDDDDDD (48 bit Ethernet MAC Address) + * 08 DDDDDDDD DDDDDDDD + * 0A SSSSSSSS SSSSSSSS - SOURCE ADDRESS + * 0C SSSSSSSS SSSSSSSS (48 bit Ethernet MAC Address) + * 0E SSSSSSSS SSSSSSSS + * 10 PPPPPPPP PPPPPPPP + * .. PPPPPPPP PPPPPPPP + * C-2 CCCCCCCC - CONTROL BYTE + * C-2 PPPPPPPP - Last data byte (If odd length) + * + * The STATUS_WORD is derived from the EPH_STATUS_REG_W register + * during transmit and is composed of another set of bits described + * below during receive. + */ + + +/* Receive status bits. These values are found in the status word + * field of a received packet. For receive packets I use the RS_ODDFRAME + * to detect whether a frame has an extra byte on it. The CTLB_ODD + * bit of the control byte tells the same thing. + */ +#define RS_MULTICAST 0x0001 /* Packet is multicast */ +#define RS_HASH_MASK 0x007e /* Mask of multicast hash value */ +#define RS_TOOSHORT 0x0400 /* Frame was a runt, <64 bytes */ +#define RS_TOOLONG 0x0800 /* Frame was giant, >1518 */ +#define RS_ODDFRAME 0x1000 /* Frame is odd lengthed */ +#define RS_BADCRC 0x2000 /* Frame had CRC error */ +#define RS_ALGNERR 0x8000 /* Frame had alignment error */ +#define RS_ERRORS (RS_ALGNERR | RS_BADCRC | RS_TOOLONG | RS_TOOSHORT) + +#define RLEN_MASK 0x07ff /* Significant length bits in RX length */ + +/* The control byte has the following significant bits. + * For transmit, the CTLB_ODD bit specifies whether an extra byte + * is present in the frame. Bit 0 of the byte count field is + * ignored. I just pad every frame to even length and forget about + * it. + */ +#define CTLB_CRC 0x10 /* Add CRC for this packet (TX only) */ +#define CTLB_ODD 0x20 /* The packet length is ODD */ + + +/* + * I define some macros to make it easier to do somewhat common + * or slightly complicated, repeated tasks. + */ + +/* The base I/O address. + */ +#define BASE (sc->sn_io_addr) + +/* Select a register bank, 0 to 3 + */ +#define SMC_SELECT_BANK(x) { outw( BASE + BANK_SELECT_REG_W, (x) ); } + +/* Define a small delay for the reset + */ +#define SMC_DELAY() { inw( BASE + RECV_CONTROL_REG_W );\ + inw( BASE + RECV_CONTROL_REG_W );\ + inw( BASE + RECV_CONTROL_REG_W ); } + +/* Define flags + */ + +#define SN_FLAGS_PCCARD 0x0001 /* PCMCIA (PC-card) */ +#define SN_FLAGS_XJBT10 0x0002 /* Megahertz XJ-BT10 (PCMCIA) */ + +#endif /* _IF_SNREG_H_ */ diff -urN sys.2.2.8-RELEASE/i386/isa/if_ze.c sys/i386/isa/if_ze.c --- sys.2.2.8-RELEASE/i386/isa/if_ze.c Tue Jul 7 14:23:11 1998 +++ sys/i386/isa/if_ze.c Tue Dec 22 13:51:08 1998 @@ -39,7 +39,7 @@ /* * I doubled delay loops in this file because it is not enough for some * laptop machines' PCIC (especially, on my Chaplet ILFA 350 ^^;). - * HOSOKAWA, Tatsumi + * HOSOKAWA, Tatsumi */ /* * Very small patch for IBM Ethernet PCMCIA Card II and IBM ThinkPad230Cs. diff -urN sys.2.2.8-RELEASE/i386/isa/if_zp.c sys/i386/isa/if_zp.c --- sys.2.2.8-RELEASE/i386/isa/if_zp.c Thu Oct 30 09:38:21 1997 +++ sys/i386/isa/if_zp.c Tue Dec 22 13:51:10 1998 @@ -7,8 +7,8 @@ * (4) RT-Mach implementation on PCMCIA/ISA/EISA Etherlink III * by Seiji Murata * - * Copyright (c) by HOSOKAWA, Tatsumi - * Copyright (c) by Seiji Murata + * Copyright (c) by HOSOKAWA, Tatsumi + * Copyright (c) by Seiji Murata */ /* * Copyright (c) 1993 Herb Peyerl @@ -93,7 +93,7 @@ /* * I doubled delay loops in this file because it is not enough for some * laptop machines' PCIC (especially, on my Chaplet ILFA 350 ^^;). - * HOSOKAWA, Tatsumi + * HOSOKAWA, Tatsumi */ /* * Very small patch for IBM Ethernet PCMCIA Card II and IBM ThinkPad230Cs. diff -urN sys.2.2.8-RELEASE/i386/isa/isa.c sys/i386/isa/isa.c --- sys.2.2.8-RELEASE/i386/isa/isa.c Tue Jun 16 21:51:13 1998 +++ sys/i386/isa/isa.c Tue Dec 22 13:51:11 1998 @@ -54,8 +54,11 @@ #include #include #include +#include +#include #include #include +#include #include #include #include @@ -86,6 +89,9 @@ u_int intr_mask[ICU_LEN]; u_int* intr_mptr[ICU_LEN]; int intr_unit[ICU_LEN]; +static u_int intr_inuse; + +SYSCTL_INT(_machdep, CPU_INTRINUSE, intr_inuse, CTLFLAG_RD, &intr_inuse, 0, ""); static inthand_t *fastintr[ICU_LEN] = { &IDTVEC(fastintr0), &IDTVEC(fastintr1), @@ -495,6 +501,11 @@ /* icu vectors */ for (i = 0; i < ICU_LEN; i++) unregister_intr(i, (inthand2_t *)NULL); + intr_inuse = 0; + /* XXX hardcoded kludge! - should be automated */ + intr_inuse |= (1 << 2); /* master/slave connection IRQ*/ + intr_inuse |= (1 << 8); /* RTC */ + intr_inuse |= (1 << 13); /* FPU */ /* initialize 8259's */ outb(IO_ICU1, 0x11); /* reset; program device, four bytes */ @@ -1110,6 +1121,7 @@ intr_mptr[intr] = maskptr; intr_mask[intr] = mask | (1 << intr); intr_unit[intr] = unit; + intr_inuse |= (1 << intr); setidt(ICU_OFFSET + intr, flags & RI_FAST ? fastintr[intr] : slowintr[intr], SDT_SYS386IGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL)); @@ -1159,8 +1171,119 @@ intr_mptr[intr] = NULL; intr_mask[intr] = HWI_MASK | SWI_MASK; intr_unit[intr] = intr; + intr_inuse &= ~(1 << intr); setidt(ICU_OFFSET + intr, slowintr[intr], SDT_SYS386IGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL)); write_eflags(ef); return (0); } + +static int +sysctl_machdep_checkio SYSCTL_HANDLER_ARGS +{ + int *name = (int *)arg1; + u_int namelen = arg2; + int iobase, iorange; + struct isa_device *tmpdvp; + int status; + + if (namelen != 2) + return EINVAL; + iobase = name[0]; + iorange = name[1]; + +#define NOCONFLICT \ + (tmpdvp->id_alive == 0 || tmpdvp->id_alive == -1 \ + || iobase + iorange - 1 < tmpdvp->id_iobase \ + || tmpdvp->id_iobase + tmpdvp->id_alive - 1 < iobase) + + status = 0; + for (tmpdvp = isa_devtab_tty; tmpdvp->id_driver; tmpdvp++) { + if (!NOCONFLICT) { + status = -1; + goto answer; + } + } + for (tmpdvp = isa_devtab_bio; tmpdvp->id_driver; tmpdvp++) { + if (!NOCONFLICT) { + status = -1; + goto answer; + } + } + for (tmpdvp = isa_devtab_net; tmpdvp->id_driver; tmpdvp++) { + if (!NOCONFLICT) { + status = -1; + goto answer; + } + } + for (tmpdvp = isa_devtab_null; tmpdvp->id_driver; tmpdvp++) { + if (!NOCONFLICT) { + status = -1; + goto answer; + } + } +#undef NOCONFLICT + +answer: + SYSCTL_OUT(req, &status, sizeof(status)); + return 0; +} + +SYSCTL_NODE(_machdep, CPU_CHECKIO, checkio, CTLFLAG_RD, + sysctl_machdep_checkio, ""); + + +static int +sysctl_machdep_checkmem SYSCTL_HANDLER_ARGS +{ + int *name = (int *)arg1; + u_int namelen = arg2; + caddr_t membase; + int memrange; + struct isa_device *tmpdvp; + int status; + + if (namelen != 2) + return EINVAL; + membase = (caddr_t)name[0]; + memrange = name[1]; + +#define NOCONFLICT \ + (tmpdvp->id_msize == 0 || tmpdvp->id_msize == -1 \ + || KERNBASE + membase + memrange - 1 < tmpdvp->id_maddr \ + || tmpdvp->id_maddr + tmpdvp->id_msize - 1 < KERNBASE + membase) + + status = 0; + for (tmpdvp = isa_devtab_tty; tmpdvp->id_driver; tmpdvp++) { + if (!NOCONFLICT) { + status = -1; + goto answer; + } + } + for (tmpdvp = isa_devtab_bio; tmpdvp->id_driver; tmpdvp++) { + if (!NOCONFLICT) { + status = -1; + goto answer; + } + } + for (tmpdvp = isa_devtab_net; tmpdvp->id_driver; tmpdvp++) { + if (!NOCONFLICT) { + status = -1; + goto answer; + } + } + for (tmpdvp = isa_devtab_null; tmpdvp->id_driver; tmpdvp++) { + if (!NOCONFLICT) { + status = -1; + goto answer; + } + } +#undef NOCONFLICT + +answer: + SYSCTL_OUT(req, &status, sizeof(status)); + return 0; +} + +SYSCTL_NODE(_machdep, CPU_CHECKMEM, checkmem, CTLFLAG_RD, + sysctl_machdep_checkmem, ""); diff -urN sys.2.2.8-RELEASE/i386/isa/isa.h sys/i386/isa/isa.h --- sys.2.2.8-RELEASE/i386/isa/isa.h Fri Jun 14 20:01:18 1996 +++ sys/i386/isa/isa.h Tue Dec 22 13:51:11 1998 @@ -124,6 +124,7 @@ #define IO_LPT1 0x378 /* Parallel Port #1 */ /* 0x380 - 0x3AA Open */ +#define IO_YEFDC 0x3A8 /* Libretto PCMCIA floppy */ #define IO_ASC8 0x3AB /* AmiScan addr.grp. 8 */ #define IO_MDA 0x3B0 /* Monochome Adapter */ diff -urN sys.2.2.8-RELEASE/i386/isa/joy.c sys/i386/isa/joy.c --- sys.2.2.8-RELEASE/i386/isa/joy.c Thu Nov 6 22:00:13 1997 +++ sys/i386/isa/joy.c Tue Dec 22 13:51:15 1998 @@ -46,6 +46,19 @@ #include #include +#ifndef JOY_MODULE +#include "card.h" +#else +#define NCARD 0 +#endif + +#if NCARD > 0 +#include +#include +#include +#include +#endif + /* The game port can manage 4 buttons and 4 variable resistors (usually 2 * joysticks, each with 2 buttons and 2 pots.) via the port at address 0x201. * Getting the state of the buttons is done by reading the game port: @@ -97,6 +110,102 @@ static int get_tick __P((void)); +#if NCARD > 0 +/* + * PC-Card (PCMCIA) specific code. + */ +static int joy_card_intr(struct pccard_devinfo *); /* Interrupt handler */ +static void joy_card_unload(struct pccard_devinfo *); /* Disable driver */ +static void joy_card_suspend(struct pccard_devinfo *); /* Suspend driver */ +static int joy_card_init(struct pccard_devinfo *); /* init device */ + +static struct pccard_device joy_info = { + "joy", + joy_card_init, + joy_card_unload, + joy_card_intr, +/* joy_card_suspend, */ + 0, /* Attributes - presently unused */ + &bio_imask /* Interrupt mask for device */ + /* XXX - Should this also include net_imask? */ +}; + +DATA_SET(pccarddrv_set, joy_info); + +static int pccard_mode[NJOY]; +/* + * Called when a power down is requested. Shuts down the + * device and configures the device as unavailable (but + * still loaded...). A resume is done by calling + * joyinit with first=0. This is called when the user suspends + * the system, or the APM code suspends the system. + */ +static void +joy_card_suspend(struct pccard_devinfo *devi) +{ + printf("joy%d: suspending\n", devi->pd_unit); +} + +/* + * Initialize the device - called from Slot manager. + * If first is set, then check for the device's existence + * before initializing it. Once initialized, the device table may + * be set up. + */ +int +joy_card_init(struct pccard_devinfo *devi) +{ + int unit = devi->pd_unit; + + /* validate unit number. */ + if (unit >= NJOY) + return(ENODEV); + pccard_mode[unit] = 1; + /* + * Probe the device. If a value is returned, the + * device was found at the location. + */ + if (joyprobe(&devi->isahd)==0) + return(ENXIO); + if (joyattach(&devi->isahd)==0) + return(ENXIO); + /* + * XXX TODO: + * If it was initialized before, the device structure + * should also be initialized. We should + * reset (and possibly restart) the hardware, but + * I am not sure of the best way to do this... + */ + return(0); +} + +/* + * joy_card_unload - unload the driver and clear the table. + * XXX TODO: + * This is usually called when the card is ejected, but + * can be caused by a modunload of a controller driver. + * The idea is to reset the driver's view of the device + * and ensure that any driver entry points such as + * read and write do not hang. + */ +static void +joy_card_unload(struct pccard_devinfo *devi) +{ + int unit = devi->pd_unit; + + pccard_mode[unit] = 0; +} + +/* + * card_intr - Shared interrupt called from + * front end of PC-Card handler. + */ +static int +joy_card_intr(struct pccard_devinfo *devi) +{ + return(1); +} +#endif /* NCARD > 0 */ static int joyprobe (struct isa_device *dev) diff -urN sys.2.2.8-RELEASE/i386/isa/kbdtables.h sys/i386/isa/kbdtables.h --- sys.2.2.8-RELEASE/i386/isa/kbdtables.h Wed Nov 18 17:36:02 1998 +++ sys/i386/isa/kbdtables.h Tue Dec 22 13:51:19 1998 @@ -30,6 +30,128 @@ #define SET8 0x80 /* set eight bit on */ +#ifdef NECMG +/* + * NEC Mobile Gear keymap by takemura@ca2.so-net.ne.jp + */ +#define NO_ACCENTCHARS +static keymap_t key_map = { 0x6c, /* NEC Mobile Gear keymap */ +/* alt + * scan cntrl alt alt cntrl + * code base shift cntrl shift alt shift cntrl shift spcl flgs + * --------------------------------------------------------------------------- + */ +/* sc=00 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, +/* sc=01 */ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, DBG, 0x1B, 0x02, 0x00, +/* sc=02 */ '1', '!', '!', '!', '1', '!', '!', '!', 0x00, 0x00, +/* sc=03 */ '2', '\"', 0x1A, 0x1A, '2', '@', 0x00, 0x00, 0x00, 0x00, +/* sc=04 */ '3', '#', 0x1B, 0x1B, '3', '#', 0x1B, 0x1B, 0x00, 0x00, +/* sc=05 */ '4', '$', 0x1C, 0x1C, '4', '$', 0x1C, 0x1C, 0x00, 0x00, +/* sc=06 */ '5', '%', 0x1D, 0x1D, '5', '%', 0x1D, 0x1D, 0x00, 0x00, +/* sc=07 */ '6', '&', 0x1E, 0x1E, '6', '^', 0x1E, 0x1E, 0x00, 0x00, +/* sc=08 */ '7', '\'', 0x1F, 0x1F, '7', '&', '&', '&', 0x00, 0x00, +/* sc=09 */ '8', '(', 0x7F, 0x7F, '8', '*', 0x08, 0x08, 0x00, 0x00, +/* sc=0a */ '9', ')', '9', '9', '9', '(', '(', '(', 0x00, 0x00, +/* sc=0b */ '0', NOP, '0', '0', '0', ')', ')', ')', 0x40, 0x00, +/* sc=0c */ '-', '=', '-', '-', '-', '_', 0x1F, 0x1F, 0x00, 0x00, +/* sc=0d */ '^', '`', 0x1E, 0x1E, '=', '+', '+', '+', 0x00, 0x00, +/* sc=0e */ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, +/* sc=0f */ '\t', '\t', '\t', '\t', '\t', '\t', '\t', '\t', 0x00, 0x00, +/* sc=10 */ 'q', 'Q', 0x11, 0x11, 'q', 'Q', 0x11, 0x11, 0x00, 0x01, +/* sc=11 */ 'w', 'W', 0x17, 0x17, 'w', 'W', 0x17, 0x17, 0x00, 0x01, +/* sc=12 */ 'e', 'E', 0x05, 0x05, 'e', 'E', 0x05, 0x05, 0x00, 0x01, +/* sc=13 */ 'r', 'R', 0x12, 0x12, 'r', 'R', 0x12, 0x12, 0x00, 0x01, +/* sc=14 */ 't', 'T', 0x14, 0x14, 't', 'T', 0x14, 0x14, 0x00, 0x01, +/* sc=15 */ 'y', 'Y', 0x19, 0x19, 'y', 'Y', 0x19, 0x19, 0x00, 0x01, +/* sc=16 */ 'u', 'U', 0x15, 0x15, 'u', 'U', 0x15, 0x15, 0x00, 0x01, +/* sc=17 */ 'i', 'I', 0x09, 0x09, 'i', 'I', 0x09, 0x09, 0x00, 0x01, +/* sc=18 */ 'o', 'O', 0x0F, 0x0F, 'o', 'O', 0x0F, 0x0F, 0x00, 0x01, +/* sc=19 */ 'p', 'P', 0x10, 0x10, 'p', 'P', 0x10, 0x10, 0x00, 0x01, +/* sc=1a */ '@', '~', 0x00, 0x00, '[', '{', 0x1B, 0x1B, 0x00, 0x00, +/* sc=1b */ '[', '{', 0x1B, 0x1B, ']', '}', 0x1D, 0x1D, 0x00, 0x00, +/* sc=1c */ '\r', '\r', '\n', '\n', '\r', '\r', '\n', '\n', 0x00, 0x00, +/* sc=1d */ LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, 0xFF, 0x00, +/* sc=1e */ 'a', 'A', 0x01, 0x01, 'a', 'A', 0x01, 0x01, 0x00, 0x01, +/* sc=1f */ 's', 'S', 0x13, 0x13, 's', 'S', 0x13, 0x13, 0x00, 0x01, +/* sc=20 */ 'd', 'D', 0x04, 0x04, 'd', 'D', 0x04, 0x04, 0x00, 0x01, +/* sc=21 */ 'f', 'F', 0x06, 0x06, 'f', 'F', 0x06, 0x06, 0x00, 0x01, +/* sc=22 */ 'g', 'G', 0x07, 0x07, 'g', 'G', 0x07, 0x07, 0x00, 0x01, +/* sc=23 */ 'h', 'H', 0x08, 0x08, 'h', 'H', 0x08, 0x08, 0x00, 0x01, +/* sc=24 */ 'j', 'J', '\n', '\n', 'j', 'J', '\n', '\n', 0x00, 0x01, +/* sc=25 */ 'k', 'K', 0x0B, 0x0B, 'k', 'K', 0x0B, 0x0B, 0x00, 0x01, +/* sc=26 */ 'l', 'L', 0x0C, 0x0C, 'l', 'L', 0x0C, 0x0C, 0x00, 0x01, +/* sc=27 */ ';', '+', ';', ';', ';', ':', ';', ';', 0x00, 0x00, +/* sc=28 */ ':', '*', ':', ':', '\'', '\"', '\'', '\'', 0x00, 0x00, +/* sc=29 */ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, +/* sc=2a */ LSH, LSH, LSH, LSH, LSH, LSH, LSH, LSH, 0xFF, 0x00, +/* sc=2b */ '\\', '|', 0x1C, 0x1C, '\\', '|', 0x1C, 0x1C, 0x00, 0x00, +/* sc=2c */ 'z', 'Z', 0x1A, 0x1A, 'z', 'Z', 0x1A, 0x1A, 0x00, 0x01, +/* sc=2d */ 'x', 'X', 0x18, 0x18, 'x', 'X', 0x18, 0x18, 0x00, 0x01, +/* sc=2e */ 'c', 'C', 0x03, 0x03, 'c', 'C', 0x03, 0x03, 0x00, 0x01, +/* sc=2f */ 'v', 'V', 0x16, 0x16, 'v', 'V', 0x16, 0x16, 0x00, 0x01, +/* sc=30 */ 'b', 'B', 0x02, 0x02, 'b', 'B', 0x02, 0x02, 0x00, 0x01, +/* sc=31 */ 'n', 'N', 0x0E, 0x0E, 'n', 'N', 0x0E, 0x0E, 0x00, 0x01, +/* sc=32 */ 'm', 'M', 0x0D, 0x0D, 'm', 'M', 0x0D, 0x0D, 0x00, 0x01, +/* sc=33 */ ',', '<', NOP, NOP, ',', '<', NOP, NOP, 0x33, 0x00, +/* sc=34 */ '.', '>', NOP, NOP, '.', '>', NOP, NOP, 0x33, 0x00, +/* sc=35 */ '/', '?', NOP, NOP, '/', '?', NOP, NOP, 0x33, 0x00, +/* sc=36 */ RSH, RSH, RSH, RSH, RSH, RSH, RSH, RSH, 0xFF, 0x00, +/* sc=37 */ F(52), '-', '-', '-', '-', '-', '-', '-', 0x80, 0x02, +/* sc=38 */ LALT, LALT, LALT, LALT, LALT, LALT, LALT, LALT, 0xFF, 0x00, +/* sc=39 */ ' ', ' ', 0x00, ' ', ' ', ' ', SUSP, ' ', 0x02, 0x00, +/* sc=3a */ CLK, CLK, CLK, CLK, CLK, CLK, CLK, CLK, 0xFF, 0x00, +/* sc=3b */ RALT, RALT, RALT, RALT, RALT, RALT, RALT, RALT, 0xFF, 0x00, +/* sc=3c */ F( 1), F(13), F(25), F(37), S( 1), S(11), S( 1), S(11), 0xFF, 0x00, +/* sc=3d */ F( 2), F(14), F(26), F(38), S( 2), S(12), S( 2), S(12), 0xFF, 0x00, +/* sc=3e */ F( 3), F(15), F(27), F(39), S( 3), S(13), S( 3), S(13), 0xFF, 0x00, +/* sc=3f */ F( 4), F(16), F(28), F(40), S( 4), S(14), S( 4), S(14), 0xFF, 0x00, +/* sc=30 */ F( 5), F(17), F(29), F(41), S( 5), S(15), S( 5), S(15), 0xFF, 0x00, +/* sc=41 */ F( 6), F(18), F(30), F(42), S( 6), S(16), S( 6), S(16), 0xFF, 0x00, +/* sc=42 */ F( 7), F(19), F(31), F(43), S( 7), S( 7), S( 7), S( 7), 0xFF, 0x00, +/* sc=43 */ F( 8), F(20), F(32), F(44), S( 8), S( 8), S( 8), S( 8), 0xFF, 0x00, +/* sc=44 */ F( 9), F(21), F(33), F(45), S( 9), S( 9), S( 9), S( 9), 0xFF, 0x00, +/* sc=45 */ NLK, NLK, NLK, NLK, NLK, NLK, NLK, NLK, 0xFF, 0x00, +/* sc=46 */ F(10), F(22), F(34), F(46), S(10), S(10), S(10), S(10), 0xFF, 0x00, +/* sc=47 */ F(49), '7', '7', '7', '7', '7', '7', '7', 0x80, 0x02, +/* sc=48 */ F(50), '8', '8', '8', '8', '8', '8', '8', 0x80, 0x02, +/* sc=49 */ F(51), '9', '9', '9', '9', '9', '9', '9', 0x80, 0x02, +/* sc=4a */ F(52), '*', '*', '*', '*', '*', '*', '*', 0x80, 0x02, +/* sc=4b */ F(53), '4', '4', '4', '4', '4', '4', '4', 0x80, 0x02, +/* sc=4c */ F(54), '5', '5', '5', '5', '5', '5', '5', 0x80, 0x02, +/* sc=4d */ F(55), '6', '6', '6', '6', '6', '6', '6', 0x80, 0x02, +/* sc=4e */ F(56), '+', '+', '+', '+', '+', '+', '+', 0x80, 0x02, +/* sc=4f */ F(57), '1', '1', '1', '1', '1', '1', '1', 0x80, 0x02, +/* sc=50 */ F(58), '2', '2', '2', '2', '2', '2', '2', 0x80, 0x02, +/* sc=51 */ F(59), '3', '3', '3', '3', '3', '3', '3', 0x80, 0x02, +/* sc=52 */ F(60), '0', '0', '0', '0', '0', '0', '0', 0x80, 0x02, +/* sc=53 */ 0x7F, '.', '.', '.', '.', '.', RBT, RBT, 0x03, 0x02, +/* sc=54 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, +/* sc=55 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, +/* sc=56 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, +/* sc=57 */ F(59), F(59), F(59), F(59), F(59), F(59), F(59), F(59), 0xFF, 0x00, +/* sc=58 */ F(51), F(51), F(51), F(51), F(51), F(51), F(51), F(51), 0xFF, 0x00, +/* sc=59 */ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, +/* sc=5a */ NOP, '_', 0x1F, 0x1F, '\\', '|', 0x1C, 0x1C, 0x80, 0x00, +/* sc=5b */ '=', '=', '=', '=', '=', '=', '=', '=', 0x00, 0x00, +/* sc=5c */ SLK, NOP, DBG, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, +/* sc=5d */ RALT, RALT, RALT, RALT, RALT, RALT, RALT, RALT, 0xFF, 0x00, +/* sc=5e */ '/', '/', '/', '/', '/', '/', '/', '/', 0x00, 0x00, +/* sc=5f */ F(50), F(50), F(50), F(50), F(50), F(50), F(50), F(50), 0xFF, 0x00, +/* sc=60 */ F(51), F(51), F(51), F(51), F(51), F(51), F(51), F(51), 0xFF, 0x00, +/* sc=61 */ F(53), F(53), F(53), F(53), F(53), F(53), F(53), F(53), 0xFF, 0x00, +/* sc=62 */ F(55), F(55), F(55), F(55), F(55), F(55), F(55), F(55), 0xFF, 0x00, +/* sc=63 */ ',', ',', ',', ',', ',', ',', ',', ',', 0x00, 0x00, +/* sc=64 */ F(58), F(58), F(58), F(58), F(58), F(58), F(58), F(58), 0xFF, 0x00, +/* sc=65 */ ']', '}', 0x1D, 0x1D, '`', '~', '~', '~', 0x00, 0x00, +/* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, +/* sc=67 */ F(61), F(61), F(61), F(61), F(61), F(61), RBT, F(61), 0xFF, 0x00, +/* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6a */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, +/* sc=6b */ F(64), F(64), F(64), F(64), F(64), F(64), F(64), F(64), 0xFF, 0x00, +}; +#endif + #ifdef PC98 #define NO_ACCENTCHARS /* PC-9801 keymap by kuribo@isl.melco.co.jp */ @@ -1130,7 +1252,7 @@ }; #endif -#if !defined(DKKEYMAP) && !defined(UKKEYMAP) && !defined(GRKEYMAP) && !defined(SWKEYMAP) && !defined(RUKEYMAP) && !defined(ISKEYMAP) && !defined(ESKEYMAP) && !defined(PC98) +#if !defined(DKKEYMAP) && !defined(UKKEYMAP) && !defined(GRKEYMAP) && !defined(SWKEYMAP) && !defined(RUKEYMAP) && !defined(ISKEYMAP) && !defined(ESKEYMAP) && !defined(PC98) && !defined(NECMG) #define ISO_ACCENTCHARS static keymap_t key_map = { 0x6C, /* US iso8859 keymap */ /* alt diff -urN sys.2.2.8-RELEASE/i386/isa/nin.c sys/i386/isa/nin.c --- sys.2.2.8-RELEASE/i386/isa/nin.c Thu Jan 1 09:00:00 1970 +++ sys/i386/isa/nin.c Wed Dec 23 10:08:21 1998 @@ -0,0 +1,3868 @@ +/* + * Copyright (c) 1998 WORKBIT + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer as + * the first lines of this file unmodified. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY WORKBIT ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL WORKBIT BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + */ + +/************************************************************************* +* +* Copyright (c) 1995-1998 Workbit Corporation +* +* Module Name: +* +* nin.c +* +* Abstract: +* +* Definitions for the Ninja SCSI-3 CARD +* +****************************************************************************/ + +#include "nin.h" + +/*#define DBG 1 *//* for debug*/ + + +#define USE_INTENTRY +#define USE_IRQ_MASK +#define USE_DISCONECT + + +#include +#ifdef KERNEL /* don't laugh.. look for main() */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include + + +#endif /* KERNEL */ +#include +#include +#include + +#ifdef KERNEL +#include +#else /*KERNEL */ +#define NNIN 1 +#endif /*KERNEL */ + + +#define max(a,b) (((a) > (b)) ? (a) : (b)) +#define min(a,b) (((a) < (b)) ? (a) : (b)) + +/* #include "scsi.h" */ + +#define BASE_PORT 0x180 +#define NUMBR_PORTS 0x10 +#define BASE_WIDTH 0x10 +#define SCSI_PORT 0x0 + +/********************************************************/ +/* Input status bit definitions.*/ +/********************************************************/ +#define S_ATN 0x80 +#define S_SELECT 0x40 + +#define S_REQUEST 0x20 /* Request line from SCSI bus*/ +#define S_ACK 0x10 /* Acknowlege line from SCSI bus*/ +#define S_BUSY 0x08 /* Busy line from SCSI bus*/ +#define S_CD 0x04 /* Command/Data line from SCSI bus*/ +#define S_IO 0x02 /* Input/Output line from SCSI bus*/ +#define S_MESSAGE 0x01 /* Message line from SCSI bus*/ + +/********************************************************/ +/* Useful Bus Monitor status combinations.*/ +/********************************************************/ +#define BM_BUS_FREE 0 +#define BM_COMMAND ( S_BUSY | S_CD | S_REQUEST ) +#define BM_MESSAGE_IN ( S_BUSY | S_MESSAGE | S_IO | S_CD | S_REQUEST ) +#define BM_MESSAGE_OUT ( S_BUSY | S_MESSAGE | S_CD | S_REQUEST ) +#define BM_DATA_IN ( S_BUSY | S_IO | S_REQUEST ) +#define BM_DATA_OUT ( S_BUSY | S_REQUEST ) +#define BM_STATUS ( S_BUSY | S_IO | S_CD | S_REQUEST ) +#define BM_RESELECT ( S_SELECT | S_IO ) + +#define BP_COMMAND ( S_CD ) +#define BP_MESSAGE_IN ( S_MESSAGE | S_IO | S_CD ) +#define BP_MESSAGE_OUT ( S_MESSAGE | S_CD ) +#define BP_DATA_IN ( S_IO ) +#define BP_DATA_OUT ( 0 ) +#define BP_STATUS ( S_IO | S_CD ) + + +/********************************************************/ +/* SCSI bus status codes.*/ +/********************************************************/ +/* Status Byte in scsiall.h*/ +#define SCSI_CONDITION_MET 0x04 +#define SCSI_INTERMEDIATE_COND_MET 0x14 +#define SCSI_RESERVATION_CONFLICT 0x18 +#define SCSI_COMMAND_TERMINATED 0x22 + + +#define MSG_IDENTIFYFLAG_WITH_DISCON 0XC0 + +/********************************************************/ +/* SCSI Extended Message Lengths*/ +/********************************************************/ + +#define SCSIMESS_MODIFY_DATA_LENGTH 5 +#define SCSIMESS_SYNCH_DATA_LENGTH 3 +#define SCSIMESS_WIDE_DATA_LENGTH 2 + +/********************************************************/ +/* SCSI Extended Message operation codes*/ +/********************************************************/ + +#define SCSIMESS_MODIFY_DATA_POINTER 0X00 +#define SCSIMESS_SYNCHRONOUS_DATA_REQ 0X01 +#define SCSIMESS_WIDE_DATA_REQUEST 0X03 + +typedef struct _SCSI_EXMSG { + u_char InitialMessageCode; + u_char MessageLength; + u_char MessageType; + union _EXTENDED_ARGUMENTS { + struct { + u_char modifier[4]; + } MODIFY; + struct { + u_char TransferPeriod; + u_char ReqAckOffset; + } SYNCS; + struct{ + u_char Width; + } WIDE; + }ExArg; +}SCSI_EXMSG, *PSCSI_EXMSG; + + +/********************************************************/ +/* Status mask for bus phase.*/ +/********************************************************/ +#define S_PHASE_MASK ((u_char) 0x3f) + + +/********************************************************/ +/* SCSI source identifier for host system.*/ +/********************************************************/ +#define SCSI_INITIATOR_ID 7 +#define SCSI_IDT_VECTOR 5 + +/********************************************************/ +/* Various timeout values (in microseconds).*/ +/********************************************************/ +#define REQUEST_SPIN_WAIT 40000 /* Wait for target to assert REQUEST*/ +#define RESET_HOLD_TIME 25 /* Time to hold RESET line to reset bus*/ +#define RESET_RECOVER_TIME 2500000 +#define BUS_FREE_DELAY 100000 /* Wait for BUS_FREE condition*/ + +/********************************************************/ +/* Number of adapters this driver will support.*/ +/********************************************************/ +#define MAX_ADAPTERS 1 + +/********************************************************/ +/* Limit transfer length to 64 Kbytes*/ +/* */ +#define MAX_TRANSFER_LENGTH ( 64 * 1024 ) + +#ifdef DBG + long INT_POLL_SEL = 10; + long INT_POLL_IRQ = 10; +#else + #define INT_POLL_SEL 10 + #define INT_POLL_IRQ 10 +#endif + +typedef struct _IRQ_STATUS { /* #0*/ + u_char ScsiIrqStatus : 1; + u_char ExtIrqStatus : 1; + u_char TimerIrqStatus : 1; + u_char FifoIrqStatus : 1; + u_char ScsiIrqMask : 1; + u_char ExtIrqMask : 1; + u_char TimerIrqMask : 1; + u_char FifoIrqMask : 1; +} IRQ_STATUS, *PIRQ_STATUS; + +typedef struct _IRQ_CONTROLP { /* #0*/ + u_char ReselctIrqClear : 1; + u_char PhaseChgIrqClear : 1; + u_char TimerIrqClear : 1; + u_char FifoIrqClear : 1; + u_char ScsiIrqMask : 1; + u_char ExtIrqMask : 1; + u_char TimerIrqMask : 1; + u_char FifoIrqMask : 1; +} IRQ_CONTROLP, *PIRQ_CONTROLP; + +typedef struct _IF_SELECT { /* #1*/ + u_char IFSelect : 1; + u_char Reserved3 : 1; + u_char RegSelect : 1; + u_char Reserved2 : 5; +} IF_SELECT, *PIF_SELECT; + +typedef struct _FIFO_STATUS { /* #1*/ + u_char ChipRev : 4; + u_char ChipId : 3; + u_char FifoFullEmpty : 1; +} FIFO_STATUS, *PFIFO_STATUS; + +typedef struct _EXT_BUS_CONTROL { /* index 10h*/ + u_char Reserved0 : 4; + u_char IOMapConfigration : 1; + u_char ExrdyContrl : 1; + u_char IrqLevel : 1; + u_char Reserved1 : 1; +} EXT_BUS_CONTROL, *PEXT_BUS_CONTROL; + +typedef struct CLOCK_DIV { /* index 11h*/ + u_char ClkDivider : 2; + u_char Reserved6 : 6; +} CLOCK_DIV, *PCLOCK_DIV; + +typedef struct _TermPwrControl { /* index 13*/ + u_char TermPowerOn : 1; + u_char Reserved7 : 7; +} TermPwrControl, *PTermPwrControl; + +typedef struct _SCSI_IRQ_MODE { /* index 15*/ + u_char ScsiPhaseChangeEi : 1; + u_char Reserved8 : 3; + u_char ReselectIrqEi : 1; + u_char FifoIrqEi : 1; + u_char ScsiResetIrqEi : 1; + u_char Reserved75 : 1; +} SCSI_IRQ_MODE, *PSCSI_IRQ_MODE; + +typedef struct _IRQ_PHASE_SENSE { /* index 16*/ + u_char LatchMSG : 1; + u_char LatchI_O : 1; + u_char LatchC_D : 1; + u_char LatchBusFree : 1; + u_char PhaseChgIrq : 1; + u_char ReselectIrq : 1; + u_char FifoIrq : 1; + u_char ScsiResetIrq : 1; +} IRQ_PHASE_SENSE, *PIRQ_PHASE_SENSE; + +typedef struct SCSI_BUS_CONTROL { /* index 18*/ + u_char ScsiSel : 1; + u_char ScsiRst : 1; + u_char ScsiDataOutEnb : 1; + u_char ScsiATN : 1; + u_char ScsiACK : 1; + u_char ScsiBSY : 1; + u_char AutoDirection : 1; + u_char AckEnb : 1; +} SCSI_BUS_CONTROL, *PSCSI_BUS_CONTROL; + +typedef struct _SCSI_BUS_MONITOR { /* index 19*/ + u_char Scsi_MSG : 1; + u_char Scsi_I_O : 1; + u_char Scsi_C_D : 1; + u_char Scsi_BSY : 1; + u_char Scsi_ACK : 1; + u_char Scsi_REQ : 1; + u_char Scsi_SEL : 1; + u_char Scsi_ATN : 1; +} SCSI_BUS_MONITOR, *PSCSI_BUS_MONITOR; + +typedef struct _SET_ARBIT { /* index 1a*/ + u_char ArbitGo : 1; + u_char ArbitFlagClear : 1; + u_char Reserved10 : 6; +} SET_ARBIT,*PSET_ARBIT; + +typedef struct _ARBIT_STATUS { /* index 1a*/ + u_char ArbitGoStatus : 1; + u_char ArbitWin : 1; + u_char ArbitFail : 1; + u_char ReselectFlag : 1; + u_char Reserved11 : 4; +} ARBIT_STATUS, *PARBIT_STATUS; + +typedef struct _PARITY_CONTROL { /* index 1b*/ + u_char ParityCheckEnable : 1; + u_char ParityErrorClear : 1; + u_char Reserved12 : 6; +} PARITY_CONTROL, *PPARITY_CONTROL; + +typedef struct _PARITY_STATUS { /* index 1b*/ + u_char Reserved15 : 1; /* same as PARITY_CONTROL*/ + u_char ParityError : 1; + u_char Reserved14 : 2; + u_char ReadSource : 2; + u_char Reserved13 : 2; +} PARITY_STATUS, *PPARITY_STATUS; + +typedef struct _COMMAND_CONTROL { /* index 1c*/ + u_char ClrCommandPointer : 1; + u_char AutoCommandGo : 1; + u_char Reserved16 : 6; +} COMMAND_CONTROL, *PCOMMAND_CONTROL; + +typedef struct _POINTER_CLEAR { /* index 1e*/ + u_char PointerClear : 1; + u_char AckCounterClear : 1; + u_char ReqCounterClear : 1; + u_char HostCounterClear : 1; + u_char ReadSourceSet : 2; + u_char Reserved17 : 2; +} POINTER_CLEAR, *PPOINTER_CLEAR; + +typedef struct _TRANSFER_MODE { /* index 20*/ + u_char MemMap8 : 1; + u_char MemMap16_32 : 1; + u_char AdrData24 : 1; + u_char AdrData32 : 1; + u_char IO8 : 1; + u_char IO16_32 : 1; + u_char TransferGo : 1; + u_char FifoTest_Braind : 1; +} TRANSFER_MODE, *PTRANSFER_MODE; + +typedef struct _SYNC_REG { /* index 21*/ + u_char SyncOffset : 4; + u_char SyncPeriod : 4; +} SYNC_REG, *PSYNC_REG; + + +typedef struct _SCAM_CONTROL { /* index 24*/ + u_char ScamMSG : 1; + u_char ScamI_O : 1; + u_char ScamC_D : 1; + u_char ScamBSY : 1; + u_char ScamSEL : 1; + u_char ScamXferOn : 1; + u_char Reserved18 : 2; +} SCAM_CONTROL, *PSCAM_CONTROL; + +typedef struct _OTHER_CONTROL { /* index 26*/ + u_char TplRomWriteEnable : 1; + u_char TermPwrOut : 1; + u_char TermPwrSence : 1; + u_char Reserved19 : 5; +} OTHER_CONTROL, *POTHER_CONTROL; + +typedef struct _ACK_WIDTH { /* index 27*/ + u_char AckPulse : 2; + u_char Reserved20 : 6; +} ACK_WIDTH, *PACK_WIDTH; + +typedef struct _CHECK_SUM_CONTROL { /* index 2c*/ + u_char CheckSumClear : 1; + u_char ReadPointerClear : 1; + u_char Reserved21 : 6; +} CHECK_SUM_CONTROL, *PCHECK_SUM_CONTROL; + +#define IN +#define OUT + +#define IRQCONTROL 0 +#define IRQSTATUS 0 +#define IFSELECT 1 +#define FIFOSTATUS 0x1 +#define INDEXREG 0x2 +#define DATAREG 0x3 +#define FIFODATA 0x4 +#define FIFODATA1 0x5 +#define FIFODATA2 0x6 +#define FIFODATA3 0x7 + +#define WFIFODATA 0x4 +#define EXTBUSCTRL 0x10 +#define CLOCKDIV 0x11 + +#define TERMPWRCTRL 0x13 + +#define SCSIIRQMODE 0x15 +#define IRQPHASESENCE 0x16 +#define TIMERCOUNT 0x17 +#define SCSIBUSCTRL 0x18 +#define SCSIBUSMON 0x19 + +#define SETARBIT 0x1A +#define ARBITSTATUS 0x1A + +#define PARITYCTRL 0x1B +#define PARITYSTATUS 0x1B + +#define COMMANDCTRL 0x1C +#define RESELECTID 0x1C + +#define COMMANDDATA 0x1D + +#define POINTERCLR 0x1E +#define TRANSFERCOUNT 0x1E + +/* #define Reserved3*/ +#define TRANSFERMODE 0x20 +#define SYNCREG 0x21 +#define SCSIDATALATCH 0x22 +#define SCSIDATAIN 0x22 +#define SCSIDATAWITHACK 0x23 +#define SCAMCONTROL 0x24 +#define SCAMSTATUS 0x24 +#define SCAMDATA 0x25 +#define OTHERCONTROL 0x26 +#define ACKWIDTH 0x27 +#define CLRTESTPNT 0x28 +#define ACKCNTLD 0x29 +#define REQCNTLD 0x2A +#define HSTCNTLD 0x2B +#define CHECKSUM 0x2C + + + + +#define SCSI_IRQ_CONTROL(BASE,VALUE) \ + outb((BASE+IRQCONTROL), VALUE) + +#define SCSI_IRQ_MONITOR(BASE) \ + inb(BASE+IRQCONTROL) + +#define SCSI_IF_SELECT(BASE, VALUE) \ + outb((BASE+IFSELECT), VALUE) + +#define SCSI_FIFO_STATUS(BASE) \ + inb((BASE+FIFOSTATUS)) + +#define SCSI_READ_FIFO(BASE,BUFFER,COUNT) \ + insb((BASE+FIFODATA), (u_char *)BUFFER, COUNT) + +#define SCSI_WRITE_FIFO(BASE,BUFFER,COUNT) \ + outsb((BASE+FIFODATA), (u_char *)BUFFER, COUNT) + +#define SCSI_READ_FIFOW(BASE,BUFFER,COUNT) \ + insw((BASE+WFIFODATA), (u_int32_t *)BUFFER, (COUNT >> 1)) + +#define SCSI_WRITE_FIFOW(BASE,BUFFER,COUNT) \ + outsw((BASE+WFIFODATA ), (u_int32_t *)BUFFER, (COUNT >> 1)) + +#define SCSI_READ_FIFOD(BASE,BUFFER,COUNT) \ + insl((BASE+WFIFODATA), BUFFER, (COUNT >> 2)) + +#define SCSI_WRITE_FIFOD(BASE,BUFFER,COUNT) \ + outsl((BASE+WFIFODATA ), BUFFER, (COUNT >> 2)) + +#define SCSI_READ(ChipAddr,Register) ( \ + outb(ChipAddr+INDEXREG,Register),\ + inb(ChipAddr+DATAREG)\ +) + +#define SCSI_WRITE(ChipAddr,Register,Value) { \ + outb(ChipAddr+INDEXREG,Register),\ + outb(ChipAddr+DATAREG,Value);\ +} + + +#define READ_XFER_CNT 512 +#define WRITE_BURST_CNT 512 /*64*/ +#define WRITE_SPOT_CNT 512 + +#define ASYNCHRONOUS_OFFSET 0 +#define ASYNCHRONOUS_PERIOD 0 +#define SYNCHRONOUS_OFFSET 15 + +#ifdef ULTRA + #define SYNCHRONOUS_PERIOD 0x0c +#else + #define SYNCHRONOUS_PERIOD 0x19 +#endif + +#define SYNCHRONOUS_PERIOD_10M 0x19 +#define SYNCHRONOUS_PERIOD_20M 0x0c + +typedef struct _SYNC_TABLE { + u_char StartPeriod; + u_char EndPeriod; + u_char TransferPeriod; + u_char AckWidth; +} SYNC_TABLE, *PSYNC_TABLE; + +#ifndef NT_INST +/* for PC CARD*/ +typedef struct _PWRENTRY { + u_char PowerLevel; + u_char ValidSignals; +} PWRENTRY; + + + +typedef struct _ACHARTBL { + char AdpCaps; + long ActiveHigh; + long ActiveLow; +} ACHARTBL; + +typedef struct _AINQADAPTOR { + char wBufferLength; + char wDataLength; + ACHARTBL CharTable; + char wNumPwrEntries; + PWRENTRY PwrEntry; +} AINQADAPTOR; +#endif + +typedef struct _SG_TABLE { + u_long BlockCount; + u_long BufferAddress; +} SG_TABLE, *PSG_TABLE; + +typedef struct _FIFO_TEST { + u_char XferMode; + u_char Rate; +} FIFO_TEST; +typedef FIFO_TEST *PFIFO_TEST; +typedef struct _FAST_MODE { + u_char XferMode; + u_char Rate; + u_char PcicTiming; + u_char MemorySpeed; +} FAST_MODE; +typedef FAST_MODE *PFAST_MODE; + + + +/********************************************************/ +/* Logical Unit states.*/ +/********************************************************/ +typedef enum _SCSI_STATE { + SC_UNDETERMINED, + SC_SELECT, + SC_COMMAND, + SC_DATA, + SC_STATUS, + SC_MSG_IN, + SC_MSG_OUT, + SC_COMPLETE, + SC_COMPLETE_OK, + SC_BUSFREE, + SC_DISCONNECT, + SC_RESELECT +} SCSI_STATE, *PSCSI_STATE; + +/* #pragma pack(4) */ + +/********************************************************/ +/* Logical Unit extension*/ +/********************************************************/ +typedef struct _SPECIFIC_LU_EXTENSION { + SCSI_STATE LuState; /* State information.*/ + char *SavedDataPointer; /* Current data pointer.*/ + u_long SavedDataLength; /* Current data lenght.*/ + + struct scsi_xfer *ActiveLuRequest; /* Active Srb for this LUN.*/ + + u_long PhaseWaitCounter; + u_long TransferedLength; + u_long AckCounter; + u_long HostCounter; + + void (*pXferRead)__P(( u_int,char *Buffer, size_t Length)); + void (*pXferWrite)__P(( u_int, char *Buffer, size_t Length)); + +/* SG_TABLE SG_LIST[18]; */ + u_long SG_Count; +} SPECIFIC_LU_EXTENSION, *PSPECIFIC_LU_EXTENSION; + +/********************************************************/ +/*define adapter type*/ +/********************************************************/ +#define OPT_NON_DISCONECT 0x0001 +#define OPT_TUNEUP_DI 0x0002 +#define OPT_PCIC_SPEED 0x0004 +#define OPT_MMIO_SPEED 0x0008 +#define OPT_NO_ATN 0x0010 + +/********************************************************/ +/* specific per target controller information.*/ +/********************************************************/ +typedef struct _SPECIFIC_TARGET_EXTENSION { + u_char TargetFlags; + u_char SynchronousPeriod; + u_char SynchronousOffset; + u_char AckWidth; +} SPECIFIC_TARGET_EXTENSION, *PSPECIFIC_TARGET_EXTENSION; + + +/********************************************************/ +/* Define target controller specific flags.*/ +/********************************************************/ +#define PD_SYNCHRONOUS_NEGOTIATION_DONE 0x0001 +#define PD_DO_NOT_NEGOTIATE 0x0002 +#define PD_SYNCHRONOUS_TRANSFER_SENT 0X0004 + +#define PD_SYNCHRONOUS_TRANSFER_SENT 0X0004 + +#ifdef ULTRA + static SYNC_TABLE SyncTable[] = {{0x0c,0x0c,0x1,0}, /* 20MB 50ns*/ + {0x19,0x19,0x3,1}, /* 10MB 100ns*/ + {0x1a,0x25,0x5,2}, /* 7.5MB 150ns*/ + {0x26,0x32,0x7,3}}; /* 5MB 200ns*/ + #define SYNC_TABLE_MAX 4 +#else + static SYNC_TABLE SyncTable[] = {{0x19,0x19,0x1,0}, /* 10MB 100ns*/ + {0x1a,0x25,0x2,0}, /* 7.5MB 150ns*/ + {0x26,0x32,0x3,1}}; /* 5MB 200ns*/ + #define SYNC_TABLE_MAX 3 +#endif + + +/* ----- OREASAMA ---------------------------------------------------*/ +#if DBG + /********************************************************/ + /* Globals and externals used for debugging.*/ + /********************************************************/ + + /********************************************************/ + /* Ns3Debug affects which debug prints are enabled:*/ + /********************************************************/ + /* 0x001 Arbitration and selection*/ + /* 0x002 Command, status*/ + /* 0x004 Data transfer*/ + /* 0x008 Message in*/ + /* 0x010 Miniport entry points and completion*/ + /* 0x020 Initialization and interrupt*/ + /* 0x040 StatusCheck and WaitForRequest*/ + /* 0x080 Control register manipulation*/ + /* 0x100 Completion*/ + /* 0x200 Phase info*/ + /* 0x400 Temporary*/ + /* 0x800 Panic*/ + /********************************************************/ + +/* ORESAMA u_long Ns3Debug = ( 0x7f );*/ + u_long Ns3Debug = ( 0xfff );/* ORESAMA MUST DELETE AFTER DEBUG*/ +#define Ns3DebugPrint(MASK, ARGS) \ + if (MASK & Ns3Debug) { \ + printf ARGS; \ + } +#else + #define Ns3DebugPrint(MASK, ARGS) +#endif + + +/********************************************************/ +/* Device extension*/ +/********************************************************/ +struct _SPECIFIC_DEVICE_EXTENSION; +typedef struct _SPECIFIC_DEVICE_EXTENSION nin_softc, *pnin_softc; + +/*typedef struct _SPECIFIC_DEVICE_EXTENSION */ +struct _SPECIFIC_DEVICE_EXTENSION +{ + + SCSI_STATE ScsiState; + char *CurDataPointer; /* Current pointer for active LUN.*/ + u_long CurDataLength; /* Bytes left to xfer to this LUN.*/ + PSPECIFIC_LU_EXTENSION ActiveLogicalUnit; /* Currently active LUN.*/ + u_char PathId; + boolean InterruptPending; /* Waiting for interrupt.*/ + boolean DmaPending; /* Waiting for DMA setup.*/ + u_char DeviceType[8]; /* inquiry data save*/ + SPECIFIC_TARGET_EXTENSION TargetState[8]; + u_char TimerCycle; + u_char TimerCount; + u_char TransferMode; + boolean Write24BitEnable; + u_char MessageBuffer[8]; + u_long MessageCount; + u_char Pcic3a[6]; + + u_long SmitBuffer; + u_char TargetId; + u_char TargetLun; /* LUN for reselection*/ + u_char IrqMaskData; + u_char ScsiPrePhase; + u_short AdapterOption; + + void (*pXferRead)__P(( u_int,char *Buffer, size_t Length)); + void (*pXferWrite)__P(( u_int, char *Buffer, size_t Length)); + + FIFO_TEST CanTransMode[6]; /* can transfer-mode*/ + boolean IntWait; /* wait in int-routine?*/ + boolean ScsiCable; /* funny cable ? or FifoTest all NG*/ + u_long SSEntry; /* Socket Service Entry Point*/ + u_char WindowHandle; /* Socket memory-win-handle*/ + u_char PcicSpeed[2]; +#ifdef ULTRA + u_char SynchronousPeriod; +#endif + + struct scsi_link sc_link; /* prototype for subdevs 0414 */ + boolean gone; + int BaseAddress; /* Port address of adapter.*/ + int slot; /* Slot number (slot.h)*/ + int PcicSlot; /* Slot number (slot.h)*/ + int unit; + +}; + +int ninja3_precommand( + PSPECIFIC_LU_EXTENSION *luExt, + pnin_softc devExt, + struct scsi_xfer * Srb); +int ninja3_queuecommand( + struct scsi_xfer * cmd, + void (*done) (struct scsi_xfer *)); + +u_long Ns3FindAdapter(int unit); +boolean Ns3Initialize(int unit); +u_char Ns3FifoTest( int unit,IN PFIFO_TEST pTestMode); +void Ns3ResetScsiBus( pnin_softc DevExt ); +void Ns3MakeTestPat ( IN int unit, + IN u_short TestPat, + IN u_short * TestSave, + IN u_short * wTestSum, + IN u_char * bTestSum); + +void Ns3PcicTimingRest( int unit ); +void Ns3PcicTimingSave( int unit ); +PSPECIFIC_LU_EXTENSION + ScsiPortGetLogicalUnit(u_int8_t TargetId,u_int8_t Lun); +void ScsiPortFreeLogicalUnit(u_int8_t TargetId,u_int8_t Lun); +void Ns3StartExecution( + IN pnin_softc DevExt, + IN PSPECIFIC_LU_EXTENSION LuExtension, + IN struct scsi_xfer *Srb + ); +void Ns3IrqPolling ( int unit ); +/*void ninintr( int unit );*/ +boolean Ns3Select( IN pnin_softc DevExt , + struct scsi_xfer *srb); +void nin_done( IN pnin_softc DevExt, + IN int err_code ); +void Ns3SetTransferMode( IN pnin_softc DevExt ); +void Ns3RunPhase( IN pnin_softc DevExt, + IN IRQ_PHASE_SENSE IrqPhase ); +void Ns3DataInPhase( IN pnin_softc DevExt ); +void Ns3DataOutPhase( IN pnin_softc DevExt ); + +void Ns3SendCDB( IN pnin_softc DevExt ); +void Ns3MessageOut( IN pnin_softc DevExt ); +void Ns3MessageIn( IN pnin_softc DevExt ); +void Ns3Status( IN pnin_softc DevExt ); +boolean Ns3WaitForAckOff( pnin_softc DevExt ); +boolean Ns3WaitForReqOff( pnin_softc DevExt ); + + +void pio8_datain (IN u_int, char * ,size_t ); +void pio8_dataout (IN u_int, char * ,size_t ); +void pio32_datain (IN u_int, char * ,size_t ); +/* +void pio32_dataout (IN int DevExt , + u_long Buffer, + u_long Length ); +*/ +void pio32_dataout (IN u_int BaseAddress , + char *Buffer, + size_t Length ); + + + +u_long read_ack_count ( IN pnin_softc DevExt ); +void Ns3BurstRead( IN pnin_softc DevExt ); +void Ns3BurstWrite( IN pnin_softc DevExt ); +void Ns3SpotRead ( IN pnin_softc DevExt ); +void Ns3SpotWrite ( IN pnin_softc DevExt ); +void Ns3SlowRead ( IN pnin_softc DevExt ); +void Ns3SlowWrite ( IN pnin_softc DevExt ); + +boolean Ns3ProcessReselection( IN pnin_softc DevExt ); +boolean Ns3MessageDecode( IN pnin_softc DevExt ); + +boolean Ns3DecodeSynchronousRequest( + IN pnin_softc DevExt, + PSPECIFIC_TARGET_EXTENSION TargetState, + IN u_char TargetID, + IN boolean ResponseExpected ); + +int nin_attach(struct isa_device *dev); +int nin_probe(struct isa_device *dev); +static int32_t nin_scsi_cmd __P((struct scsi_xfer *)); +static void nin_minphys(struct buf *bp); +static u_int32_t nin_adapter_info(int unit); +#ifdef SCSI_DETACH +static void nin_detach(struct isa_device *dev); +#endif +static nin_softc nin_data[NNIN]; + +#ifdef KERNEL +static struct scsi_adapter nin_switch = +{ + nin_scsi_cmd, + nin_minphys, + 0, + 0, + nin_adapter_info, + "nin", + { 0, 0 } +}; + +/* the below structure is so we have a default dev struct for out link struct */ +static struct scsi_device nin_dev = +{ + NULL, /* Use default error handler */ + NULL, /* have a queue, served by this */ + NULL, /* have no async handler */ + NULL, /* Use default 'done' routine */ + "nin", + 0, + { 0, 0 } +}; + +struct isa_driver nindriver = +{ + nin_probe, + nin_attach, + "nin" +}; + +static u_int32_t TestPat[] = + { 0,0xffff,0x55aa,0xaa55,0x0011,0xffee,0x0001,0x00ff}; + + +static PSPECIFIC_LU_EXTENSION table[8][10]; +static u_char TestLoad[64]; +static u_char TestSave[64]; + +static FIFO_TEST DefaultOk[6] = { { 0x4,0}, /* 24bit*/ + { 0x2,0}, /* Mem32*/ + { 0x20,0}, /* IO32*/ + { 0x1,0}, /* MEM8*/ + { 0x10,0}, /* IO8*/ + { 0,0}}; /* test priority */ +static FIFO_TEST FifoTestResult[3][4][6]; +FAST_MODE FastestMode[4*3*6]; + + +#endif /* KERNEL */ + +/*------------------------------------------------------------------------*/ + +#include "card.h" +#if NCARD > 0 +#include +#include +#include +#include + +/* + * PC-Card (PCMCIA) specific code. + */ +static int card_intr(struct pccard_devinfo *); /* Interrupt handler */ +static void nin_unload(struct pccard_devinfo *); /* Disable driver */ +static void nin_suspend(struct pccard_devinfo *); /* Suspend driver */ +static int nin_crdinit(struct pccard_devinfo *); /* init device */ + +static struct pccard_device pcc_nin_info = { + "nin", + nin_crdinit, /* attach probe */ + nin_unload, /* */ +/* nin_suspend,*/ /* */ + card_intr, /* interrupt*/ + 0, /* Attributes - presently unused */ + &bio_imask /* Interrupt mask for device */ +}; +DATA_SET(pccarddrv_set, pcc_nin_info); + +#if 0 +/* + * Called when a power down is requested. Shuts down the + * device and configures the device as unavailable (but + * still loaded...). A resume is done by calling + * wlpcrdinit with first=0. This is called when the user suspends + * the system, or the APM code suspends the system. + */ +static void +nin_suspend(struct pccard_devinfo *dp) +{ + pnin_softc sc = &nin_data[dp->isahd.id_unit]; + + Ns3DebugPrint(0x10,("nin%d: suspending\n", dp->isahd.id_unit)); + sc->gone = 1; +} +#endif /* 0 */ + + +/* + * Initialize the device + */ +static int +nin_crdinit(struct pccard_devinfo *dp) +{ + /* struct nin_softc *sc = &nin_softc[dp->isahd.id_unit]; */ + pnin_softc sc = &nin_data[dp->isahd.id_unit]; + + /* validate unit number. */ + { /* if (first == 0) resume*/ + /* unit-num is max(NNIN) -> end*/ + if (dp->isahd.id_unit >= NNIN) { + Ns3DebugPrint(0x10,("nin_crdinit:ENODEV\n")); /* ORE*/ + return(ENODEV); + } + + /* + * Probe the device. If a value is returned, the + * device was found at the location. + */ + sc->gone = 0; + /* Set slot-num for PCIC*/ + sc->PcicSlot = dp->slt->slotnum; + if (nin_probe(&dp->isahd)==0){ + Ns3DebugPrint(0x10,("nin_crdinit:ENXIO\n")); + return(ENXIO); + } + + if (nin_attach(&dp->isahd)==0) { + Ns3DebugPrint(0x10,("nin_crdinit:ENXIO\n")); + return(ENXIO); + } + } + /* + * XXX TODO: + * If it was initialized before, the device structure + * should also be initialized. We should + * reset (and possibly restart) the hardware, but + * I am not sure of the best way to do this... + */ + return(0); +} + +/* + * nin_unload - unload the driver and clear the table. + * XXX TODO: + */ +static void +nin_unload(struct pccard_devinfo *dp) +{ +/* struct nin_softc *sc = &nin_softc[dp->isahd.id_unit]; */ + pnin_softc sc = &nin_data[dp->isahd.id_unit]; + + sc->gone = 1; + Ns3DebugPrint(0x10,("nin%d: unload\n", dp->isahd.id_unit)); +#if SCSI_DETACH + nin_detach(&dp->isahd); +#endif /* SCSI_DETACH */ +} + +/* + * card_intr - Shared interrupt called from + * front end of PC-Card handler. + */ +static int +card_intr(struct pccard_devinfo *dp) +{ + /* call interrupt proc*/ + ninintr(dp->isahd.id_unit); + return(1); +} +#endif /* NCARD > 0 */ + + + +int +nin_probe(struct isa_device *dev) +{ + u_char ChipId; + int nin_unit = dev->id_unit; + + /* unit_num is too much*/ + if(nin_unit > NNIN) { + return 0; + } + + nin_data[nin_unit].BaseAddress = dev->id_iobase; + + + ChipId = inb(nin_data[nin_unit].BaseAddress+FIFOSTATUS); + Ns3DebugPrint(0x10,("nin_probe:BaseAddress[%x],irq[%x],ChipId[%x]\n",nin_data[nin_unit].BaseAddress,dev->id_irq,ChipId)); + if (ChipId < 0x11 || 0x1f < ChipId) { + return 0; + } + + Ns3FindAdapter(nin_unit); + if( !Ns3Initialize(nin_unit) ) { + return 0; + } + + return 8; +} + +int +nin_attach(struct isa_device *dev) +{ + int masunit; + static u_long versprobe=0; /* max 32 controllers */ + int unit = dev->id_unit; + struct scsibus_data *scbus; + + nin_data[unit].sc_link.adapter_unit = unit; + nin_data[unit].sc_link.adapter_targ = 7; /* adapter's scsi id*/ + nin_data[unit].sc_link.adapter = &nin_switch; + nin_data[unit].sc_link.device = &nin_dev; + + nin_data[unit].sc_link.adapter_softc = &(nin_data[unit]); +/* nin[unit].sc_link.flags = SDEV_BOUNCE; */ + + /* + * Prepare the scsibus_data area for the upperlevel + * scsi code. + */ + scbus = scsi_alloc_bus(); + if(!scbus) + return 0; + + /*scbus->maxtarg = 7;*/ + scbus->maxlun = 3; + scbus->adapter_link = &nin_data[unit].sc_link; + + + scsi_attachdevs(scbus); + + return 1; +} + +#ifdef SCSI_DETACH +static void +nin_detach(struct isa_device *dev) +{ + int unit = dev->id_unit; + struct scsibus_data *scbus; + + scbus = (struct scsibus_data *)scsi_extend_get((&nin_data[unit])->sc_link.scsibus); + scsi_detachdev(scbus); +} +#endif /* SCSI_DETACH */ + +/* ----------------------------------------------------------- */ + +void nin_minphys(struct buf *bp) +{ +#define DEFAULT_FIFOMAX 0x10000 + + if(bp->b_bcount > DEFAULT_FIFOMAX) { + bp->b_bcount = DEFAULT_FIFOMAX; + } +} + +/* + * Return some information to the caller about + * the adapter and its capabilities. + */ +u_int32_t +nin_adapter_info(int unit) +{ + /* max number of request per device */ + return 1; +} +/* return (2); * 2 outstanding requests at a time per device */ + + +/* +// Ns3FindAdapter +*/ +u_long Ns3FindAdapter(int unit) +{ + int baseAddress; /* PSCSI_REGISTER baseAddress; */ + u_long status; + u_char * ioSpace,memSpace; + u_char switches; + u_long mmioBase; + u_long UseRegisterBuffer = 0; + TRANSFER_MODE xferMode; + u_long FifoMax = 0x10000; + u_char dataByte; +#ifdef ULTRA + u_char OptSyncPeriod +#endif + + pnin_softc DevExt = &(nin_data[unit]); + Ns3DebugPrint(0x20, ( "FindAdapter Entered...\n")); + + *((u_char *)&xferMode) = 0; + xferMode.MemMap8 = 1; + xferMode.MemMap16_32 = 1; + xferMode.AdrData24 = 1; + xferMode.IO16_32 = 1; + xferMode.IO8 = 1; + + baseAddress = DevExt->BaseAddress; /* Get I/O addr*/ + + FifoMax = 0x10000; + + + /* Determine IRQ*/ + /* Note: In future release of NT (after .404 March Beta), this value*/ + /* can be returned as 0 and NT will assume we are polling and won't*/ + /* reserve an IRQ for us. Until then, we need to give him something.*/ + + /* See Note Above*/ + + DevExt->SSEntry = 0; + + xferMode.MemMap16_32 = 0; + xferMode.AdrData24 = 0; + xferMode.MemMap8 = 0; + DevExt->TransferMode= *(u_char *)&xferMode; + + /* Set default-trans-mode*/ + (*(u_char *)&xferMode) = 0; + xferMode.FifoTest_Braind = 0; + xferMode.TransferGo = 0; + xferMode.IO16_32 = 1; + /* TransferModeSet & TEST MODE OFF */ + SCSI_WRITE(baseAddress, TRANSFERMODE, *(u_char *)&xferMode); + + DevExt->pXferRead = pio32_datain; + DevExt->pXferWrite = pio32_dataout; + + return TRUE; +} /* end Ns3FindAdapter()*/ + + + +PSPECIFIC_LU_EXTENSION + ScsiPortGetLogicalUnit(u_int8_t TargetId,u_int8_t Lun) +{ + int flags; + flags = splbio(); + + if (!table[TargetId][Lun]) { + table[TargetId][Lun] = + malloc(sizeof(SPECIFIC_LU_EXTENSION), M_DEVBUF, M_NOWAIT); + } + splx(flags); + return table[TargetId][Lun]; +} + + +void ScsiPortFreeLogicalUnit(u_int8_t TargetId,u_int8_t Lun) +{ + int flags; + flags = splbio(); + + if((TargetId >= 7)||(Lun >= 8)) { + Ns3DebugPrint(0x10,( "ScsiPortFreeLogicalUnit:ID[%x] Lun[%x]\n", + TargetId,Lun)); + splx(flags); + return; + } + + if (table[TargetId][Lun]) { + /* 1105 + free( table[TargetId][Lun] , M_DEVBUF); + table[TargetId][Lun] = 0; + 1105 */ + } + splx(flags); +} + +u_char Ns3FifoTest( int unit,IN PFIFO_TEST pTestMode) +{ + TRANSFER_MODE saveMode; + + saveMode.TransferGo = 1; + saveMode.FifoTest_Braind = 0; + saveMode.MemMap8 = 0; + saveMode.AdrData24 = 0; + saveMode.MemMap16_32 = 0; + saveMode.IO8 = 0; + saveMode.IO16_32 = 1; + return(*((u_char *)(&saveMode))); + +} + + +void Ns3ResetScsiBus( pnin_softc DevExt ) +{ + + PSPECIFIC_TARGET_EXTENSION targetState; + u_long i; + unsigned long flags; + + u_char dataByte; + int baseAddress = DevExt->BaseAddress; + + if (DevExt->DmaPending == TRUE) { + DevExt->DmaPending = FALSE; + } + DevExt->InterruptPending = FALSE; + + Ns3DebugPrint(0x10, ( "Ns3ResetScsiBus ")); + + SCSI_IRQ_CONTROL(baseAddress, 0xff); /* IRQ all Mssk & clear*/ + + /*****************/ + /* RESET SCSI bus.*/ + /******************/ + + dataByte = 0; + ((PSCSI_BUS_CONTROL)&dataByte)->ScsiRst = 1; + SCSI_WRITE(baseAddress, SCSIBUSCTRL, dataByte); /* SCSI RST On !*/ + + DELAY(RESET_HOLD_TIME); + + ((PSCSI_BUS_CONTROL)&dataByte)->ScsiRst = 0; + SCSI_WRITE(baseAddress, SCSIBUSCTRL, dataByte); /* SCSI RST Off !*/ + /* + dummy read for SCSI RST IRQ/Phase Change + */ + for ( i= 0; i < 5; i++) { + SCSI_READ(baseAddress,IRQPHASESENCE); + } + + /* Set unsyncronus 5MB*/ + for (i = 0; i < 7; i++) { + targetState = &DevExt->TargetState[i]; /* Get pointer*/ + targetState->TargetFlags &= ~PD_SYNCHRONOUS_NEGOTIATION_DONE; + targetState->SynchronousOffset = ASYNCHRONOUS_OFFSET; + targetState->SynchronousPeriod = ASYNCHRONOUS_PERIOD; + } + SCSI_IRQ_CONTROL(baseAddress, 0xff); /* IRQ mask & clear*/ + DevExt->IrqMaskData = 0xff; + + DELAY(RESET_RECOVER_TIME); +} + + + + + + + + +int ninja3_precommand( + PSPECIFIC_LU_EXTENSION *luExt, + pnin_softc devExt, + struct scsi_xfer * Srb) +{ + + /* + ** Determine the logical unit that this request is for. + */ + + (*luExt) = ScsiPortGetLogicalUnit( + /* devExt->PathId, */ + Srb->sc_link->target, + Srb->sc_link->lun); + if( !(*luExt) ) { + Srb->error = XS_DRIVER_STUFFUP; + return FALSE; /*TRY_AGAIN_LATER;*/ + } + + /* + ** Setup the context for this target/lun. + */ + + (*luExt)->ActiveLuRequest = Srb; + (*luExt)->SavedDataPointer = Srb->data; + (*luExt)->SavedDataLength = Srb->datalen; + + (*luExt)->PhaseWaitCounter = 0; + devExt->ScsiState = SC_SELECT; + + return TRUE; +} /*ninja3_precommand end*/ + + +void nin_timeout (void *arg); +void nin_timeout (void *arg) +{ + pnin_softc DevExt= (pnin_softc) arg; + + struct scsi_xfer *Srb = DevExt->ActiveLogicalUnit->ActiveLuRequest; + int x = splbio (); + + if (! (Srb->flags & SCSI_NOMASK)) + printf ("nin%d/%d/%d (%s%d) timed out\n", + Srb->sc_link->adapter_unit, + Srb->sc_link->target, + Srb->sc_link->lun, + Srb->sc_link->device->name, + Srb->sc_link->dev_unit); + + Ns3ResetScsiBus (DevExt); + Srb->error = XS_TIMEOUT; + Srb->retries = 0; + nin_done(DevExt,XS_TIMEOUT); + + splx (x); +} +int nin_scsi_cmd(struct scsi_xfer * Srb) +{ + int x = 0; + int flags = Srb->flags; + static PSPECIFIC_LU_EXTENSION luExtension; + struct scsi_link *sc_link = Srb->sc_link; + pnin_softc deviceExtension = (pnin_softc)sc_link->adapter_softc; + + Ns3DebugPrint (0x10,("nin %d/%d command 0x%x ",Srb->sc_link->target, + Srb->sc_link->lun, Srb->cmd->opcode)); + + if (flags & SCSI_RESET) { + Ns3DebugPrint(0x10, ( "nin_scsi_cmd: Reset Bus.\n")); + + /* Reset Ns3 and SCSI bus.*/ + Ns3ResetScsiBus( deviceExtension ); + return COMPLETE; + } + + if( !ninja3_precommand(&luExtension,deviceExtension,Srb) ) { + return TRY_AGAIN_LATER; + } + if(!Srb) { + Ns3DebugPrint(0x008, ("ninja3_precommand srb = null!!!! \n\n\n")); + return FALSE; + } + if (! (flags & SCSI_NOMASK)) + x = splbio (); + + /* + Initiate a SCSI request. + */ + Ns3StartExecution(deviceExtension, luExtension, Srb); + + if ( Ns3Select(deviceExtension,Srb) ) + Ns3IrqPolling ( deviceExtension->unit ); + + // Usually return SUCCESSFULLY QUEUED. + if (! (flags & SCSI_NOMASK)) { + splx (x); /* 1107 */ + if (Srb->flags & ITSDONE) { + Ns3DebugPrint (0x10,("nin_scsi_cmd SUCCESSFULLY_QUEUED\n")); + return (SUCCESSFULLY_QUEUED); + } + Ns3DebugPrint (0x10,("call timeout\n")); + timeout (nin_timeout, (caddr_t)deviceExtension, (Srb->timeout * hz) / 1000); + Ns3DebugPrint (0x10,("nin%d/%d/%d command queued\n", + Srb->sc_link->adapter_unit, + Srb->sc_link->target, Srb->sc_link->lun)); + Ns3DebugPrint (0x10,("nin_scsi_cmd SUCCESSFULLY_QUEUED\n")); + return (SUCCESSFULLY_QUEUED); + } + + return (Srb->error ? HAD_ERROR : COMPLETE); + +/* + * return values for scsi_cmd() +#define SUCCESSFULLY_QUEUED 0 +#define TRY_AGAIN_LATER 1 +#define COMPLETE 2 +#define HAD_ERROR 3 // do not use this, use COMPLETE +#define ESCAPE_NOT_SUPPORTED 4 + */ + +} /* end nin_scsi_cmd()*/ + +/* +// Routine Name: +// +// Ns3StartExecution +// +// Routine Description: +// +// This routine will start the execution of a SCSI request. +// +// Arguments: +// +// DevExt - Device adapter context pointer. +// LuExtension - The logical unit specific information. +// Srb - The Srb command to execute. +// +// Return Value: +// +// None. +// +//----------------------------------------------------------------------- +*/ +void Ns3StartExecution( + IN pnin_softc DevExt, + IN PSPECIFIC_LU_EXTENSION LuExtension, + IN struct scsi_xfer *Srb + ) +{ + PSPECIFIC_TARGET_EXTENSION targetState; + + if ((Srb->cmd->bytes[0] >> 5) != Srb->sc_link->lun) + { + Srb->cmd->bytes[0] &= 0x1f; + Srb->cmd->bytes[0] |= (Srb->sc_link->lun << 5); + } + + DevExt->TargetId = Srb->sc_link->target; + + /* + Setup the context for this adapter. + */ + DevExt->ActiveLogicalUnit = LuExtension; + DevExt->CurDataPointer = + DevExt->ActiveLogicalUnit->SavedDataPointer; + DevExt->CurDataLength = + DevExt->ActiveLogicalUnit->SavedDataLength; + + /* Set TargetState Ns3MessageDecode */ + DevExt->TargetId = Srb->sc_link->target; + targetState = &DevExt->TargetState[Srb->sc_link->target]; + + /* + // + // Create the identify command. + // + */ + + /* NOT supported DISCONECT */ + if ( + /* (Srb->SrbFlags & SRB_FLAGS_DISABLE_DISCONNECT) || */ + (DevExt->AdapterOption & OPT_NON_DISCONECT) ) + { + DevExt->MessageBuffer[0] = + MSG_IDENTIFYFLAG | Srb->sc_link->lun; + } else { + DevExt->MessageBuffer[0] = + MSG_IDENTIFYFLAG_WITH_DISCON | Srb->sc_link->lun; + } + DevExt->MessageCount = 1; + + /* + // Make SyncMessage if donot Sync Nego + */ + + if (!(targetState->TargetFlags & PD_SYNCHRONOUS_NEGOTIATION_DONE ) && + !(targetState->TargetFlags & PD_DO_NOT_NEGOTIATE) && + + (Srb->cmd->opcode != INQUIRY) /* INQUIRY:Don't Sync Nego */ + ) + { + /* Sync message exchange [sync]*/ + DevExt->MessageCount = 6; + /* extended message out */ + DevExt->MessageBuffer[1] = MSG_EXTENDED; + + /* length */ + DevExt->MessageBuffer[2] = MSG_EXT_SDTR_LEN; + + /* extended message out command */ + DevExt->MessageBuffer[3] = SCSIMESS_SYNCHRONOUS_DATA_REQ; + +#ifdef ULTRA + DevExt->MessageBuffer[4] = DevExt->SynchronousPeriod; +#else + /* Transfer interval 100n = 10M ByteS */ + DevExt->MessageBuffer[4] = SYNCHRONOUS_PERIOD; +#endif + DevExt->MessageBuffer[5] = SYNCHRONOUS_OFFSET; + targetState->TargetFlags |= PD_SYNCHRONOUS_NEGOTIATION_DONE | + PD_SYNCHRONOUS_TRANSFER_SENT; + + DevExt->MessageCount = 1; + } + +} /* end Ns3StartExecution()*/ + + +/* +//----------------------------------------------------------------------- +// Routine Name: +// +// Ns3IrqPolling +// +// Routine Description: +// +// Interrupt Polling +// +/// +//-----------------------------------------------------------------------*/ +void Ns3IrqPolling ( int unit ) +{ + pnin_softc DevExt = &(nin_data[unit]); + int i; + + i = INT_POLL_SEL; + + while (i > 0 ) { + if ( SCSI_IRQ_MONITOR(DevExt->BaseAddress) & 0xb ) + { + ninintr( unit ); + break; + } + /* loop interval 530CS-133MHz : 4.5us */ + DELAY(5); /* DELAY -> DELAY */ + + i--; + } + + /* Timer IRQ Enable*/ + ((PIRQ_CONTROLP)&DevExt->IrqMaskData)->TimerIrqMask = 1; + /* SCSI IRQ Enable*/ + ((PIRQ_CONTROLP)&DevExt->IrqMaskData)->ScsiIrqMask = 0; + SCSI_IRQ_CONTROL(DevExt->BaseAddress, DevExt->IrqMaskData); + Ns3DebugPrint (0x10,("-- Ns3IrqPolling ends -- ")); +} + + +/* +//----------------------------------------------------------------------- +// Routine Name: +// +// ninintr +// +// Routine Description: +// +// This routine handles the interrupts for the Ns3. The intention is to +// quickly determine the cause of the interrupt, clear the interrupt, and +// setup to process the SCSI command that is affected by the +// interrupt. +// +// Arguments: +// +// Context - Device adapter context pointer. +// +// Return Value: +// +// TRUE indicates that the interrupt was from this Ns3 adapter, +// FALSE indicates that this interrupt was NOT from us. +// +//----------------------------------------------------------------------- +// boolean -> void +*/ +void ninintr( int unit ) +{ + long i; + pnin_softc DevExt = &(nin_data[unit]); + int baseAddress = DevExt->BaseAddress; + + + IRQ_STATUS IntIrqStatus; + IRQ_PHASE_SENSE IntIrqPhase; + + unsigned char dataByte; + char TargetId; + PSPECIFIC_TARGET_EXTENSION targetState; + + + *((unsigned char *) &IntIrqStatus) = SCSI_IRQ_MONITOR(baseAddress); + + dataByte = 0; + ((PIRQ_CONTROLP)&dataByte)->ExtIrqMask = 1; + ((PIRQ_CONTROLP)&dataByte)->FifoIrqMask = 1; + ((PIRQ_CONTROLP)&dataByte)->TimerIrqMask = 1; + ((PIRQ_CONTROLP)&dataByte)->ScsiIrqMask = 1; + + SCSI_IRQ_CONTROL(baseAddress, dataByte); /* // IRQ All mask*/ + +IntEntry: + /* from nin_unload */ + + if(DevExt->gone) { + nin_done(DevExt, XS_DRIVER_STUFFUP); + DevExt->ScsiState = SC_BUSFREE; + DevExt->IntWait = FALSE; + return; // TRUE; + } + + if ( *((unsigned char *) &IntIrqStatus) == 0xff ) { + nin_done(DevExt, FALSE/*SRB_STATUS_NO_DEVICE*/); + DevExt->ScsiState = SC_BUSFREE; + DevExt->IntWait = FALSE; + return; /* TRUE;*/ + } + + DevExt->InterruptPending = FALSE; + + /* + // --- Timer interrupt? --- + */ + if ( IntIrqStatus.TimerIrqStatus ) { + dataByte = 0xf0; + ((PIRQ_CONTROLP)&dataByte)->TimerIrqClear = 1; + /* Timer IRQ Clear*/ + SCSI_IRQ_CONTROL(DevExt->BaseAddress, dataByte); + + if ( DevExt->TimerCount != 0 ) { + /* Next TIMER START*/ + SCSI_WRITE(DevExt->BaseAddress, TIMERCOUNT, + DevExt->TimerCycle); + DevExt->TimerCount--; + } + } + + /* + // ---- SCSI IRQ ? ---- + */ + if ( IntIrqStatus.ScsiIrqStatus ) { + *((unsigned char *)&IntIrqPhase) = SCSI_READ(baseAddress, IRQPHASESENCE); + + /* + //---- ReSelection IRQ ? ---- + */ + if (IntIrqPhase.ReselectIrq) { + TargetId =(unsigned char)(SCSI_READ(baseAddress, RESELECTID) & 0x7f); + i = 0xffffffff; + while ( TargetId > 0 ) { + i++; + TargetId = TargetId >> 1; + } + + DevExt->TargetId = i; + DevExt->TargetLun = + DevExt->ActiveLogicalUnit->ActiveLuRequest->sc_link->lun; + do { + dataByte = SCSI_READ(baseAddress, SCSIBUSMON); + } while ( ((PSCSI_BUS_MONITOR)&dataByte)-> Scsi_SEL ); + /* SEL off ?*/ + + dataByte = SCSI_READ(baseAddress, SCSIBUSCTRL); + ((PSCSI_BUS_CONTROL)&dataByte)->ScsiBSY = 0; /* BUSY Off !*/ + SCSI_WRITE(baseAddress , SCSIBUSCTRL, dataByte); + ((PSCSI_BUS_CONTROL)&dataByte)->AutoDirection = 1; + /* AckEnb , AutoDirection ON !*/ + ((PSCSI_BUS_CONTROL)&dataByte)->AckEnb = 1; + /* ( Not same time in BUSY off)*/ + SCSI_WRITE(baseAddress , SCSIBUSCTRL, dataByte); + + /* set Sync-parameter*/ + targetState = + &DevExt->TargetState[DevExt->TargetId]; + dataByte = 0; + ((PSYNC_REG)&dataByte)->SyncPeriod = + targetState->SynchronousPeriod; + ((PSYNC_REG)&dataByte)->SyncOffset = + targetState->SynchronousOffset; + + SCSI_WRITE(baseAddress, SYNCREG,dataByte); + SCSI_WRITE(baseAddress, ACKWIDTH, targetState->AckWidth); + + /* Clear transfer clear*/ + dataByte = 0; + ((PPOINTER_CLEAR)&dataByte)->PointerClear = 1; + ((PPOINTER_CLEAR)&dataByte)->AckCounterClear = 1; + ((PPOINTER_CLEAR)&dataByte)->ReqCounterClear = 1; + ((PPOINTER_CLEAR)&dataByte)->HostCounterClear = 1; + SCSI_WRITE(baseAddress, POINTERCLR, dataByte); + + /* LUN isn't defined, not use LunExtension... + wait for Message IN */ + DevExt->ScsiState = SC_RESELECT; + goto IntEnd; + } + + /* + --- SCSI RESET Irq ?---- + */ + if ( IntIrqPhase.ScsiResetIrq ) { + /* Set unsync 5mb */ + for (i = 0; i < 7; i++) { + targetState = &DevExt->TargetState[i]; + targetState->TargetFlags &= ~PD_SYNCHRONOUS_NEGOTIATION_DONE; + targetState->SynchronousOffset = ASYNCHRONOUS_OFFSET; + targetState->SynchronousPeriod = ASYNCHRONOUS_PERIOD; + } + goto IntEnd; + } + + /* + --- Phase Change Interrupt ? --- + */ + if ( IntIrqPhase.PhaseChgIrq ) { + Ns3RunPhase(DevExt, IntIrqPhase ); + goto IntEnd; + } + } + + /* + ---- FIFO Interrupt ? ---- + */ + if ( IntIrqStatus.FifoIrqStatus ) { + /* Interrupt Clear*/ + *((unsigned char *) &IntIrqPhase) = SCSI_READ(baseAddress, IRQPHASESENCE); + /* Still nokori ga aru H*/ + if ( DevExt->CurDataLength ) { + /* before Phase*/ + if ( DevExt->ScsiPrePhase == BP_DATA_IN) + Ns3DataInPhase(DevExt); + else if (DevExt->ScsiPrePhase == BP_DATA_OUT) + Ns3DataOutPhase(DevExt); + } + /*PhaseChange same time ɔ ?*/ + if ( IntIrqPhase.PhaseChgIrq ) { + Ns3RunPhase(DevExt, IntIrqPhase ); + } + goto IntEnd; + } + +IntEnd: + +#ifdef USE_INTENTRY + if ( !DevExt->IntWait ) { + *((unsigned char *) &IntIrqStatus) = SCSI_IRQ_MONITOR(baseAddress); + if ( *((unsigned char *)&IntIrqStatus) & 0xf ) { + goto IntEntry;/* INT */ + } + } else { + int polltimes; + polltimes = INT_POLL_IRQ * 10000; + for ( i = 0; i< polltimes; i++) { + *((unsigned char *)&IntIrqStatus) = + SCSI_IRQ_MONITOR(baseAddress); + if ( *((unsigned char *)&IntIrqStatus) & 0x0f ) { + goto IntEntry;/* INT */ + /* l.434 */ + } + } + } +#endif /* USE_INTENTRY */ + + /* + --- Reverse IRQ MASK MODE ---- + */ + SCSI_IRQ_CONTROL(baseAddress, DevExt->IrqMaskData); + DevExt->IntWait = TRUE; + + Ns3DebugPrint(0x10,( "ninintr out -----------\n")); + + return ; /* TRUE;*/ +} /* end ninintr()*/ + + +/* +//----------------------------------------------------------------------- +// Routine Name: +// +// Ns3Select +// +// Routine Description: +// +// Perform selection process on SCSI bus. +// +// Arguments: +// +// DevExt - Device adapter context pointer. +// +// Return Value: +// +// TRUE : Select Success +/// +//----------------------------------------------------------------------- +*/ +boolean Ns3Select( IN pnin_softc DevExt ,struct scsi_xfer *srb) +{ + PSPECIFIC_TARGET_EXTENSION targetState; + + int i; + int baseAddress = DevExt->BaseAddress; + unsigned char cdbLength = srb->cmdlen; + u_char *cdb = &(srb->cmd->opcode); + unsigned char BusyByte, dataByte, AtnByte; + + + AtnByte = 0; + ((PSCSI_BUS_CONTROL)&AtnByte)->ScsiATN = 1; + if ( DevExt->AdapterOption & OPT_NO_ATN ) + ((PSCSI_BUS_CONTROL)&AtnByte)->ScsiATN = 0; + + /* + --- Didable all interrupt + */ + dataByte = 0; + ((PIRQ_CONTROLP)&dataByte)->FifoIrqMask = 1; + ((PIRQ_CONTROLP)&dataByte)->TimerIrqMask = 1; + ((PIRQ_CONTROLP)&dataByte)->ExtIrqMask = 1; + ((PIRQ_CONTROLP)&dataByte)->ScsiIrqMask = 1; + SCSI_IRQ_CONTROL(baseAddress, dataByte); + + DevExt->IrqMaskData = dataByte; + + /* + --- CDB -> COMMAND FIFO --- INITIATOR -> target + */ + dataByte = 0; + ((PCOMMAND_CONTROL)&dataByte)->ClrCommandPointer = 1; + SCSI_WRITE(baseAddress,COMMANDCTRL, dataByte); /* CDB FIFO counter Clear*/ + + /* cdbLength--; cdbLength - 1 */ + while (cdbLength > 0) { + Ns3DebugPrint(0x10,( "[%x]",*cdb)); + SCSI_WRITE(baseAddress, COMMANDDATA, *cdb++); + cdbLength--; + } + /* + --- Start Arbitration for Get Bus--- + */ + dataByte = 0; + + + ((PSET_ARBIT)&dataByte)->ArbitGo = 1; + SCSI_WRITE(baseAddress, SETARBIT, dataByte); /* Start Arbitration */ + + DELAY(300); /* 1104 delete after */ + + dataByte = 0; + + i=0; + + while (!( ((PARBIT_STATUS)&dataByte)->ArbitWin || + ((PARBIT_STATUS)&dataByte)->ArbitFail ) ) { + dataByte = SCSI_READ(baseAddress, ARBITSTATUS); /* Get bus? */ + DELAY(1); + i++; + if(100000 < i){ + Ns3DebugPrint(0x10,( "(;_;)[%x] -X-",dataByte)); + ((PARBIT_STATUS)&dataByte)->ArbitFail = 1; + break; + } + } + + if ( ((PARBIT_STATUS)&dataByte)->ArbitFail ) { /* ...I'm looser */ + Ns3DebugPrint(0x10,( " Faild [%x](;_;) -- ",dataByte)); + + dataByte = 0; + ((PSET_ARBIT)&dataByte)->ArbitFlagClear = 1; + SCSI_WRITE(baseAddress, SETARBIT, dataByte);/* Arbitration flg Clear*/ + + DevExt->ScsiState = SC_BUSFREE; +/* 1112 nin_done(DevExt, XS_SELTIMEOUT); */ + nin_done(DevExt, XS_TIMEOUT); + + /* Timer IRQ Enable*/ + ((PIRQ_CONTROLP)&DevExt->IrqMaskData)->TimerIrqMask = 0; + /* SCSI IRQ Enable*/ + ((PIRQ_CONTROLP)&DevExt->IrqMaskData)->ScsiIrqMask = 0; + SCSI_IRQ_CONTROL(baseAddress, DevExt->IrqMaskData); + + return(FALSE); + } + + /* Win !*/ + DELAY(2); + + /*----- selection phase -----*/ + dataByte = (1 << SCSI_INITIATOR_ID) | (1 << (srb->sc_link->target)); +/* set initiator ID + target ID */ + SCSI_WRITE(baseAddress, SCSIDATALATCH, dataByte); + + dataByte = 0; + ((PSCSI_BUS_CONTROL)&dataByte)->ScsiSel = 1; + ((PSCSI_BUS_CONTROL)&dataByte)->ScsiBSY = 1; + dataByte |= AtnByte; + SCSI_WRITE(baseAddress,SCSIBUSCTRL, dataByte); /* put SEL + Busy + ATN*/ + + DELAY(3); /*DELEY ScsiPortStallExecution(1); wait 1.2us*/ + + ((PSCSI_BUS_CONTROL)&dataByte)->ScsiDataOutEnb = 1; + SCSI_WRITE(baseAddress,SCSIBUSCTRL , dataByte); /* enable ID out */ + + dataByte = 0; + ((PSET_ARBIT)&dataByte)->ArbitFlagClear = 1; + SCSI_WRITE(baseAddress, SETARBIT, dataByte); /* Arbitration flag Clear*/ + + DELAY(2); + + dataByte = 0; + ((PSCSI_BUS_CONTROL)&dataByte)->ScsiSel = 1; + dataByte |= AtnByte; + ((PSCSI_BUS_CONTROL)&dataByte)->ScsiDataOutEnb = 1; + SCSI_WRITE(baseAddress,SCSIBUSCTRL, dataByte); /* Busy off*/ + + DevExt->TimerCount = 250; + DevExt->TimerCycle = 1000/51; + SCSI_WRITE(baseAddress, TIMERCOUNT, 1000/51); /* 1msec TIMER START*/ + + do { + BusyByte = SCSI_READ(baseAddress, SCSIBUSMON); + if ( ((PSCSI_BUS_MONITOR)&BusyByte)->Scsi_BSY ) { /*? (busy)*/ + break; + } + + dataByte = SCSI_IRQ_MONITOR(baseAddress); + if ( ((PIRQ_STATUS)&dataByte)->TimerIrqStatus ) { + SCSI_IRQ_CONTROL(baseAddress, dataByte); + DevExt->TimerCount--; + SCSI_WRITE(baseAddress, TIMERCOUNT, 1000/51);/* 1msec TIMER START*/ + } + } while ( DevExt->TimerCount != 0 ); + + dataByte = SCSI_IRQ_MONITOR(baseAddress) & 0xf0; + ((PIRQ_CONTROLP)&dataByte)->TimerIrqClear = 1; /* Clear Timer IRQ*/ + SCSI_IRQ_CONTROL(baseAddress, dataByte); + DevExt->TimerCount = 0; + + if ( ! (((PSCSI_BUS_MONITOR)&BusyByte)->Scsi_BSY) ) { + /* + ----- None... ----- + */ + SCSI_WRITE(baseAddress, SCSIBUSCTRL, 0); /* SEL Off*/ + + DevExt->ScsiState = SC_BUSFREE; + + nin_done(DevExt, XS_SELTIMEOUT/*SRB_STATUS_NO_DEVICE*/); + + /* Timer IRQ Enable*/ + ((PIRQ_CONTROLP)&DevExt->IrqMaskData)->TimerIrqMask = 0; + /* SCSI IRQ Enable*/ + ((PIRQ_CONTROLP)&DevExt->IrqMaskData)->ScsiIrqMask = 0; + SCSI_IRQ_CONTROL(baseAddress, DevExt->IrqMaskData); + + + Ns3DebugPrint (0x10,("-- Ns3Select FALSE ends -- ")); + return(FALSE); + } + /* + //--- Success Selection --- + */ + dataByte = 0; + dataByte |= AtnByte; + SCSI_WRITE(baseAddress,SCSIBUSCTRL, dataByte); /* SEL off*/ + + DevExt->TimerCount = 0; + SCSI_WRITE(baseAddress, TIMERCOUNT, 0); /* Timer stop */ + SCSI_WRITE(baseAddress, TIMERCOUNT, 0); /* Timer stop needs 2times */ + + /*AutoDirec / ACK Enable (Not same time in SEL off ...) */ + ((PSCSI_BUS_CONTROL)&dataByte)->AutoDirection = 1; + ((PSCSI_BUS_CONTROL)&dataByte)->AckEnb = 1; + SCSI_WRITE(baseAddress,SCSIBUSCTRL, dataByte); + + targetState = &DevExt->TargetState[srb->sc_link->target]; + + /* set sync parameter*/ + dataByte = 0; + ((PSYNC_REG)&dataByte)->SyncPeriod = targetState->SynchronousPeriod; + ((PSYNC_REG)&dataByte)->SyncOffset = targetState->SynchronousOffset; + SCSI_WRITE(baseAddress, SYNCREG,dataByte); + + SCSI_WRITE(baseAddress, ACKWIDTH, targetState->AckWidth); + + Ns3SetTransferMode( DevExt ); + + DevExt->ScsiState = SC_SELECT; + + /* + Adapter ready for next request. + */ + Ns3DebugPrint(0x01,( "Ns3Select: Select ATN OK. ID = %x ", + DevExt->TargetId)); + DELAY(50); + + DevExt->IntWait = TRUE; + + Ns3DebugPrint (0x10,("-- Ns3Select ends -- ")); + return(TRUE); + +} /* end Ns3Select()*/ + + + + + +boolean Ns3Initialize(int unit) +{ + pnin_softc DevExt = &(nin_data[unit]); + + u_long i; u_long FifoMax = 0x10000; + u_char dataByte; + TRANSFER_MODE xferMode; + int baseAddress = DevExt->BaseAddress; + u_char DefaultXfer = 0; + DevExt->unit = unit; + DevExt->BaseAddress = baseAddress; + +#ifndef USE_DISCONECT + DevExt->AdapterOption = OPT_NON_DISCONECT; +#endif /* USE_DISCONECT */ + + *((u_char *)&xferMode) = 0; + + xferMode.MemMap8 = 0; + xferMode.MemMap16_32 = 0; + xferMode.AdrData24 = 0; + xferMode.IO16_32 = 0; + xferMode.IO8 = 1; + + + FifoMax = 0x10000; + + DevExt->SSEntry = 0; + + xferMode.MemMap16_32 = 0; + xferMode.AdrData24 = 0; + xferMode.MemMap8 = 0; + DevExt->TransferMode= *(u_char *)&xferMode; + + /* Set default-trans-mode*/ + (*(u_char *)&xferMode) = 0; + xferMode.FifoTest_Braind = 0; + xferMode.TransferGo = 0; + + + /* TransferModeSet & TEST MODE OFF */ + SCSI_WRITE(baseAddress, TRANSFERMODE, *(u_char *)&xferMode); + +#ifdef USE_32BITTRANSFER + DevExt->pXferRead = pio32_datain; + DevExt->pXferWrite = pio32_dataout; +#else + DevExt->pXferRead = pio8_datain; + DevExt->pXferWrite = pio8_dataout; +#endif /* USE_32BITTRANSFER */ + + /* if hang-up any Phase and resetAthen Busfree Interrupt*/ + SCSI_WRITE(baseAddress, SCSIIRQMODE, 0); /* SCSI IRQ ALL DISABLE*/ + SCSI_IRQ_CONTROL(baseAddress, 0xff); /* IRQ all Mssk & clear */ +#ifdef ULTRA + SCSI_WRITE(baseAddress, CLOCKDIV , 2); /* 40MHz */ +#else + SCSI_WRITE(baseAddress, CLOCKDIV , 1); /* 20MHz */ +#endif + dataByte = 0; + ((PSCSI_IRQ_MODE)&dataByte)->ScsiResetIrqEi = 1; + ((PSCSI_IRQ_MODE)&dataByte)->FifoIrqEi= 0; /* Disable FIFO IRQ*/ + ((PSCSI_IRQ_MODE)&dataByte)->ReselectIrqEi = 1; + ((PSCSI_IRQ_MODE)&dataByte)->ScsiPhaseChangeEi = 1; + SCSI_WRITE(baseAddress, SCSIIRQMODE, dataByte); + + SCSI_WRITE(baseAddress, PARITYCTRL , 0); /* Parity Disable*/ + SCSI_WRITE(baseAddress, POINTERCLR , 0xf); /* All Pointer Clear*/ + + dataByte = 0; + ((PIF_SELECT)&dataByte)->RegSelect = 1; + SCSI_IF_SELECT(baseAddress, dataByte); /* FIFO Status Read set*/ + + /********************************************************/ + /* Reset Ns3 and SCSI bus.*/ + /********************************************************/ + DevExt->InterruptPending = FALSE; + DevExt->DmaPending = FALSE; + + /*Terminator Off !*/ + SCSI_WRITE(baseAddress, TERMPWRCTRL, 0); /* Terminator Off !*/ + dataByte = SCSI_READ(baseAddress, OTHERCONTROL); + if ( ! ((POTHER_CONTROL)&dataByte)->TermPwrSence ) /* Term Power ?;*/ + SCSI_WRITE(baseAddress, TERMPWRCTRL, 1); /* Terminator ON !*/ + + /********************************************************/ + /*--- SCSI BUS RESET ---*/ + /********************************************************/ + Ns3ResetScsiBus( DevExt ); + + /********************************************************/ + /*--- Cable Check ---*/ + /********************************************************/ + DevExt->ScsiCable = TRUE; + if ( (SCSI_READ(baseAddress,SCSIDATAIN)) || + (SCSI_READ(baseAddress,SCSIBUSMON)) ) { + DevExt->ScsiCable = FALSE; + SCSI_WRITE(baseAddress, TERMPWRCTRL, 0); /* Terminator Off !*/ + } + + *(u_char *)&xferMode = DevExt->TransferMode; + + /********************************************************/ + /* Can TransferMode Clear*/ + /********************************************************/ + for ( i = 0; i < 6; i++ ) { + DevExt->CanTransMode[i] = DefaultOk[i]; + } + /********************************************************/ + /* At first, Test for TransferMode in default */ + /********************************************************/ + DefaultXfer = Ns3FifoTest( unit,&DevExt->CanTransMode[0]); + + xferMode =(*(PTRANSFER_MODE)&DefaultXfer); + + + DevExt->TransferMode= *(u_char *)&xferMode; + /* TransferModeSet & TEST MODE OFF */ + SCSI_WRITE(baseAddress, TRANSFERMODE, *(u_char *)&xferMode); + + + if ( xferMode.IO16_32 ) { + DevExt->pXferRead = pio32_datain; + DevExt->pXferWrite = pio32_dataout; + } else if ( xferMode.IO8 ) { + DevExt->pXferRead = pio8_datain; + DevExt->pXferWrite = pio8_dataout; + } + SCSI_WRITE(baseAddress, CLOCKDIV , 2); + + return TRUE; +} /* end Ns3Initialize()*/ + +/* +//----------------------------------------------------------------------- +// Routine Name: +// nin_done +// +// Routine Description: +// +// This routine will perform any clean up operations for the Srb +// and notify the ScsiPort driver of completion. +// +//----------------------------------------------------------------------- +*/ +void nin_done( IN pnin_softc DevExt, + IN int err_code ) +{ + struct scsi_xfer *srb = DevExt->ActiveLogicalUnit->ActiveLuRequest; + + ScsiPortFreeLogicalUnit( + srb->sc_link->target, + srb->sc_link->lun); + + untimeout (nin_timeout, (caddr_t) DevExt); + srb->error = err_code; + srb->flags |= ITSDONE; + scsi_done(srb); + +} /* end nin_done()*/ + + + + + +/* +//---------------------------------------------------------------------------- +// Set transger mode & ruotine +//---------------------------------------------------------------------------- +*/ +void Ns3SetTransferMode( IN pnin_softc DevExt ) +{ + PSPECIFIC_LU_EXTENSION LuExtension = DevExt->ActiveLogicalUnit; + unsigned char dataByte; + + LuExtension->pXferRead = DevExt->pXferRead; + LuExtension->pXferWrite = DevExt->pXferWrite; + + /* FIFOTest & Option Set TransferMode*/ + dataByte = DevExt->TransferMode; + + ((PTRANSFER_MODE)&dataByte)->TransferGo = 1; + ((PTRANSFER_MODE)&dataByte)->FifoTest_Braind = 1; + /* Set transfer mode*/ + SCSI_WRITE(DevExt->BaseAddress, TRANSFERMODE, dataByte); + +} + + +/* +//----------------------------------------------------------------------- +// read FIFO +// +//----------------------------------------------------------------------- +*/ +unsigned long read_ack_count ( IN pnin_softc DevExt ) +{ + int baseAddress = DevExt->BaseAddress; + unsigned char dataByte; + unsigned char CountL,CountM, CountH; + unsigned long Count, Counter; + + dataByte = 0; + ((PPOINTER_CLEAR)&dataByte)->PointerClear = 1; + SCSI_WRITE(baseAddress, POINTERCLR, dataByte); /* ACK counter read set*/ + + CountL = inb(baseAddress+DATAREG); + CountM = inb(baseAddress+DATAREG); + CountH = inb(baseAddress+DATAREG); + + Counter = (unsigned long)( CountH*65536 + CountM*256 + CountL); + + /* Check Card */ + if ( Counter == 0xffffff ) return (0); + + /* Counter value at Disconnect */ + Count = Counter + DevExt->ActiveLogicalUnit->AckCounter; + Count -= DevExt->ActiveLogicalUnit->TransferedLength; + + return ( Count ); +} + + +/* +//----------------------------------------------------------------------- +// TransferRoutine +// +//----------------------------------------------------------------------- +// +*/ +/* + --- PIO 32bit DataInTransfer ---- +*/ +void pio32_datain (IN u_int BaseAddress , + char *Buffer, + size_t Length ) +{ + if ( Length & 0x3 ) { + Ns3DebugPrint(0x01,( "SCSI_READ_FIFOW [%x] (%x)byte", Buffer , Length)); + SCSI_READ_FIFOW(BaseAddress, Buffer , Length); + } else { + SCSI_READ_FIFOD(BaseAddress, Buffer , Length); + } +} + +/* + --- PIO 32bit DataOutTransfer pXferWrite() ---- +*/ +void pio32_dataout (IN u_int BaseAddress , + char *Buffer, + size_t Length ) +{ + if ( Length & 0x3 ) { + SCSI_WRITE_FIFOW(BaseAddress, Buffer , Length); + } else { + SCSI_WRITE_FIFOD(BaseAddress, Buffer , Length); + } +} + +/* + --- PIO 8bit DataInTransfer ---- +*/ +void pio8_datain (IN u_int BaseAddress , + char *Buffer, + size_t Length ) +{ + SCSI_READ_FIFO(BaseAddress, Buffer , Length); +} + +/* + --- PIO 8bit DataOutTransfer ---- +*/ +void pio8_dataout (IN u_int BaseAddress , + char *Buffer, + size_t Length ) +{ + SCSI_WRITE_FIFO(BaseAddress, Buffer , Length); +} + + +void Ns3BurstRead( IN pnin_softc DevExt ) +{ + int flags; + u_long Length; + IRQ_STATUS IrqStatus; + FIFO_STATUS FifoStatus; + uint baseAddress = DevExt->BaseAddress; + PSPECIFIC_LU_EXTENSION LuExtension = DevExt->ActiveLogicalUnit; + + while( DevExt->CurDataLength > 0 ) { + *((u_char *) &IrqStatus) = SCSI_IRQ_MONITOR(baseAddress); + if ( IrqStatus.ScsiIrqStatus ) { + break; + /** PhaseChange ? ***/ + } + *((u_char *) &FifoStatus) = SCSI_FIFO_STATUS(baseAddress); + if ( FifoStatus.FifoFullEmpty ) { + Length = DevExt->CurDataLength; + /* change maxmum transfer size*/ + if ( Length > READ_XFER_CNT) Length = READ_XFER_CNT; + + /* Call for TransferRoutine */ + + (*LuExtension->pXferRead)( baseAddress, + DevExt->CurDataPointer, Length ); + + flags = splbio(); + DevExt->CurDataPointer += Length; + DevExt->CurDataLength -= Length; + DevExt->ActiveLogicalUnit->TransferedLength += Length; + splx(flags); + } + } + + /* See now,but PhaseChange */ + *((u_char *) &IrqStatus) = SCSI_IRQ_MONITOR(baseAddress); + + /* Stop PhaseChange interrupt */ + if ( IrqStatus.ScsiIrqStatus ) { /* PhaseChange ?*/ + if ( DevExt->CurDataLength > 0) { + Length = read_ack_count(DevExt); + if (!(Length & 0x80000000)) { /* +[v0.32]*/ + (*LuExtension->pXferRead)( baseAddress, + DevExt->CurDataPointer, Length ); + } + flags = splbio(); + DevExt->CurDataPointer += Length; + DevExt->CurDataLength -= Length; + DevExt->ActiveLogicalUnit->TransferedLength += Length; + splx(flags); + } + } + + DevExt->ScsiState = SC_DATA; +} +/* +//----------------------------------------------------------------------- +// blind write +// +//----------------------------------------------------------------------- +*/ +void Ns3BurstWrite( IN pnin_softc DevExt ) +{ + u_long Length; + IRQ_STATUS IrqStatus; + FIFO_STATUS FifoStatus; + int baseAddress = DevExt->BaseAddress; + PSPECIFIC_LU_EXTENSION LuExtension = DevExt->ActiveLogicalUnit; +int flags; + + while( DevExt->CurDataLength > 0 ) { + *((u_char *) &IrqStatus) = SCSI_IRQ_MONITOR(baseAddress); + if ( IrqStatus.ScsiIrqStatus ) break; /* PhaseChange ?*/ + + *((u_char *) &FifoStatus) = SCSI_FIFO_STATUS(baseAddress); + if ( FifoStatus.FifoFullEmpty) { + + Length = DevExt->CurDataLength; + /* change maximum transfer number*/ + if ( Length > WRITE_BURST_CNT) Length = WRITE_BURST_CNT; + + /* Call for TransferRoutine */ + (*LuExtension->pXferWrite)( baseAddress, + DevExt->CurDataPointer, Length ); + + flags = splbio(); + DevExt->CurDataPointer += Length; + DevExt->CurDataLength -= Length; + DevExt->ActiveLogicalUnit->TransferedLength += Length ; + splx(flags); + } + } + + /* See now,but PhaseChange after sending */ + *((u_char *) &IrqStatus) = SCSI_IRQ_MONITOR(baseAddress); + + /* remain data inFIFO at PhaseChange */ + if ( IrqStatus.ScsiIrqStatus ) { /* PhaseChange ?*/ + if ( (Length = read_ack_count(DevExt)) ) { /* Length is Minus*/ + flags = splbio(); + DevExt->CurDataPointer += Length; + DevExt->CurDataLength -= Length; /* pointerwomodosu*/ + DevExt->ActiveLogicalUnit->TransferedLength += Length ; + splx(flags); + } + } + + DevExt->ScsiState = SC_DATA; +} +/* +//----------------------------------------------------------------------- +// spot read +// +//----------------------------------------------------------------------- +*/ +void Ns3SpotRead ( IN pnin_softc DevExt ) +{ + u_char dataByte; + int baseAddress = DevExt->BaseAddress; + IRQ_STATUS IrqStatus; + FIFO_STATUS FifoStatus; + u_long FifoCount; + long LoopCount = 0; + u_char ScsiPhase; + long i; + int flags; + PSPECIFIC_LU_EXTENSION LuExtension = DevExt->ActiveLogicalUnit; + ScsiPhase = SCSI_READ(baseAddress, SCSIBUSMON) & 0x7; + + if ( ScsiPhase == BP_DATA_IN ) { + if ( ((PIRQ_CONTROLP)&DevExt->IrqMaskData)->FifoIrqMask) { + dataByte = SCSI_READ(DevExt->BaseAddress, SCSIIRQMODE); + ((PSCSI_IRQ_MODE)&dataByte)->FifoIrqEi= 1; /* FIFO IRQ Enable*/ + SCSI_WRITE(DevExt->BaseAddress, SCSIIRQMODE, dataByte); + /* Release FIFO IRQ MASK */ + ((PIRQ_CONTROLP)&DevExt->IrqMaskData)->FifoIrqMask = 0; + } + + while (LoopCount == 0) { + *((u_char *) &IrqStatus) = SCSI_IRQ_MONITOR(baseAddress); + if ( IrqStatus.ScsiIrqStatus ) break; /* PhaseChange ?*/ + + *((u_char *) &FifoStatus) = SCSI_FIFO_STATUS(baseAddress); + if ( FifoStatus.FifoFullEmpty ) { + dataByte = 0xf0; + ((PIRQ_CONTROLP)&dataByte)->FifoIrqClear = 1; + SCSI_IRQ_CONTROL(baseAddress, dataByte); /* IRQ Clear*/ + + /* Read FIFO */ + FifoCount = read_ack_count( DevExt ) & 0xfffffe; + + /* Call for TransferRoutine */ + (*LuExtension->pXferRead)( baseAddress, + DevExt->CurDataPointer, FifoCount ); + + flags = splbio(); + DevExt->CurDataLength -= FifoCount ; + DevExt->CurDataPointer += FifoCount; + DevExt->ActiveLogicalUnit->TransferedLength += FifoCount ; + LoopCount++; + + DevExt->IntWait = FALSE; + splx(flags); + + for ( i = 0; i< INT_POLL_IRQ ; i++) { + *((u_char *) &IrqStatus) = SCSI_IRQ_MONITOR(baseAddress); + if ( IrqStatus.ScsiIrqStatus ) break; /* PhaseChange ?*/ + + *((u_char *) &FifoStatus) = SCSI_FIFO_STATUS(baseAddress); + if ( FifoStatus.FifoFullEmpty ) { /* FIFO FULL */ + LoopCount = 0; /* One moer*/ + break; + } + DELAY(2);/*ScsiPortStallExecution(2);*/ + } + } + } + } else { + /* other phase*/ + FifoCount = read_ack_count( DevExt ); /* Get FIFOremain*/ + (*LuExtension->pXferRead)( baseAddress, + DevExt->CurDataPointer, FifoCount ); + + flags = splbio(); + DevExt->CurDataLength -= FifoCount ; + DevExt->CurDataPointer += FifoCount; + DevExt->ActiveLogicalUnit->TransferedLength += FifoCount ; + splx(flags); + + dataByte = SCSI_READ(DevExt->BaseAddress, SCSIIRQMODE); + /* Disable FIFO IRQ */ + ((PSCSI_IRQ_MODE)&dataByte)->FifoIrqEi= 0; + SCSI_WRITE(DevExt->BaseAddress, SCSIIRQMODE, dataByte); + /* FIFO IRQ MASK*/ + ((PIRQ_CONTROLP)&DevExt->IrqMaskData)->FifoIrqMask = 1; + + DevExt->IntWait = TRUE; + return; + } + + /* Stoped in PhaseChange */ + if ( IrqStatus.ScsiIrqStatus && + ( FifoCount = read_ack_count(DevExt))) + { + (*LuExtension->pXferRead)( baseAddress, + DevExt->CurDataPointer, FifoCount ); + flags = splbio(); + DevExt->CurDataPointer += FifoCount; + DevExt->CurDataLength -= FifoCount; + DevExt->ActiveLogicalUnit->TransferedLength += FifoCount; + splx(flags); + + dataByte = SCSI_READ(DevExt->BaseAddress, SCSIIRQMODE); + /* Disable FIFO IRQ */ + ((PSCSI_IRQ_MODE)&dataByte)->FifoIrqEi= 0; + SCSI_WRITE(DevExt->BaseAddress, SCSIIRQMODE, dataByte); + + /* FIFO IRQ MASK*/ + ((PIRQ_CONTROLP)&DevExt->IrqMaskData)->FifoIrqMask = 1; + DevExt->IntWait = TRUE; + } + + DevExt->ScsiState = SC_DATA; /* Wait for next FifoFull */ +} +/* +//----------------------------------------------------------------------- +// +//----------------------------------------------------------------------- +*/ +void Ns3SpotWrite ( IN pnin_softc DevExt ) +{ + int flags; + u_char dataByte; + int baseAddress = DevExt->BaseAddress; + IRQ_STATUS IrqStatus; + FIFO_STATUS FifoStatus; + u_long FifoCount; + long LoopCount = 0; + long i; + PSPECIFIC_LU_EXTENSION LuExtension = DevExt->ActiveLogicalUnit; + + if ( ((PIRQ_CONTROLP)&DevExt->IrqMaskData)->FifoIrqMask) { + dataByte = SCSI_READ(DevExt->BaseAddress, SCSIIRQMODE); + /* FIFO IRQ Enable*/ + ((PSCSI_IRQ_MODE)&dataByte)->FifoIrqEi= 1; + SCSI_WRITE(DevExt->BaseAddress, SCSIIRQMODE, dataByte); + /* Release FIFO IRQ MASK */ + ((PIRQ_CONTROLP)&DevExt->IrqMaskData)->FifoIrqMask = 0; + } + + while (LoopCount == 0) { + *((u_char *) &IrqStatus) = SCSI_IRQ_MONITOR(baseAddress); + if ( IrqStatus.ScsiIrqStatus ) { + break; /* PhaseChange ?*/ + } + *((u_char *) &FifoStatus) = SCSI_FIFO_STATUS(baseAddress); + if ( FifoStatus.FifoFullEmpty) { + dataByte = 0xf0; + ((PIRQ_CONTROLP)&dataByte)->FifoIrqClear = 1; + SCSI_IRQ_CONTROL(baseAddress, dataByte); /* IRQ Clear*/ + + FifoCount = WRITE_SPOT_CNT; + if ( DevExt->CurDataLength < WRITE_SPOT_CNT ){ + FifoCount = DevExt->CurDataLength; + } + + /* Call for TransferRoutine */ + (*LuExtension->pXferWrite)( baseAddress, + DevExt->CurDataPointer, FifoCount ); + + flags = splbio(); + DevExt->CurDataLength -= FifoCount ; + DevExt->CurDataPointer += FifoCount;; + DevExt->ActiveLogicalUnit->TransferedLength += FifoCount ; + splx(flags); + if ( DevExt->CurDataLength == 0 ) { + DevExt->IntWait = TRUE; + break; + } + + LoopCount++; + DevExt->IntWait = FALSE; + + for ( i = 0; i< INT_POLL_IRQ ; i++) { + *((u_char *) &IrqStatus) = SCSI_IRQ_MONITOR(baseAddress); + if ( IrqStatus.ScsiIrqStatus ) { + break; /* PhaseChange ?*/ + } + + *((u_char *) &FifoStatus) = SCSI_FIFO_STATUS(baseAddress); + if ( FifoStatus.FifoFullEmpty ) { /* if FIFO Empty*/ + LoopCount = 0; /* Once more*/ + break; + } + DELAY(2); /* ScsiPortStallExecution(2); */ + } + } + } + + if ( IrqStatus.ScsiIrqStatus ) { /* PhaseChange ?*/ + DevExt->IntWait = TRUE; + } + DevExt->ScsiState = SC_DATA; /* Next FifoEmpty Wait*/ +} +/* +//----------------------------------------------------------------------- +// Slow Read +// +//----------------------------------------------------------------------- +*/ +void Ns3SlowRead ( IN pnin_softc DevExt ) +{ + int flags; + char *Buffer = DevExt->CurDataPointer; + u_char dataByte; + int baseAddress = DevExt->BaseAddress; + IRQ_STATUS IrqStatus; + FIFO_STATUS FifoStatus; + u_long FifoCount; + long LoopCount = 0; + u_char ScsiPhase; + + dataByte = 0; + ((PTRANSFER_MODE)&dataByte)->TransferGo = 1; + ((PTRANSFER_MODE)&dataByte)->IO8 = 1; + ((PTRANSFER_MODE)&dataByte)->FifoTest_Braind = 0; + SCSI_WRITE(baseAddress, TRANSFERMODE, dataByte); /* Set Transfer Mode*/ + + ScsiPhase = SCSI_READ(baseAddress, SCSIBUSMON) & 0x7; + + if ( ScsiPhase == BP_DATA_IN ) { + if ( ((PIRQ_CONTROLP)&DevExt->IrqMaskData)->FifoIrqMask) { + dataByte = SCSI_READ(DevExt->BaseAddress, SCSIIRQMODE); + /* FIFO IRQ Enable*/ + ((PSCSI_IRQ_MODE)&dataByte)->FifoIrqEi= 1; + SCSI_WRITE(DevExt->BaseAddress, SCSIIRQMODE, dataByte); + /* Release FIFO IRQ MASK*/ + ((PIRQ_CONTROLP)&DevExt->IrqMaskData)->FifoIrqMask = 0; + } + while (LoopCount == 0) { + *((u_char *) &IrqStatus) = SCSI_IRQ_MONITOR(baseAddress); + *((u_char *) &FifoStatus) = SCSI_FIFO_STATUS(baseAddress); + if ( FifoStatus.FifoFullEmpty ) { /* FIFO FULL?*/ + dataByte = 0xf0; + ((PIRQ_CONTROLP)&dataByte)->FifoIrqClear = 1; + SCSI_IRQ_CONTROL(baseAddress, dataByte); /* Clear IRQ*/ + } + if ( FifoStatus.FifoFullEmpty || IrqStatus.ScsiIrqStatus) { + FifoCount = read_ack_count( DevExt );/* Get FIFO remain*/ + SCSI_READ_FIFO( baseAddress, Buffer, FifoCount ); + flags = splbio(); + Buffer += FifoCount; + + DevExt->CurDataLength -= FifoCount ; + DevExt->CurDataPointer = Buffer; + DevExt->ActiveLogicalUnit->TransferedLength += FifoCount ; + LoopCount++; + splx(flags); + } + } + } else { + /* otheer Phase*/ + FifoCount = read_ack_count( DevExt ); /* read FIFO remain*/ + SCSI_READ_FIFO( baseAddress, Buffer, FifoCount ); + flags = splbio(); + Buffer += FifoCount; + + DevExt->CurDataLength -= FifoCount ; + DevExt->CurDataPointer = Buffer; + DevExt->ActiveLogicalUnit->TransferedLength += FifoCount ; + splx(flags); + return; + } + + DevExt->ScsiState = SC_DATA; /* Wait for next FifoFull */ +} +/* +//----------------------------------------------------------------------- +// +//----------------------------------------------------------------------- +*/ +void Ns3SlowWrite ( IN pnin_softc DevExt ) +{ + char* Buffer = DevExt->CurDataPointer; + u_char dataByte; + int baseAddress = DevExt->BaseAddress; + FIFO_STATUS FifoStatus; + u_long FifoCount; + int flags; + + dataByte = 0; + ((PTRANSFER_MODE)&dataByte)->TransferGo = 1; + ((PTRANSFER_MODE)&dataByte)->IO8 = 1; + ((PTRANSFER_MODE)&dataByte)->FifoTest_Braind = 0; + SCSI_WRITE(baseAddress, TRANSFERMODE, dataByte); /* TransferModeSet*/ + + if ( ((PIRQ_CONTROLP)&DevExt->IrqMaskData)->FifoIrqMask) { + dataByte = SCSI_READ(DevExt->BaseAddress, SCSIIRQMODE); + /* FIFO IRQ Enable*/ + ((PSCSI_IRQ_MODE)&dataByte)->FifoIrqEi= 1; + SCSI_WRITE(DevExt->BaseAddress, SCSIIRQMODE, dataByte); + /* Enable FIFO IRQ MAS K*/ + ((PIRQ_CONTROLP)&DevExt->IrqMaskData)->FifoIrqMask = 0; + } + + *((u_char *) &FifoStatus) = SCSI_FIFO_STATUS(baseAddress); + + if ( FifoStatus.FifoFullEmpty) { + dataByte = 0xf0; + ((PIRQ_CONTROLP)&dataByte)->FifoIrqClear = 1; + SCSI_IRQ_CONTROL(baseAddress, dataByte); /* IRQ Clear*/ + + FifoCount = 32; + if ( DevExt->CurDataLength < 32 ) + FifoCount = DevExt->CurDataLength; + + SCSI_WRITE_FIFO ( baseAddress, Buffer, FifoCount ); + flags = splbio(); + Buffer += FifoCount; + + DevExt->CurDataLength -= FifoCount ; + DevExt->CurDataPointer = Buffer; + DevExt->ActiveLogicalUnit->TransferedLength += FifoCount ; + splx(flags); + } + + DevExt->ScsiState = SC_DATA; /* Wait for Next FifoEmpty*/ + +} + +/* +//----------------------------------------------------------------------- +// Routine Name: +// +// Ns3RunPhase +// +// Routine Description: +// +// This routine runs through the bus phases until some type of completion +// indication is received. +// +// Arguments: +// +// DevExt - Device adapter context pointer. +// +// Return Value: +// +// None. +// +//----------------------------------------------------------------------- +*/ +void Ns3RunPhase( IN pnin_softc DevExt, + IN IRQ_PHASE_SENSE IrqPhase ) +{ + int baseAddress = DevExt->BaseAddress; + u_char dataByte; + u_long Count; + PSPECIFIC_TARGET_EXTENSION targetState; + int flags; + + /* slow transfer proc*/ + if ( IrqPhase.PhaseChgIrq && + ((PIRQ_CONTROLP)&DevExt->IrqMaskData)->FifoIrqMask == 0 ) { + + /* still H*/ + if ( (Count = read_ack_count(DevExt)) ) { + if ( DevExt->ScsiPrePhase == BP_DATA_IN) {/* prvious phase*/ + Ns3DataInPhase(DevExt); + }else { + flags = splbio(); + DevExt->CurDataLength -= Count; /* back pointer*/ + DevExt->CurDataPointer += Count; + /* Number of transfer-length */ + DevExt->ActiveLogicalUnit->TransferedLength += Count; + splx(flags); + } + } + dataByte = SCSI_READ(DevExt->BaseAddress, SCSIIRQMODE); + /* FIFO IRQ desable*/ + ((PSCSI_IRQ_MODE)&dataByte)->FifoIrqEi= 0; + SCSI_WRITE(DevExt->BaseAddress, SCSIIRQMODE, dataByte); + /* FIFO IRQ MASK*/ + ((PIRQ_CONTROLP)&DevExt->IrqMaskData)->FifoIrqMask = 1; + } + + /* + //--- BUS FREE ( DISCONNETCT ) ? ---- + */ + /*interrput in BusFree*/ + if ( IrqPhase.LatchBusFree ) + { + /* trans-mode is FIFOtest/option*/ + dataByte = DevExt->TransferMode; + ((PTRANSFER_MODE)&dataByte)->TransferGo = 0; + ((PTRANSFER_MODE)&dataByte)->FifoTest_Braind = 0; + /* TransferModeSet*/ + SCSI_WRITE(baseAddress, TRANSFERMODE, dataByte); + + /* Save AckCounter*/ + DevExt->ActiveLogicalUnit->AckCounter = + DevExt->ActiveLogicalUnit->TransferedLength; + + if ( DevExt->ScsiState == SC_COMPLETE ) { + nin_done(DevExt, XS_NOERROR/*SRB_STATUS_NO_DEVICE*/); + DevExt->ScsiState = SC_BUSFREE; + DevExt->IntWait = FALSE; + return; + } else if (DevExt->ScsiState == SC_DISCONNECT ) { + DevExt->ScsiState = SC_BUSFREE; + return; + } + + targetState = &DevExt->TargetState[DevExt ->TargetId]; + if (targetState->TargetFlags & PD_SYNCHRONOUS_TRANSFER_SENT) { + targetState->TargetFlags &= ~PD_SYNCHRONOUS_TRANSFER_SENT; + targetState->TargetFlags |= PD_DO_NOT_NEGOTIATE; + } + DevExt->ScsiState = SC_BUSFREE; + return; + } + + if(!DevExt->ActiveLogicalUnit->ActiveLuRequest) { + return; + } /* 1016 */ + + (*(u_char *)&IrqPhase) &= 0x7; + DevExt->ScsiPrePhase = (*(u_char *)&IrqPhase); + + switch (DevExt->ScsiPrePhase) { + case BP_COMMAND: + Ns3SendCDB(DevExt); /*Start commans phase*/ + + break; + + case BP_DATA_IN: + Ns3DataInPhase(DevExt); /* Start data phase*/ + break; + + case BP_DATA_OUT: + Ns3DataOutPhase(DevExt); /* Start data phase*/ + break; + + case BP_STATUS: + Ns3Status(DevExt); + break; + + case BP_MESSAGE_IN: + Ns3MessageIn(DevExt); + break; + + case BP_MESSAGE_OUT: + Ns3MessageOut(DevExt); + break; + + default: + DevExt->ScsiState = SC_COMPLETE; + break; + } + +} /* end Ns3RunPhase()*/ + +/* +//----------------------------------------------------------------------- +// Routine Name: +// +// Ns3DataInPhase +// +// Routine Description: +// +// This routine sets the DmaPending flag in the device extension, +// calls the OS-specific driver to set up the system DMA chip, +// and returns. Control is received again in DmaStarted when the DMA +// setup is complete. +// +// Arguments: +// +// DevExt - Device adapter context pointer. +// +// Return Value: +// +// TRUE if DMA started +// FALSE if missed request +// +//----------------------------------------------------------------------- +*/ +void Ns3DataInPhase( IN pnin_softc DevExt ) +{ + u_char targetId = DevExt->TargetId; + u_char devType; +/* u_long TransferLength = DevExt->CurDataLength;*/ + + DevExt->InterruptPending = FALSE; /* flag clear*/ + + DevExt->DmaPending = TRUE; + devType = DevExt->DeviceType[targetId]; + + +/*1014*/ +if (!DevExt) { + Ns3DebugPrint(0x10, ("Ns3DataInPhase in DevExt NULL\n")); + return; +} +if (!(DevExt->ActiveLogicalUnit) ) { + Ns3DebugPrint(0x10, ("Ns3DataInPhase in DevExt->ActiveLogicalUnit NULL\n")); + return; +} +if (!(DevExt->ActiveLogicalUnit->ActiveLuRequest) ) { + Ns3DebugPrint(0x10, ("Ns3DataInPhase in DevExt->ActiveLogicalUnit->ActiveLuRequest NULL\n")); + return; +} + + if (( DevExt->ActiveLogicalUnit-> + ActiveLuRequest->datalen < 0x100 + ) || + ( DevExt->ActiveLogicalUnit-> + ActiveLuRequest->datalen & 0x33 + ) ) + { + Ns3SlowRead ( DevExt ); /* Not divaid less than 256, */ + return; + } + + switch ( devType ) { + case 0: + case 5: + Ns3BurstRead( DevExt ); + break; + + default: + Ns3SpotRead ( DevExt ); + break; + } + +} /* end Ns3DataInPhase()*/ +/* +//----------------------------------------------------------------------- +// Routine Name: +// +// Ns3DataOutPhase +// +// Routine Description: +// +// This routine sets the DmaPending flag in the device extension, +// calls the OS-specific driver to set up the system DMA chip, +// and returns. Control is received again in DmaStarted when the DMA +// setup is complete. +// +// Arguments: +// +// DevExt - Device adapter context pointer. +// +// Return Value: +// +// TRUE if DMA started +// FALSE if missed request +// +//----------------------------------------------------------------------- +*/ +void Ns3DataOutPhase( IN pnin_softc DevExt ) +{ + u_char targetId = DevExt->TargetId; + u_char devType; + u_char dataByte; + + if(!DevExt) { + Ns3DebugPrint(0x10,( "Ns3DataOutPhase DevExt=NULL!\n")); + return; + } + if(!DevExt->ActiveLogicalUnit) { + Ns3DebugPrint(0x10,( "Ns3DataOutPhase ActiveLogicalUnit=NULL!\n")); + return; + } + if(!DevExt->ActiveLogicalUnit->ActiveLuRequest) { + Ns3DebugPrint(0x10,( "Ns3DataOutPhase ActiveLuRequest=NULL!\n")); + return; + } + + DevExt->InterruptPending = FALSE; /* flag clear*/ + DevExt->DmaPending = TRUE; + devType = DevExt->DeviceType[targetId]; + + + if ( (DevExt->ActiveLogicalUnit-> + ActiveLuRequest->datalen < 0x100) || + (DevExt->ActiveLogicalUnit-> + ActiveLuRequest->datalen & 3) + ) + { + Ns3SlowWrite ( DevExt ); /* Smaller than 256 or x/4 != 0 ? */ + return; + } + + dataByte = DevExt->TransferMode; + /* Set TransferMode in FIFOTest / Option */ + /* munya.. */ + + Ns3SpotWrite ( DevExt ); +} /* end Ns3DataOutPhase()*/ +/* +//----------------------------------------------------------------------- +// Routine Name: +// +// Ns3SendCDB +// +// Routine Description: +// +// Send the SCSI Command Descriptor Block (CDB) to the indicated target/lun. +// +// Arguments: +// +// DevExt - Device adapter context pointer. +// +// Return Value: +// +// None +// +//----------------------------------------------------------------------- +*/ + +void Ns3SendCDB( IN pnin_softc DevExt ) +{ + int baseAddress = DevExt->BaseAddress; + u_char dataByte; + + dataByte = SCSI_READ(baseAddress, SCSIBUSMON); + if ( ((PSCSI_BUS_MONITOR)&dataByte)->Scsi_ATN ) { /* Still ATN ?*/ + /* SCSI-1 Device */ + dataByte = 0; + ((PSCSI_BUS_CONTROL)&dataByte)->AutoDirection = 1; + ((PSCSI_BUS_CONTROL)&dataByte)->AckEnb = 1; + SCSI_WRITE(baseAddress, SCSIBUSCTRL, dataByte); /* ATN off*/ + } + + /* Clear transfer counter*/ + dataByte = 0; + ((PPOINTER_CLEAR)&dataByte)->PointerClear = 1; + ((PPOINTER_CLEAR)&dataByte)->AckCounterClear = 1; + ((PPOINTER_CLEAR)&dataByte)->ReqCounterClear = 1; + ((PPOINTER_CLEAR)&dataByte)->HostCounterClear = 1; + SCSI_WRITE(baseAddress, POINTERCLR, dataByte); + + DevExt->ActiveLogicalUnit->AckCounter = 0; + DevExt->ActiveLogicalUnit->HostCounter = 0; + + /* send CDB*/ + dataByte = 0; + ((PCOMMAND_CONTROL)&dataByte)->AutoCommandGo = 1; + ((PCOMMAND_CONTROL)&dataByte)->ClrCommandPointer = 1; + SCSI_WRITE(baseAddress, COMMANDCTRL, dataByte); + + DevExt->ScsiState = SC_UNDETERMINED; + + /* + // Set up the running data pointer info for a possible data transfer. + */ + DevExt->CurDataPointer = + DevExt->ActiveLogicalUnit->SavedDataPointer; + DevExt->CurDataLength = + DevExt->ActiveLogicalUnit->SavedDataLength; + + DevExt->ActiveLogicalUnit->TransferedLength = 0; + + /* Enable Interrupt */ + DevExt->InterruptPending = TRUE; + +} /* end Ns3SendCDB()*/ + + +/* +//----------------------------------------------------------------------- +// Routine Name: +// +// Ns3MessageOut +// +// Routine Description: +// +// This routine will sent the message to the target. +// +//----------------------------------------------------------------------- +*/ +void Ns3MessageOut( IN pnin_softc DevExt ) +{ + int baseAddress = DevExt->BaseAddress; + u_char dataByte; + u_char * msg = &DevExt->MessageBuffer[0]; + IRQ_STATUS IrqStatus; + + /* MessageOut,NoOperation*/ + if ( DevExt->MessageCount == 0 ) { + DevExt->MessageBuffer[0] = MSG_NOOP; /* MSG_NOOP 0x08 */ + DevExt->MessageCount = 1; + } + + do { + *((u_char *) &IrqStatus) = SCSI_IRQ_MONITOR(baseAddress); + if (IrqStatus.ScsiIrqStatus) { + break; + } + + dataByte = SCSI_READ(baseAddress, SCSIBUSMON) & S_PHASE_MASK; + if ( dataByte == BM_MESSAGE_OUT ) { + + if ( DevExt->MessageCount == 1) { /* last byte ?*/ + dataByte = 0; + ((PSCSI_BUS_CONTROL)&dataByte)->AutoDirection = 1; + ((PSCSI_BUS_CONTROL)&dataByte)->AckEnb = 1; + /* ATN Off !*/ + SCSI_WRITE(baseAddress , SCSIBUSCTRL, dataByte); + } + + /* message output*/ + SCSI_WRITE(baseAddress ,SCSIDATAWITHACK, *msg); + Ns3WaitForAckOff(DevExt); + + msg++; + DevExt->MessageCount--; + } + } while ( DevExt->MessageCount != 0 ); + + /* phase change. Off ATN */ + if ( IrqStatus.ScsiIrqStatus && DevExt->MessageCount != 0) { + dataByte = 0; + ((PSCSI_BUS_CONTROL)&dataByte)->AutoDirection = 1; + ((PSCSI_BUS_CONTROL)&dataByte)->AckEnb = 1; + SCSI_WRITE(baseAddress , SCSIBUSCTRL, dataByte); /* ATN Off !*/ + } + + DevExt->ScsiState = SC_UNDETERMINED; +} /* end Ns3MessageOut()*/ + + +/* +//----------------------------------------------------------------------- +// Routine Name: +// +// Ns3MessageIn +// +// Routine Description: +// +// This routine will receive the message from the target. +// +//----------------------------------------------------------------------- +*/ +void Ns3MessageIn( IN pnin_softc DevExt ) +{ + PSPECIFIC_LU_EXTENSION luExtension; + struct scsi_xfer * srb; + int baseAddress = DevExt->BaseAddress; + u_char * msg = &DevExt->MessageBuffer[0]; + u_char dataByte; + IRQ_STATUS IrqStatus; + u_long MessageCount = 0; + boolean NegAck = TRUE; + PSPECIFIC_TARGET_EXTENSION targetState; + + DevExt->MessageCount = 0; + + luExtension = DevExt->ActiveLogicalUnit; + if ( luExtension ) { /* reselection = NULL*/ + srb = luExtension->ActiveLuRequest; + targetState = &DevExt->TargetState[srb ->sc_link->target]; + } else { + return; + } + + /* + // --- message first byte + // + read Ninja */ + dataByte = SCSI_READ(baseAddress, SCSIBUSMON) & S_PHASE_MASK; + /* message in phase? is &req?*/ + if ( dataByte == BM_MESSAGE_IN ) { + /* read msg byte*/ + *msg = SCSI_READ(baseAddress, SCSIDATAIN); +/* srb->SCp.Message = *msg;*/ + + dataByte = SCSI_READ(baseAddress, SCSIBUSCTRL); + ((PSCSI_BUS_CONTROL)&dataByte)->ScsiACK = 1; + SCSI_WRITE(baseAddress , SCSIBUSCTRL, dataByte); /* ACK On !*/ + + /* if return value is FALSE? */ + Ns3WaitForReqOff(DevExt); /* REQ off ?*/ + + /* + //--- Identify Message ? ---- + */ + if ( *msg & MSG_IDENTIFYFLAG ) {/* 0x80 = MSG_IDENTIFYFLAG ? */ + DevExt->TargetLun = *msg & 0xf; + /* now reselecting?*/ + if ( DevExt->ScsiState == SC_RESELECT ) { + Ns3ProcessReselection(DevExt); + } + } else { + DevExt->ScsiState = SC_UNDETERMINED; + switch ( *msg ) { + case MSG_CMDCOMPLETE : + DevExt->ScsiState = SC_COMPLETE; + break; + + case MSG_DISCONNECT : +/* srb->device->disconnect = 1;*/ + DevExt->ScsiState = SC_DISCONNECT; + dataByte = SCSI_READ(baseAddress, SCSIBUSCTRL); + ((PSCSI_BUS_CONTROL)&dataByte)->ScsiACK = 0; + SCSI_WRITE(baseAddress , SCSIBUSCTRL, dataByte); /* ACK off !*/ + return; + break; + + case MSG_SAVEDATAPOINTER : + MessageCount = 1; /* Wait DISCONNECT msg*/ + DevExt->ScsiState = SC_DISCONNECT; + luExtension->SavedDataPointer = + DevExt->CurDataPointer; + luExtension->SavedDataLength = + DevExt->CurDataLength; + break; + + case MSG_RESTOREPOINTERS: + DevExt->CurDataPointer = luExtension->SavedDataPointer; + DevExt->CurDataLength = luExtension->SavedDataLength; + break; + + case MSG_EXTENDED : + MessageCount = 6; /* max-len ext-msg*/ + if (targetState->TargetFlags & PD_SYNCHRONOUS_TRANSFER_SENT) + MessageCount = 4; + NegAck = FALSE; /* Not NEG ACK at last byte*/ + break; + + case MSG_MESSAGE_REJECT: + Ns3DebugPrint(0x008, ("MSG_MESSAGE_REJECT\n")); + if (targetState->TargetFlags & PD_SYNCHRONOUS_TRANSFER_SENT) { + targetState->TargetFlags &= ~PD_SYNCHRONOUS_TRANSFER_SENT; + targetState->TargetFlags |= PD_DO_NOT_NEGOTIATE; + } + break; + + } + } + + dataByte = SCSI_READ(baseAddress, SCSIBUSCTRL); + ((PSCSI_BUS_CONTROL)&dataByte)->ScsiACK = 0; + SCSI_WRITE(baseAddress , SCSIBUSCTRL, dataByte); /* ACK Off !*/ + + msg++; + DevExt->MessageCount ++; + } + + /********************************************************/ + /* --- get next-message*/ + *((u_char *) &IrqStatus) = SCSI_IRQ_MONITOR(baseAddress); + while ( !(IrqStatus.ScsiIrqStatus)) { /* still phase-chg*/ + + dataByte = SCSI_READ(baseAddress, SCSIBUSMON) & S_PHASE_MASK; + + /* no next-msg & control-line not message-in*/ +/*-[v0.50] for OLY MO*/ +/* if ((MessageCount == 0) && ((dataByte & 0x7) != BP_MESSAGE_IN) )*/ +/* break;*/ + + /* Is mgs-in phase & req ?*/ + if ( dataByte == BM_MESSAGE_IN ) { + *((u_char *) &IrqStatus) = SCSI_IRQ_MONITOR(baseAddress); + /*if PhaseChange here,maybe Reselection Message*/ + if ( IrqStatus.ScsiIrqStatus ) break; + + *msg = SCSI_READ(baseAddress, SCSIDATAIN);/* read msg-byte */ + + if ( *msg == MSG_DISCONNECT ) { + Ns3DebugPrint(0x008, ("MsgIn:msg == MSG_DISCONNECT\n")); +/* srb->device->disconnect = 1;*/ + DevExt->ScsiState = SC_DISCONNECT; + } + + + dataByte = SCSI_READ(baseAddress, SCSIBUSCTRL); + ((PSCSI_BUS_CONTROL)&dataByte)->ScsiACK = 1; + SCSI_WRITE(baseAddress , SCSIBUSCTRL, dataByte); /* ACK On !*/ + + /* if return value is FALSE? */ + Ns3WaitForReqOff(DevExt); /* REQ Off ?*/ + if ( ( MessageCount != 1) || ( MessageCount == 1 && NegAck )) { + dataByte = SCSI_READ(baseAddress, SCSIBUSCTRL); + ((PSCSI_BUS_CONTROL)&dataByte)->ScsiACK = 0; + SCSI_WRITE(baseAddress , SCSIBUSCTRL, dataByte);/* ACK Off !*/ + } + + msg++; + DevExt->MessageCount ++; + if ( MessageCount != 0 ) MessageCount--; + + /* if Neg ACK at last Byte Mod, finish*/ + if ( MessageCount == 0 && !NegAck ) break; + } + *((u_char *) &IrqStatus) = SCSI_IRQ_MONITOR(baseAddress); + } /* while ( !(IrqStatus.ScsiIrqStatus)); wait for PhaseChange */ + + if (DevExt->MessageBuffer[0] == MSG_EXT_SDTR ) { + dataByte = SCSI_READ(baseAddress, SCSIBUSCTRL); + ((PSCSI_BUS_CONTROL)&dataByte)->ScsiACK = 0; /* ACK Off !*/ + if (Ns3MessageDecode( DevExt )) /* Is Message after Decode*/ + ((PSCSI_BUS_CONTROL)&dataByte)->ScsiATN = 1; /* ATN On !*/ + SCSI_WRITE(baseAddress , SCSIBUSCTRL, dataByte); + } + +} /* end Ns3MessageIn()*/ + + +/* +//----------------------------------------------------------------------- +// Routine Name: +// +// Ns3Status +// +// Routine Description: +// +// This routine will obtain the status from the target. +// +// Arguments: +// +// DevExt - Device adapter context pointer. +// +// Return Value: +// +// None +// +//----------------------------------------------------------------------- +*/ +void Ns3Status( IN pnin_softc DevExt ) +{ + u_char status; +/* u_char srbStatus;*/ + u_char dataByte; + struct scsi_xfer *srb ; +/*= DevExt->ActiveLogicalUnit->ActiveLuRequest;*/ + int baseAddress = DevExt->BaseAddress; + + if(!DevExt->ActiveLogicalUnit) { +/* panic("Ns3Status:DevExt->ActiveLogicalUnit == NULL[1]");*/ + Ns3DebugPrint(0x008, ("Ns3Status:DevExt->ActiveLogicalUnit == NULL \n")); + return; + } + + srb = DevExt->ActiveLogicalUnit->ActiveLuRequest; + + if(!srb) { + Ns3DebugPrint(0x008, ("Ns3Status srb = null!! \n")); + return; + } + + dataByte = SCSI_READ(baseAddress, SCSIBUSMON) & S_PHASE_MASK; + if ( dataByte == BM_STATUS ) { /* Is Status Phase &req ?*/ + + status = SCSI_READ(baseAddress, SCSIDATAWITHACK);/* read Status byte*/ + +/* srb->SCp.Status = status;*/ + switch (status) { + case SCSI_CONDITION_MET: +/* srb->flags |= WAS_SENSE;*/ + case SCSI_OK: + case SCSI_INTERM: + case SCSI_INTERMEDIATE_COND_MET: + if ( (srb->cmd) && /* this line added at 1014 */ + (srb->cmd->opcode == 0x12) && + (srb->sc_link->lun == 0) ){ /* !! */ + DevExt->DeviceType[srb->sc_link->target] = + *(u_char *)(srb->data); + if ( DevExt->DeviceType[srb->sc_link->target] == 6 || /*+[v1.02]*/ + DevExt->DeviceType[srb->sc_link->target] == 3) { + PSPECIFIC_TARGET_EXTENSION targetState; + targetState = &DevExt-> + TargetState[srb->sc_link->target]; + targetState->TargetFlags |= + PD_SYNCHRONOUS_NEGOTIATION_DONE; + } + } + srb->datalen = /*datalen = srb->DataTransferLength = */ + DevExt->ActiveLogicalUnit->TransferedLength ; +/* srbStatus = SRB_STATUS_SUCCESS;*/ + break; + + case SCSI_CHECK: + case SCSI_COMMAND_TERMINATED: +/* srbStatus = SRB_STATUS_ERROR;*/ + break; + + case SCSI_BUSY: + case SCSI_RESERVATION_CONFLICT: + case SCSI_QUEUE_FULL: + default: +/* srbStatus = SRB_STATUS_BUSY;*/ + break; + } + + Ns3WaitForAckOff(DevExt); + + /********************************************************/ + /* If some error condition already occurred (e.g., parity error), we'll*/ + /* let that one take priority.*/ + /********************************************************/ +/* + if (srb->SrbStatus == SRB_STATUS_PENDING) + srb->SrbStatus = srbStatus; +*/ + } /* if BM_STATUS*/ + + DevExt->ScsiState = SC_UNDETERMINED; + +} /* end Ns3Status()*/ + + +/* +//----------------------------------------------------------------------- +// Routine Name: +// Ns3WaitForAckOff +// +// Routine Description: +// Spin checking the status of the Ns3 adapter until it indicates that +// the SCSI ACK line is Low +// +// Return Value: +// TRUE - indicates that the SCSI REQUEST line was Negated in time. +// FALSE - indicates timeout occurred while waiting for the SCSI REQUEST +// line. +//----------------------------------------------------------------------- +*/ +boolean Ns3WaitForAckOff( pnin_softc DevExt ) +{ + int baseAddress = DevExt->BaseAddress; + u_long spinCount = REQUEST_SPIN_WAIT; + u_char dataByte; + + do { + dataByte = SCSI_READ(baseAddress, SCSIBUSMON); + if ( !((PSCSI_BUS_MONITOR)&dataByte)-> Scsi_ACK ) {/* ACK Off ?*/ + return TRUE; + } + DELAY(2); + } while (spinCount--); + + nin_done(DevExt, XS_TIMEOUT); + return FALSE; + +} /* end Ns3WaitForAckOff()*/ + + +/* +//----------------------------------------------------------------------- +// Routine Name: +// +// Ns3WaitForReqOff +// +// Routine Description: +// +// Spin checking the status of the Ns3 adapter until it indicates that +// the SCSI REQUEST line is high. +// +// Arguments: +// +// DevExt - Device adapter context pointer. +// +// Return Value: +// +// TRUE - indicates that the SCSI REQUEST line was asserted in time. +// FALSE - indicates timeout occurred while waiting for the SCSI REQUEST +// line. +//----------------------------------------------------------------------- +*/ +boolean Ns3WaitForReqOff( pnin_softc DevExt ) +{ + int baseAddress = DevExt->BaseAddress; + u_long spinCount = REQUEST_SPIN_WAIT; + u_char dataByte; + + do { + dataByte = SCSI_READ(baseAddress, SCSIBUSMON); + if ( !((PSCSI_BUS_MONITOR)&dataByte)-> Scsi_REQ ) /* REQ Off ?*/ + return TRUE; + } while (spinCount--); + + /* must call scsi_done()? */ + + Ns3DebugPrint(0x04, ("TIMEOUT\n")); + nin_done(DevExt, XS_TIMEOUT); + return FALSE; + +} /* end Ns3WaitForReqOff()*/ + + + + +/* +//----------------------------------------------------------------------------- +// RESELECTION +//----------------------------------------------------------------------------- +*/ +boolean Ns3ProcessReselection( IN pnin_softc DevExt ) +{ +/* u_char pathId = 0;*/ + PSPECIFIC_LU_EXTENSION luExtension; + struct scsi_xfer *srb; + PSPECIFIC_TARGET_EXTENSION targetState; + int baseAddress = DevExt->BaseAddress; + u_char dataByte; + + targetState = &DevExt->TargetState[DevExt->TargetId]; + + /********************************************************/ + /* Get the specific logical unit extension.*/ + /********************************************************/ + luExtension = ScsiPortGetLogicalUnit(/*DevExt,pathId,*/ + DevExt->TargetId, /* DevExt->sc_link.target,//argetId,*/ + DevExt->TargetLun); /* sc_link.lun ->TargetLun );*/ + + DevExt->ActiveLogicalUnit = luExtension; + + if (!luExtension || !luExtension->ActiveLuRequest) { + /* SP_INVALID_RESELECTION ErrorCode,*/ + Ns3DebugPrint(0x10,( "Reselection Failed.\n")); + + /* + // Send an abort message. Put the message-in the buffer, set the + // state, indicate that a disconnect is expected after this, and + // set the attention signal. + */ + + DevExt->MessageBuffer[0] = MSG_ABORT; + DevExt->MessageCount = 1; + +/* + // + // The target and logical unit specified are not valid. A + // MESSAGE REJECT message has been set up. Set ATN and accept the + // message. + // +*/ + dataByte = SCSI_READ(baseAddress, SCSIBUSCTRL); + /* ATN ON !-> send-mdg mode*/ + ((PSCSI_BUS_CONTROL)&dataByte)->ScsiATN = 1; + /* ACK Off !*/ + ((PSCSI_BUS_CONTROL)&dataByte)->ScsiACK = 0; + SCSI_WRITE(baseAddress , SCSIBUSCTRL, dataByte); + nin_done(DevExt,XS_BUSY); + return(FALSE); + + } + + Ns3DebugPrint(0x10,( "Ns3ProResel: Resel Start ID=%d\n", + DevExt->TargetId)); + + srb = luExtension->ActiveLuRequest; + + Ns3SetTransferMode( DevExt ); /* TransferModeSet*/ +/* + // + // A reselection has been completed. Set the active logical unit, + // restore the active data pointer, set the state. + // In addition, any adapter flags set by a pending select must be + // cleared using the disconnect mask. + // +*/ + DevExt->CurDataPointer = luExtension->SavedDataPointer; + DevExt->CurDataLength = luExtension->SavedDataLength; + DevExt->MessageCount = 0; + + dataByte = SCSI_READ(baseAddress, SCSIBUSCTRL); + ((PSCSI_BUS_CONTROL)&dataByte)->ScsiACK = 0; /* ACK Off !*/ + SCSI_WRITE(baseAddress , SCSIBUSCTRL, dataByte); + + return(TRUE); +} + + +boolean Ns3MessageDecode( IN pnin_softc DevExt ) +{ + struct scsi_xfer *srb = + DevExt->ActiveLogicalUnit->ActiveLuRequest; + PSPECIFIC_TARGET_EXTENSION targetState = + &DevExt->TargetState[srb ->sc_link->target]; + PSCSI_EXMSG exMsg; + long offset; + long i; + int flags; + + exMsg = (PSCSI_EXMSG)DevExt->MessageBuffer; + + switch (exMsg->MessageType) { + case SCSIMESS_MODIFY_DATA_POINTER: + /********************************************************/ + /* Verify the message length.*/ + /********************************************************/ + if (exMsg->MessageLength != SCSIMESS_MODIFY_DATA_LENGTH) { + /********************************************************/ + /* Reject the message.*/ + /********************************************************/ + DevExt->MessageCount = 1; + DevExt->MessageBuffer[0] = MSG_MESSAGE_REJECT; + return(TRUE); + } + + /********************************************************/ + /* Calculate the modification to be added to the data pointer.*/ + /********************************************************/ + offset = 0; + for (i = 0; i < 4; i++) { +/* ???? offset << 8;*/ + offset += exMsg->ExArg.MODIFY.modifier[i]; + } + + /********************************************************/ + /* Verify that the new data pointer is still within the range*/ + /* of the buffer.*/ + /********************************************************/ + + if (DevExt->CurDataLength - offset > + /* srb->DataTransferLength ||*/ + srb->datalen ||/*srb->datalen ||*/ + ((long) DevExt->CurDataLength - offset) < 0 ) + { + /********************************************************/ + /* The new pointer is not valid, so reject the message.*/ + /********************************************************/ + DevExt->MessageCount = 1; + DevExt->MessageBuffer[0] = MSG_MESSAGE_REJECT; + return(TRUE); + } + /********************************************************/ + /* Everything has checked out, so update the pointer.*/ + /********************************************************/ + flags = splbio(); + DevExt->CurDataPointer += offset; + DevExt->CurDataLength -= offset; + splx(flags); + + /********************************************************/ + /* Everything is ok, so accept the message as is.*/ + /********************************************************/ + DevExt->MessageCount = 0; + DevExt->ScsiState = SC_COMPLETE_OK; /*MessageAccepted;*/ + return(FALSE); + + case SCSIMESS_SYNCHRONOUS_DATA_REQ: + /********************************************************/ + /* A SYNCHRONOUS DATA TRANSFER REQUEST message was received.*/ + /* Make sure the length is correct.*/ + /********************************************************/ + + if ( exMsg->MessageLength != SCSIMESS_SYNCH_DATA_LENGTH) { + /********************************************************/ + /* The length is invalid reject the message.*/ + /********************************************************/ + DevExt->MessageCount = 1; + DevExt->MessageBuffer[0] = MSG_MESSAGE_REJECT; + return(TRUE); + } + + /********************************************************/ + /* If synchrouns negotiation has been disabled for this request,*/ + /* then reject any synchronous messages; however, when synchronous*/ + /* transfers are allowed then a new attempt can be made.*/ + /********************************************************/ + + if (srb != NULL && + !(targetState->TargetFlags & PD_SYNCHRONOUS_TRANSFER_SENT) +/* && srb->SrbFlags & SRB_FLAGS_DISABLE_SYNCH_TRANSFER*/ + ) { + /********************************************************/ + /* Reject the synchronous transfer message since synchonrous*/ + /* transfers are not desired at this time.*/ + /********************************************************/ + DevExt->MessageCount = 1; + DevExt->MessageBuffer[0] = MSG_MESSAGE_REJECT; + return(TRUE); + } + /********************************************************/ + /* Call WdDecodeSynchronousMessage to decode the message and*/ + /* formulate a response if necessary.*/ + /* NcrDecodeSynchronousRequest will return FALSE if the*/ + /* message is not accepable and should be rejected.*/ + /********************************************************/ + if (!Ns3DecodeSynchronousRequest( + DevExt, + targetState, + srb->sc_link->target, + (boolean)!(targetState->TargetFlags & + PD_SYNCHRONOUS_TRANSFER_SENT) )) + { + /********************************************************/ + /* Indicate that a negotiation has been done in the logical*/ + /* unit and clear the negotiation flags.*/ + /********************************************************/ + targetState->TargetFlags |= PD_SYNCHRONOUS_NEGOTIATION_DONE; + targetState->TargetFlags &=~(PD_SYNCHRONOUS_TRANSFER_SENT); + + /********************************************************/ + /* The message was not acceptable so send a MESSAGE_REJECT.*/ + /********************************************************/ + DevExt->MessageCount = 1; + DevExt->MessageBuffer[0] = MSG_MESSAGE_REJECT; + return(TRUE); + } + + /********************************************************/ + /* If a reponse was expected, then set the state for a message-out.*/ + /* Otherwise, NcrDecodeSynchronousRequest has put a reponse*/ + /* in the message buffer to be returned to the target.*/ + /********************************************************/ + + if (targetState->TargetFlags & PD_SYNCHRONOUS_TRANSFER_SENT){ + /********************************************************/ + /* We initiated the negotiation, so no response is necessary.*/ + /********************************************************/ + targetState->TargetFlags &= ~PD_SYNCHRONOUS_TRANSFER_SENT; + targetState->TargetFlags |= PD_SYNCHRONOUS_NEGOTIATION_DONE; + return(FALSE); + } + + /********************************************************/ + /* Set up the state to send the reponse. The message count is*/ + /* still correct.*/ + /********************************************************/ + DevExt->ScsiState = SC_MSG_OUT;/* MessageOut;*/ + targetState->TargetFlags &= ~PD_SYNCHRONOUS_TRANSFER_SENT; + return(TRUE); + + case SCSIMESS_WIDE_DATA_REQUEST: + /********************************************************/ + /* A WIDE DATA TRANSFER REQUEST message was received.*/ + /********************************************************/ + DevExt->MessageCount = 1; + DevExt->MessageBuffer[0] = MSG_MESSAGE_REJECT; + return(TRUE); + + default: + /********************************************************/ + /* This is an unknown or illegal message, so send message REJECT.*/ + /********************************************************/ + DevExt->MessageCount = 1; + DevExt->MessageBuffer[0] = MSG_MESSAGE_REJECT; + return(TRUE); + } +} +/* +//----------------------------------------------------------------------------- +// SYNCHRONOUS_DATA_REQ +// +//Routine Description: Ns3DecodeSynchronousRequest +// +// This function decodes the synchronous data transfer request message from +// the target. It will update the synchronous message in the buffer and the +// synchronous transfer parameters in the logical unit extension. These +// parameters are specific for the WD 53C9X protocol chip. The updated +// message in the device extension message buffer might be returned to the +// target. +// +// This function should be called before the final byte of the message is +// accepted from the SCSI bus. +// +//Arguments: +// +// DevExt - Supplies a pointer to the adapter-specific device +// extension. +// +// LuExtension - Supplies a pointer to the logical unit's device extension. +// The synchronous transfer fields are updated in this structure to +// reflect the new parameter in the message. +// +// ResponseExpected - When set, indicates that the target initiated the +// negotiation and that it expects a response. +// +//Return Value: +// +// TRUE - Returned if the request is acceptable. +// +// FALSE - Returned if the request should be rejected and a synchronous +// transfer should be used. +// +//----------------------------------------------------------------------------- +*/ +boolean Ns3DecodeSynchronousRequest( + IN pnin_softc DevExt, + PSPECIFIC_TARGET_EXTENSION TargetState, + IN u_char TargetID, + IN boolean ResponseExpected ) +{ + PSCSI_EXMSG exMsg; + long period; + long i; + u_char dataByte; + + exMsg = (PSCSI_EXMSG) DevExt->MessageBuffer; + + /********************************************************/ + /* Determine the transfer offset. It is the minimum of the SCSI protocol*/ + /* chip's maximum offset and the requested offset.*/ + /********************************************************/ + if (exMsg->ExArg.SYNCS.ReqAckOffset > SYNCHRONOUS_OFFSET) { + + if (!ResponseExpected) { + /********************************************************/ + /* The negotiation failed for some reason, fall back to*/ + /* asynchronous data transfer.*/ + /********************************************************/ + TargetState->SynchronousOffset = ASYNCHRONOUS_OFFSET; + TargetState->SynchronousPeriod = ASYNCHRONOUS_PERIOD; + TargetState->AckWidth = 0; + return(FALSE); + } + + exMsg->ExArg.SYNCS.ReqAckOffset = SYNCHRONOUS_OFFSET; + TargetState->SynchronousOffset = SYNCHRONOUS_OFFSET; + + } else { + TargetState->SynchronousOffset = exMsg->ExArg.SYNCS.ReqAckOffset; + } + + /********************************************************/ + /* If the offset requests asynchronous transfers then set the default*/ + /* period and return.*/ + /********************************************************/ + + if (exMsg->ExArg.SYNCS.ReqAckOffset == ASYNCHRONOUS_OFFSET) + { + TargetState->SynchronousPeriod = ASYNCHRONOUS_PERIOD; + TargetState->SynchronousOffset = ASYNCHRONOUS_OFFSET; + TargetState->AckWidth = 0; + return(TRUE); + } + + /********************************************************/ + /* Check to see if the period is less than the SCSI protocol chip can*/ + /* use. If it is then update the message with our minimum and return.*/ + /********************************************************/ + + if (exMsg->ExArg.SYNCS.TransferPeriod < SYNCHRONOUS_PERIOD ) + { + if (!ResponseExpected) { + /********************************************************/ + /* The negotiation failed for some reason, fall back to*/ + /* asynchronous data transfer.*/ + /********************************************************/ + TargetState->SynchronousOffset = ASYNCHRONOUS_OFFSET; + TargetState->SynchronousPeriod = ASYNCHRONOUS_PERIOD; + TargetState->AckWidth = 0; + return(FALSE); + } + + exMsg->ExArg.SYNCS.TransferPeriod = SYNCHRONOUS_PERIOD; + } + + period = exMsg->ExArg.SYNCS.TransferPeriod; + + for ( i=0; i= SyncTable[i].StartPeriod) && + (period <= SyncTable[i].EndPeriod) + ) + break; + } + if (i >= SYNC_TABLE_MAX) { + /********************************************************/ + /* The requested transfer period is too long for the SCSI protocol*/ + /* chip. Fall back to synchronous and reject the request.*/ + /********************************************************/ + TargetState->SynchronousOffset = ASYNCHRONOUS_OFFSET; + TargetState->SynchronousPeriod = ASYNCHRONOUS_PERIOD; + TargetState->AckWidth = 0; + return(FALSE); + } else { + TargetState->SynchronousPeriod = SyncTable[i].TransferPeriod; + TargetState->AckWidth = SyncTable[i].AckWidth; + } + + /********************************************************/ + /* Set the synchronous data transfer parameter registers*/ + /* to the new values. These must be set before a data transfer*/ + /* is started. If a response message is received then the parameters*/ + /* must be reset.*/ + /********************************************************/ + + dataByte = 0; + ((PSYNC_REG)&dataByte)->SyncPeriod = TargetState->SynchronousPeriod; + ((PSYNC_REG)&dataByte)->SyncOffset = TargetState->SynchronousOffset; + + SCSI_WRITE( DevExt->BaseAddress, ACKWIDTH,TargetState->AckWidth); + SCSI_WRITE( DevExt->BaseAddress, SYNCREG ,dataByte); + + return(TRUE); + +} + + diff -urN sys.2.2.8-RELEASE/i386/isa/sio.c sys/i386/isa/sio.c --- sys.2.2.8-RELEASE/i386/isa/sio.c Tue Jun 16 21:51:17 1998 +++ sys/i386/isa/sio.c Tue Dec 22 13:51:36 1998 @@ -36,6 +36,7 @@ #include "opt_comconsole.h" #include "opt_ddb.h" +#include "opt_devfs.h" #include "opt_sio.h" #include "sio.h" #include "pnp.h" @@ -62,16 +63,15 @@ #include #include #include -#include +#include #include #include #include #include -#include -#include +#include #include -#include #include +#include #ifdef DEVFS #include #endif @@ -81,16 +81,20 @@ #include #include #include +/* #include */ #ifdef COM_ESP #include #endif #include +#ifdef NECMG +#include +#endif /* NECMG */ + #include "card.h" #if NCARD > 0 #include -#include #include #endif @@ -119,8 +123,19 @@ #define COM_NOTAST4(dev) ((dev)->id_flags & 0x04) #endif /* COM_MULTIPORT */ +#define COM_CONSOLE(dev) ((dev)->id_flags & 0x10) +#define COM_FORCECONSOLE(dev) ((dev)->id_flags & 0x20) +#define COM_LLCONSOLE(dev) ((dev)->id_flags & 0x40) #define COM_LOSESOUTINTS(dev) ((dev)->id_flags & 0x08) #define COM_NOFIFO(dev) ((dev)->id_flags & 0x02) +#define COM_IRQBUG(dev) ((dev)->id_flags & 0x10) +#define COM_NOTST3(dev) ((dev)->id_flags & 0x10000) +#define COM_ST16650A(dev) ((dev)->id_flags & 0x20000) +#define COM_C_NOPROBE (0x40000) +#define COM_NOPROBE(dev) ((dev)->id_flags & COM_C_NOPROBE) +#define COM_C_IIR_TXRDYBUG (0x80000) +#define COM_IIR_TXRDYBUG(dev) ((dev)->id_flags & COM_C_IIR_TXRDYBUG) +#define COM_FIFOSIZE(dev) (((dev)->id_flags & 0xff000000) >> 24) #define com_scr 7 /* scratch register for 16450-16550 (R/W) */ @@ -188,6 +203,7 @@ /* com device structure */ struct com_s { + u_int id_flags; /* Copy isa device falgas */ u_char state; /* miscellaneous flag bits */ bool_t active_out; /* nonzero if the callout device is open */ u_char cfcr_image; /* copy of value written to CFCR */ @@ -197,6 +213,7 @@ u_char extra_state; /* more flag bits, separate for order trick */ u_char fifo_image; /* copy of value written to FIFO */ bool_t hasfifo; /* nonzero for 16550 UARTs */ + bool_t st16650a; /* Is a Startech 16650A or RTS/CTS compat */ bool_t loses_outints; /* nonzero if device loses output interrupts */ u_char mcr_image; /* copy of value written to MCR */ #ifdef COM_MULTIPORT @@ -238,6 +255,7 @@ Port_t modem_ctl_port; Port_t line_status_port; Port_t modem_status_port; + Port_t intr_ctl_port; /* Ports of IIR register */ struct tty *tp; /* cross reference */ @@ -289,6 +307,7 @@ */ /* Interrupt handling entry point. */ +inthand2_t siointrts; void siopoll __P((void)); /* Device switch entry points. */ @@ -379,19 +398,84 @@ { -1, -1 } }; +static Port_t likely_com_ports[] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, }; + #ifdef COM_ESP /* XXX configure this properly. */ -static Port_t likely_com_ports[] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, }; static Port_t likely_esp_ports[] = { 0x140, 0x180, 0x280, 0 }; #endif +#ifdef NECMG +static struct isa_device necmg_isa_comdev[NSIO]; +#endif /* NECMG */ + +/* + * handle sysctl read/write requests for console speed + * + * In addition to setting comdefaultrate for I/O through /dev/console, + * also set the initial and lock values for the /dev/ttyXX device + * if there is one associated with the console. Finally, if the /dev/tty + * device has already been open, change the speed on the open running port + * itself. + */ + +static int +sysctl_machdep_comdefaultrate SYSCTL_HANDLER_ARGS +{ + int error, s; + speed_t newspeed; + struct com_s *com; + struct tty *tp; + + newspeed = comdefaultrate; + + error = sysctl_handle_opaque(oidp, &newspeed, sizeof newspeed, req); + if (error || !req->newptr) + return (error); + + comdefaultrate = newspeed; + + if (comconsole < 0) /* serial console not selected? */ + return (0); + + com = com_addr(comconsole); + if (!com) + return (ENXIO); + + /* + * set the initial and lock rates for /dev/ttydXX and /dev/cuaXX + * (note, the lock rates really are boolean -- if non-zero, disallow + * speed changes) + */ + com->it_in.c_ispeed = com->it_in.c_ospeed = + com->lt_in.c_ispeed = com->lt_in.c_ospeed = + com->it_out.c_ispeed = com->it_out.c_ospeed = + com->lt_out.c_ispeed = com->lt_out.c_ospeed = comdefaultrate; + + /* + * if we're open, change the running rate too + */ + tp = com->tp; + if (tp && (tp->t_state & TS_ISOPEN)) { + tp->t_termios.c_ispeed = + tp->t_termios.c_ospeed = comdefaultrate; + s = spltty(); + error = comparam(tp, &tp->t_termios); + splx(s); + } + return error; +} + +SYSCTL_PROC(_machdep, OID_AUTO, conspeed, CTLTYPE_INT | CTLFLAG_RW, + 0, 0, sysctl_machdep_comdefaultrate, "I", ""); + #if NCARD > 0 /* * PC-Card (PCMCIA) specific code. */ -static int sioinit(struct pccard_devinfo *); /* init device */ -static void siounload(struct pccard_devinfo *); /* Disable driver */ -static int card_intr(struct pccard_devinfo *); /* Interrupt handler */ +static int sioinit __P((struct pccard_devinfo *)); +static void siounload __P((struct pccard_devinfo *)); +static int card_intr __P((struct pccard_devinfo *)); static struct pccard_device sio_info = { driver_name, @@ -405,6 +489,8 @@ DATA_SET(pccarddrv_set, sio_info); +static int pccard_mode[NSIO]; + /* * Initialize the device - called from Slot manager. */ @@ -412,12 +498,19 @@ sioinit(struct pccard_devinfo *devi) { + int unit = devi->pd_unit; + /* validate unit number. */ - if (devi->isahd.id_unit >= (NSIOTOT)) + if (unit >= (NSIOTOT)) return(ENODEV); + pccard_mode[unit] = 1; /* Make sure it isn't already probed. */ - if (com_addr(devi->isahd.id_unit)) + if (com_addr(unit)) return(EBUSY); + + /* It's already probed as serial by Upper */ + devi->isahd.id_flags |= COM_C_NOPROBE; + /* * Probe the device. If a value is returned, the * device was found at the location. @@ -443,15 +536,18 @@ siounload(struct pccard_devinfo *devi) { struct com_s *com; + int unit = devi->pd_unit; - com = com_addr(devi->isahd.id_unit); + if (unit >= (NSIOTOT)) + return; + com = com_addr(unit); if (!com->iobase) { - printf("sio%d already unloaded!\n",devi->isahd.id_unit); + printf("sio%d already unloaded!\n", unit); return; } if (com->tp && (com->tp->t_state & TS_ISOPEN)) { com->gone = 1; - printf("sio%d: unload\n", devi->isahd.id_unit); + printf("sio%d: unload\n", unit); com->tp->t_gen++; ttyclose(com->tp); ttwakeup(com->tp); @@ -460,7 +556,8 @@ com_addr(com->unit) = NULL; bzero(com, sizeof *com); free(com,M_TTYS); - printf("sio%d: unload,gone\n", devi->isahd.id_unit); + printf("sio%d: unload,gone\n", unit); + } } @@ -473,9 +570,9 @@ { struct com_s *com; - com = com_addr(devi->isahd.id_unit); + com = com_addr(devi->pd_unit); if (com && !com->gone) - siointr1(com_addr(devi->isahd.id_unit)); + siointr1(com_addr(devi->pd_unit)); return(1); } #endif /* NCARD > 0 */ @@ -486,6 +583,7 @@ { static bool_t already_init; bool_t failures[10]; + Port_t *com_ptr; int fn; struct isa_device *idev; Port_t iobase; @@ -495,6 +593,26 @@ int result; struct isa_device *xdev; +#if 0 + int sio_irq_bug = 0; +#endif +#if NCARD > 0 + int probe_pccard = pccard_mode[dev->id_unit]; + int iperror = 0; +#endif /* NCARD > 0 */ +#ifdef NECMG + int com_power = -1; +#endif /* NECMG */ + +#if NCARD > 0 + probe_pccard = pccard_mode[dev->id_unit]; +#endif /* NCARD > 0 */ +#if 0 +#ifdef SIO_IRQ_BUG + sio_irq_bug = 1; +#endif /* SIO_IRQ_BUG */ +#endif + if (!already_init) { /* * Turn off MCR_IENABLE for all likely serial ports. An unused @@ -502,12 +620,19 @@ * from any used port that shares the interrupt vector. * XXX the gate enable is elsewhere for some multiports. */ - for (xdev = isa_devtab_tty; xdev->id_driver != NULL; xdev++) - if (xdev->id_driver == &siodriver && xdev->id_enabled) - outb(xdev->id_iobase + com_mcr, 0); + for (com_ptr = likely_com_ports; + com_ptr < &likely_com_ports[sizeof likely_com_ports + / sizeof likely_com_ports[0]]; + ++com_ptr) + outb(*com_ptr + com_mcr, 0); already_init = TRUE; } + if (COM_LLCONSOLE(dev)) { + printf("sio%d: reserved for low-level i/o\n", dev->id_unit); + return (0); + } + /* * If the device is on a multiport card and has an AST/4 * compatible interrupt control register, initialize this @@ -541,6 +666,24 @@ bzero(failures, sizeof failures); iobase = dev->id_iobase; +#ifdef NECMG + if (dev->id_unit != comconsole) { + if (&necmg_isa_comdev[dev->id_unit] != dev) { + /* called from isa.c */ + necmg_isa_comdev[dev->id_unit] = *dev; + if (dev->id_iobase == NECMG_IO_COM1) { + com_power = NECMG_COM1; + } else + if (dev->id_iobase == NECMG_IO_COM3) { + com_power = NECMG_COM3; + } + } + } + if (0 < com_power) { + necmg_com_power(com_power, 1 /* ON */); + } +#endif /* NECMG */ + /* * We don't want to get actual interrupts, just masked ones. * Interrupts from this line should already be masked in the ICU, @@ -560,11 +703,15 @@ * XXX what about the UART bug avoided by waiting in comparam()? * We don't want to to wait long enough to drain at 2 bps. */ - outb(iobase + com_cfcr, CFCR_DLAB | CFCR_8BITS); - outb(iobase + com_dlbl, COMBRD(9600) & 0xff); - outb(iobase + com_dlbh, (u_int) COMBRD(9600) >> 8); - outb(iobase + com_cfcr, CFCR_8BITS); - DELAY((16 + 1) * 1000000 / (9600 / 10)); + if (iobase == siocniobase) + DELAY((16 + 1) * 1000000 / (comdefaultrate / 10)); + else { + outb(iobase + com_cfcr, CFCR_DLAB | CFCR_8BITS); + outb(iobase + com_dlbl, COMBRD(SIO_TEST_SPEED) & 0xff); + outb(iobase + com_dlbh, (u_int) COMBRD(SIO_TEST_SPEED) >> 8); + outb(iobase + com_cfcr, CFCR_8BITS); + DELAY((16 + 1) * 1000000 / (SIO_TEST_SPEED / 10)); + } /* * Enable the interrupt gate and disable device interupts. This @@ -601,7 +748,7 @@ * it's unlikely to do more than allow the null byte out. */ outb(iobase + com_data, 0); - DELAY((1 + 2) * 1000000 / (9600 / 10)); + DELAY((1 + 2) * 1000000 / (SIO_TEST_SPEED / 10)); /* * Turn off loopback mode so that the interrupt gate works again @@ -613,6 +760,37 @@ /* EXTRA DELAY? */ outb(iobase + com_mcr, mcr_image); + /* + * It's a definitly Serial PCMCIA(16550A), but still be required + * for IIR_TXRDY implementation ( Palido 321s, DC-1S... ) + */ + if ( COM_NOPROBE(dev) ) { + /* Reading IIR register twice */ + for ( fn = 0; fn < 2; fn ++ ) { + DELAY(10000); + failures[6] = inb(iobase + com_iir); + } + /* Check IIR_TXRDY clear ? */ + result = IO_COMSIZE; + if ( failures[6] & IIR_TXRDY ) { + /* Nop, Double check with clearing IER */ + outb(iobase + com_ier, 0); + if ( inb(iobase + com_iir) & IIR_NOPEND ) { + /* Ok. we're familia this gang */ + dev->id_flags |= COM_C_IIR_TXRDYBUG; /* Set IIR_TXRDYBUG */ + } else { + /* Unknow, Just omit this chip.. XXX*/ + result = 0; + } + } else { + /* OK. this is well-known guys */ + dev->id_flags &= ~COM_C_IIR_TXRDYBUG; /*Clear IIR_TXRDYBUG*/ + } + outb(iobase + com_cfcr, CFCR_8BITS); + enable_intr(); + return( result ); + } + /* * Check that * o the CFCR, IER and MCR in UART hold the values written to them @@ -621,16 +799,74 @@ * o an output interrupt is generated and its vector is correct. * o the interrupt goes away when the IIR in the UART is read. */ + disable_intr(); /* EXTRA DELAY? */ failures[0] = inb(iobase + com_cfcr) - CFCR_8BITS; failures[1] = inb(iobase + com_ier) - IER_ETXRDY; failures[2] = inb(iobase + com_mcr) - mcr_image; DELAY(10000); /* Some internal modems need this time */ irqmap[1] = isa_irq_pending(); +#if 0 /* isn't this code still necessary? (hosokawa) */ + if (sio_irq_bug || COM_IRQBUG(idev)) { + if (idev->id_irq & 0xff) { + outb(IO_ICU1 + 1, ((idev->id_irq & 0xff)^0xff)); + } + if (idev->id_irq & 0xff00) { + outb(IO_ICU2 + 1, (((idev->id_irq >> 8) & 0xff)^0xff)); + } + } +#endif +#if NCARD > 0 + /* + * Functional ID 2 of PC-card suggests that the card is + * serial cards, so, these tests are nonsence (and in fact, + * many PC-cards fail these tests). I think these tests + * can be omitted when the card is PC-card, but currently, + * following XXX code only skips some tests. + * Any ideas? + * + * Tatsumi Hosokawa + */ + if (probe_pccard) { /* XXX */ + int t; + t = inb(iobase + com_iir) & IIR_IMASK; + failures[4] = !(t == IIR_TXRDY || t == IIR_NOPEND); + if (t == IIR_NOPEND) { + printf("sio%d: Warning: IIR status error.\n", + dev->id_unit); + } + } + else { + failures[4] = !((inb(iobase + com_iir) & IIR_IMASK) + == IIR_TXRDY); + } +#else /* NCARD > 0 */ failures[4] = (inb(iobase + com_iir) & IIR_IMASK) - IIR_TXRDY; +#endif /* NCARD > 0 */ DELAY(1000); /* XXX */ irqmap[2] = isa_irq_pending(); +#if NCARD > 0 + if (probe_pccard && (failures[3] || failures[5])) { /* XXX */ + printf("sio%d: Warning: irq_pending error.\n", dev->id_unit); + failures[3] = failures[5] = 0; + iperror = 1; + } + if (probe_pccard) { /* XXX */ + int t; + t = inb(iobase + com_iir) & IIR_IMASK; + failures[6] = !(t == IIR_TXRDY || t == IIR_NOPEND); + if (t == IIR_TXRDY) { + printf("sio%d: Warning: IIR status error.\n", + dev->id_unit); + } + } + else { + failures[6] = !((inb(iobase + com_iir) & IIR_IMASK) + == IIR_NOPEND); + } +#else /* NCARD > 0 */ failures[6] = (inb(iobase + com_iir) & IIR_IMASK) - IIR_NOPEND; +#endif /* NCARD > 0 */ /* * Turn off all device interrupts and check that they go off properly. @@ -646,6 +882,15 @@ failures[7] = inb(iobase + com_ier); DELAY(1000); /* XXX */ irqmap[3] = isa_irq_pending(); +#if NCARD > 0 + if (probe_pccard && failures[8]) { /* XXX */ + if (!iperror) { + printf("sio%d: Warning: irq_pending error.\n", + dev->id_unit); + } + failures[8] = 0; + } +#endif /* NCARD > 0 */ failures[9] = (inb(iobase + com_iir) & IIR_IMASK) - IIR_NOPEND; enable_intr(); @@ -674,6 +919,11 @@ } break; } +#ifdef NECMG + if (0 < com_power) { + necmg_com_power(com_power, 0 /* OFF */); + } +#endif /* NECMG */ return (iobase == siocniobase ? IO_COMSIZE : result); } @@ -756,6 +1006,19 @@ int s; int unit; +#ifdef NECMG + if (isdp->id_unit != comconsole) { + if (&necmg_isa_comdev[isdp->id_unit] != isdp && + (isdp->id_iobase == NECMG_IO_COM1 || + isdp->id_iobase == NECMG_IO_COM3)) { + /* called from isa.c */ + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev, &sio_cdevsw, NULL); + return (1); + } + } +#endif /* NECMG */ + isdp->id_ri_flags |= RI_FAST; iobase = isdp->id_iobase; unit = isdp->id_unit; @@ -795,6 +1058,7 @@ com->mcr_image = inb(com->modem_ctl_port); com->line_status_port = iobase + com_lsr; com->modem_status_port = iobase + com_msr; + com->intr_ctl_port = iobase + com_ier; /* * We don't use all the flags from since they @@ -812,6 +1076,8 @@ com->it_in.c_cflag = TTYDEF_CFLAG | CLOCAL; com->it_in.c_lflag = TTYDEF_LFLAG; com->lt_out.c_cflag = com->lt_in.c_cflag = CLOCAL; + com->lt_out.c_ispeed = com->lt_out.c_ospeed = + com->lt_in.c_ispeed = com->lt_in.c_ospeed = com->it_in.c_ispeed = com->it_in.c_ospeed = comdefaultrate; } else com->it_in.c_ispeed = com->it_in.c_ospeed = TTYDEF_SPEED; @@ -829,7 +1095,9 @@ #endif /* DSI_SOFT_MODEM */ #ifdef COM_MULTIPORT - if (!COM_ISMULTIPORT(isdp)) + if (!COM_ISMULTIPORT(isdp) && !COM_IIR_TXRDYBUG(isdp)) +#else + if (!COM_IIR_TXRDYBUG(isdp)) #endif { u_char scr; @@ -849,6 +1117,7 @@ } outb(iobase + com_fifo, FIFO_ENABLE | FIFO_RX_HIGH); DELAY(100); + com->st16650a = 0; switch (inb(com->int_id_port) & IIR_FIFO_MASK) { case FIFO_RX_LOW: printf(" 16450"); @@ -860,47 +1129,37 @@ printf(" 16550?"); break; case FIFO_RX_HIGH: - printf(" 16550A"); if (COM_NOFIFO(isdp)) { - printf(" fifo disabled"); + printf(" 16550A fifo disabled"); } else { com->hasfifo = TRUE; - com->tx_fifo_size = 16; + if (COM_ST16650A(isdp)) { + com->st16650a = 1; + com->tx_fifo_size = 32; + printf(" ST16650A"); + } else { + com->tx_fifo_size = COM_FIFOSIZE(isdp); + printf(" 16550A"); + } + } #ifdef COM_ESP - for (espp = likely_esp_ports; *espp != 0; espp++) - if (espattach(isdp, com, *espp)) { - com->tx_fifo_size = 1024; - break; - } + for (espp = likely_esp_ports; *espp != 0; espp++) + if (espattach(isdp, com, *espp)) { + com->tx_fifo_size = 1024; + break; + } #endif + if (!com->st16650a) { + if (!com->tx_fifo_size) + com->tx_fifo_size = 16; + else + printf(" lookalike with %d bytes FIFO", + com->tx_fifo_size); } -#if 0 - /* - * Check for the Startech ST16C650 chip. - * it has a shadow register under the com_iir, - * which can only be accessed when cfcr == 0xff - */ - { - u_char i, j; - i = inb(iobase + com_iir); - outb(iobase + com_cfcr, 0xff); - outb(iobase + com_iir, 0x0); - outb(iobase + com_cfcr, CFCR_8BITS); - j = inb(iobase + com_iir); - outb(iobase + com_iir, i); - if (i != j) { - printf(" 16550A"); - } else { - com->tx_fifo_size = 32; - printf(" 16650"); - } - if (!com->tx_fifo_size) - printf(" fifo disabled"); - } -#endif break; } + #ifdef COM_ESP if (com->esp) { /* @@ -940,6 +1199,10 @@ COM_MPMASTER(isdp))->id_irq == 0; } #endif /* COM_MULTIPORT */ + if (unit == comconsole) + printf(", console"); + if ( COM_IIR_TXRDYBUG(isdp) ) + printf(" with a bogus IIR_TXRDY register"); printf("\n"); s = spltty(); @@ -968,6 +1231,7 @@ unit | CALLOUT_MASK | CONTROL_LOCK_STATE, DV_CHR, UID_UUCP, GID_DIALER, 0660, "cuala%n", unit); #endif + com->id_flags = isdp->id_flags; /* Heritate id_flags for later */ return (1); } @@ -988,6 +1252,27 @@ mynor = minor(dev); unit = MINOR_TO_UNIT(mynor); +#ifdef NECMG + /* + printf("unit=%d comcons=%d com_addr=%x iobase=%x\n", + unit, comconsole, com_addr(unit), necmg_isa_comdev[unit].id_iobase); + */ + if (unit != comconsole) { + struct isa_device *isdp = &necmg_isa_comdev[unit]; + if (com_addr(unit) == NULL) { + if (isdp->id_iobase == NECMG_IO_COM1) { + necmg_com_power(NECMG_COM1, 1 /* ON */) == 0 && + sioprobe(isdp) && + sioattach(isdp); + } else + if (isdp->id_iobase == NECMG_IO_COM3) { + necmg_com_power(NECMG_COM3, 1 /* ON */) == 0 && + sioprobe(isdp) && + sioattach(isdp); + } + } + } +#endif /* NECMG */ if ((u_int) unit >= NSIOTOT || (com = com_addr(unit)) == NULL) return (ENXIO); if (com->gone) @@ -1107,8 +1392,13 @@ (void) inb(com->data_port); com->prev_modem_status = com->last_modem_status = inb(com->modem_status_port); - outb(iobase + com_ier, IER_ERXRDY | IER_ETXRDY | IER_ERLS - | IER_EMSC); + if (COM_IIR_TXRDYBUG(com)) { + outb(com->intr_ctl_port, IER_ERXRDY | IER_ERLS + | IER_EMSC); + } else { + outb(com->intr_ctl_port, IER_ERXRDY | IER_ETXRDY + | IER_ERLS | IER_EMSC); + } enable_intr(); /* * Handle initial DCD. Callout devices get a fake initial @@ -1177,6 +1467,19 @@ ttyclose(tp); siosettimeout(); splx(s); +#ifdef NECMG + if (com->unit != comconsole) { + struct isa_device *isdp = &necmg_isa_comdev[com->unit]; + if (isdp->id_iobase == NECMG_IO_COM1) { + necmg_com_power(NECMG_COM1, 0 /* OFF */); + com->gone = 1; + } else + if (isdp->id_iobase == NECMG_IO_COM3) { + necmg_com_power(NECMG_COM3, 0 /* OFF */); + com->gone = 1; + } + } +#endif /* NECMG */ if (com->gone) { printf("sio%d: gone\n", com->unit); s = spltty(); @@ -1349,10 +1652,15 @@ * devices, then the edge from one may be lost because another is * on. */ + COM_LOCK(); do { possibly_more_intrs = FALSE; for (unit = 0; unit < NSIOTOT; ++unit) { com = com_addr(unit); + /* + * XXX COM_LOCK(); + * would it work here, or be counter-productive? + */ if (com != NULL && !com->gone && (inb(com->int_id_port) & IIR_IMASK) @@ -1360,8 +1668,10 @@ siointr1(com); possibly_more_intrs = TRUE; } + /* XXX COM_UNLOCK(); */ } } while (possibly_more_intrs); + COM_UNLOCK(); #endif /* COM_MULTIPORT */ } @@ -1373,10 +1683,31 @@ u_char modem_status; u_char *ioptr; u_char recv_data; + u_char int_ident; + u_char int_ctl; + u_char int_ctl_new; + + int_ctl = inb(com->intr_ctl_port); + int_ctl_new = int_ctl; - while (TRUE) { + while (!com->gone) { line_status = inb(com->line_status_port); +#if NCARD > 0 + /* + * Some PC-cards trigger an interrupt during removal. + * Reads on a removed card return 0xff, which forces + * this interrupt handler into a loop. + * Torsten Kohler + */ + + if (line_status == 0xff) { + log(LOG_ERR, + "sio: strange line status - PC-card removed?\n"); + return; + } +#endif /* NCARD > 0 */ + /* input event? (check first to help avoid overruns) */ while (line_status & LSR_RCV_MASK) { /* break/unnattached error bits or real input? */ @@ -1499,6 +1830,9 @@ ++com->bytes_out; } com->obufq.l_head = ioptr; + if (COM_IIR_TXRDYBUG(com)) { + int_ctl_new = int_ctl | IER_ETXRDY; + } if (ioptr >= com->obufq.l_tail) { struct lbq *qp; @@ -1511,6 +1845,9 @@ com->obufq.l_next = qp; } else { /* output just completed */ + if ( COM_IIR_TXRDYBUG(com) ) { + int_ctl_new = int_ctl & ~IER_ETXRDY; + } com->state &= ~CS_BUSY; } if (!(com->state & CS_ODONE)) { @@ -1519,6 +1856,9 @@ setsofttty(); /* handle at high level ASAP */ } } + if ( COM_IIR_TXRDYBUG(com) && (int_ctl != int_ctl_new)) { + outb(com->intr_ctl_port, int_ctl_new); + } } /* finished? */ @@ -1710,6 +2050,15 @@ return (ENOTTY); } splx(s); + if (com->gone) { + printf("sio%d: gone\n", com->unit); + s = spltty(); + com_addr(com->unit) = 0; + bzero(tp,sizeof *tp); + bzero(com,sizeof *com); + free(com,M_TTYS); + splx(s); + } return (0); } @@ -1921,7 +2270,7 @@ if (cflag & CSTOPB) cfcr |= CFCR_STOPB; - if (com->hasfifo && divisor != 0) { + if (com->hasfifo) { /* * Use a fifo trigger level low enough so that the input * latency from the fifo is less than about 16 msec and @@ -2007,10 +2356,18 @@ if (inb(iobase + com_dlbh) != dlbh) outb(iobase + com_dlbh, dlbh); } + + outb(iobase + com_cfcr, com->cfcr_image = cfcr); + if (!(tp->t_state & TS_TTSTOP)) com->state |= CS_TTGO; + if (cflag & CRTS_IFLOW) { + if (com->st16650a) { + outb(iobase + com_cfcr, 0xbf); + outb(iobase + com_fifo, inb(iobase + com_fifo) | 0x40); + } com->state |= CS_RTS_IFLOW; /* * If CS_RTS_IFLOW just changed from off to on, the change @@ -2025,8 +2382,13 @@ * on here, since comstart() won't do it later. */ outb(com->modem_ctl_port, com->mcr_image |= MCR_RTS); + if (com->st16650a) { + outb(iobase + com_cfcr, 0xbf); + outb(iobase + com_fifo, inb(iobase + com_fifo) & ~0x40); + } } + /* * Set up state to handle output flow control. * XXX - worth handling MDMBUF (DCD) flow control at the lowest level? @@ -2038,7 +2400,21 @@ com->state |= CS_CTS_OFLOW; if (!(com->last_modem_status & MSR_CTS)) com->state &= ~CS_ODEVREADY; + if (com->st16650a) { + outb(iobase + com_cfcr, 0xbf); + outb(iobase + com_fifo, inb(iobase + com_fifo) | 0x80); + } + } else { + if (com->st16650a) { + outb(iobase + com_cfcr, 0xbf); + outb(iobase + com_fifo, inb(iobase + com_fifo) & ~0x80); + } } + + + outb(iobase + com_cfcr, com->cfcr_image); + + /* XXX shouldn't call functions while intrs are disabled. */ disc_optim(tp, t, com); /* @@ -2081,6 +2457,7 @@ } enable_intr(); if (tp->t_state & (TS_TIMEOUT | TS_TTSTOP)) { + ttwwakeup(tp); splx(s); return; } @@ -2150,7 +2527,6 @@ return; disable_intr(); if (rw & FWRITE) { -#ifdef COM_ESP_BUG_FIXED if (com->hasfifo) #ifdef COM_ESP /* XXX avoid h/w bug. */ @@ -2159,7 +2535,6 @@ /* XXX does this flush everything? */ outb(com->iobase + com_fifo, FIFO_XMT_RST | com->fifo_image); -#endif com->obufs[0].l_queued = FALSE; com->obufs[1].l_queued = FALSE; if (com->state & CS_ODONE) @@ -2168,7 +2543,6 @@ com->tp->t_state &= ~TS_BUSY; } if (rw & FREAD) { -#ifdef COM_ESP_BUG_FIXED if (com->hasfifo) #ifdef COM_ESP /* XXX avoid h/w bug. */ @@ -2177,7 +2551,6 @@ /* XXX does this flush everything? */ outb(com->iobase + com_fifo, FIFO_RCV_RST | com->fifo_image); -#endif com_events -= (com->iptr - com->ibuf); com->iptr = com->ibuf; } @@ -2366,7 +2739,7 @@ tp->t_state &= ~TS_CAN_BYPASS_L_RINT; /* * Prepare to reduce input latency for packet - * discplines with a end of packet character. + * discplines with a end of packet charactor. */ if (tp->t_line == SLIPDISC) com->hotchar = 0xc0; @@ -2409,6 +2782,42 @@ ; } +/* + * Read the serial port specified and try to figure out what speed + * it's currently running at. We're assuming the serial port has + * been initialized and is basicly idle. This routine is only intended + * to be run at system startup. + * + * If the value read from the serial port doesn't make sense, return 0. + */ + +static speed_t +siocngetspeed(iobase, table) + Port_t iobase; + struct speedtab *table; +{ + int code; + u_char dlbh; + u_char dlbl; + u_char cfcr; + + cfcr = inb(iobase + com_cfcr); + outb(iobase + com_cfcr, CFCR_DLAB | cfcr); + + dlbl = inb(iobase + com_dlbl); + dlbh = inb(iobase + com_dlbh); + + outb(iobase + com_cfcr, cfcr); + + code = dlbh << 8 | dlbl; + + for ( ; table->sp_speed != -1; table++) + if (table->sp_code == code) + return (table->sp_speed); + + return 0; /* didn't match anything sane */ +} + static void siocnopen(sp) struct siocnstate *sp; @@ -2482,21 +2891,66 @@ siocnprobe(cp) struct consdev *cp; { - int unit; + speed_t boot_speed; + u_char cfcr; + struct isa_device *dvp; + int s; + struct siocnstate sp; + + /* + * Find our first enabled console, if any. If it is a high-level + * console device, then initialize it and return successfully. + * If it is a low-level console device, then initialize it and + * return unsuccessfully. It must be initialized in both cases + * for early use by console drivers and debuggers. Initializing + * the hardware is not necessary in all cases, since the i/o + * routines initialize it on the fly, but it is necessary if + * input might arrive while the hardware is switched back to an + * uninitialized state. We can't handle multiple console devices + * yet because our low-level routines don't take a device arg. + * We trust the user to set the console flags properly so that we + * don't need to probe. + */ + cp->cn_pri = CN_DEAD; + for (dvp = isa_devtab_tty; dvp->id_driver != NULL; dvp++) + if (dvp->id_driver == &siodriver && dvp->id_enabled + && COM_CONSOLE(dvp)) { + siocniobase = dvp->id_iobase; + s = spltty(); + if (boothowto & RB_SERIAL) { + boot_speed = siocngetspeed(siocniobase, + comspeedtab); + if (boot_speed) + comdefaultrate = boot_speed; + } - /* XXX: ick */ - unit = DEV_TO_UNIT(CONUNIT); - siocniobase = CONADDR; - - /* make sure hardware exists? XXX */ - - /* initialize required fields */ - cp->cn_dev = makedev(CDEV_MAJOR, unit); -#ifdef COMCONSOLE - cp->cn_pri = CN_REMOTE; /* Force a serial port console */ -#else - cp->cn_pri = (boothowto & RB_SERIAL) ? CN_REMOTE : CN_NORMAL; -#endif + /* + * Initialize the divisor latch. We can't rely on + * siocnopen() to do this the first time, since it + * avoids writing to the latch if the latch appears + * to have the correct value. Also, if we didn't + * just read the speed from the hardware, then we + * need to set the speed in hardware so that + * switching it later is null. + */ + cfcr = inb(siocniobase + com_cfcr); + outb(siocniobase + com_cfcr, CFCR_DLAB | cfcr); + outb(siocniobase + com_dlbl, + COMBRD(comdefaultrate) & 0xff); + outb(siocniobase + com_dlbh, + (u_int) COMBRD(comdefaultrate) >> 8); + outb(siocniobase + com_cfcr, cfcr); + + siocnopen(&sp); + splx(s); + if (!COM_LLCONSOLE(dvp)) { + cp->cn_dev = makedev(CDEV_MAJOR, dvp->id_unit); + cp->cn_pri = COM_FORCECONSOLE(dvp) + || boothowto & RB_SERIAL + ? CN_REMOTE : CN_NORMAL; + } + break; + } } void diff -urN sys.2.2.8-RELEASE/i386/isa/sioreg.h sys/i386/isa/sioreg.h --- sys.2.2.8-RELEASE/i386/isa/sioreg.h Wed Nov 6 19:08:33 1996 +++ sys/i386/isa/sioreg.h Tue Dec 22 13:51:36 1998 @@ -106,6 +106,9 @@ #define MSR_DDSR 0x02 #define MSR_DCTS 0x01 +/* speed to initalize to during chip tests */ +#define SIO_TEST_SPEED 9600 + /* * WARNING: Serial console is assumed to be at COM1 address * and CONUNIT must be 0. diff -urN sys.2.2.8-RELEASE/i386/isa/snd/CARDS sys/i386/isa/snd/CARDS --- sys.2.2.8-RELEASE/i386/isa/snd/CARDS Thu Oct 22 22:35:22 1998 +++ sys/i386/isa/snd/CARDS Tue Dec 22 13:52:10 1998 @@ -305,3 +305,4 @@ supported at the moment. -------------------------------------------------------------------- +$Id: CARDS,v 1.1.1.3.2.1 1998/12/21 11:47:14 sanpei Exp $ diff -urN sys.2.2.8-RELEASE/i386/isa/snd/HISTORY.ESS sys/i386/isa/snd/HISTORY.ESS --- sys.2.2.8-RELEASE/i386/isa/snd/HISTORY.ESS Thu Jan 1 09:00:00 1970 +++ sys/i386/isa/snd/HISTORY.ESS Tue Dec 22 13:52:10 1998 @@ -0,0 +1,5 @@ +$Id: HISTORY.ESS,v 1.1.2.1 1998/12/21 11:47:15 sanpei Exp $ + +Mon Dec 21 19:46:11 JST 1998 + o merge 1.8.2.7 version changes of sound.c + and compile 2.2.7-RELEASE and 2.2.8-RELEASE systems diff -urN sys.2.2.8-RELEASE/i386/isa/snd/HISTORY.ESS.jp sys/i386/isa/snd/HISTORY.ESS.jp --- sys.2.2.8-RELEASE/i386/isa/snd/HISTORY.ESS.jp Thu Jan 1 09:00:00 1970 +++ sys/i386/isa/snd/HISTORY.ESS.jp Tue Dec 22 13:52:10 1998 @@ -0,0 +1,60 @@ +Mon Dec 21 19:46:11 JST 1998 + o 2.2.8-RELEASE $B$G(B compile $B$G$-$J$$LdBj$r2r7h(B + +Mon Nov 23 09:45:44 JST 1998 + $B at 0x220 irq 5 dma 1:1 + ~~~~~~~~~~~ + + FreeBSD-users-jp 35506 $B$N9uBt$5$s$NJQ99$r(B merge + + $B2r7h$7$?LdBj(B + + *(4) Windows95 $B$r%V!<%H$7$F$+$i!$$=$N8e$KEE8;$r(B off + * $B$;$:(B FreeBSD $B$r%V!<%H$9$k$H(B mixer $B$N(B master volume + * $B$,$*$+$7$J@_Dj$K$J$C$?$^$^@)8fITG=$K$J$k(B(FMV 5133NP/W + * $B$@$1$+$b$7$l$^$;$s(B, sb0 $B$G$bH/@8(B, $B$H$j$"$($:$NBP:v$O(B + * Win95,FreeBSD $B$r8r8_$K(B reboot $B$r7+$jJV$9(B :-<)$B!%(B + + + *(3) $B2;@<$r:F@8$9$k%"%W%j%1!<%7%g%s$r=*N;$5$;$k$H!$(B + * $B:G8e$NJ}$N2;$,%k!<%W$7$F:F@8$5$l$C$Q$J$7$K$J$k(B + * $B$3$H$,$"$k!%(B(^z $B$9$k$H(B 100% $B:F8=(B) + + *(7) $B8=>u$G$O(B ESS1879 $B$r(B 1878 $B$HI=<($9$k(B. + + $B/!9Fq$"$j(B + *(1) mpg123 $B$G6J$rJ#?t;XDj$7$F$$$k$H$-$K(B, $B;~!9(B, + * $B $B$^$@2r7h$7$F$$$J$$$h$&$G$9(B. $BIQEY$O8:$C$?$,(B, + * mpg123 $B$GJ#?t6J;XDj;~$K(B, [Ctrl]+[C] $B$r$7$F(B + * $B$I$s$I$s@Z$jBX$($k$H$-$K$*$-$?(B. + + *(2) $B:F@8$r;O$a$k$H$-$K(B, $BJQ$J2;$,=P$k(B. + * (dsp $B$N(B reset, setup $B;~$K(B mute $B=hM}$,IT==J,(B?) + +Fri Nov 20 21:10:11 JST 1998 + FreeBSD-stable tree $B$rMxMQ$9$k$h$&$K$7$?(B + $BF1;~$K(B x11amp 0.8 $B$r;H$($k$h$&$K$J$j$^$7$?(B + +$Id: HISTORY.ESS.jp,v 1.1.2.1 1998/12/21 11:47:16 sanpei Exp $ diff -urN sys.2.2.8-RELEASE/i386/isa/snd/README sys/i386/isa/snd/README --- sys.2.2.8-RELEASE/i386/isa/snd/README Thu Oct 22 22:35:22 1998 +++ sys/i386/isa/snd/README Tue Dec 22 13:52:11 1998 @@ -294,3 +294,5 @@ the product. Too bad that no one of the chip/card manufacturers I have contacted by email regarding missing or inconsistent documentation on their products did even care to reply to my messages. + +$Id: README,v 1.1.1.3.2.1 1998/12/21 11:47:17 sanpei Exp $ diff -urN sys.2.2.8-RELEASE/i386/isa/snd/README.ESS sys/i386/isa/snd/README.ESS --- sys.2.2.8-RELEASE/i386/isa/snd/README.ESS Thu Jan 1 09:00:00 1970 +++ sys/i386/isa/snd/README.ESS Tue Dec 22 13:52:11 1998 @@ -0,0 +1,57 @@ +EES sound chip Sound Driver + +$Id: README.ESS,v 1.1.2.1 1998/12/21 11:47:19 sanpei Exp $ + +Our Goal: + This patch has some miner problems as below. We + hope to fix these and at last we merge to pcm driver. + +Contact: + MIHIRA Yoshiro sanpei@sanpei.org, sanpei@jp.freebsd.org + +Latest driver: + http://www.jp.freebsd.org/~sanpei/ + +Supported NOTE-PCs which use ESS Sound Chip: + Sotec WinBookPro ESS688 + ToshibaSatellite Pro 430CDT + ESS688 + DEC HiNote Ultra II CTS-5120 + ESS1688 + Hyperbook 750+ ESS1868 + Compaq DeskPro ESS1869 + NEC MobioNX ESS1869 + FM/V Biblo NP/W ESS1878 + Sony VAIO-505 ESS1878 + SONY VAIO PCG-707 ESS1878 + SONY VAIO PCG-803 ESS1879 + FM-V Biblo NC313 ESS1879 + Chandra2 ESS1879 + (your report are welcome) + +Current Status: + This driver support up to 44KHz/16bit mode. And + fixed problem that sound only come out from left + channel, buggy mixer. + +Example: + mpg123 -v mp3_filename + +Old pcm and sb driver: +Audio: 2:1 conversion, rate: 22050, encoding: unsigned 8 bit, channels: 2 + ~~~~~ ~~~~~ +This driver: +Audio: 1:1 conversion, rate: 44100, encoding: signed 16 bit, channels: 2 + ~~~~~ ~~~~~~ +Current Problem: + Some time (CPU was heavy load?), sound change to white + noise. + And also with using mpg123 player and selected some files, + when one file is ended and change to another file, + also sound change to white noise... + +DATA SHEETS: + ftp://ftp.esstech.com.tw/Document/ +or + http://alsa.jcu.cz/alsa/ftp/manuals/ess/ + diff -urN sys.2.2.8-RELEASE/i386/isa/snd/README.ESS.jp sys/i386/isa/snd/README.ESS.jp --- sys.2.2.8-RELEASE/i386/isa/snd/README.ESS.jp Thu Jan 1 09:00:00 1970 +++ sys/i386/isa/snd/README.ESS.jp Tue Dec 22 13:52:11 1998 @@ -0,0 +1,67 @@ +Luigi Sound Driver $B$X$N(B ESS $B7O%A%C%WBP1~(B pcm driver $B%-%C%H(B + +$Id: README.ESS.jp,v 1.1.2.1 1998/12/21 11:47:20 sanpei Exp $ + +$BL\I8(B + $B8=:_$NLdBjE@$r2~NI$7$F(B, $BK\2H$N(B source tree $B$KF~$l$k(B. + +$Bl=j(B + http://www.jp.freebsd.org/~sanpei/ + +ESS $B7O$r;H$C$?(B NOTE-PC + $BF0:n3NG'%^%7%s(B + Sotec WinBookPro ESS688 + ToshibaSatellite Pro 430CDT + ESS688 + DEC HiNote Ultra II CTS-5120 + ESS1688 + Hyperbook 750+ ESS1868 + Compaq DeskPro ESS1869 + NEC MobioNX ESS1869 + FM/V Biblo NP/W ESS1878 + Sony VAIO-505 $B7O(B ESS1878 + SONY VAIO PCG-707 ESS1878 + SONY VAIO PCG-803 ESS1879 + FM-V Biblo NC313 ESS1879 + Chandra2 $B7O(B($B"((B1) ESS1879 + $BEy(B($BDI2C>pJs5a$`(B) + +$B"((B 1 Chandra2 $B7O(B +IBM ThinkPad 235, HITACHI FLORA Priusnote 210{g|h}, EPSON TK-400, etc... + +$BBP1~%=!<%9(B + FreeBSD-stable $BMQ$G$9(B. $B;DG0$J$,$i(B FreeBSD-current $BMQ$O(B + $BMQ0U$G$-$F$$$^$;$s(B. $B:n$l$k?M$OO"Mm$/$@$5$$(B. + +$B8=:_$N2~NIE@(B + Luigi driver $B$G$O(B, ESS 1868,688 $B$J$I$X$NBP1~$,IT==J,$G$9(B. + dsp $B$G$O(B 22KHz, 8bit $B$G$7$+;H$($^$;$s$G$7$?(B. + $B$^$?(B, 22KHz, 8bit $B$G$b(B, $B%I%i%$%P$N%P%0$G(B, $B:8B&$+$i$7$+(B, + $B2;$,=P$J$+$C$?$j(B, $B2;NLD4@a(B(mixer)$B$,$&$^$/F0$-$^$;$s$G$7$?(B. + + $B$3$N%Q%C%A$rMQ$$$k$3$H$G(B, 44KHz, 16bit $B$,2DG=$G(B, $B2;NLD4@a$b(B + $B@5$7$/F0$-$^$9(B. + + $BMxMQNc(B + mpg123 -v mp3_filename + +Audio: 2:1 conversion, rate: 22050, encoding: unsigned 8 bit, channels: 2 + ~~~~~ ~~~~~ +Audio: 1:1 conversion, rate: 44100, encoding: signed 16 bit, channels: 2 + ~~~~~ ~~~~~~ + +$B;29M;qNA(B +DATASHEET$B$NF~ $B$^$@2r7h$7$F$$$J$$$h$&$G$9(B. $BIQEY$O8:$C$?$,(B, + mpg123 $B$GJ#?t6J;XDj;~$K(B, [Ctrl]+[C] $B$r$7$F(B + $B$I$s$I$s@Z$jBX$($k$H$-$K$*$-$?(B. + + --> $B:,K\E*$K8=:_(B DMA $BE>Aw%3!<%I$r8+D>$7Cf(B + + (5) $B%*%j%8%J%k%W%m%0%i%`$G(B ioctl(SNDCTL_DSP_SYNC) + $B$r=P$7$?$H$-$K!$(Bioctl $BFbIt$G(B sleep $B$7$?$^$^(B + $BLa$C$F$3$J$$$3$H$,$"$k!%(B + + (8) ESS1868: setting master volume control register + $B$H(B ESS1868 $B7h$aBG$A$GI=<($5$l$kLdBj(B + (ESS1869 $B$G$b(B ESS1868 $B$H$J$k(B :-< + ---> detect $B%3!<%I$r2~NIM=Dj(B diff -urN sys.2.2.8-RELEASE/i386/isa/snd/ad1848.c sys/i386/isa/snd/ad1848.c --- sys.2.2.8-RELEASE/i386/isa/snd/ad1848.c Sat Nov 14 22:09:09 1998 +++ sys/i386/isa/snd/ad1848.c Tue Dec 22 13:52:11 1998 @@ -40,6 +40,10 @@ * http://www.opti.com/ for the OPTi931 */ +/* + * $Id: ad1848.c,v 1.1.1.3.2.1 1998/12/21 11:47:24 sanpei Exp $ + */ + #include #if NPCM > 0 diff -urN sys.2.2.8-RELEASE/i386/isa/snd/clones.c sys/i386/isa/snd/clones.c --- sys.2.2.8-RELEASE/i386/isa/snd/clones.c Sun Nov 23 16:03:11 1997 +++ sys/i386/isa/snd/clones.c Tue Dec 22 13:52:11 1998 @@ -33,6 +33,10 @@ * in the Voxware 3.5 distribution. */ +/* + * $Id: clones.c,v 1.1.1.1.8.1 1998/12/21 11:47:26 sanpei Exp $ + */ + #include #if NPCM > 0 diff -urN sys.2.2.8-RELEASE/i386/isa/snd/dmabuf.c sys/i386/isa/snd/dmabuf.c --- sys.2.2.8-RELEASE/i386/isa/snd/dmabuf.c Thu Oct 22 22:35:22 1998 +++ sys/i386/isa/snd/dmabuf.c Tue Dec 22 13:52:12 1998 @@ -31,6 +31,10 @@ * */ +/* + * $Id: dmabuf.c,v 1.1.1.3.2.1 1998/12/21 11:47:27 sanpei Exp $ + */ + #include #include diff -urN sys.2.2.8-RELEASE/i386/isa/snd/mss.h sys/i386/isa/snd/mss.h --- sys.2.2.8-RELEASE/i386/isa/snd/mss.h Thu Jun 11 02:37:01 1998 +++ sys/i386/isa/snd/mss.h Tue Dec 22 13:52:12 1998 @@ -9,6 +9,10 @@ */ /* + * $Id: mss.h,v 1.1.1.2.4.1 1998/12/21 11:47:27 sanpei Exp $ + */ + +/* * The codec part of the board is seen as a set of 4 registers mapped diff -urN sys.2.2.8-RELEASE/i386/isa/snd/sb_dsp.c sys/i386/isa/snd/sb_dsp.c --- sys.2.2.8-RELEASE/i386/isa/snd/sb_dsp.c Wed Nov 4 18:14:32 1998 +++ sys/i386/isa/snd/sb_dsp.c Tue Dec 22 13:52:13 1998 @@ -35,6 +35,10 @@ */ /* + * $Id: sb_dsp.c,v 1.1.1.3.2.1 1998/12/21 11:47:28 sanpei Exp $ + */ + +/* * use this as a template file for board-specific drivers. * The next two lines (and the final #endif) are in all drivers: */ @@ -76,6 +80,7 @@ u_int sb_get_byte(int io_base); int ess_write(int io_base, u_char reg, int val); int ess_read(int io_base, u_char reg); +void ess_cont_getmixer(int io_base, u_int port, u_char *buf, int num); /* * Then put here the descriptors for the various boards supported @@ -324,6 +329,14 @@ if ( reason & 1 ) { /* possibly a write interrupt */ if ( d->dbuf_out.dl ) dsp_wrintr(d); + else if (d->bd_flags & BD_F_ESS) { + /* + * Stop the DMA transaction. + * (based on the audio-output scenario on the spec. pp.43-44) + */ + ess_write(d->io_base, 0xb8, + ess_read(d->io_base, 0xb8) & ~1); + } } if ( reason & 2 ) { if ( d->dbuf_in.dl ) @@ -428,29 +441,6 @@ d->dbuf_in.chan = d->dbuf_out.chan; d->dbuf_out.chan = c ; } - } else if (d->bd_flags & BD_F_ESS) { - u_char c ; - if (d->play_fmt == 0) { - /* initialize for record */ - static u_char cmd[] = { - 0x51,0xd0,0x71,0xf4,0x51,0x98,0x71,0xbc - }; - ess_write(d->io_base, 0xb8, 0x0e); - c = ( ess_read(d->io_base, 0xa8) & 0xfc ) | 1 ; - if (d->flags & SND_F_STEREO) - c++ ; - ess_write(d->io_base, 0xa8, c); - ess_write(d->io_base, 0xb9, 2); /* 4bytes/transfer */ - /* - * set format in b6, b7 - */ - } else { - /* initialize for play */ - static u_char cmd[] = { - 0x80,0x51,0xd0,0x00,0x71,0xf4, - 0x80,0x51,0x98,0x00,0x71,0xbc - }; - } } reset_dbuf(& (d->dbuf_in), SND_CHAN_RD ); reset_dbuf(& (d->dbuf_out), SND_CHAN_WR ); @@ -512,10 +502,73 @@ sb_cmd(d->io_base, c ); sb_cmd3(d->io_base, c1 , l - 1) ; } else if (d->bd_flags & BD_F_ESS) { + u_char a8 ; + u_char *cmd_ofs; + short c = -l; + + if (rd) { + /* initialize for record */ + static u_char cmd[] = { + 0x51,0xd0,0x71,0xf4,0x51,0x98,0x71,0xbc + }; + ess_write(d->io_base, 0xb8, 0x0e); + a8 = ( ess_read(d->io_base, 0xa8) & 0xfc ) | 1 ; + if (d->flags & SND_F_STEREO) + a8++ ; + ess_write(d->io_base, 0xa8, a8); + ess_write(d->io_base, 0xb9, 2); /* 4bytes/transfer */ + /* + * set format in b6, b7 + */ + cmd_ofs = cmd + ((d->flags & SND_F_STEREO) ? 4 : 0) + + ((d->rec_fmt == AFMT_S16_LE) ? 2 : 0); + ess_write(d->io_base, 0xb7, cmd_ofs[0]); + ess_write(d->io_base, 0xb7, cmd_ofs[1]); + ess_write(d->io_base, 0xb1, + (ess_read(d->io_base, 0xb1) & 0x0f) | 0x50); + ess_write(d->io_base, 0xb2, + (ess_read(d->io_base, 0xb2) & 0x0f) | 0x50); + } else { + /* initialize for play */ + static u_char cmd[] = { + 0x80,0x51,0xd0,0x00,0x71,0xf4, + 0x80,0x51,0x98,0x00,0x71,0xbc + }; + + a8 = ( ess_read(d->io_base, 0xa8) & 0xfc ) | 1 ; + if (! (d->flags & SND_F_STEREO)) + a8++; + ess_write(d->io_base, 0xa8, a8); + ess_write(d->io_base, 0xb9, 2); /* 4bytes/transfer */ + + cmd_ofs = cmd + ((d->flags & SND_F_STEREO) ? 6 : 0) + + ((d->play_fmt == AFMT_S16_LE) ? 3 : 0); + ess_write(d->io_base, 0xb6, cmd_ofs[0]); + ess_write(d->io_base, 0xb7, cmd_ofs[1]); + ess_write(d->io_base, 0xb7, cmd_ofs[2]); + + ess_write(d->io_base, 0xb1, + (ess_read(d->io_base, 0xb1) & 0x0f) | 0x50); + ess_write(d->io_base, 0xb2, + (ess_read(d->io_base, 0xb2) & 0x0f) | 0x50); + } + ess_write(d->io_base, 0xa4, (u_char)((u_short)c & 0xff)); + ess_write(d->io_base, 0xa5, (u_char)((u_short)(c >> 8) & 0xff)); + if (rd) { + ess_write(d->io_base, 0xb8, + ess_read(d->io_base, 0xb8) | 0x0f); + } else { + ess_write(d->io_base, 0xb8, + ess_read(d->io_base, 0xb8) | 0x05); + sb_cmd(d->io_base, DSP_CMD_SPKON); + } +#if 0 /* XXX this code is still incomplete */ sb_cmd2(d->io_base, 0xb8, rd ? 4 : 0xe ) ; /* auto dma */ sb_cmd2(d->io_base, 0xa8, d->flags & SND_F_STEREO ? 1 : 2) ; sb_cmd2(d->io_base, 0xb9, 2) ; /* demand dma */ +#endif + } else { /* SBPro -- stereo not supported */ u_char c ; if (!rd) @@ -546,9 +599,10 @@ case SND_CB_STOP : { int cmd = DSP_CMD_DMAPAUSE_8 ; /* default: halt 8 bit chan */ - if ( b->chan > 4 - || (rd && d->rec_fmt == AFMT_S16_LE) - || (!rd && d->play_fmt == AFMT_S16_LE) + if (!(d->bd_flags & BD_F_ESS) + && (b->chan > 4 + || (rd && d->rec_fmt == AFMT_S16_LE) + || (!rd && d->play_fmt == AFMT_S16_LE)) ) cmd = DSP_CMD_DMAPAUSE_16 ; if (d->bd_flags & BD_F_HISPEED) { @@ -557,7 +611,17 @@ sb_cmd(d->io_base, 0xc6 ); /* enable extended ESS mode */ d->flags |= SND_F_INIT ; } else { - sb_cmd(d->io_base, cmd); /* pause dma. */ + if (d->bd_flags & BD_F_ESS) { + /* + * Stop after the current transfer has completed. + * sbintr will be called later. + * (based on the audio-output scenario) + */ + ess_write(d->io_base, 0xb8, + ess_read(d->io_base, 0xb8) & ~4); + } else { + sb_cmd(d->io_base, cmd); /* pause dma. */ + } /* * The above seems to have the undocumented side effect of * blocking the other side as well. If the other @@ -625,6 +689,7 @@ int i, x; char *fmt = NULL ; int io_base = dev->id_iobase ; + u_char ess_ident[4]; d->bd_id = 0 ; @@ -724,12 +789,25 @@ break ; } else if (ess_major == 0x68 && (ess_minor & 0xf0) == 0x80) { int rev = ess_minor & 0xf ; - if ( rev >= 8 ) - printf("ESS1868 (rev %d)\n", rev); - else - printf("ESS688 (rev %d)\n", rev); - /* d->audio_fmt |= AFMT_S16_LE; */ /* not yet... */ - break ; /* XXX */ + if ( rev >= 8 ) { + ess_cont_getmixer(io_base, 0x40, ess_ident, sizeof(ess_ident)); + if (ess_ident[0] == 0x18) { + sprintf(fmt, "ESS18%x %%d.%%d", ess_ident[1]); + printf("ESS18%x (rev %d, native mode)\n", ess_ident[1], rev); + } else { + printf("ESS Chip (rev %d, %x%x)\n", rev, ess_ident[0], ess_ident[1]); + } + } else { + sprintf(fmt, "ESS688 %%d.%%d"); + printf("ESS688 (rev %d, native mode)\n", rev); + } + d->audio_fmt |= AFMT_S16_LE; + d->bd_flags |= BD_F_ESS; + d->bd_flags &= ~BD_F_MIX_MASK ; + d->bd_flags |= BD_F_MIX_ESS688 ; + sb_reset_dsp(io_base); + sb_cmd(io_base, 0xc6); + break ; } else { printf("Unknown card 0x%x 0x%x -- hope it is SBPRO\n", ess_major, ess_minor); @@ -747,6 +825,7 @@ static void sb_mix_init(snddev_info *d) { + u_int mixval; switch (d->bd_flags & BD_F_MIX_MASK) { case BD_F_MIX_CT1345 : /* SB 3.0 has 1345 mixer */ @@ -765,6 +844,20 @@ d->mix_devs = SB16_MIXER_DEVICES ; d->mix_rec_devs = SB16_RECORDING_DEVICES ; d->mix_recsrc = SOUND_MASK_MIC ; + break ; + + case BD_F_MIX_ESS688 : /* ESS688/ESS1868 mixer */ + + mixval = (u_int)sb_getmixer(d->io_base, ESS_VOLCTL); + if (mixval & 1) { + printf("ESS1868: setting master volume control register" + "(compatibility mode)\n"); + sb_setmixer(d->io_base, ESS_VOLCTL, mixval & ~1); + } + d->mix_devs = ESS_MIXER_DEVICES ; + d->mix_rec_devs = ESS_RECORDING_DEVICES ; + d->mix_recsrc = SOUND_MASK_MIC ; + break ; } sb_mixer_reset(d); } @@ -880,6 +973,20 @@ return sb_get_byte(io_base); } +void +ess_cont_getmixer(int io_base, u_int port, u_char *buf, int num) +{ + int val; + int i; + u_long flags; + + flags = spltty(); + outb(io_base + SB_MIX_ADDR, (u_char) (port & 0xff)); /* Select register */ + for (i = 0; i < num; buf++, i++) { + *buf = inb(io_base + SB_MIX_DATA); + } + splx(flags); +} /* * various utility functions for the DSP @@ -1016,6 +1123,7 @@ mask &= d->mix_rec_devs; switch (d->bd_flags & BD_F_MIX_MASK) { case BD_F_MIX_CT1345 : + case BD_F_MIX_ESS688 : if (mask == SOUND_MASK_LINE) recdev = 6 ; else if (mask == SOUND_MASK_CD) @@ -1108,6 +1216,9 @@ break; case BD_F_MIX_CT1745 : iomap = &sb16_mix ; + break; + case BD_F_MIX_ESS688 : + iomap = &ess688_mix ; break; /* XXX how about the SG NX Pro, iomap = sgnxpro_mix */ } diff -urN sys.2.2.8-RELEASE/i386/isa/snd/sbcard.h sys/i386/isa/snd/sbcard.h --- sys.2.2.8-RELEASE/i386/isa/snd/sbcard.h Thu Oct 22 22:35:22 1998 +++ sys/i386/isa/snd/sbcard.h Tue Dec 22 13:52:13 1998 @@ -2,6 +2,10 @@ * file: sbcard.h */ +/* + * $Id: sbcard.h,v 1.1.1.3.2.1 1998/12/21 11:47:29 sanpei Exp $ + */ + typedef struct _sbdev_info { } sbdev_info ; @@ -136,6 +140,7 @@ #define BD_F_MIX_CT1335 0x0010 /* CT1335 */ #define BD_F_MIX_CT1345 0x0020 /* CT1345 */ #define BD_F_MIX_CT1745 0x0030 /* CT1745 */ +#define BD_F_MIX_ESS688 0x0040 /* ESS688/ESS1868 mixer */ #define BD_F_SB16 0x0100 /* this is a SB16 */ #define BD_F_SB16X 0x0200 /* this is a vibra16X or clone */ @@ -208,6 +213,14 @@ SOUND_MASK_IGAIN | SOUND_MASK_OGAIN | \ SOUND_MASK_VOLUME | SOUND_MASK_BASS | SOUND_MASK_TREBLE) +#define ESS_MIXER_DEVICES \ + (SOUND_MASK_SYNTH | SOUND_MASK_PCM | SOUND_MASK_SPEAKER | \ + SOUND_MASK_LINE | SOUND_MASK_MIC | SOUND_MASK_CD | \ + SOUND_MASK_VOLUME) + +/* XXX I don't know;-) */ +#define ESS_RECORDING_DEVICES SB16_RECORDING_DEVICES + /* * Mixer registers * @@ -253,6 +266,10 @@ #define SB16_IMASK_R 0x3e #define SB16_OMASK 0x3c +/* + * ESS mixer cnotrol extension registers + */ +#define ESS_VOLCTL 0x64 #ifndef __SB_MIXER_C__ mixer_tab sbpro_mix; @@ -264,15 +281,15 @@ static u_char sb16_recmasks_R[SOUND_MIXER_NRDEVICES]; #else /* __SB_MIXER_C__ defined */ mixer_tab sbpro_mix = { - PMIX_ENT(SOUND_MIXER_VOLUME, 0x22, 7, 4, 0x22, 3, 4), + PMIX_ENT(SOUND_MIXER_VOLUME, 0x22, 4, 4, 0x22, 0, 4), PMIX_ENT(SOUND_MIXER_BASS, 0x00, 0, 0, 0x00, 0, 0), PMIX_ENT(SOUND_MIXER_TREBLE, 0x00, 0, 0, 0x00, 0, 0), - PMIX_ENT(SOUND_MIXER_SYNTH, 0x26, 7, 4, 0x26, 3, 4), - PMIX_ENT(SOUND_MIXER_PCM, 0x04, 7, 4, 0x04, 3, 4), + PMIX_ENT(SOUND_MIXER_SYNTH, 0x26, 4, 4, 0x26, 0, 4), + PMIX_ENT(SOUND_MIXER_PCM, 0x04, 4, 4, 0x04, 0, 4), PMIX_ENT(SOUND_MIXER_SPEAKER, 0x00, 0, 0, 0x00, 0, 0), - PMIX_ENT(SOUND_MIXER_LINE, 0x2e, 7, 4, 0x2e, 3, 4), - PMIX_ENT(SOUND_MIXER_MIC, 0x0a, 2, 3, 0x00, 0, 0), - PMIX_ENT(SOUND_MIXER_CD, 0x28, 7, 4, 0x28, 3, 4), + PMIX_ENT(SOUND_MIXER_LINE, 0x2e, 4, 4, 0x2e, 0, 4), + PMIX_ENT(SOUND_MIXER_MIC, 0x0a, 0, 3, 0x00, 0, 0), + PMIX_ENT(SOUND_MIXER_CD, 0x28, 4, 4, 0x28, 0, 4), PMIX_ENT(SOUND_MIXER_IMIX, 0x00, 0, 0, 0x00, 0, 0), PMIX_ENT(SOUND_MIXER_ALTPCM, 0x00, 0, 0, 0x00, 0, 0), PMIX_ENT(SOUND_MIXER_RECLEV, 0x00, 0, 0, 0x00, 0, 0) @@ -280,15 +297,15 @@ #ifdef __SGNXPRO__ mixer_tab sgnxpro_mix = { - PMIX_ENT(SOUND_MIXER_VOLUME, 0x22, 7, 4, 0x22, 3, 4), - PMIX_ENT(SOUND_MIXER_BASS, 0x46, 2, 3, 0x00, 0, 0), - PMIX_ENT(SOUND_MIXER_TREBLE, 0x44, 2, 3, 0x00, 0, 0), - PMIX_ENT(SOUND_MIXER_SYNTH, 0x26, 7, 4, 0x26, 3, 4), - PMIX_ENT(SOUND_MIXER_PCM, 0x04, 7, 4, 0x04, 3, 4), - PMIX_ENT(SOUND_MIXER_SPEAKER, 0x42, 2, 3, 0x00, 0, 0), - PMIX_ENT(SOUND_MIXER_LINE, 0x2e, 7, 4, 0x2e, 3, 4), - PMIX_ENT(SOUND_MIXER_MIC, 0x0a, 2, 3, 0x00, 0, 0), - PMIX_ENT(SOUND_MIXER_CD, 0x28, 7, 4, 0x28, 3, 4), + PMIX_ENT(SOUND_MIXER_VOLUME, 0x22, 4, 4, 0x22, 0, 4), + PMIX_ENT(SOUND_MIXER_BASS, 0x46, 0, 3, 0x00, 0, 0), + PMIX_ENT(SOUND_MIXER_TREBLE, 0x44, 0, 3, 0x00, 0, 0), + PMIX_ENT(SOUND_MIXER_SYNTH, 0x26, 4, 4, 0x26, 0, 4), + PMIX_ENT(SOUND_MIXER_PCM, 0x04, 4, 4, 0x04, 0, 4), + PMIX_ENT(SOUND_MIXER_SPEAKER, 0x42, 0, 3, 0x00, 0, 0), + PMIX_ENT(SOUND_MIXER_LINE, 0x2e, 4, 4, 0x2e, 0, 4), + PMIX_ENT(SOUND_MIXER_MIC, 0x0a, 0, 3, 0x00, 0, 0), + PMIX_ENT(SOUND_MIXER_CD, 0x28, 4, 4, 0x28, 0, 4), PMIX_ENT(SOUND_MIXER_IMIX, 0x00, 0, 0, 0x00, 0, 0), PMIX_ENT(SOUND_MIXER_ALTPCM, 0x00, 0, 0, 0x00, 0, 0), PMIX_ENT(SOUND_MIXER_RECLEV, 0x00, 0, 0, 0x00, 0, 0), @@ -312,6 +329,23 @@ PMIX_ENT(SOUND_MIXER_RECLEV, 0x3f, 6, 2, 0x40, 6, 2), /* Obsol,Use IGAIN*/ PMIX_ENT(SOUND_MIXER_IGAIN, 0x3f, 6, 2, 0x40, 6, 2), PMIX_ENT(SOUND_MIXER_OGAIN, 0x41, 6, 2, 0x42, 6, 2) +}; + +mixer_tab ess688_mix = { + PMIX_ENT(SOUND_MIXER_VOLUME, 0x32, 4, 4, 0x32, 0, 4), + PMIX_ENT(SOUND_MIXER_BASS, 0x00, 0, 0, 0x00, 0, 0), + PMIX_ENT(SOUND_MIXER_TREBLE, 0x00, 0, 0, 0x00, 0, 0), + PMIX_ENT(SOUND_MIXER_SYNTH, 0x36, 4, 4, 0x36, 0, 4), + PMIX_ENT(SOUND_MIXER_PCM, 0x14, 4, 4, 0x14, 0, 4), + PMIX_ENT(SOUND_MIXER_SPEAKER, 0x3c, 0, 3, 0x00, 0, 0), + PMIX_ENT(SOUND_MIXER_LINE, 0x3e, 4, 4, 0x3e, 0, 4), + PMIX_ENT(SOUND_MIXER_MIC, 0x1a, 4, 4, 0x1a, 0, 4), + PMIX_ENT(SOUND_MIXER_CD, 0x38, 4, 4, 0x38, 0, 4), + PMIX_ENT(SOUND_MIXER_IMIX, 0x00, 0, 0, 0x00, 0, 0), + PMIX_ENT(SOUND_MIXER_ALTPCM, 0x00, 0, 0, 0x00, 0, 0), + PMIX_ENT(SOUND_MIXER_RECLEV, 0x00, 0, 0, 0x00, 0, 0), + PMIX_ENT(SOUND_MIXER_IGAIN, 0x00, 0, 0, 0x00, 0, 0), + PMIX_ENT(SOUND_MIXER_OGAIN, 0x00, 0, 0, 0x00, 0, 0) }; #ifdef SM_GAMES /* Master volume is lower and PCM & FM diff -urN sys.2.2.8-RELEASE/i386/isa/snd/sound.c sys/i386/isa/snd/sound.c --- sys.2.2.8-RELEASE/i386/isa/snd/sound.c Mon Nov 30 07:52:16 1998 +++ sys/i386/isa/snd/sound.c Tue Dec 29 00:08:11 1998 @@ -50,6 +50,10 @@ * */ +/* + * $Id: sound.c,v 1.1.1.3.2.2 1998/12/28 08:33:25 sanpei Exp $ + */ + #include "opt_devfs.h" #include @@ -1242,15 +1246,27 @@ #include #include +#ifndef __FreeBSD_version +#define __FreeBSD_version 228000 +#endif + static int +#if __FreeBSD_version > 227000 sndmmap(dev_t dev, vm_offset_t offset, int nprot) +#else +sndmmap(dev_t dev, int offset, int nprot) +#endif /* __FreeBSD_version */ { snddev_info *d = get_snddev_info(dev, NULL); DEB(printf("sndmmap d 0x%p dev 0x%04x ofs 0x%08x nprot 0x%08x\n", d, dev, offset, nprot)); +#if __FreeBSD_version > 227000 if (d == NULL || nprot & PROT_EXEC || offset < 0) +#else + if (d == NULL || nprot & PROT_EXEC) +#endif return -1 ; /* forbidden */ if (offset >= d->dbuf_out.bufsize && (nprot & PROT_WRITE) ) @@ -1318,7 +1334,7 @@ if (status_len != 0) /* only do init once */ return ; sprintf(status_buf, - "FreeBSD Audio Driver (981022) " __DATE__ " " __TIME__ "\n" + "FreeBSD Audio Driver (981022-ESS19981221) " __DATE__ " " __TIME__ "\n" "Installed devices:\n"); for (i = 0; i < NPCM_MAX; i++) { diff -urN sys.2.2.8-RELEASE/i386/isa/snd/sound.h sys/i386/isa/snd/sound.h --- sys.2.2.8-RELEASE/i386/isa/snd/sound.h Thu Jun 11 02:37:02 1998 +++ sys/i386/isa/snd/sound.h Tue Dec 22 13:52:13 1998 @@ -28,6 +28,10 @@ * */ +/* + * $Id: sound.h,v 1.1.1.2.4.1 1998/12/21 11:47:32 sanpei Exp $ + */ + #ifdef KERNEL #include "pcm.h" #else diff -urN sys.2.2.8-RELEASE/i386/isa/spc.c sys/i386/isa/spc.c --- sys.2.2.8-RELEASE/i386/isa/spc.c Thu Jan 1 09:00:00 1970 +++ sys/i386/isa/spc.c Tue Dec 22 13:51:37 1998 @@ -0,0 +1,1366 @@ +/* + * Copyright (c) 1995, 1996 Takahide Matsutsuka + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * REX-5535 (MB89352A (SPC)) SCSI Driver + * by Takahide Matsutsuka (matsu@cs.titech.ac.jp) February, 1996 + * + * Acknowledgements: Many of the algorithms used in this driver are + * inspired by the work of Tohru Kobayashi (koba@lsi.yokogawa.co.jp). + * Thanks a lot! + */ +/* + * This version work on: + * RATOC REX-5535/5535AC/5535AMC/5535X/5535XM + * + * $Id: spc.c,v 1.1.8.1 1998/12/05 22:47:51 itojun Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#ifdef PC98 +#include +#else +#include +#endif +#include +#include + +#include + +#include "apm.h" +#if NAPM > 0 +#include +#endif /* NAPM > 0 */ + +/* pccard support */ +#include "card.h" +#if NCARD > 0 +#include +#include +#include +#include +#endif /* NCARD > 0 */ + +#include + +#include "spc.h" +#ifndef NSPC +#define NSPC 1 +#endif +#define SPC_HOST_ID 7 +#define NTARGETS 8 +#define NLUNS 8 +#define SPC_TIMEOUT 10000000 + +#define SPC_SET_TC(port, len) do {\ + outb((port) + SPC_TCH, (len)>>16);\ + outb((port) + SPC_TCM, (len)>>8);\ + outb((port) + SPC_TCL, (len));\ + } while(0) +#define SPC_GET_TC(port) (\ + (inb((port) + SPC_TCH)<<16)|\ + (inb((port) + SPC_TCM)<<8)|\ + inb((port) + SPC_TCL)\ + ) + +#define SQ_FLG_USEDISCON (1<<0) +#define SQ_FLG_RSNS (1<<1) /* request sense */ + +static int spc_unit = 0; + +struct spc_queue { + struct spc_queue *cq_next; + int flags; + struct scsi_xfer *xs; + u_char *data; /* data pointer */ + int datalen; /* data pointer */ + struct scsi_xfer *alt_xs; /* */ + u_char *alt_data; /* data pointer */ + int alt_datalen; /* data pointer */ + int alt_statusbyte; +}; + +typedef enum { + IN_BUSFREE = 0, + IN_SELECTION_IN_PROGRESS, + IN_CONNECTED_MO, + IN_CONNECTED, + IN_WAITDISCONNECT, + IN_WAITBUSFREE +} SPC_STATE; + +static struct spc_data { /* one of these per adapter */ + int unit; + int baseport; /* I/O base */ + SPC_STATE state; + struct scsi_link sc_link; /* each existing device */ + struct spc_queue *cq_first; /* command queue first */ + struct spc_queue *cq_last; /* command queue last */ + struct spc_queue *fq_first; /* free queue first */ + struct spc_queue *fq_last; /* free queue last */ + struct spc_queue *busy[NTARGETS][NLUNS]; + int target; /* current target */ + int lun; /* current lun */ + u_char *data; /* current data pointer */ + int datalen; /* current data pointer */ + int statusbyte; + int slot; /* information for reconfiguration */ + int alive; /* is driver alive? */ +} *spcdata[NSPC]; + +/* the below structure is so we have a default dev struct for out link struct */ static struct scsi_device spc_dev = { + NULL, /* Use default error handler */ + NULL, /* have a queue, served by this */ + NULL, /* have no async handler */ + NULL, /* Use default 'done' routine */ + "spc", + 0, + { 0, 0 } +}; + +static inline void +spc_free_queue(struct spc_data *spc, struct spc_queue *sq) +{ + unsigned int s = splbio(); + if( !spc->fq_first ) + spc->fq_first = sq; + else + spc->fq_last->cq_next = sq; + spc->fq_last = sq; + splx(s); +} + +/* prototypes ... */ +/* called by higher level drivers */ +static int spc_probe(struct isa_device *); +static int spc_attach(struct isa_device *); +static int32_t spc_scsi_cmd(struct scsi_xfer *); +static u_int32_t spc_adapter_info(int); +static void spc_minphys(struct buf *); +/*void spcintr(int);*/ + +/* private routines */ +static void spc_done(struct spc_data *, int32_t); +static int spc_command(struct spc_data *); +static void spc_selection(struct spc_data *); +static int spc_sel_sub(struct spc_data *, struct spc_queue *, int32_t *); +static int spc_reselection(struct spc_data *, int); +static int spc_poll(struct spc_data *, struct spc_queue *); +static int spc_progtx(int, u_char *, int, int, int *); +static int spc_progrx(int, u_char *, int, int, int *); +static int spc_byte_in(int, int); +static int spc_byte_out(int, int, int); +static int spc_next_phase(int); +static int spc_pollport(int, int, int); +static struct scsi_xfer *spc_alloc_rsns(const struct scsi_xfer *); +static void spc_free_rsns(struct scsi_xfer *); +static void spc_complete(struct spc_data *); +static int spc_init(struct spc_data *); +static void spc_cleanup(struct spc_data *); +static void spc_dumpreg(int, const char *); +#ifdef SCSI_DETACH +static void spcdetach __P((struct isa_device *dev)); +#endif + +/* pccard support */ +#if NCARD > 0 +static int spc_card_intr(struct pccard_devinfo *); +static void spc_card_unload(struct pccard_devinfo *); +static int spc_card_init(struct pccard_devinfo *); + +static struct pccard_device spc_info = +{ + "spc", + spc_card_init, + spc_card_unload, + spc_card_intr, + 0, /* Attributes - presently unused */ + &bio_imask /* Interrupt mask for device */ + /* This should also include net_imask?? */ +}; + +DATA_SET(pccarddrv_set, spc_info); + +static int probing_pccard = 0; + +/* + * Initialize the device - called from Slot manager. + * if first is set, then initially check for + * the device's existence before initialising it. + * Once initialised, the device table may be set up. + */ +static int +spc_card_init(struct pccard_devinfo *devi) +{ + /* + * validate unit number. + */ + static int already_spcinit; + struct spc_data *spc = spcdata[devi->pd_unit]; + + if( devi->pd_unit >= NSPC ) + return(ENODEV); + /* Make sure it isn't already initialisd. */ + if( already_spcinit == 1 ) { + if( spc_init(spc) == 0 ) + return(ENXIO); + if( spc_attach(&devi->isahd) == 0 ) + return(ENXIO); + return 0; + } + /* + * Probe the device. If a value is returned, the + * device was found at the location. + */ +#if 0 + printf("probe spc\n"); +#endif + probing_pccard = 1; + if( spc_probe(&devi->isahd) == 0 ) { + probing_pccard = 0; + return(ENXIO); + } + probing_pccard = 0; +#if 0 + printf("attach spc\n"); +#endif + if( spc_attach(&devi->isahd) == 0 ) + return(ENXIO); + already_spcinit = 1; + return 0; + + /* + * XXX TODO: + * If it was already inited before, the device structure + * should be already initialised. Here we do + * reset spc, + * but I don't know whether this is the best way... + */ + if( !spc_init(spc) ) + return (ENXIO); + spc_dumpreg(spc->baseport, "resume"); + printf("spc%d: resumed\n", spc->unit); + return 0; +} +/* + * spc_card_unload - unload the driver and clear the table. + * XXX TODO: + * This is called usually when the card is ejected, but + * can be caused by the modunload of a controller driver. + * The idea is reset the driver's view of the device + * and ensure that any driver entry points such as + * read and write do not hang. + */ +static void +spc_card_unload(struct pccard_devinfo *devi) +{ + int unit = devi->pd_unit; + struct spc_data *spc = spcdata[unit]; + + /* + * Calling printf() in xxunload() makes hotswap operations + * unstable, so I removed all printf()'s in xxunload() except + * critical ones. + * Tatsumi Hosokawa + */ + + spc->alive = 0; +#ifdef SCSI_DETACH + spcdetach(&devi->isahd); +#endif +#if 0 + printf("spc%d: unload\n", unit); +#endif +} +/* + * spc_card_intr - Shared interrupt called from + * front end of PC-Card handler. + */ +static int +spc_card_intr(struct pccard_devinfo *devi) +{ + spcintr(devi->pd_unit); + return 1; +} +#endif /* NCARD > 0 */ + +#define SPC_DISCONNECT /* undef if driver doesn't work well yet... */ +#undef SPC_DEBUG /* display trace data */ + +#ifdef SPC_DEBUG +#define SPC_TRACE(x) printf x; +#else +#define SPC_TRACE(x) +#endif + +struct isa_driver spcdriver = { + spc_probe, spc_attach, "spc", +}; + +struct scsi_adapter spc_switch = { + spc_scsi_cmd, + spc_minphys, + 0, + 0, + spc_adapter_info, + "spc", + { 0, 0 } +}; + +/* + * INITIALIZATION ROUTINES (probe, attach ++) + */ + +/* + * spc_probe: probe for MB89352(A) SCSI controller + * returns non-zero value if a controller is found. + */ +static int +spc_probe(struct isa_device *dvp) +{ + int unit = spc_unit; + struct spc_data *spc; + + SPC_TRACE(("spc: probe\n")); + + if( (unit >= NSPC) && !dvp->id_reconfig ) { + printf("spc%d: unit number too high\n", unit); + return 0; + } + + if ((dvp->id_flags & SPC_FLAGS_PCCARD_ONLY) && !probing_pccard) + return 0; + + if( !dvp->id_reconfig ) { + /* prepare structure for the unit */ + spc = malloc(sizeof(struct spc_data), M_TEMP, M_NOWAIT); + bzero(spc, sizeof(struct spc_data)); + spc->baseport = dvp->id_iobase; + spc->fq_first = spc->fq_last = 0; + spcdata[unit] = spc; + dvp->id_unit = unit; + + if( !spc_init(spc) ) { + /* init failed, maybe scsi bus is off-lined */ + free(spc, M_TEMP); + return 0; + } + + spc_unit++; /* for the next adapter */ + printf("spc%d: REX5535 (MB89352A) PCMCIA SCSI adapter\n", unit); + } else { + /* reconfiguration time */ + spc = spcdata[dvp->id_unit]; + if( !spc_init(spc) ) + return 0; + } + + return 16; +} + +#ifdef SCSI_DETACH +static void +spcdetach(dev) +struct isa_device *dev; +{ + int unit = dev->id_unit; + struct scsibus_data *scbus; + + scbus = (struct scsibus_data *)scsi_extend_get(spcdata[unit]->sc_link.scsibus); + scsi_detachdev(scbus); +} +#endif + + +static int +spc_attach(struct isa_device *dvp) +{ + int unit = dvp->id_unit; + struct spc_data *spc = spcdata[unit]; + struct scsibus_data *scbus; + + SPC_TRACE(("spc%d: attach\n",unit)); + + if( dvp->id_reconfig ) + return 1; + + /* + * fill in the prototype scsi_link. + */ + spc->sc_link.adapter_unit = unit; + spc->sc_link.adapter_targ = SPC_HOST_ID; + spc->sc_link.adapter_softc = spc; + spc->sc_link.adapter = &spc_switch; + spc->sc_link.device = &spc_dev; + + /* + * Prepare the scsibus_data area for the upperlevel + * scsi code. + */ + scbus = scsi_alloc_bus(); + if( !scbus ) return 0; + scbus->adapter_link = &spc->sc_link; + + /* + * ask the adapter what subunits are present + */ + + scsi_attachdevs(scbus); + + return 1; +} + +static u_int32_t +spc_adapter_info(int unit) +{ + SPC_TRACE(("spc%d: adapter_info\n", unit)); + return 2; /* 2 outstanding requests at a time are acceptable */ +} + +static void +spc_minphys(struct buf *bp) +{ + SPC_TRACE(("spc_minphys:%d\n", bp->b_bcount)); +#if 0 /* probably not needed...can it be true? */ +#define PAGESIZ 4096 +#define SPC_NSEG 2 + if( bp->b_bcount > ((SPC_NSEG - 1) * PAGESIZ) ) + bp->b_bcount = ((SPC_NSEG - 1) * PAGESIZ); +#endif +} + +/* + * DRIVER ROUTINES (scsi_cmd, selection, ++) + */ + +/* + * desirable sequence + * 1.spc_scsi_cmd: receive scsi_xfer and queueing + * 2.spcintr: called by kernel interrupt handler + * 3.proceed scsi sequence + * (1) spc_selection: starts new scsi command from queue + * (2) spc_command: proceed scsi phase + * (3) spc_reselection: reselected by target + * (4) spc_complete: if needed, do self request sense + * (5) spc_poll: if booting time, don't use interrupt + */ +/* + * spc_scsi_cmd: receive scsi command from higher level module + */ +static int32_t +spc_scsi_cmd(struct scsi_xfer *xs) +{ + int unit = xs->sc_link->adapter_unit; + struct spc_data *spc = spcdata[unit]; + struct spc_queue *sq; + unsigned int s; + int32_t erc; + + SPC_TRACE(("spc%d:spc_scsi_cmd\n", unit)); + if( !spc->alive ) { + /* now card is off-lined */ + xs->error = XS_DRIVER_STUFFUP; + return (COMPLETE); + } + /* queueing command */ + if( spc->fq_first ) { + s = splbio(); + sq = spc->fq_first; + spc->fq_first = spc->fq_first->cq_next; + splx(s); + } else { + if( (sq = (struct spc_queue *) malloc(sizeof(struct spc_queue), + M_TEMP, M_NOWAIT)) == NULL ) { + /* can't malloc */ + printf("spc%d: queue full\n", spc->unit); + return (TRY_AGAIN_LATER); + } + } + + sq->xs = xs; + sq->data = xs->data; + sq->datalen = xs->datalen; + sq->cq_next = NULL; + sq->alt_xs = NULL; +#ifndef SPC_DISCONNECT + sq->flags = 0; +#else + sq->flags = SQ_FLG_USEDISCON; +#endif + + if( xs->flags & SCSI_NOMASK ) { + /* it's booting time. don't allow interrupts. */ + sq->flags &= ~SQ_FLG_USEDISCON; + erc = spc_poll(spc, sq); + spc_free_queue(spc, sq); + return erc; + } + + s = splbio(); + /* add to end of queue */ + if( spc->cq_first == NULL ) { + spc->cq_first = sq; + } else { + spc->cq_last->cq_next = sq; + } + spc->cq_last = sq; + spc_selection(spc); /* start selection */ + outb(spc->baseport + SPC_SCTL, SPC_SCTL_ENABLE); /* enable interrupt */ + splx(s); + return (SUCCESSFULLY_QUEUED); +} + +/* + * spcintr: called by kernel interrupt handler + */ +void +spcintr(int unit) +{ + struct spc_data *spc = spcdata[unit]; + int port = spc->baseport; + int intr, target = 0; + + SPC_TRACE(("spc%d: spcintr\n", unit)); + intr = inb(port + SPC_INTS); /* read interrupt */ + if( intr & SPC_INTS_RESELECT ) { + target = inb(port + SPC_TEMP); + } + outb(port + SPC_INTS, intr); /* clear interrupt */ + +#if NCARD > 0 + if (intr == 0xff) { + printf("spc%d: strange status - PC-card removed?\n", + spc->unit); + return; + } +#endif /* NCARD > 0 */ + + /* HARDERR */ + if( intr & SPC_INTS_HARDERR ) { + printf("spc%d: HARDERR SERR=0x%x\n", spc->unit, inb(port + SPC_SERR)); + goto err; + } + + /* RESET */ + if( intr & SPC_INTS_RESET ) { + printf("spc%d: reset condition\n", spc->unit); + goto err; + } + + /* SERVREQ */ + if( intr & SPC_INTS_SERVREQ ) { + printf("spc%d: spurious interrupt(SERVREQ)\n", spc->unit); + goto err; + } + + /* DISCONNECT */ + if( intr & SPC_INTS_DISCONNECT ) { + if( spc->state == IN_WAITDISCONNECT ) { + /* nothing to do */ + } else if( spc->state == IN_WAITBUSFREE ) { + spc_complete(spc); + } else { + printf("spc%d: spurious interrupt(DISCONNECT) state=%d\n", + spc->unit, spc->state); + goto err; + } + spc->state = IN_BUSFREE; + } + + /* RESELECT */ + if( intr & SPC_INTS_RESELECT ) { + if( spc->state == IN_SELECTION_IN_PROGRESS ) { + outb(port + SPC_SCMD, SPC_SCMD_RESETATN); /* reset ATN */ + if( (spc->busy[spc->target][spc->lun]->flags & SQ_FLG_RSNS) == 0 ) { + spc->busy[spc->target][spc->lun] = NULL; + } + } + if( spc_reselection(spc, target) < 0 ) { + goto err; + } + if( spc_command(spc) < 0 ) { + goto err; + } + intr &= ~(SPC_INTS_COMPLETE); + } + + /* COMPLETE */ + if( intr & SPC_INTS_COMPLETE ) { + if( spc->state == IN_SELECTION_IN_PROGRESS ) { + spc->state = IN_CONNECTED_MO; + spc->cq_first = spc->cq_first->cq_next; /* delete from queue */ + if( spc_command(spc) < 0 ) { + goto err; + } + } else { + printf("spc%d: spurious interrupt(COMPLETE) state=%d\n", + spc->unit, spc->state); + goto err; + } + } + + /* TIMEOUT */ + if( intr & SPC_INTS_TIMEOUT ) { + outb(port + SPC_SCMD, SPC_SCMD_RESETATN); /* reset ATN */ + if( spc->state == IN_SELECTION_IN_PROGRESS ) { + printf("spc%d: selection timeout id=%d\n", spc->unit, spc->target); + spc->statusbyte = -1; + spc->cq_first = spc->cq_first->cq_next; /* delete from queue */ + spc_complete(spc); + } else { + printf("spc%d: spurious interrupt(TIMEOUT) state=%d\n", + spc->unit, spc->state); + goto err; + } + spc->state = IN_BUSFREE; + } + spc_selection(spc); + return; + + err: + (void) spc_init(spc); + spc_cleanup(spc); + spc->state = IN_BUSFREE; + spc_selection(spc); + return; +} + +/* + * (1) spc_selection: starts new scsi command + */ +static void +spc_selection(struct spc_data *spc) +{ + struct spc_queue *sq; + int32_t erc; + + SPC_TRACE(("spc%d: spc_selection\n", spc->unit)); + + if( spc->state != IN_BUSFREE ) { + return; + } + + again: + if( (sq = spc->cq_first) != NULL ) { + spc->state = IN_SELECTION_IN_PROGRESS; + if( spc_sel_sub(spc, sq, &erc) < 0 ) { + sq->xs->flags |= ITSDONE; + sq->xs->resid = sq->xs->datalen; + sq->xs->error = erc; + scsi_done(sq->xs); + spc->cq_first = sq->cq_next; /* delete from queue */ + spc_free_queue(spc, sq); + spc->state = IN_BUSFREE; + goto again; + } + } +} + +static int +spc_sel_sub(struct spc_data *spc, struct spc_queue *sq, int32_t *erc) +{ + const struct scsi_xfer *xs; + int port = spc->baseport; + int target, lun, val; + + SPC_TRACE(("spc%d: spc_sel_sub\n", spc->unit)); + + xs = sq->xs; + target = xs->sc_link->target; + lun = xs->sc_link->lun; + + if( sq->flags & SQ_FLG_RSNS ) { + /* request sense in progress */ + if( spc->busy[target][lun] != sq ) { + printf("spc%d: ??????\n", spc->unit); + } + } else { + if( spc->busy[target][lun] ) { + /* target is busy */ + printf("spc%d: target=%d, lun=%d is busy\n", spc->unit, target, lun); + *erc = XS_BUSY; + return -1; + } + } + if( xs->flags & SCSI_RESET ) { + /* command is empty, reset controller */ + printf("spc%d: reset controller by higher module\n", spc->unit); + (void) spc_init(spc); + *erc = XS_NOERROR; + return -1; + } + + spc->target = target; + spc->lun = lun; + spc->busy[target][lun] = sq; + spc->data = xs->data; + spc->datalen = xs->datalen; + spc->statusbyte = 0; + + outb(port + SPC_PCTL, 0); /* disable bus free interrupt */ + outb(port + SPC_SCMD, SPC_SCMD_SETATN); /* set ATN for IDENTIFY MSG */ + val = inb(port + SPC_BDID); /* get host id */ + val |= (1 << spc->target); /* set target id */ + outb(port + SPC_TEMP, val); /* set host id & target id */ + outb(port + SPC_TCH, 0x0f); /* set replying time */ + outb(port + SPC_TCM, 0x46); + outb(port + SPC_TCL, 0x04); /* set twait */ + outb(port + SPC_SCMD, SPC_SCMD_SELECT); /* exec selection phase! */ + *erc = XS_NOERROR; + return 0; +} + +/* + * (2) spc_command: proceed scsi phase + */ +static int +spc_command(struct spc_data *spc) +{ + struct scsi_xfer *xs; + struct spc_queue *sq; + int port = spc->baseport; + int phase, xfered, r, msg; + + SPC_TRACE(("spc%d: spc_command\n", spc->unit)); + + sq = spc->busy[spc->target][spc->lun]; + xs = sq->xs; + + again0: + if( (phase = spc_next_phase(port)) < 0 ) { + return -1; + } + + switch( phase ) { + case SPC_PCTL_MSGOUT: + outb(port + SPC_SCMD, SPC_SCMD_RESETATN); /* reset ATN */ + if( spc->state == IN_CONNECTED_MO ) { + /* send identify message */ + if( sq->flags & SQ_FLG_USEDISCON ) { + msg = 0xc0 | spc->lun; + } else { + msg = 0x80 | spc->lun; + } + if( spc_byte_out(port, msg, SPC_PCTL_MSGOUT) < 0 ) { + printf("spc%d: cannot send IDENTIFY MSG\n", spc->unit); + return -1; + } + spc->state = IN_CONNECTED; + } else { + /* send No Operation message */ + if( spc_byte_out(port, 0x08, SPC_PCTL_MSGOUT) < 0 ) { + printf("spc%d: cannot send No Operation MSG\n", spc->unit); + return -1; + } + } + break; + case SPC_PCTL_MSGIN: + if( (msg = spc_byte_in(port, SPC_PCTL_MSGIN)) < 0 ) { + return -1; + } + switch( msg ) { + case SPC_MSG_SAVEDATAP: + sq->data = spc->data; /* save data pointer */ + sq->datalen = spc->datalen; /* save data pointer */ + break; + case SPC_MSG_RESTOREP: + spc->data = sq->data; /* restore pointers */ + spc->datalen = sq->datalen; /* restore pointers */ + break; + case SPC_MSG_DISCONNECT: + spc->state = IN_WAITDISCONNECT; + return 0; + case SPC_MSG_CMDCOMPLETE: + spc->state = IN_WAITBUSFREE; + return 0; + default: + printf("spc%d: invalid message 0x%x\n", spc->unit, msg); + return -1; + } + break; + case SPC_PCTL_COMMAND: + if( spc_progtx(port, (u_char *)xs->cmd, xs->cmdlen, + phase, &xfered) < 0 ) { + return -1; + } + break; + case SPC_PCTL_DATAOUT: + r = spc_progtx(port, spc->data, spc->datalen, phase, &xfered); + spc->data += xfered; + spc->datalen -= xfered; + if( r < 0 ) { + return -1; + } + break; + case SPC_PCTL_DATAIN: + r = spc_progrx(port, spc->data, spc->datalen, phase, &xfered); + spc->data += xfered; + spc->datalen -= xfered; + if( r < 0 ) { + return -1; + } + break; + case SPC_PCTL_STATUS: + if( (spc->statusbyte = spc_byte_in(port, SPC_PCTL_STATUS)) < 0 ) { + return -1; + } + spc->statusbyte &= 0x1e; + break; + default: + printf("spc%d: invalid phase 0x%x\n", spc->unit, phase); + return -1; + } + goto again0; +} + +/* + * (3) spc_reselection: reselected by target + */ +static int +spc_reselection(struct spc_data *spc, int target) +{ + struct spc_queue *sq; + int port = spc->baseport; + int id, phase, val; + + SPC_TRACE(("spc%d: spc_reselection\n", spc->unit)); + + for(id = 0; id < 8; id++) { + if( (target & (1<= 8 ) { + printf("spc%d: cannot get target ID 0x%02x\n", spc->unit, target); + return -1; + } + if( (phase = spc_next_phase(port)) < 0 ) { + return -1; + } + if( phase != SPC_PCTL_MSGIN ) { + printf("spc%d: not MSGIN\n", spc->unit); + return -1; + } + if( (val = spc_byte_in(port, SPC_PCTL_MSGIN)) < 0 ) { + printf("spc%d: cannot recive IDENTIFY MSG\n", spc->unit); + return -1; + } + if( (val & 0x80) == 0 ) { + /* not identify message */ + printf("spc%d: bogus reselection\n", spc->unit); + return -1; + } + spc->target = id; + spc->lun = val & 0x07; /* get LUN */ + sq = spc->busy[id][spc->lun]; + spc->state = IN_CONNECTED; + spc->data = sq->data; /* restore data pointer */ + spc->datalen = sq->datalen; /* restore data pointer */ + return 0; +} + +/* + * (4) spc_complete: if needed, do self request sense + */ +static void +spc_complete(struct spc_data *spc) +{ + struct spc_queue *sq; + + SPC_TRACE(("spc%d: spc_complete\n", spc->unit)); + + sq = spc->busy[spc->target][spc->lun]; + if( sq->flags & SQ_FLG_RSNS ) { /* request sense in progress */ + int statusbyte; + struct scsi_xfer *sxs; + + statusbyte = spc->statusbyte; + sxs = sq->xs; + sq->xs = sq->alt_xs; + sq->alt_xs = NULL; + sq->flags &= ~SQ_FLG_RSNS; + spc->data = sq->alt_data; + spc->datalen = sq->alt_datalen; + spc->statusbyte = sq->alt_statusbyte; + spc_free_rsns(sxs); + if( statusbyte == 0 ) { + spc_done(spc, XS_SENSE); + } else { + printf("spc%d: request sense failed\n", spc->unit); + spc_done(spc, XS_DRIVER_STUFFUP); + } + } else { + switch( spc->statusbyte ) { + case 0x00: + spc_done(spc, XS_NOERROR); + break; + case 0x02: + if( sq->xs->flags & SCSI_ERR_OK ) { + spc_done(spc, XS_NOERROR); + } else if( (sq->flags & SQ_FLG_RSNS) == 0 ) { + struct scsi_xfer *sxs; + sxs = spc_alloc_rsns(sq->xs); + sq->alt_xs = sq->xs; + sq->alt_data = spc->data; + sq->alt_datalen = spc->datalen; + sq->alt_statusbyte = spc->statusbyte; + sq->xs = sxs; + sq->flags |= SQ_FLG_RSNS; + /* in queue */ + sq->cq_next = NULL; + if( spc->cq_first == NULL ) { + spc->cq_first = sq; + } else { + spc->cq_last->cq_next = sq; + } + spc->cq_last = sq; + } + break; + case 0x08: + spc_done(spc, XS_BUSY); + break; + default: + printf("spc%d: unknown statusbyte 0x%x\n", + spc->unit, spc->statusbyte); + spc_done(spc, XS_DRIVER_STUFFUP); + } + } +} + +/* + * (5) spc_poll: use polling (at booting time) + */ +static int +spc_poll(struct spc_data *spc, struct spc_queue *sq) +{ + struct scsi_xfer *xs; + int port = spc->baseport; + int phase, val, wait; + int32_t erc; + + SPC_TRACE(("spc%d: spc_poll\n", spc->unit)); + + xs = sq->xs; + outb(port + SPC_INTS, 0xff); /* reset interrupt */ + spc->state = IN_SELECTION_IN_PROGRESS; + if( spc_sel_sub(spc, sq, &erc) < 0 ) { + printf("spc%d: spc_poll: selection not start\n", spc->unit); + (void) spc_init(spc); + goto err; + } + + /* need to check end of selection phase ... */ + for(wait = SPC_TIMEOUT;;) { + if( (val = inb(port + SPC_INTS)) & SPC_INTS_COMPLETE ) { + /* selection success */ + outb(port + SPC_INTS, 0xff); /* reset interrupt */ + break; + } + if( val & SPC_INTS_TIMEOUT ) { + /* selection timeout */ + outb(port + SPC_SCMD, SPC_SCMD_RESETATN); /* reset ATN */ + goto err; + } + if( wait-- == 0 ) { + printf("spc%d: spc_poll: selecton not complete\n", spc->unit); + (void) spc_init(spc); + goto err; + } + } + + spc->state = IN_CONNECTED_MO; + if( spc_command(spc) < 0 ) { + (void) spc_init(spc); + goto err; + } + + /* wait for bus free */ + if( spc_pollport(port+SPC_INTS, SPC_INTS_DISCONNECT, + SPC_INTS_DISCONNECT) < 0 ) { + printf("spc%d: spc_poll: timeout at bus free\n", spc->unit); + (void) spc_init(spc); + goto err; + } + outb(port + SPC_INTS, 0xff); /* reset interrupt */ + + xs->status = spc->statusbyte; + switch (xs->status) { + case 0x00: + xs->error = XS_NOERROR; + break; + case 0x02: + if( xs->flags & SCSI_ERR_OK ) { + xs->error = XS_NOERROR; + } else if( (sq->flags & SQ_FLG_RSNS) == 0 ) { + struct scsi_xfer *sxs; + sxs = spc_alloc_rsns(xs); + sq->alt_xs = sq->xs; + sq->alt_data = spc->data; + sq->alt_datalen = spc->datalen; + sq->alt_statusbyte = spc->statusbyte; + sq->xs = sxs; + sq->flags |= SQ_FLG_RSNS; + if( spc_poll(spc, sq) != COMPLETE ) { + xs->error = XS_DRIVER_STUFFUP; + printf("spc%d: request sense failed\n", spc->unit); + } else { + xs->error = XS_SENSE; + } + sq->xs = sq->alt_xs; + sq->alt_xs = NULL; + sq->flags &= ~SQ_FLG_RSNS; + spc->data = sq->alt_data; + spc->datalen = sq->alt_datalen; + spc->statusbyte = sq->alt_statusbyte; + spc_free_rsns(sxs); + } else { + return (HAD_ERROR); + } + break; + case 0x08: + xs->error = XS_BUSY; + break; + default: + printf("spc%d: unknown statusbyte 0x%x\n", spc->unit, xs->status); + xs->error = XS_DRIVER_STUFFUP; + } + xs->flags |= ITSDONE; + xs->resid = spc->datalen; + spc->state = IN_BUSFREE; + if( (sq->flags & SQ_FLG_RSNS) == 0 ) { + spc->busy[spc->target][spc->lun] = NULL; + } + return (COMPLETE); + err: + outb(port + SPC_INTS, 0xff); /* reset interrupt */ + xs->error = XS_TIMEOUT; + xs->flags |= ITSDONE; + xs->resid = spc->datalen; + spc->state = IN_BUSFREE; + if( (sq->flags & SQ_FLG_RSNS) == 0 ) { + spc->busy[spc->target][spc->lun] = NULL; + } + return (HAD_ERROR); +} + +/* + * MISC FUNCTIONS + */ +static struct scsi_xfer +*spc_alloc_rsns(const struct scsi_xfer *xs) +{ + struct scsi_xfer *sxs; + struct scsi_sense *scmd; + + if( (sxs = malloc(sizeof(struct scsi_xfer), M_TEMP, M_NOWAIT)) == NULL ) { + return NULL; + } + if( (scmd = malloc(sizeof(struct scsi_sense), M_TEMP, M_NOWAIT)) == NULL ) { + free(sxs, M_TEMP); + return NULL; + } + bzero(sxs, sizeof(struct scsi_xfer)); + bzero(scmd, sizeof(struct scsi_sense)); + scmd->op_code = REQUEST_SENSE; + scmd->byte2 = (xs->sc_link->lun << 5) & 0xe0; + scmd->length = sizeof(struct scsi_sense_data); + sxs->flags = SCSI_DATA_IN; + sxs->cmd = (void *)scmd; + sxs->cmdlen = sizeof(struct scsi_sense); + sxs->data = (u_char *)&xs->sense; + sxs->datalen = sizeof(struct scsi_sense_data); + sxs->timeout = xs->timeout; + sxs->sc_link = xs->sc_link; + return sxs; +} + +static void +spc_free_rsns(struct scsi_xfer *sxs) +{ + free(sxs->cmd, M_TEMP); + free(sxs, M_TEMP); +} + +static void +spc_dumpreg(int port, const char *p) +{ + printf("spc: %s SSTS=0x%x INTS=0x%x PSNS=0x%x PCTL=0x%x\n", + p, + inb(port + SPC_SSTS), + inb(port + SPC_INTS), + inb(port + SPC_PSNS), + inb(port + SPC_PCTL)); +} + +static int +spc_pollport(int port, int mask, int ptn) +{ + int wait, val; + + for(wait = SPC_TIMEOUT; wait > 0; wait--) { + if( ((val = inb(port)) & mask) == ptn ) { + return val; + } + } + return -1; +} + +static int +spc_next_phase(int port) +{ + int psns; + + if( (psns = spc_pollport(port+SPC_PSNS, SPC_PSNS_REQ, SPC_PSNS_REQ)) < 0 ) { + printf("spc: spc_next_phase: REQ not assert\n"); + return -1; + } + return psns & SPC_PSNS_PHASE; +} + +static void +spc_done(struct spc_data *spc, int32_t xserror) +{ + struct spc_queue *sq; + + sq = spc->busy[spc->target][spc->lun]; + spc->busy[spc->target][spc->lun] = NULL; + sq->xs->flags |= ITSDONE; + sq->xs->resid = spc->datalen; + sq->xs->status = spc->statusbyte; + sq->xs->error = xserror; + if( sq->xs->resid ) { /* XXX */ + printf("spc_done: xs %d resid %d\n", sq->xs->datalen, sq->xs->resid); + } + scsi_done(sq->xs); + spc_free_queue(spc, sq); +} + +static int +spc_progtx(int port, u_char *data, int datalen, int phase, int *xfered) +{ + long wait; + int n, ssts, datalenorg; + + datalenorg = datalen; + outb(port + SPC_PCTL, phase); + SPC_SET_TC(port, datalen); /* transfer byte counter set */ + outb(port + SPC_SCMD, SPC_SCMD_PROGTX); /* programed transfer */ + + if( spc_pollport(port + SPC_SSTS, 0xf0, 0xb0) < 0 ) { + spc_dumpreg(port, "spc_progtx"); + *xfered = 0; + return -1; + } + + if( (inb(port + SPC_SSTS) & SPC_SSTS_DREMPTY) == 0 ) { /* XXX */ + spc_dumpreg(port, "AA spc_progtx: not empty"); + } + + for(;;) { + for(wait = SPC_TIMEOUT;;) { + if( ((ssts = inb(port + SPC_SSTS)) & SPC_SSTS_BUSY) == 0) { + goto doneWRITE; + } + if( (ssts & 3) == SPC_SSTS_DREMPTY ) { + break; + } + if( wait-- == 0 ) { + *xfered = datalenorg - SPC_GET_TC(port); + spc_dumpreg(port, "spc_progtx: timeout"); + return -1; + } + } + if( datalen > 0 ) { + if( datalen >= 8 ) { + n = 8; + } else { + n = datalen; + } + outsb(port + SPC_DREG, data, n); + data += n; + datalen -= n; + } + } + doneWRITE: + *xfered = datalenorg - SPC_GET_TC(port); + outb(port + SPC_INTS, SPC_INTS_COMPLETE|SPC_INTS_SERVREQ); + return 0; +} + +static int +spc_progrx(int port, u_char *data, int datalen, int phase, int *xfered) +{ + int datalenorg, ssts, wait; + + datalenorg = datalen; + outb(port + SPC_PCTL, phase); + SPC_SET_TC(port, datalen); /* transfer byte counter set */ + outb(port + SPC_SCMD, SPC_SCMD_PROGRX); /* programed transfer */ + + if( spc_pollport(port+SPC_SSTS, 0xd0, 0x90) < 0 ) { + spc_dumpreg(port, "spc_progrx"); + *xfered = 0; + return -1; + } + + while(1) { + for(wait = SPC_TIMEOUT;;) { + if( ((ssts = inb(port + SPC_SSTS)) & SPC_SSTS_DREMPTY) == 0 ) { + break; + } + if( (ssts & SPC_SSTS_BUSY) == 0) { + goto doneREAD; + } + if( wait-- == 0 ) { + spc_dumpreg(port, "spc_progrx: timeout"); + *xfered = datalenorg - datalen; + return -1; + } + } + if( datalen > 0 ) { + *data++ = inb(port + SPC_DREG); + datalen--; + } else { + inb(port + SPC_DREG); /* dummy read XXX */ + } + } + doneREAD: + if( (inb(port + SPC_SSTS) & SPC_SSTS_DREMPTY) == 0 ) { /* XXX */ + spc_dumpreg(port, "spc_progrx: not empty"); + } + *xfered = datalenorg - datalen; + outb(port + SPC_INTS, SPC_INTS_COMPLETE|SPC_INTS_SERVREQ); + return 0; +} + +static int +spc_byte_in(int port, int phase) +{ + int retval; + + outb(port + SPC_PCTL, phase); + outb(port + SPC_SCMD, SPC_SCMD_SETACK); + if( spc_pollport(port+SPC_PSNS, SPC_PSNS_REQ, 0) < 0 ) { + spc_dumpreg(port, "spc_byte_in"); + return -1; + } + retval = inb(port + SPC_TEMP); /* read */ + outb(port + SPC_SCMD, SPC_SCMD_RESETACK); + return retval; +} + +static int +spc_byte_out(int port, int data, int phase) +{ + outb(port + SPC_PCTL, phase); + outb(port + SPC_TEMP, data); /* write */ + outb(port + SPC_SCMD, SPC_SCMD_SETACK); + if( spc_pollport(port+SPC_PSNS, SPC_PSNS_REQ, 0) < 0 ) { + spc_dumpreg(port, "spc_byte_out"); + return -1; + } + outb(port + SPC_SCMD, SPC_SCMD_RESETACK); + return 0; +} + +static int +spc_init(struct spc_data *spc) +{ + int port = spc->baseport; + long count = SPC_TIMEOUT; + + outb(port + SPC_SCTL, 0x9a); /* SPC software reset */ + outb(port + SPC_BDID, SPC_HOST_ID); /* set initiator id */ + outb(port + SPC_SCMD, 0); + outb(port + SPC_PCTL, 0); + outb(port + SPC_TEMP, 0); + outb(port + SPC_TCH , 0); + outb(port + SPC_TCM , 0); + outb(port + SPC_TCL , 0); + outb(port + SPC_PSNS, 0); + DELAY(100000); /* wait 100ms */ + outb(port + SPC_SCTL, SPC_SCTL_DISABLE); /* clear SPC reset */ + outb(port + SPC_SCMD, SPC_SCMD_RESET); /* RESET SCSI bus */ + DELAY(100000); /* wait 100ms */ + outb(port + SPC_SCMD, 0); /* RESET SCSI bus */ + DELAY(5000000); /* wait 5s */ + outb(port + SPC_SCMD, SPC_SCMD_BUSRELEASE); + + /* confirm bus release ... */ + while (inb(port + SPC_PSNS) && count) count--; + if( !count ) { + printf("spc%d: init failed, driver disabled\n", spc->unit); + spc->alive = 0; + return 0; + } + spc->alive = 1; + return 1; +} + +static void +spc_cleanup(struct spc_data *spc) +{ + int id, lun; + struct spc_queue *sq; + struct scsi_xfer *sxs; + + printf("spc%d: cleanup current id=%d current lun=%d state=%d\n", + spc->unit, spc->target, spc->lun, spc->state); + for(id = 0; id < NTARGETS; id++) { + for(lun = 0; lun < NLUNS; lun++) { + if( (sq = spc->busy[id][lun]) == NULL ) { + continue; + } + printf("spc%d: cleanup id=%d lun=%d\n", spc->unit, id, lun); + if( sq->flags & SQ_FLG_RSNS ) { + sxs = sq->xs; + if( sq->alt_xs == NULL ) { + continue; + } + sq->xs = sq->alt_xs; + if( sxs ) { + spc_free_rsns(sxs); + } + } + sq->xs->flags |= ITSDONE; + sq->xs->error = XS_TIMEOUT; + scsi_done(sq->xs); + spc_free_queue(spc, sq); + spc->busy[id][lun] = NULL; + } + } +} diff -urN sys.2.2.8-RELEASE/i386/isa/spc.h sys/i386/isa/spc.h --- sys.2.2.8-RELEASE/i386/isa/spc.h Thu Jan 1 09:00:00 1970 +++ sys/i386/isa/spc.h Tue Dec 22 13:51:37 1998 @@ -0,0 +1,138 @@ +/* + * Copyright (c) 1995 Takahide Matsutsuka + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * Header file for REX-5535 (MB89352A (SPC)) SCSI Driver + * by Takahide Matsutsuka (matsu@cs.titech.ac.jp) February, 1996 + */ +/* + * $Id: spc.h,v 1.1.8.1 1998/12/05 22:47:53 itojun Exp $ + */ + +/* + * config flags + */ +#define SPC_FLAGS_PCCARD_ONLY 0x01 + +/* + * SPC I/O port address + */ +#define SPC_BDID 0x00 +#define SPC_SCTL 0x01 +#define SPC_SCMD 0x02 +#define SPC_TMOD 0x03 +#define SPC_INTS 0x04 +#define SPC_PSNS 0x05 +#define SPC_SSTS 0x06 +#define SPC_SERR 0x07 +#define SPC_PCTL 0x08 +#define SPC_MBC 0x09 +#define SPC_DREG 0x0a +#define SPC_TEMP 0x0b +#define SPC_TCH 0x0c +#define SPC_TCM 0x0d +#define SPC_TCL 0x0e + +/* + * SPC_SCTL spc control + */ +#define SPC_SCTL_ENABLE 0x1b +#define SPC_SCTL_DISABLE 0x18 + +/* + * SPC_SCMD command + */ +#define SPC_SCMD_BUSRELEASE 0x00 +#define SPC_SCMD_RESET 0x10 +#define SPC_SCMD_SELECT 0x20 +#define SPC_SCMD_RESETATN 0x40 +#define SPC_SCMD_SETATN 0x60 +#define SPC_SCMD_TRANSFER 0x80 +#define SPC_SCMD_TRANSPAUSE 0xa0 +#define SPC_SCMD_RESETACK 0xc0 +#define SPC_SCMD_SETACK 0xe0 + +#define SPC_SCMD_PROGTX 0x8c +#define SPC_SCMD_PROGRX 0x84 + +/* + * SPC_INTS interrupt sense + */ +#define SPC_INTS_SELECT 0x80 +#define SPC_INTS_RESELECT 0x40 +#define SPC_INTS_DISCONNECT 0x20 +#define SPC_INTS_COMPLETE 0x10 +#define SPC_INTS_SERVREQ 0x08 +#define SPC_INTS_TIMEOUT 0x04 +#define SPC_INTS_HARDERR 0x02 +#define SPC_INTS_RESET 0x01 + +/* + * SPC_PSNS phase sense + */ +#define SPC_PSNS_REQ 0x80 +#define SPC_PSNS_ACK 0x40 +#define SPC_PSNS_ATN 0x20 +#define SPC_PSNS_SEL 0x10 +#define SPC_PSNS_BSY 0x08 +#define SPC_PSNS_MSG 0x04 +#define SPC_PSNS_CD 0x02 +#define SPC_PSNS_IO 0x01 + +#define SPC_PSNS_PHASE 0x07 + +/* + * SPC_SSTS spc status + */ +#define SPC_SSTS_INIT 0x80 +#define SPC_SSTS_TARG 0x40 +#define SPC_SSTS_BUSY 0x20 +#define SPC_SSTS_XFER 0x10 +#define SPC_SSTS_SCSIRST 0x08 +#define SPC_SSTS_TCZERO 0x04 +#define SPC_SSTS_DRFULL 0x02 +#define SPC_SSTS_DREMPTY 0x01 + +/* + * SPC_PCTL phase control + */ +#define SPC_PCTL_MSG 0x04 +#define SPC_PCTL_CD 0x02 +#define SPC_PCTL_IO 0x01 + +#define SPC_PCTL_DATAOUT 0x00 +#define SPC_PCTL_DATAIN 0x01 +#define SPC_PCTL_COMMAND 0x02 +#define SPC_PCTL_STATUS 0x03 +#define SPC_PCTL_MSGOUT 0x06 +#define SPC_PCTL_MSGIN 0x07 + +/* + * others + */ +#define SPC_MSG_CMDCOMPLETE 0x00 +#define SPC_MSG_SAVEDATAP 0x02 +#define SPC_MSG_RESTOREP 0x03 +#define SPC_MSG_DISCONNECT 0x04 diff -urN sys.2.2.8-RELEASE/i386/isa/syscons.c sys/i386/isa/syscons.c --- sys.2.2.8-RELEASE/i386/isa/syscons.c Mon Nov 30 07:52:14 1998 +++ sys/i386/isa/syscons.c Tue Dec 22 13:51:46 1998 @@ -72,6 +72,10 @@ #include #include #include +#ifdef NECMG +#include +#include +#endif #if !defined(MAXCONS) #define MAXCONS 16 @@ -266,7 +270,9 @@ static int history_up_line(scr_stat *scp); static int history_down_line(scr_stat *scp); static int mask2attr(struct term_stat *term); +#ifndef NECMG static void set_keyboard(int command, int data); +#endif /* !NECMG */ static void update_leds(int which); static void set_vgaregs(char *modetable); static void read_vgaregs(char *buf); @@ -318,6 +324,12 @@ scioctl, nullstop, noreset, scdevtotty, ttselect, scmmap, nostrategy, "sc", NULL, -1 }; +#ifdef NECMG +#ifdef NECMG_ZOOMCONS +static int necmg_zoomcons = 0; +#endif +#endif + /* * These functions need to be before calls to them so they can be inlined. */ @@ -369,12 +381,34 @@ } } *ptr = cursor_image; +#ifdef NECMG_DEBUG + printf("draw cursor_image=%04x, pos=%d(%d,%d)\n", + *ptr, scp->cursor_pos - scp->scr_buf, + (scp->cursor_pos - scp->scr_buf)%scp->xsize, + (scp->cursor_pos - scp->scr_buf)/scp->xsize); +#endif +#ifdef NECMG + necmg_cons_update(scp->xsize, scp->ysize, Crtat, + (scp->cursor_pos - scp->scr_buf), + (scp->cursor_pos - scp->scr_buf)); +#endif } static __inline void remove_cursor_image(scr_stat *scp) { *(Crtat + (scp->cursor_oldpos - scp->scr_buf)) = scp->cursor_saveunder; +#ifdef NECMG_DEBUG + printf("erase cursor_image=%04x, pos=%d(%d,%d)\n", + scp->cursor_saveunder, scp->cursor_oldpos - scp->scr_buf, + (scp->cursor_oldpos - scp->scr_buf)%scp->xsize, + (scp->cursor_oldpos - scp->scr_buf)/scp->xsize); +#endif +#ifdef NECMG + necmg_cons_update(scp->xsize, scp->ysize, Crtat, + (scp->cursor_oldpos - scp->scr_buf), + (scp->cursor_oldpos - scp->scr_buf)); +#endif } static __inline void @@ -426,6 +460,23 @@ if (init_done != COLD) return (Crtat != 0); +#ifdef NECMG + { + static u_short dummy[COL*ROW+1]; + Crtat = dummy; + } + crtc_type = KD_NECMG; + crtc_addr = 0; +#ifdef NECMG_DEBUG + printf("necmg_fontrom_base = %x\n", necmg_fontrom_base); +/* + printf("necmg_fontrom_base = %x (physaddr = %x)\n", + necmg_fontrom_base, vtophys(necmg_fontrom_base)); +*/ +#endif /* NECMG_DEBUG */ + return TRUE; +#endif /* NECMG */ + /* * Finish defaulting crtc variables for a mono screen. Crtat is a * bogus common variable so that it can be shared with pcvt, so it @@ -517,6 +568,9 @@ return ((flags & DETECT_KBD) ? FALSE : TRUE); } +#ifdef NECMG + return TRUE; +#else /* NECMG */ /* discard anything left after UserConfig */ empty_both_buffers(sc_kbdc, 10); @@ -657,14 +711,25 @@ (flags & DETECT_KBD) ? m : m | KBD_KBD_CONTROL_BITS); kbdc_lock(sc_kbdc, FALSE); return FALSE; +#endif /* ! NECMG */ } #if NAPM > 0 static int scresume(void *dummy) { - shfts = ctls = alts = agrs = metas = accents = 0; - return 0; + shfts = ctls = alts = agrs = metas = accents = 0; + +#ifdef SYSCONS_VTY_RESUME + wakeup((caddr_t)&cur_console->smode); + if (cur_console->proc && (cur_console->proc != pfind(cur_console->pid))) + cur_console->smode.mode = VT_AUTO; + if(cur_console->smode.mode == VT_PROCESS) { + cur_console->status |= SWITCH_WAIT_ACQ; + psignal(cur_console->proc, cur_console->smode.acqsig); + } +#endif /* SYSCONS_VTY_RESUME */ + return 0; } #endif @@ -759,6 +824,21 @@ case KD_CGA: printf("CGA"); break; +#ifdef NECMG + case KD_NECMG: + if (necmg_fontrom_base == 0) { + necmg_fontrom_base = pmap_mapdev(0x1400000, 0x200000); +#ifdef NECMG_DEBUG + printf("necmg_fontrom_base = %x (physaddr = %x)\n", + necmg_fontrom_base, vtophys(necmg_fontrom_base)); +#endif + } + printf("NEC Mobile Gear %c%c%c%c%c%c %c%c%c%c%c%c%c%c%c%c", + /* NIHONGO KONSO-RU in EUC kanji code */ + 0xc6, 0xfc, 0xcb, 0xdc, 0xb8, 0xec, + 0xa5, 0xb3, 0xa5, 0xf3, 0xa5, 0xbd, 0xa1, 0xbc, 0xa5, 0xeb); + break; +#endif /* NECMG */ case KD_MONO: case KD_HERCULES: default: @@ -1903,12 +1983,14 @@ *data = scp->status & LOCK_KEY_MASK; return 0; +#ifndef NECMG case KDSETRAD: /* set keyboard repeat & delay rates */ if (*data & 0x80) return EINVAL; if (sc_kbdc != NULL) set_keyboard(KBDC_SET_TYPEMATIC, *data); return 0; +#endif /* NECMG */ case KDSKBMODE: /* set keyboard mode */ switch (*data) { @@ -2349,6 +2431,24 @@ } scp = cur_console; +#ifdef NECMG +#ifdef NECMG_ZOOMCONS + { + static int ticcount = 0; + static int prevcurpos = -1; + if (necmg_zoomcons && necmg_cons_get_zoompos() != scp->ypos) { + if (prevcurpos == scp->ypos) { + if (5 /* 0.5sec */ <= ++ticcount) { + necmg_cons_set_zoompos(scp->xsize, scp->ysize, Crtat, scp->ypos); + } + } else { + ticcount = 0; + prevcurpos = scp->ypos; + } + } + } +#endif +#endif if (scrn_blanked <= 0) scrn_update(scp, TRUE); @@ -2368,6 +2468,10 @@ if (scp->start <= scp->end) { sc_bcopy(scp->scr_buf + scp->start, Crtat + scp->start, (1 + scp->end - scp->start) * sizeof(u_short)); +#ifdef NECMG + necmg_cons_update(scp->xsize, scp->ysize, + Crtat, scp->start, scp->end); +#endif } /* we are not to show the cursor and the mouse pointer... */ @@ -2558,6 +2662,14 @@ exchange_scr(void) { move_crsr(old_scp, old_scp->xpos, old_scp->ypos); +#ifdef NECMG + /* + * We don't know how to get nor set keyboard NUM lock status. + * So all virtual consoles have same NLKED bit. + */ + new_scp->status = + (new_scp->status & ~NLKED) | (cur_console->status & NLKED); +#endif cur_console = new_scp; if (old_scp->mode != new_scp->mode || (old_scp->status & UNKNOWN_MODE)){ if (crtc_vga) @@ -3256,6 +3368,10 @@ return; init_done = WARM; +#ifdef NECMG + hw_cursor = 0; + necmg_cons_clear(); +#else /* NECMG */ /* * Ensure a zero start address. This is mainly to recover after * switching from pcvt using userconfig(). The registers are w/o @@ -3285,6 +3401,7 @@ outb(crtc_addr + 1, 0xff); outb(crtc_addr, 15); outb(crtc_addr + 1, 0xff); +#endif /* set up the first console */ current_default = &user_default; @@ -3477,6 +3594,10 @@ scp->mode = M_C80x25; scp->font_size = 14; break; + case KD_NECMG: + scp->mode = M_B80x25; + scp->font_size = 8; + break; case KD_MONO: case KD_HERCULES: default: @@ -3613,10 +3734,43 @@ return scancode; } +#ifdef NECMG +#ifdef NECMG_ZOOMCONS + if (scancode == 0x3b /* AP KIRIKAE */) { + if (necmg_zoomcons) { + necmg_zoomcons = 0; + necmg_cons_set_zoompos(cur_console->xsize, cur_console->ysize, + Crtat, -1); + } else { + necmg_zoomcons = 1; + } + update_leds(cur_console->status); + return (NOKEY); + } +#endif +#endif + keycode = scancode & 0x7F; switch (esc_flag) { case 0x00: /* normal scancode */ switch(scancode) { +#ifdef NECMG + case 0x1a: /* '@~' */ + if (cur_console->status & NLKED) { + keycode = 0x5e; + } + break; + case 0x28: /* ':*' */ + if (cur_console->status & NLKED) { + keycode = 0x37; + } + break; + case 0x33: /* ',<' */ + if (cur_console->status & NLKED) { + keycode = 0x63; + } + break; +#endif case 0xB8: /* left alt (compose key) */ if (compose) { compose = 0; @@ -3647,6 +3801,11 @@ break; case 0x1D: /* right ctrl key */ keycode = 0x5A; +#ifdef NECMG + if (cur_console->status & NLKED) { + keycode = 0x59; + } +#endif break; case 0x35: /* keypad divide key */ keycode = 0x5B; @@ -4100,9 +4259,20 @@ int scmmap(dev_t dev, vm_offset_t offset, int nprot) { +#ifdef NECMG + if (offset < 0x10000) { + return i386_btop(vtophys(NECMG_FRAMEBUFFER + offset)); + } + offset -= 0x10000; + if (offset < 0x200000) { + return i386_btop(vtophys(necmg_fontrom_base + offset)); + } + return -1; +#else /* NECMG */ if (offset > 0x20000 - PAGE_SIZE) return -1; return i386_btop((VIDEOMEM + offset)); +#endif /* !NECMG */ } /* @@ -4134,6 +4304,7 @@ return attr; } +#ifndef NECMG static void set_keyboard(int command, int data) { @@ -4185,10 +4356,24 @@ #endif kbdc_lock(sc_kbdc, FALSE); } +#endif /* !NECMG */ static void update_leds(int which) { +#ifdef NECMG + int pos = 75; +#ifdef NECMG_ZOOMCONS + necmg_draw_icon(pos-- * 2, 0, necmg_icon8x8[NECMG_ICON8x8_ZOOM], 2, 8, + NECMG_WHITE, necmg_zoomcons ? NECMG_BLACK : NECMG_LIGHTGRAY); +#endif + necmg_draw_icon(pos-- * 2, 0, necmg_icon8x8[NECMG_ICON8x8_SCRL], 2, 8, + NECMG_WHITE, (which&SLKED) ? NECMG_BLACK : NECMG_LIGHTGRAY); + necmg_draw_icon(pos-- * 2, 0, necmg_icon8x8[NECMG_ICON8x8_CAPS], 2, 8, + NECMG_WHITE, (which & CLKED) ? NECMG_BLACK : NECMG_LIGHTGRAY); + necmg_draw_icon(pos-- * 2, 0, necmg_icon8x8[NECMG_ICON8x8_NUM], 2, 8, + NECMG_WHITE, (which & NLKED) ? NECMG_BLACK : NECMG_LIGHTGRAY); +#else static u_char xlate_leds[8] = { 0, 4, 2, 6, 1, 5, 3, 7 }; /* replace CAPS led with ALTGR led for ALTGR keyboards */ @@ -4200,6 +4385,7 @@ } set_keyboard(KBDC_SET_LEDS, xlate_leds[which & LED_MASK]); +#endif /* ! NECMG */ } void diff -urN sys.2.2.8-RELEASE/i386/isa/wcd.c sys/i386/isa/wcd.c --- sys.2.2.8-RELEASE/i386/isa/wcd.c Sun Nov 8 23:08:26 1998 +++ sys/i386/isa/wcd.c Tue Dec 22 13:51:49 1998 @@ -63,6 +63,12 @@ static #endif int wcdattach(struct atapi*, int, struct atapi_params*, int); +#ifdef ATAPI_DETACH +#ifndef ATAPI_STATIC +static +#endif +int wcddetach(struct atapi*, int, struct atapi_params*, int); +#endif /* ATAPI_DETACH */ #define NUNIT (NWDC*2) /* Max. number of devices */ #define UNIT(d) ((minor(d) >> 3) & 3) /* Unit part of minor device number */ @@ -235,7 +241,11 @@ }; struct wcd *wcdtab[NUNIT]; /* Drive info by unit number */ +#ifndef ATAPI_DETACH static int wcdnlun = 0; /* Number of configured drives */ +#else /* ATAPI_DETACH */ +static int wcd_unit_use = 0; /* Number of configured drives */ +#endif /* ATAPI_DETACH */ static void wcd_start (struct wcd *t); static void wcd_done (struct wcd *t, struct buf *bp, int resid, @@ -274,10 +284,21 @@ struct atapires result; int lun; +#ifndef ATAPI_DETACH if (wcdnlun >= NUNIT) { printf ("wcd: too many units\n"); return (0); } +#else /* ATAPI_DETACH */ + for (lun=0; lun < NUNIT; lun++) { + if (!(wcd_unit_use & (1 << lun))) + break; + } + if (lun >= NUNIT) { + printf ("wcd: too many units\n"); + return (0); + } +#endif /* ATAPI_DETACH */ if (!atapi_request_immediate) { printf("wcd: configuration error, ATAPI core code not present!\n"); printf("wcd: check `options ATAPI_STATIC' in your kernel config file!\n"); @@ -288,12 +309,21 @@ printf ("wcd: out of memory\n"); return (0); } +#ifndef ATAPI_DETACH wcdtab[wcdnlun] = t; +#else /* ATAPI_DETACH */ + wcdtab[lun] = t; +#endif /* ATAPI_DETACH */ bzero (t, sizeof (struct wcd)); bufq_init(&t->buf_queue); t->ata = ata; t->unit = unit; +#ifndef ATAPI_DETACH lun = t->lun = wcdnlun++; +#else /* ATAPI_DETACH */ + t->lun = lun; + wcd_unit_use |= (1 << lun); +#endif /* ATAPI_DETACH */ t->param = ap; t->flags = F_MEDIA_CHANGED; t->starting_lba = 0; @@ -349,6 +379,44 @@ return (1); } +#ifdef ATAPI_DETACH +#ifndef ATAPI_STATIC +static +#endif +int +wcddetach (struct atapi *ata, int unit, struct atapi_params *ap, int debug) +{ + struct wcd **t; + int lun; + + for (lun=0; lun < NUNIT; lun++) { + if ((wcd_unit_use & (1 << lun))) { + t = wcdtab + lun; + if ((*t)->ata->port == ata->port && + (*t)->ata->ctrlr == ata->ctrlr && + (*t)->unit == unit) + break; + } + } + if (lun >= NUNIT) { + printf ("wcd: not found unit\n"); + return (0); + } + + t = wcdtab + lun; + if (((*t)->flags & F_BOPEN) || (*t)->refcnt) + /* The device is opened, cannot unload the driver. */ + return EBUSY; + (*t)->ata->attached[(*t)->unit] = 0; + free (*t, M_TEMP); + wcdtab[lun] = NULL; + + wcd_unit_use &= ~(1 << lun); + + return 0; +} +#endif /* ATAPI_DETACH */ + void wcd_describe (struct wcd *t) { char *m; @@ -416,8 +484,13 @@ /* Check that the device number is legal * and the ATAPI driver is loaded. */ +#ifndef ATAPI_DETACH if (lun >= wcdnlun || ! atapi_request_immediate) return (ENXIO); +#else /* ATAPI_DETACH */ + if (!(wcd_unit_use & (1 << lun)) || ! atapi_request_immediate) + return (ENXIO); +#endif /* ATAPI_DETACH */ t = wcdtab[lun]; /* On the first open, read the table of contents. */ @@ -1160,6 +1233,7 @@ { struct wcd **t; +#ifndef ATAPI_DETACH for (t=wcdtab; tflags & F_BOPEN) || (*t)->refcnt) /* The device is opened, cannot unload the driver. */ @@ -1169,6 +1243,22 @@ free (*t, M_TEMP); } wcdnlun = 0; +#else /* ATAPI_DETACH */ + for (int lun=0; lun < NUNIT; ++lun) + if (wcd_unit_use & (1 << lun)) { + t = wcdtab + lun; + if (((*t)->flags & F_BOPEN) || (*t)->refcnt) + /* The device is opened, cannot unload the driver. */ + return EBUSY; + } + for (int lun=0; lun < NUNIT; ++lun) + if (wcd_unit_use & (1 << lun)) { + t = wcdtab + lun; + (*t)->ata->attached[(*t)->unit] = 0; + free (*t, M_TEMP); + } + wcd_unit_use = 0; +#endif /* ATAPI_DETACH */ bzero (wcdtab, sizeof(wcdtab)); return 0; } diff -urN sys.2.2.8-RELEASE/i386/isa/wd.c sys/i386/isa/wd.c --- sys.2.2.8-RELEASE/i386/isa/wd.c Fri Aug 7 03:15:23 1998 +++ sys/i386/isa/wd.c Tue Dec 22 13:51:51 1998 @@ -66,6 +66,8 @@ #if NWDC > 0 +#include "card.h" /* PC-card Flash/Type3 ATA support */ + #include #include #include @@ -90,6 +92,7 @@ #include #include #include +#include #ifdef ATAPI @@ -110,6 +113,11 @@ /* can't handle that in all cases */ #define WDOPT_32BIT 0x8000 #define WDOPT_SLEEPHACK 0x4000 +/* following two options are used for PC-card IDE/ATAPI devices */ +#define WDOPT_PACKED 0x2000 +#define WDOPT_BROKEN_SIGNATURE 0x1000 + + #define WDOPT_FORCEHD(x) (((x)&0x0f00)>>8) #define WDOPT_MULTIMASK 0x00ff @@ -179,6 +187,9 @@ int dk_currentiosize; /* current io size */ struct diskgeom dk_dd; /* device configuration data */ struct diskslices *dk_slices; /* virtual drives */ + int dk_altsts; + int dk_ctlr; + int dk_digin; }; #define WD_COUNT_RETRIES @@ -224,6 +235,7 @@ static timeout_t wdtimeout; static int wdunwedge(struct disk *du); static int wdwait(struct disk *du, u_char bits_wanted, int timeout); +/*void wdintr(int unit);*/ struct isa_driver wdcdriver = { wdprobe, wdattach, "wdc", @@ -249,6 +261,132 @@ #endif +#if NCARD > 0 +#include +#include +#include +/* + * PC-Card (PCMCIA) specific code. + */ +static int card_intr(struct pccard_devinfo *); /* Interrupt handler */ +static void wdunload(struct pccard_devinfo *); /* Disable driver */ +static int wdinit(struct pccard_devinfo *); /* Init. driver */ +static int wdprobe_pccard(struct isa_device *); /* Probe PC-card */ + +static struct pccard_device wdinfo = +{ + "wdc", + wdinit, + wdunload, + card_intr, + 0, /* Attributes - presently unused */ + &bio_imask /* Interrupt mask for device */ +}; + +DATA_SET(pccarddrv_set, wdinfo); + +static int static_init = 1; +static int lunit_in_use = 0; +static int ctrlr_in_use = 0; + +/* + * Initialize the device - called from Slot manager. + * if first is set, then initially check for + * the device's existence before initialising it. + * Once initialised, the device table may be set up. + */ +static int +wdinit(struct pccard_devinfo *devi) +{ +/* + * dynamic configuration mode + */ + static_init = 0; +/* + * validate unit number. + */ + if (devi->pd_unit >= NWDC) + return(ENODEV); +/* + * Probe the device. If a value is returned, the + * device was found at the location. + */ + if (wdprobe_pccard(&devi->isahd)==0) { + printf("Probe Failed\n"); + return(ENXIO); + } + if (wdattach(&devi->isahd)==0) { + printf("Attach Failed\n"); + return(ENXIO); + } +/* + * XXX TODO: + * If it was already inited before, the device structure + * should be already initialised. Here we should + * reset (and possibly restart) the hardware, but + * I am not sure of the best way to do this... + */ + return(0); +} + +/* + * wdunload - unload the driver and clear the table. + * XXX TODO: + * This is called usually when the card is ejected, but + * can be caused by the modunload of a controller driver. + * The idea is reset the driver's view of the device + * and ensure that any driver entry points such as + * read and write do not hang. + */ +static void +wdunload(struct pccard_devinfo *devi) +{ + int ctrlr = devi->pd_unit; + int lunit; + + for (lunit=0; lunitdk_ctrlr == ctrlr && + wddrives[lunit]->dk_port == devi->pd_iobase ) { + lunit_in_use &= ~(1<pd_iobase); +#endif + + printf("wdc%d: unloading -- ", ctrlr); + if (wdtab[ctrlr].b_active != 0) + printf("damage!\n"); + else + printf("done\n"); +} + +/* + * card_intr - Shared interrupt called from + * front end of PC-Card handler. + */ +static int +card_intr(struct pccard_devinfo *devi) +{ + wdintr(devi->pd_unit); + return(1); +} + +static int +wdprobe_pccard(struct isa_device *isa_dev) +{ + return wdprobe(isa_dev); +} + +#endif /* NCARD > 0 */ + + + /* * Here we use the pci-subsystem to find out, whether there is * a cmd640b-chip attached on this pci-bus. This public routine @@ -274,6 +412,14 @@ if (unit >= NWDC) return (0); +#if NCARD > 0 +/* + * If PC-Card probe required, then register driver with + * slot manager. + */ + if (!static_init && (ctrlr_in_use & (1< 0 */ du = malloc(sizeof *du, M_TEMP, M_NOWAIT); if (du == NULL) @@ -281,7 +427,15 @@ bzero(du, sizeof *du); du->dk_ctrlr = dvp->id_unit; du->dk_port = dvp->id_iobase; - + du->dk_altsts = wd_altsts; + du->dk_ctlr = wd_ctlr; + du->dk_digin = wd_digin; + + if (dvp->id_flags & WDOPT_PACKED) { + du->dk_altsts -= 0x1f8; + du->dk_ctlr -= 0x1f8; + du->dk_digin -= 0x1f8; + } /* check if we have registers that work */ outb(du->dk_port + wd_sdh, WDSD_IBM); /* set unit 0 */ @@ -299,6 +453,8 @@ if (wdreset(du) == 0) goto reset_ok; #ifdef ATAPI + if (dvp->id_flags & WDOPT_BROKEN_SIGNATURE) + goto reset_ok; /* test for ATAPI signature */ outb(du->dk_port + wd_sdh, WDSD_IBM); /* master */ if (inb(du->dk_port + wd_cyl_lo) == 0x14 && @@ -361,6 +517,9 @@ } +#if NCARD > 0 + ctrlr_in_use |= (1< 0 */ free(du, M_TEMP); return (IO_WDCSIZE); @@ -381,6 +540,11 @@ int unit, lunit; struct isa_device *wdup; struct disk *du; +#if NCARD > 0 + static int once_registered = 0; + static int old_dkunit[NWD]; + int valid_units = 0; +#endif /* NCARD > 0 */ if (dvp->id_unit >= NWDC) return (0); @@ -402,16 +566,38 @@ if (wdup->id_iobase != dvp->id_iobase) continue; lunit = wdup->id_unit; + +#if NCARD > 0 + /* + * XXX + * for PCMCIA Flash ATA/Type III HDD cards. + * HOSOKAWA, Tatsumi + */ + if (lunit_in_use & (1< 0 */ + if (lunit >= NWD) continue; unit = wdup->id_physid; - +#if NCARD > 0 + du = wddrives[lunit]; + if (du == NULL) + du = malloc(sizeof *du, M_TEMP, M_NOWAIT); + if (du == NULL) + continue; +#else /* NCARD > 0 */ du = malloc(sizeof *du, M_TEMP, M_NOWAIT); if (du == NULL) continue; if (wddrives[lunit] != NULL) panic("drive attached twice"); +#endif /* NCARD > 0 */ wddrives[lunit] = du; bufq_init(&drive_queue[lunit]); bzero(du, sizeof *du); @@ -426,6 +612,15 @@ du->dk_unit = unit; du->dk_lunit = lunit; du->dk_port = dvp->id_iobase; + du->dk_altsts = wd_altsts; + du->dk_ctlr = wd_ctlr; + du->dk_digin = wd_digin; + + if (dvp->id_flags & WDOPT_PACKED) { + du->dk_altsts -= 0x1f8; + du->dk_ctlr -= 0x1f8; + du->dk_digin -= 0x1f8; + } /* * Use the individual device flags or the controller @@ -471,6 +666,13 @@ */ wdtimeout(du); +#if NCARD > 0 + lunit_in_use |= (1< 0 */ #ifdef DEVFS mynor = dkmakeminor(unit, WHOLE_DISK_SLICE, RAW_PART); du->dk_bdev = devfs_add_devswf(&wd_bdevsw, mynor, @@ -492,10 +694,22 @@ * according to iostat. */ dk_wpms[dk_ndrive] = 4 * 1024 * 1024 / 2; +#if NCARD > 0 + old_dkunit[lunit] = +#endif /* NCARD > 0 */ du->dk_dkunit = dk_ndrive++; } else { +#if NCARD > 0 + old_dkunit[lunit] = +#endif /* NCARD > 0 */ du->dk_dkunit = -1; } +#if NCARD > 0 + } else { + /* reuse previous dk_dkunit */ + du->dk_dkunit = old_dkunit[lunit]; + } +#endif /* NCARD > 0 */ } else { free(du, M_TEMP); wddrives[lunit] = NULL; @@ -506,20 +720,40 @@ * Probe all free IDE units, searching for ATAPI drives. */ for (unit=0; unit<2; ++unit) { +#if NCARD > 0 + for (lunit=0; lunitdk_ctrlr == dvp->id_unit && + wddrives[lunit]->dk_unit == unit) + goto next; +#else /* NCARD > 0 */ for (lunit=0; lunitdk_ctrlr == dvp->id_unit && wddrives[lunit]->dk_unit == unit) goto next; +#endif /* NCARD > 0 */ #ifdef CMD640 +#if NCARD > 0 + if (atapi_attach (dvp->id_unit, unit, dvp->id_iobase)) { + atapictrlr = dvp->id_unit; + valid_units++; + } +#else /* NCARD > 0 */ if (atapi_attach (dvp->id_unit, unit, dvp->id_iobase)) atapictrlr = dvp->id_unit; -#else +#endif /* NCARD > 0 */ +#else /* CMD640 */ +#if NCARD > 0 + if (atapi_attach (dvp->id_unit, unit, dvp->id_iobase)) + valid_units++; +#else /* NCARD > 0 */ atapi_attach (dvp->id_unit, unit, dvp->id_iobase); -#endif +#endif /* NCARD > 0 */ +#endif /* CMD640 */ next: ; } -#endif +#endif /* ATAPI */ /* * Discard any interrupts generated by wdgetctlr(). wdflushirq() * doesn't work now because the ambient ipl is too high. @@ -534,6 +768,10 @@ wdtab[dvp->id_unit].b_active = 2; #endif +#if NCARD > 0 + if (!static_init && valid_units == 0) + return (0); /* no valid unit found */ +#endif /* NCARD > 0 */ return (1); } @@ -757,7 +995,7 @@ (bp->b_flags & B_READ) ? "read" : "write", bp->b_bcount, blknum); else - printf(" %d)%x", du->dk_skip, inb(du->dk_port + wd_altsts)); + printf(" %d)%x", du->dk_skip, inb(du->dk_port + du->dk_altsts)); #endif lp = &du->dk_dd; @@ -865,7 +1103,7 @@ printf("cylin %ld head %ld sector %ld addr %x sts %x\n", cylin, head, sector, (int)bp->b_un.b_addr + du->dk_skip * DEV_BSIZE, - inb(du->dk_port + wd_altsts)); + inb(du->dk_port + du->dk_altsts)); #endif } @@ -1165,6 +1403,10 @@ lunit = dkunit(dev); if (lunit >= NWD || dktype(dev) != 0) return (ENXIO); +#if NCARD > 0 + if ((lunit_in_use & (1< 0 */ du = wddrives[lunit]; if (du == NULL) return (ENXIO); @@ -1870,6 +2112,9 @@ lunit = dkunit(dev); /* eventually support floppies? */ part = dkpart(dev); if (lunit >= NWD || (du = wddrives[lunit]) == NULL +#if NCARD > 0 + || (lunit_in_use & (1< 0 */ || du->dk_state < OPEN || (lp = dsgetlabel(dev, du->dk_slices)) == NULL) return (ENXIO); @@ -2084,9 +2329,9 @@ wdc = du->dk_port; (void)wdwait(du, 0, TIMEOUT); - outb(wdc + wd_ctlr, WDCTL_IDS | WDCTL_RST); + outb(wdc + du->dk_ctlr, WDCTL_IDS | WDCTL_RST); DELAY(10 * 1000); - outb(wdc + wd_ctlr, WDCTL_IDS); + outb(wdc + du->dk_ctlr, WDCTL_IDS); #ifdef ATAPI if (wdwait(du, WDCS_READY | WDCS_SEEKCMPLT, TIMEOUT) != 0) err = 1; /* no IDE drive found */ @@ -2098,7 +2343,7 @@ || (du->dk_error = inb(wdc + wd_error)) != 0x01) return (1); #endif - outb(wdc + wd_ctlr, WDCTL_4BIT); + outb(wdc + du->dk_ctlr, WDCTL_4BIT); return (err); } diff -urN sys.2.2.8-RELEASE/i386/isa/wfd.c sys/i386/isa/wfd.c --- sys.2.2.8-RELEASE/i386/isa/wfd.c Thu May 7 04:09:16 1998 +++ sys/i386/isa/wfd.c Tue Dec 22 13:51:53 1998 @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: wfd.c,v 1.1.2.6 1998/05/06 19:09:16 gibbs Exp $ + * $Id: wfd.c,v 1.1.1.2.4.1 1998/12/05 22:48:01 itojun Exp $ */ /* @@ -72,6 +72,12 @@ static #endif int wfdattach(struct atapi*, int, struct atapi_params*, int); +#ifdef ATAPI_DETACH +#ifndef ATAPI_STATIC +static +#endif +int wfddetach(struct atapi*, int, struct atapi_params*, int); +#endif /* ATAPI_DETACH */ #define NUNIT (NWDC*2) /* Max. number of devices */ #define UNIT(d) ((minor(d) >> 3) & 3) /* Unit part of minor device number */ @@ -143,7 +149,11 @@ }; struct wfd *wfdtab[NUNIT]; /* Drive info by unit number */ +#ifndef ATAPI_DETACH static int wfdnlun = 0; /* Number of configured drives */ +#else /* ATAPI_DETACH */ +static int wfd_unit_use = 0; /* Number of configured drives */ +#endif /* ATAPI_DETACH */ static void wfd_start (struct wfd *t); static void wfd_done (struct wfd *t, struct buf *bp, int resid, @@ -182,10 +192,21 @@ #ifdef DEVFS int mynor; #endif +#ifndef ATAPI_DETACH if (wfdnlun >= NUNIT) { printf ("wfd: too many units\n"); return (0); } +#else /* ATAPI_DETACH */ + for (lun=0; lun < NUNIT; lun++) { + if (!(wfd_unit_use & (1 << lun))) + break; + } + if (lun >= NUNIT) { + printf ("wfd: too many units\n"); + return (0); + } +#endif /* ATAPI_DETACH */ if (!atapi_request_immediate) { printf("wfd: configuration error, ATAPI core code not present!\n"); printf("wfd: check `options ATAPI_STATIC' in your kernel config file!\n"); @@ -196,12 +217,21 @@ printf ("wfd: out of memory\n"); return (0); } +#ifndef ATAPI_DETACH wfdtab[wfdnlun] = t; +#else /* ATAPI_DETACH */ + wfdtab[lun] = t; +#endif /* ATAPI_DETACH */ bzero(t, sizeof (struct wfd)); bufq_init(&t->buf_queue); t->ata = ata; t->unit = unit; +#ifndef ATAPI_DETACH lun = t->lun = wfdnlun++; +#else /* ATAPI_DETACH */ + t->lun = lun; + wfd_unit_use |= (1 << lun); +#endif /* ATAPI_DETACH */ t->param = ap; t->flags = F_MEDIA_CHANGED; t->refcnt = 0; @@ -265,6 +295,44 @@ return (1); } +#ifdef ATAPI_DETACH +#ifndef ATAPI_STATIC +static +#endif +int +wfddetach (struct atapi *ata, int unit, struct atapi_params *ap, int debug) +{ + struct wfd **t; + int lun; + + for (lun=0; lun < NUNIT; lun++) { + if ((wfd_unit_use & (1 << lun))) { + t = wfdtab + lun; + if ((*t)->ata->port == ata->port && + (*t)->ata->ctrlr == ata->ctrlr && + (*t)->unit == unit) + break; + } + } + if (lun >= NUNIT) { + printf ("wfd: not found unit\n"); + return (0); + } + + t = wfdtab + lun; + if (((*t)->flags & F_BOPEN) || (*t)->refcnt) + /* The device is opened, cannot unload the driver. */ + return EBUSY; + (*t)->ata->attached[(*t)->unit] = 0; + free (*t, M_TEMP); + wfdtab[lun] = NULL; + + wfd_unit_use &= ~(1 << lun); + + return 0; +} +#endif /* ATAPI_DETACH */ + void wfd_describe (struct wfd *t) { int no_print = 0; @@ -340,8 +408,13 @@ /* Check that the device number is legal * and the ATAPI driver is loaded. */ +#ifndef ATAPI_DETACH if (lun >= wfdnlun || ! atapi_request_immediate) return (ENXIO); +#else /* ATAPI_DETACH */ + if (!(wfd_unit_use & (1 << lun)) || ! atapi_request_immediate) + return (ENXIO); +#endif /* ATAPI_DETACH */ t = wfdtab[lun]; t->flags &= ~F_MEDIA_CHANGED; @@ -790,6 +863,7 @@ { struct wfd **t; +#ifndef ATAPI_DETACH for (t=wfdtab; tflags & F_BOPEN) || (*t)->refcnt) /* The device is opened, cannot unload the driver. */ @@ -799,6 +873,22 @@ free (*t, M_TEMP); } wfdnlun = 0; +#else /* ATAPI_DETACH */ + for (int lun=0; lun < NUNIT; ++lun) + if (wfd_unit_use & (1 << lun)) { + t = wfdtab + lun; + if (((*t)->flags & F_BOPEN) || (*t)->refcnt) + /* The device is opened, cannot unload the driver. */ + return EBUSY; + } + for (int lun=0; lun < NUNIT; ++lun) + if (wfd_unit_use & (1 << lun)) { + t = wfdtab + lun; + (*t)->ata->attached[(*t)->unit] = 0; + free (*t, M_TEMP); + } + wfd_unit_use = 0; +#endif /* ATAPI_DETACH */ bzero (wfdtab, sizeof(wfdtab)); return 0; } diff -urN sys.2.2.8-RELEASE/i386/scsi/README_ncv_stg sys/i386/scsi/README_ncv_stg --- sys.2.2.8-RELEASE/i386/scsi/README_ncv_stg Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/README_ncv_stg Tue Dec 22 13:52:35 1998 @@ -0,0 +1,4 @@ +ncr53c800, tmc18c30, and scsi_low is ported from NetBSD/pc98 (based on +NetBSD 1.2), but current porting status is not good because the style of +SCSI driver of NetBSD and FreeBSD is different. + diff -urN sys.2.2.8-RELEASE/i386/scsi/ncr53c500/ncr53c500.c sys/i386/scsi/ncr53c500/ncr53c500.c --- sys.2.2.8-RELEASE/i386/scsi/ncr53c500/ncr53c500.c Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/ncr53c500/ncr53c500.c Tue Dec 22 13:52:37 1998 @@ -0,0 +1,878 @@ +/* $NetBSD$ */ +/* $Id: ncr53c500.c,v 1.1.8.1 1998/12/05 22:48:23 itojun Exp $ */ +/* + * [NetBSD for NEC PC98 series] + * Copyright (c) 1995, 1996 NetBSD/pc98 porting staff. + * Copyright (c) 1995, 1996 Naofumi HONDA. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifdef __NetBSD__ +#include +#endif /* __NetBSD__ */ +#ifdef __FreeBSD__ +#include +#endif /* __FreeBSD__ */ + +/*************************************************** + * DEBUG + ***************************************************/ +#ifndef DDB +#define Debugger() panic("should call debugger here (ncr53c500.c)") +#endif /* ! DDB */ + +#define NCV_DEBUG +#ifdef NCV_DEBUG +int ncv_debug; + +struct ncv_statics { + int disconnect; + int reselect; +} ncv_statics[NTARGETS]; +#endif /* NCV_DEBUG */ + +/* static */ +static void ncv_pio_read __P((struct ncv_softc *, u_int8_t *, u_int)); +static void ncv_pio_write __P((struct ncv_softc *, u_int8_t *, u_int)); +static int ncv_synch __P((struct ncv_softc *, struct targ_info *, u_int, u_int)); +static inline int ncv_reselected __P((struct ncv_softc *)); +static inline int ncv_disconnected __P((struct ncv_softc *, struct ccb *cb)); +static inline void ncv_pdma_end __P((struct ncv_softc *sc, struct targ_info *)); +static inline void ncvhw_set_count __P((struct ncv_softc *sc, int)); +static inline u_int ncvhw_get_count __P((struct ncv_softc *sc)); +static inline void ncvhw_select_register_0 __P((struct ncv_softc *)); +static inline void ncvhw_select_register_1 __P((struct ncv_softc *)); +static inline void ncvhw_fpush __P((struct ncv_softc *, u_int8_t *, int)); + +static int ncv_world_start __P((struct ncv_softc *, int)); +static void ncvhw_bus_reset __P((struct ncv_softc *)); +static void ncvhw_reset __P((struct ncv_softc *)); +static void ncvhw_init __P((struct ncv_softc *)); +static void ncvhw_synch __P((struct ncv_softc *sc, struct targ_info *)); +static int ncvhw_power __P((struct ncv_softc *, u_int)); +static int ncvhw_start_selection __P((struct ncv_softc *sc, struct ccb *)); +static void ncvhw_attention __P((struct ncv_softc *)); + +struct scsi_low_funcs ncv_funcs = +{ + SC_LOW_RESET_T ncv_world_start, + SC_LOW_BUSRST_T ncvhw_bus_reset, + + SC_LOW_SELECT_T ncvhw_start_selection, + + SC_LOW_ATTEN_T ncvhw_attention, + SC_LOW_SYNCH_T ncv_synch, + + SC_LOW_INTR_T ncv_sequencer, + + NULL, /* SC_LOW_POWER_T ncvhw_power, */ +}; + +/************************************************************** + * hwfuncs + **************************************************************/ +static inline void +ncvhw_select_register_0(sc) + struct ncv_softc *sc; +{ + DECLARE_IOPORT(sc); + + OUTB(cr0_cfg4, sc->sc_hw.cfg4); +} + +static inline void +ncvhw_select_register_1(sc) + struct ncv_softc *sc; +{ + DECLARE_IOPORT(sc); + + OUTB(cr1_cfg5, sc->sc_hw.cfg5); +} + +static inline void +ncvhw_fpush(sc, buf, len) + struct ncv_softc *sc; + u_int8_t *buf; + int len; +{ + int ptr; + DECLARE_IOPORT(sc); + + for (ptr = 0; ptr < len; ptr ++) + OUTB(cr0_sfifo, buf[ptr]); +} + +int +ncvhw_check(sc) + struct ncv_softc *sc; +{ + DECLARE_IOPORT(sc); + + ncvhw_select_register_0(sc); + OUTB(cr0_cmd, CMD_NOP | CMD_DMA); + if (INB(cr0_cmd) != (CMD_NOP | CMD_DMA)) + return ENODEV; + + OUTB(cr0_cmd, CMD_NOP); + if (INB(cr0_cmd) != CMD_NOP) + return ENODEV; + + return 0; +} + +static void +ncvhw_reset(sc) + struct ncv_softc *sc; +{ + DECLARE_IOPORT(sc); + + ncvhw_select_register_0(sc); + + /* dummy cmd twice */ + OUTB(cr0_cmd, CMD_NOP); + OUTB(cr0_cmd, CMD_NOP); + + /* chip reset */ + OUTB(cr0_cmd, CMD_RSTCHIP); + + /* again dummy cmd twice */ + OUTB(cr0_cmd, CMD_NOP); + OUTB(cr0_cmd, CMD_NOP); +} + +static void +ncvhw_init(sc) + struct ncv_softc *sc; +{ + DECLARE_IOPORT(sc); + + ncvhw_select_register_0(sc); + OUTB(cr0_clk, sc->sc_hw.clk); + OUTB(cr0_srtout, SEL_TOUT); + OUTB(cr0_period, 0); + OUTB(cr0_offs, 0); + + OUTB(cr0_cfg1, sc->sc_hw.cfg1); + OUTB(cr0_cfg2, sc->sc_hw.cfg2); + OUTB(cr0_cfg3, sc->sc_hw.cfg3); + OUTB(cr0_tchsb, 0); + + ncvhw_select_register_1(sc); + OUTB(cr1_fstat, 0x0); + OUTB(cr1_pflag, 0x0); + OUTB(cr1_atacmd, ATACMD_ENGAGE); + + ncvhw_select_register_0(sc); +} + +static void +ncvhw_synch(sc, ti) + struct ncv_softc *sc; + struct targ_info *ti; +{ + DECLARE_IOPORT(sc); + + /* start selection */ + if (ti->ti_flags & SCSI_LOW_NOPARITY) + OUTB(cr0_cfg1, sc->sc_hw.cfg1); + else + OUTB(cr0_cfg1, sc->sc_hw.cfg1 | C1_PARENB); + OUTB(cr0_period, ti->ti_synch.period); + OUTB(cr0_offs, ti->ti_synch.offset); + OUTB(cr0_cfg3, ti->ti_synch.c3img); +} + +static int +ncvhw_power(sc, flags) + struct ncv_softc *sc; + u_int flags; +{ + DECLARE_IOPORT(sc); + + if (flags == SCSI_LOW_POWDOWN) + { + printf("%s power down\n", sc->sc_dvname); + ncvhw_select_register_1(sc); + OUTB(cr1_atacmd, ATACMD_POWDOWN); + } + else + { + switch (sc->sc_rstep) + { + case 0: + printf("%s resume step O\n", sc->sc_dvname); + ncvhw_select_register_1(sc); + OUTB(cr1_atacmd, ATACMD_ENGAGE); + break; + + case 1: + printf("%s resume step I\n", sc->sc_dvname); + ncvhw_reset(sc); + ncvhw_init(sc); + break; + } + } + + return 0; +} + +/************************************************************** + * scsi low interface + **************************************************************/ +static void +ncvhw_attention(sc) + struct ncv_softc *sc; +{ + DECLARE_IOPORT(sc); + + OUTB(cr0_cmd, CMD_SETATN); + delay(200); +} + +static void +ncvhw_bus_reset(sc) + struct ncv_softc *sc; +{ + DECLARE_IOPORT(sc); + + ncvhw_select_register_0(sc); + OUTB(cr0_cmd, CMD_FLUSH); + OUTB(cr0_cmd, CMD_RSTSCSI); + OUTB(cr0_cmd, CMD_NOP | CMD_DMA); +} + +static int +ncvhw_start_selection(sc, cb) + struct ncv_softc *sc; + struct ccb *cb; +{ + struct targ_info *ti = cb->ti; + int s; + DECLARE_IOPORT(sc); + + ID_MSG_SETUP(ti, cb); + ncvhw_select_register_0(sc); + + s = splhigh(); + + if (sc->sc_disc > 0 && (INB(cr0_stat) & STAT_INT)) + { + splx(s); + return 1; + } + + ncvhw_synch(sc, ti); + OUTB(cr0_dstid, ti->ti_id); + OUTB(cr0_cmd, CMD_FLUSH); + + OUTB(cr0_sfifo, ti->ti_msgout); + + if (cb->msgoutlen) + OUTB(cr0_cmd, CMD_SELATNS); + else + { + ncvhw_fpush(sc, cb->cmd, cb->cmdlen); + OUTB(cr0_cmd, CMD_SELATN); + } + + splx(s); + + SCSI_LOW_SETUP_PHASE(PH_SELSTART); + return 0; +} + +static int +ncv_world_start(sc, fdone) + struct ncv_softc *sc; + int fdone; +{ + struct targ_info *ti; + u_int8_t stat; + DECLARE_IOPORT(sc); + + if (sc->sc_flags & HW_INACTIVE) + return EBUSY; + + /* reset current nexus */ + scsi_low_reset_nexus((struct scsi_low_softc *) sc, fdone); + + /* hardware info init */ + for (ti = sc->sc_titab.tqh_first; ti; ti = ti->ti_chain.tqe_next) + { + ti->ti_state = UNIT_RDY; + ti->ti_synch.period = ti->ti_synch.offset = 0; + ti->ti_synch.c3img = sc->sc_hw.cfg3; + ti->ti_maxsynch.c3img = sc->sc_hw.cfg3; + ti->ti_maxsynch.period = sc->sc_hw.mperiod; + ti->ti_maxsynch.offset = sc->sc_hw.moffset; + + scsi_low_calcf(ti); + } + + ncvhw_reset(sc); + ncvhw_init(sc); + scsi_low_bus_reset((struct scsi_low_softc *) sc); + + ncvhw_select_register_0(sc); + INB(cr0_stat); + stat = INB(cr0_istat); + if ((stat & INTR_SBR) == 0) + return ENODEV; + delay(1000); + stat = INB(cr0_istat); + if (stat & INTR_SBR) + return ENODEV; + +#ifdef __NetBSD__ + softintr(sc->sc_mask); +#endif + return 0; +} + +static int +ncv_synch(sc, ti, period, offset) + struct ncv_softc *sc; + struct targ_info *ti; + u_int period, offset; +{ + u_int hwperiod; + + hwperiod = 1000 / ((sc->sc_hw.clk == 0) ? 40 : (5 * sc->sc_hw.clk)); + + if (period < 200 / 4 && period >= 100 / 4) + ti->ti_synch.c3img |= C3_FSCSI; + else + ti->ti_synch.c3img &= ~C3_FSCSI; + + period = ((period * 40 / hwperiod) + 5) / 10; + + ti->ti_synch.period = period & 0x1f; + ti->ti_synch.offset = offset; + + return 0; +} + +/************************************************************** + * PDMA + **************************************************************/ +static inline void +ncvhw_set_count(sc, count) + struct ncv_softc *sc; + int count; +{ + DECLARE_IOPORT(sc); + + OUTB(cr0_tclsb, (u_int8_t) count); + OUTB(cr0_tcmsb, (u_int8_t) (count >> NBBY)); + OUTB(cr0_tchsb, (u_int8_t) (count >> (NBBY * 2))); +} + +static inline u_int +ncvhw_get_count(sc) + struct ncv_softc *sc; +{ + u_int count; + DECLARE_IOPORT(sc); + + count = (u_int) INB(cr0_tclsb); + count |= ((u_int) INB(cr0_tcmsb)) << NBBY; + count |= ((u_int) INB(cr0_tchsb)) << (NBBY * 2); + return count; +} + +static inline void +ncv_pdma_end(sc, ti) + struct ncv_softc *sc; + struct targ_info *ti; +{ + int len; + DECLARE_IOPORT(sc); + + sc->sc_flags &= ~HW_PDMASTART; + if (ti->ti_phase == PH_DATA) + { + len = ncvhw_get_count(sc); + if ((sc->sc_direction & SCSI_LOW_READ) == 0) + len += (INB(cr0_sffl) & 0x1f); + + if ((u_int) len <= (u_int) sc->sc_scp.datalen) + { + sc->sc_scp.data += (sc->sc_scp.datalen - len); + sc->sc_scp.datalen = len; + if ((sc->sc_direction & SCSI_LOW_READ) && + sc->sc_tdatalen != len) + goto bad; + } + else + { +bad: + ti->ti_error |= PDMAERR; + printf("%s strange count hw 0x%x soft 0x%x tlen 0x%x\n", + sc->sc_dvname, len, sc->sc_scp.datalen, + sc->sc_tdatalen); + } + } + else + { + printf("%s data phase miss\n", sc->sc_dvname); + ti->ti_error |= PDMAERR; + } + + ncvhw_select_register_1(sc); + OUTB(cr1_fstat, 0); + ncvhw_select_register_0(sc); +} + +static void +ncv_pio_read(sc, buf, reqlen) + struct ncv_softc *sc; + u_int8_t *buf; + u_int reqlen; +{ + int tout = sc->sc_wc; + register int len; + register u_int8_t fstat; + DECLARE_IOPORT(sc); + + ncvhw_select_register_1(sc); + OUTB(cr1_pflag, 0); + + ncvhw_select_register_0(sc); + ncvhw_set_count(sc, reqlen); + OUTB(cr0_cmd, CMD_TRANS | CMD_DMA); + + ncvhw_select_register_1(sc); + OUTB(cr1_fstat, FIFO_EN); + sc->sc_flags |= HW_PDMASTART; + + while (reqlen >= FIFO_F_SZ && tout > 0) + { + fstat = INB(cr1_fstat); + if (fstat & FIFO_F) + { + INSL(cr1_fdata, buf, FIFO_F_SZ / 4); + buf += FIFO_F_SZ; + reqlen -= FIFO_F_SZ; + continue; + } + else if (fstat & FIFO_BRK) + break; + + tout --; + } + + if (reqlen >= FIFO_2_SZ) + { + fstat = INB(cr1_fstat); + if (fstat & FIFO_2) + { + INSL(cr1_fdata, buf, FIFO_2_SZ / 4); + buf += FIFO_2_SZ; + reqlen -= FIFO_2_SZ; + } + } + + while (reqlen > 0 && tout > 0) + { + fstat = INB(cr1_fstat); + if ((fstat & FIFO_E) == 0) + { + *buf++ = INB(cr1_fdata); + reqlen --; + continue; + } + else if (fstat & FIFO_BRK) + break; + tout --; + } + + ncvhw_select_register_0(sc); + sc->sc_tdatalen = reqlen; + + if (tout <= 0) + printf("%s pio read timeout\n", sc->sc_dvname); +} + +static void +ncv_pio_write(sc, buf, reqlen) + struct ncv_softc *sc; + u_int8_t *buf; + u_int reqlen; +{ + int tout = sc->sc_wc; + register u_int8_t fstat; + DECLARE_IOPORT(sc); + + ncvhw_select_register_1(sc); + OUTB(cr1_pflag, 0); + + ncvhw_select_register_0(sc); + ncvhw_set_count(sc, reqlen); + OUTB(cr0_cmd, CMD_TRANS | CMD_DMA); + + ncvhw_select_register_1(sc); + OUTB(cr1_fstat, FIFO_EN); + sc->sc_flags |= HW_PDMASTART; + + while (reqlen >= FIFO_F_SZ && tout > 0) + { + fstat = INB(cr1_fstat); + if (fstat & FIFO_BRK) + goto done; + + if (fstat & FIFO_E) + { + OUTSL(cr1_fdata, buf, FIFO_F_SZ / 4); + buf += FIFO_F_SZ; + reqlen -= FIFO_F_SZ; + } + else + tout --; + } + + while (reqlen > 0 && tout > 0) + { + fstat = INB(cr1_fstat); + if (fstat & FIFO_BRK) + break; + + if ((fstat & FIFO_F) == 0) /* fifo not full */ + { + OUTB(cr1_fdata, *buf++); + reqlen --; + } + else + tout --; + } + +done: + ncvhw_select_register_0(sc); + + if (tout <= 0) + printf("%s pio write timeout\n", sc->sc_dvname); +} + +/************************************************************** + * disconnect & reselect (HW low) + **************************************************************/ +static inline int +ncv_reselected(sc) + struct ncv_softc *sc; +{ + struct ccb *cb; + u_int sid, imsg; + DECLARE_IOPORT(sc); + + if ((INB(cr0_sffl) & 0x1f) != 2) + { + printf("%s illegal fifo bytes\n", sc->sc_dvname); + return 0; + } + + sid = (u_int) INB(cr0_sfifo); + imsg = (u_int) INB(cr0_sfifo); + if ((imsg & 0x80) == 0) + { + printf("%s lost msg identify\n", sc->sc_dvname); + return 0; + } + + sid = ffs(sid) - 1; + cb = scsi_low_reselected((struct scsi_low_softc *) sc, sid, imsg & 0x7); + if (cb == NULL) + return 0; + +#ifdef NCV_DEBUG + ncv_statics[sid].reselect ++; +#endif + ncvhw_synch(sc, cb->ti); + OUTB(cr0_dstid, sid); + OUTB(cr0_cmd, CMD_MSGOK); + + return 1; +} + +static inline int +ncv_disconnected(sc, cb) + struct ncv_softc *sc; + struct ccb *cb; +{ + DECLARE_IOPORT(sc); + + OUTB(cr0_cmd, CMD_FLUSH); + OUTB(cr0_cfg1, sc->sc_hw.cfg1); + OUTB(cr0_cmd, CMD_ENSEL); + +#ifdef NCV_DEBUG + if (sc->sc_msgphase == DISCASSERT) + ncv_statics[cb->ti->ti_id].disconnect ++; +#endif /* NCV_DEBUG */ + + scsi_low_disconnected((struct scsi_low_softc *) sc, cb); + scsi_low_start((struct scsi_low_softc *) sc); + + return 1; +} + +/************************************************************** + * SEQUENCER + **************************************************************/ +int +ncv_sequencer(sc) + struct ncv_softc *sc; +{ + struct targ_info *ti; + struct ccb *cb; + int len; + u_int8_t status, ireason; + DECLARE_IOPORT(sc); + + if (sc->sc_flags & HW_INACTIVE) + return 0; + + /******************************************** + * Status + ********************************************/ + ncvhw_select_register_0(sc); + status = INB(cr0_stat); + if ((status & STAT_INT) == 0) + return 0; + + ireason = INB(cr0_istat); + if (ireason & INTR_SBR) + { + u_int8_t val; + + /* avoid power off hangup */ + val = INB(cr0_cfg1); + OUTB(cr0_cfg1, val | C1_SRR); + + /* status init */ + ti = sc->sc_titab.tqh_first; + for ( ; ti; ti = ti->ti_chain.tqe_next) + ti->ti_state = UNIT_RDY; + + printf("%s bus reset (power off ?)\n", sc->sc_dvname); + return 1; + } + + /******************************************** + * Debug section + ********************************************/ +#ifdef NCV_DEBUG + if (ncv_debug) + { + scsi_low_print((struct scsi_low_softc *) sc, NULL); + printf("%s st %x ist %x\n\n", sc->sc_dvname, + status, ireason); + if (ncv_debug > 1) + Debugger(); + } +#endif /* NCV_DEBUG */ + + /******************************************** + * Reselect or Disconnect or Nexus check + ********************************************/ + /* (I) reselect */ + if (ireason == INTR_RESELECT) + { + if ((status & PHASE_MASK) == MESSAGE_IN_PHASE) + return ncv_reselected(sc); + + return 1; + } + + /* (II) nexus */ + if ((cb = sc->sc_nexus) == NULL) + return 0; + + /******************************************** + * Internal scsi phase + ********************************************/ + ti = cb->ti; + switch (ti->ti_phase) + { + case PH_SELSTART: + sc->sc_selid = NULL; + + if ((ireason & (INTR_SBR | INTR_DIS | INTR_ILL)) || + (status & (STAT_PE | STAT_GE))) + goto abort; + + if (cb->msgoutlen == 0) + { + if ((status & PHASE_MASK) != MESSAGE_OUT_PHASE) + break; + + SCSI_LOW_SETUP_PHASE(PH_SELECTED); + printf("%s msg identify failed\n", sc->sc_dvname); + } + else + { + if ((status & PHASE_MASK) != MESSAGE_OUT_PHASE) + { + ti->ti_error |= FATALIO; + scsi_low_restart((struct scsi_low_softc *) sc, + "msgout error"); + return 1; + } + + SCSI_LOW_SETUP_PHASE(PH_MSGOUTEXP); + } + break; + + default: + if (sc->sc_selid) + { + scsi_low_print((struct scsi_low_softc *) sc, ti); + panic("%s internal error\n", sc->sc_dvname); + } + + if (sc->sc_flags & HW_PDMASTART) + ncv_pdma_end(sc, ti); + +abort: + if (status & (STAT_PE | STAT_GE)) + { + ti->ti_error |= PARITYERR; + scsi_low_restart((struct scsi_low_softc *) sc, + "scsi bus error"); + return 1; + } + + if (ireason & (INTR_DIS | INTR_ILL)) + { + if (ireason & INTR_ILL) + { + ti->ti_error |= FATALIO; + scsi_low_restart((struct scsi_low_softc *) sc, + "illegal cmd"); + return 1; + } + + return ncv_disconnected(sc, cb); + } + } + + /******************************************** + * Scsi phase sequencer + ********************************************/ + switch (status & PHASE_MASK) + { + case DATA_OUT_PHASE: /* data out */ + SCSI_LOW_SETUP_PHASE(PH_DATA); + sc->sc_direction = SCSI_LOW_WRITE; + ncv_pio_write(sc, sc->sc_scp.data, sc->sc_scp.datalen); + break; + + case DATA_IN_PHASE: /* data in */ + SCSI_LOW_SETUP_PHASE(PH_DATA); + sc->sc_direction = SCSI_LOW_READ; + ncv_pio_read(sc, sc->sc_scp.data, sc->sc_scp.datalen); + break; + + case COMMAND_PHASE: /* cmd out */ + SCSI_LOW_SETUP_PHASE(PH_CMD); + OUTB(cr0_cmd, CMD_FLUSH); + ncvhw_fpush(sc, cb->cmd, cb->cmdlen); + OUTB(cr0_cmd, CMD_TRANS); + break; + + case STATUS_PHASE: /* status in */ + SCSI_LOW_SETUP_PHASE(PH_COMPSEQ); + OUTB(cr0_cmd, CMD_FLUSH); + OUTB(cr0_cmd, CMD_ICCS); + break; + + default: + break; + + case MESSAGE_OUT_PHASE: /* msg out */ + OUTB(cr0_cmd, CMD_FLUSH); + + len = scsi_low_msgout((struct scsi_low_softc *) sc, ti, cb); + if (len == 0) + { + OUTB(cr0_sfifo, ti->ti_msgout); + OUTB(cr0_cmd, CMD_TRANS); + if (cb->msgoutlen == 0) + OUTB(cr0_cmd, CMD_RSTATN); + } + else if (len > 0) + { + ncvhw_fpush(sc, cb->msgout, len); + OUTB(cr0_cmd, CMD_TRANS); + OUTB(cr0_cmd, CMD_RSTATN); + } + break; + + case MESSAGE_IN_PHASE: /* msg in */ + len = INB(cr0_sffl) & 0x1f; + if (ti->ti_phase == PH_COMPSEQ) + { + if ((ireason & INTR_FC) && len == 2) + { + ti->ti_status = + INB(cr0_sfifo); + len --; + } + else + { + scsi_low_restart((struct scsi_low_softc *) sc, + "compseq error"); + + break; + } + } + else if (ireason & INTR_BS) + { + OUTB(cr0_cmd, CMD_FLUSH); + OUTB(cr0_cmd, CMD_TRANS); + break; + } + + SCSI_LOW_SETUP_PHASE(PH_MSGIN); + + if ((ireason & INTR_FC) && len == 1) + { + ti->ti_msgin[ti->ti_msginptr++] = + INB(cr0_sfifo); + scsi_low_msgin((struct scsi_low_softc *) sc, cb); + OUTB(cr0_cmd, CMD_MSGOK); + } + else + { + ti->ti_error |= MSGERR; + printf("%s st %x ist %x\n\n", sc->sc_dvname, + status, ireason); + scsi_low_restart((struct scsi_low_softc *) sc, + "hw msgin error"); + } + break; + } + + return 1; +} diff -urN sys.2.2.8-RELEASE/i386/scsi/ncr53c500/ncr53c500hw.h sys/i386/scsi/ncr53c500/ncr53c500hw.h --- sys.2.2.8-RELEASE/i386/scsi/ncr53c500/ncr53c500hw.h Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/ncr53c500/ncr53c500hw.h Tue Dec 22 13:52:37 1998 @@ -0,0 +1,72 @@ +/* $NetBSD$ */ +/* $Id: ncr53c500hw.h,v 1.1.8.1 1998/12/05 22:48:24 itojun Exp $ */ +/* + * [NetBSD for NEC PC98 series] + * Copyright (c) 1996 NetBSD/pc98 porting staff. + * Copyright (c) 1996 Naofumi HONDA. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __NCR53C500HW_H_ +#define __NCR53C500HW_H_ + +#ifndef __FreeBSD__ +#include +#endif /* __FreeBSD__ */ + +struct ncv_hw +{ + /* configuration images */ + u_int8_t cfg1; + u_int8_t cfg2; + u_int8_t cfg3; + u_int8_t cfg4; + u_int8_t cfg5; + + /* synch */ + u_int8_t clk; + u_int8_t mperiod; + u_int8_t moffset; +}; + +/* dvcfg */ +#ifdef __FreeBSD__ +#define NCV_C5IMG(flags) ((flags >> 24) & 0xff) +#define NCV_CLKFACTOR(flags) ((flags>> 16) & 0x0f) +#else /* __NetBSD__ */ +#define NCV_C5IMG(flags) ((DVCFG_MAJOR(flags) >> 8) & 0xff) +#define NCV_CLKFACTOR(flags) (DVCFG_MAJOR(flags) & 0x0f) +#endif +#define NCVHWCFG_MAX10M 0x01 +#define NCVHWCFG_SCSI1 0x02 +#define NCVHWCFG_SLOW 0x04 +#define NCVHWCFG_FIFOBUG 0x08 +#ifdef __FreeBSD__ +#define NCV_SPECIAL(flags) ((flags >> 20) & 0x0f) +#else /* __NetBSD__ */ +#define NCV_SPECIAL(flags) ((DVCFG_MAJOR(flags) >> 4) & 0x0f) +#endif +#endif /* !__NCR53C500HW_H_ */ diff -urN sys.2.2.8-RELEASE/i386/scsi/ncr53c500/ncr53c500hw.lst sys/i386/scsi/ncr53c500/ncr53c500hw.lst --- sys.2.2.8-RELEASE/i386/scsi/ncr53c500/ncr53c500hw.lst Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/ncr53c500/ncr53c500hw.lst Tue Dec 22 13:52:37 1998 @@ -0,0 +1,43 @@ +/* $NetBSD$ */ +/* + * [NetBSD for NEC PC98 series] + * Copyright (c) 1996 NetBSD/pc98 porting staff. + * Copyright (c) 1996 Naofumi HONDA. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +static struct ncv_hw ncv_template = { + HOST_SCSI_ID, + C2_FE | C2_SCSI2, + C3_FCLK, + C4_ANE, + 0x80, + + CLK_40M_F, + + 200 / 4, + 15, +}; diff -urN sys.2.2.8-RELEASE/i386/scsi/ncr53c500/ncr53c500if.c sys/i386/scsi/ncr53c500/ncr53c500if.c --- sys.2.2.8-RELEASE/i386/scsi/ncr53c500/ncr53c500if.c Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/ncr53c500/ncr53c500if.c Tue Dec 22 13:52:38 1998 @@ -0,0 +1,465 @@ +/* $Id: ncr53c500if.c,v 1.1.8.1 1998/12/05 22:48:27 itojun Exp $ */ +/* + * [NetBSD for NEC PC98 series] + * Copyright (c) 1995, 1996 NetBSD/pc98 porting staff. + * Copyright (c) 1995, 1996 Naofumi HONDA. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifdef __NetBSD__ +#include +#endif /* __NetBSD__ */ +#ifdef __FreeBSD__ +#include +#include "ncv.h" +#endif /* __FreeBSD__ */ + +/*************************************************** + * PARAMS + ***************************************************/ +#define NCV_MAX_CCB (2 * (NTARGETS - 1)) + +/*************************************************** + * ISA DEVICE STRUCTURE + ***************************************************/ +#ifdef __NetBSD__ +int ncvintr __P((void *)); + +struct cfdriver ncv_cd = { + NULL, "ncv", DV_DULL +}; + +struct scsi_device ncv_dev = { + NULL, /* Use default error handler */ + NULL, /* have a queue, served by this */ + NULL, /* have no async handler */ + NULL, /* Use default 'done' routine */ +}; + +struct scsi_adapter ncv = { + scsi_low_scsi_cmd, + scsi_low_scsi_minphys, + scsi_low_target_open, + 0, +}; +#endif /* __NetBSD__ */ + +#ifdef __FreeBSD__ +/*void ncvintr __P((int));*/ + +/* pccard support */ +#if NCARD > 0 +static int ncv_card_intr(struct pccard_devinfo *); +static void ncv_card_unload(struct pccard_devinfo *); +static int ncv_card_resume(struct ncv_softc *); +static int ncv_card_init(struct pccard_devinfo *); + +static struct pccard_device ncv_info = { + "ncv", + ncv_card_init, + ncv_card_unload, + ncv_card_intr, + 0, /* Attributes - presently unused */ + &bio_imask /* Interrupt mask for device */ + /* This should also include net_imask?? */ +}; + +DATA_SET(pccarddrv_set, ncv_info); + +#ifdef SCSI_DETACH +static void ncvdetach(struct isa_device *dev); +#endif +#endif /* NCARD */ + +struct isa_driver ncvdriver = { + ncvprobe, + ncvattach, + "ncv" +}; + +struct scsi_device ncv_dev = { + NULL, /* Use default error handler */ + NULL, /* have a queue, served by this */ + NULL, /* have no async handler */ + NULL, /* Use default 'done' routine */ + "ncv", + 0, + {0, 0} +}; + +static struct scsi_adapter ncv = { + scsi_low_scsi_cmd, + scsi_low_scsi_minphys, + scsi_low_target_open, + 0, + ncv_adapter_info, + "ncv", + {0, 0}, +}; +u_int32_t ncv_adapter_info (int unit) +{ + return 1; +} + +static struct ncv_softc *ncvdata[NNCV]; +#endif /* __FreeBSD__ */ + +/************************************************************** + * DECLARE + **************************************************************/ +extern int delaycount; +extern struct scsi_low_funcs ncv_funcs; + +/************************************************************** + * General probe attach + **************************************************************/ +#ifdef __FreeBSD__ +#if NCARD > 0 +static int +ncv_card_resume(struct ncv_softc *sc) +{ +#if 0 /* XXX ncv_init */ + if (!ncv_init(sc)) + return (ENXIO); +#endif + printf("%s: resumed\n", sc->sc_dvname); + return (0); +} + +static int +ncv_card_init(struct pccard_devinfo *devi) +{ + int unit = devi->pd_unit; + struct ncv_softc *sc = ncvdata[unit]; + + if (NNCV <= unit) + return (ENODEV); + /* XXX -- ncv_init */ + printf("probe ncv\n"); + if (ncvprobe(&devi->isahd) == 0) + return (ENXIO); + printf("attach ncv\n"); + if (ncvattach(&devi->isahd) == 0) + return (ENXIO); + return (0); +} + +static void +ncv_card_unload(struct pccard_devinfo *devi) +{ + struct ncv_softc *sc = ncvdata[devi->pd_unit]; + + printf("%s: unload\n", sc->sc_dvname); +/* scsi_low_deactivate((struct scsi_low_softc *)sc); */ +#ifdef SCSI_DETACH + ncvdetach(&devi->isahd); +#endif +} + +static int +ncv_card_intr(struct pccard_devinfo *devi) +{ + + (void) ncv_sequencer(ncvdata[devi->pd_unit]); + return 1; +} +#endif /* NCARD > 0 */ +#endif /* FreeBSD */ + +static inline int +ncvhw_probe (struct ncv_softc *sc, int flags) +{ + + if (NCV_CLKFACTOR(flags) > CLK_35M_F) + { + printf("%s invalid dvcfg flags\n", sc->sc_dvname); + return (-1); + } + + sc->sc_hw = ncv_template; + if (NCV_C5IMG(flags) != 0) + { + sc->sc_hw.cfg5 = NCV_C5IMG(flags); + sc->sc_hw.clk = NCV_CLKFACTOR(flags); + + if (NCV_SPECIAL(flags) & NCVHWCFG_MAX10M) + sc->sc_hw.mperiod = 100 / 4; + + /* XXX: + * RATOC scsi cards have fatal fifo asic bug. + * To avoid it, currently make sync offset 0 (async)! + */ + if (NCV_SPECIAL(flags) & NCVHWCFG_FIFOBUG) + { + sc->sc_hw.mperiod = 0; + sc->sc_hw.moffset = 0; + } + + if (NCV_SPECIAL(flags) & NCVHWCFG_SCSI1) + sc->sc_hw.cfg2 &= ~C2_SCSI2; + + if (NCV_SPECIAL(flags) & NCVHWCFG_SLOW) + sc->sc_hw.cfg1 |= C1_SLOW; + } + + /* setup configuration image 3 */ + if (sc->sc_hw.clk != CLK_40M_F && sc->sc_hw.clk <= CLK_25M_F) + sc->sc_hw.cfg3 &= ~C3_FCLK; + +#ifdef __FreeBSD__ + sc->sc_cfgflags = (flags & 0xffff); +#else + sc->sc_cfgflags = DVCFG_MINOR(flags); +#endif + sc->sc_wc = delaycount * 2000; /* 2 sec */ + sc->sc_funcs = &ncv_funcs; + + if (ncvhw_check(sc)) + return (-1); + + return (0); +} + +#ifdef __NetBSD__ +int +ncvprobe(parent, self, aux) + struct device *parent; + struct device *self; + void *aux; +{ + struct ncv_softc *sc = (void *)self; + struct isa_attach_args *ia = aux; + struct ncv_hw *hw; + DECLARE_IOPORT(sc); + + strcpy(sc->sc_dvname, sc->sc_dev.dv_xname); + if (ia->ia_iobase == IOBASEUNK || ia->ia_irq == IRQUNK) + return 0; + + bc = ia->ia_bc; + if (bus_io_map(bc, ia->ia_iobase, NCVIOSZ, &ioh)) + return 0; + sc->sc_bc = bc; + sc->sc_ioh = ioh; + sc->sc_dealyioh = ia->ia_delayioh; + + if (ncvhw_probe (sc, ia->ia_cfgflags) < 0) + { + bus_io_unmap(bc, ioh, NCVIOSZ); + return 0; + } + else if (scsi_low_attach((struct scsi_low_softc *) sc)) + return 0; + else + { + ia->ia_iosize = NCVIOSZ; + return 1; + } +} +#endif /* __NetBSD__ */ + +#ifdef __FreeBSD__ +int ncvprobe(struct isa_device *dev) +{ + struct ncv_softc *sc; + int unit = dev->id_unit; + struct ncv_hw *hw; + char dvname[SCSI_LOW_DVNAME_LEN]; + DECLARE_IOPORT(sc); + + sprintf(dvname, "ncv%d", unit); + + if (unit >= NNCV && !dev->id_reconfig) + { + printf("%s: unit number too high\n", dvname); + return (0); + } + + if (dev->id_iobase == 0) + { + printf("%s: no ioaddr is given\n", dvname); + return (0); + } + if (dev->id_reconfig || ncvdata[unit] != NULL) + { + sc = ncvdata[unit]; + sc->sc_ioport = dev->id_iobase; + if (ncvhw_probe(sc, dev->id_flags) < 0) + return (0); + } + else + { + sc = malloc(sizeof(struct ncv_softc), M_TEMP, M_NOWAIT); + if (sc == NULL) + { + printf("%s: cannot malloc!\n", sc->sc_dvname); + return (0); + } + bzero(sc, sizeof(struct ncv_softc)); + strcpy (sc->sc_dvname, dvname); + sc->unit = unit; + ncvdata[unit] = sc; + sc->sc_ioport = dev->id_iobase; + + if (ncvhw_probe(sc, dev->id_flags) < 0) + { + free(sc, M_TEMP); + ncvdata[unit] = NULL; + return (0); + } + } + return (NCVIOSZ); +} +#endif + +int +ncvprint(aux, name) + void *aux; + char *name; +{ + + if (name != NULL) + printf("%s: scsibus ", name); + return (UNCONF); +} + +#ifdef __FreeBSD__ +#define adapter_target adapter_targ +#define openings opennings +#endif + +#ifdef __FreeBSD__ +static inline void +ncv_setup_sc(register struct ncv_softc *sc) +#else +inline void ncv_setup_sc(sc) + register struct ncv_softc *sc; +#endif +{ + + scsi_low_init_ccbque(NCV_MAX_CCB); + TAILQ_INIT(&sc->sc_start); + + sc->sc_link.adapter_softc = sc; + sc->sc_link.adapter_target = 7; + sc->sc_link.openings = 2; + sc->sc_link.adapter = &ncv; + sc->sc_link.device = &ncv_dev; +} + +#undef adapter_target +#undef openings + +#ifdef __NetBSD__ +void +ncvattach(parent, self, aux) + struct device *parent; + struct device *self; + void *aux; +{ + struct ncv_softc *sc = (void *)self; + struct isa_attach_args *ia = aux; + + printf("\n"); + sc->sc_bc = ia->ia_bc; + sc->sc_dealyioh = ia->ia_delayioh; + if (bus_io_map(sc->sc_bc, ia->ia_iobase, NCVIOSZ, &sc->sc_ioh)) + panic("%s: couldn't map io\n", sc->sc_dvname); + + ncv_setup_sc(sc); + sc->sc_mask = (1 << ia->ia_irq); + sc->sc_ih = isa_intr_establish(ia->ia_ic, ia->ia_irq, IST_EDGE, + IPL_BIO, ncvintr, sc); + + config_found(self, &sc->sc_link, ncvprint); + timeout(scsi_low_timeout, sc, SCSI_LOW_TIMEOUT_CHECK_INTERVAL * hz); +} +#endif /* __NetBSD__ */ + +#ifdef __FreeBSD__ + +#ifdef SCSI_DETACH +static void +ncvdetach(struct isa_device *dev) +{ + int unit = dev->id_unit; + struct scsibus_data *scbus; + + scbus = (struct scsibus_data *)scsi_extend_get(ncvdata[unit]->sc_link.scsibus); + scsi_detachdev(scbus); +} +#endif /* SCSI_DETACH */ + +int +ncvattach(dev) + struct isa_device *dev; +{ + int unit = dev->id_unit; + struct ncv_softc *sc = ncvdata[unit]; + struct scsibus_data *scbus; + + if (scsi_low_attach((struct scsi_low_softc *) sc)) + { + printf("%s: scsi low attach failed\n", sc->sc_dvname); + return (0); + } + + ncv_setup_sc(sc); + sc->sc_link.adapter_unit = unit; + + /* + * Prepare the scsibus_data area for the upperlevel + * scsi code. + */ + scbus = scsi_alloc_bus(); + if (!scbus) + return (0); + scbus->adapter_link = &sc->sc_link; + /* + * ask the adapter what subunits are present + */ + scsi_attachdevs(scbus); + timeout(scsi_low_timeout, sc, SCSI_LOW_TIMEOUT_CHECK_INTERVAL * hz); + return 1; +} +#endif /* __FreeBSD__ */ + +#ifdef __NetBSD__ +int ncvintr (arg) + void *arg; +{ + return (ncv_sequencer((struct ncv_softc *)arg)); +} +#endif + +#ifdef __FreeBSD__ +void +ncvintr (unit) + int unit; +{ + (void) ncv_sequencer(ncvdata[unit]); +} +#endif diff -urN sys.2.2.8-RELEASE/i386/scsi/ncr53c500/ncr53c500if.h sys/i386/scsi/ncr53c500/ncr53c500if.h --- sys.2.2.8-RELEASE/i386/scsi/ncr53c500/ncr53c500if.h Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/ncr53c500/ncr53c500if.h Tue Dec 22 13:52:38 1998 @@ -0,0 +1,109 @@ +/* + * Copyright (c) HONDA Naofumi, KATO Takenori, 1996. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer as + * the first lines of this file unmodified. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* $Id: ncr53c500if.h,v 1.1.8.1 1998/12/05 22:48:28 itojun Exp $ */ + +/*************************************************** + * BUS IO MAPPINGS & NCR53C500 specific inclusion + ***************************************************/ +#ifdef __NetBSD__ +#include +#include +#include +#include +#include +#endif /* __NetBSD__ */ + +#ifdef __FreeBSD__ +#include +#include +#include +#include +#include + +#include "apm.h" +#if NAPM > 0 +#include +#endif /* NAPM > 0 */ + +/* pccard support */ +#include "card.h" +#if NCARD > 0 +#include +#include +#include +#include +#endif /* NCARD > 0 */ +#endif /* __FreeBSD__ */ + +int ncv_sequencer __P((struct ncv_softc *sc)); +int ncvhw_check __P((struct ncv_softc *)); + +/* (II) os depend declare */ +#ifdef __NetBSD__ +int ncvprobe __P((struct device *, struct device *, void *)); +void ncvattach __P((struct device *, struct device *, void *)); +#endif /* __NetBSD__ */ + +#ifdef __FreeBSD__ +int ncvprobe __P((struct isa_device *dev)); +int ncvattach __P((struct isa_device *dev)); +#endif /* __FreeBSD__ */ + +#ifdef __FreeBSD__ +u_int32_t ncv_adapter_info __P((int)); +extern int dma_init_flag; +#define softintr(y) ipending |= (y) +#endif /* __FreeBSD__ */ + + +#ifdef __NetBSD__ +#define DECLARE_IOPORT(sc) \ + register bus_chipset_tag_t bc = (sc)->sc_bc; \ + register bus_io_handle_t ioh = (sc)->sc_ioh; +#define OUTB(o, val) \ + bus_io_write_1 (bc, ioh, (o), (val)) +#define OUTSL(o,b,l) \ + bus_io_write_multi_4(bc, ioh, (o), (b), (l)) +#define INB(o) \ + bus_io_read_1 (bc, ioh, (o)) +#define INSL(o,b,l) \ + bus_io_read_multi_4(bc, ioh, (o), (b), (l)) +#endif + +#ifdef __FreeBSD__ +#define DECLARE_IOPORT(sc) \ + register int ioport = (sc)->sc_ioport; +#define OUTB(o, val) \ + outb((o)+ioport, (val)) +#define OUTSL(o,b,l) \ + outsl((o)+ioport, (b), (l)) +#define INB(o) \ + inb((o)+ioport) +#define INSL(o,b,l) \ + insl((o)+ioport, (b), (l)) +#endif diff -urN sys.2.2.8-RELEASE/i386/scsi/ncr53c500/ncr53c500reg.h sys/i386/scsi/ncr53c500/ncr53c500reg.h --- sys.2.2.8-RELEASE/i386/scsi/ncr53c500/ncr53c500reg.h Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/ncr53c500/ncr53c500reg.h Tue Dec 22 13:52:38 1998 @@ -0,0 +1,184 @@ +/* $NetBSD$ */ +/* + * [NetBSD for NEC PC98 series] + * Copyright (c) 1995, 1996 NetBSD/pc98 porting staff. + * Copyright (c) 1995, 1996 Naofumi HONDA. + * Copyright (c) 1995, 1996 Kouichi Matsuda. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _NCR53C500REG_H_ +#define _NCR53C500REG_H_ + +/* Control Register Set 0 */ +#define NCVIOSZ 0x10 + +#define cr0_tclsb 0x00 /* RW - Transfer Count Low */ +#define cr0_tcmsb 0x01 /* RW - Transfer Count Mid */ +#define cr0_sfifo 0x02 /* RW - FIFO data */ +#define cr0_cmd 0x03 /* RW - Command (2 deep) */ +#define cr0_stat 0x04 /* RO - Status */ +#define cr0_dstid 0x04 /* WO - Select/Reselect Bus ID */ +#define cr0_istat 0x05 /* RO - Interrupt */ +#define cr0_srtout 0x05 /* WO - Select/Reselect Timeout */ +#define cr0_seq 0x06 /* RO - Sequence Step */ +#define cr0_period 0x06 /* WO - Synch Transfer Period */ +#define cr0_sffl 0x07 /* RO - FIFO FLags */ +#define cr0_offs 0x07 /* WO - Synch Ofset */ +#define cr0_cfg1 0x08 /* RW - Configuration #1 */ +#define cr0_clk 0x09 /* WO - Clock Conversion Factor */ +#define cr0_tst 0x0a /* WO - Test (Chip Test Only) */ +#define cr0_cfg2 0x0b /* RW - Configuration #2 */ +#define cr0_cfg3 0x0c /* RW - Configuration #3 */ +#define cr0_cfg4 0x0d /* RW - Configuration #4 */ +#define cr0_tchsb 0x0e /* RW - Transfer Count High */ +#define cr0_fifo_bottom 0x0f /* WO - FIFO bottom */ + +/* Control Register Set 1 */ +#define cr1_jumper 0x00 /* RW - Jumper Sense Port */ +#define cr1_sram_ptr 0x01 /* RW - SRAM Address Pointer */ +#define cr1_sram_data 0x02 /* RW - SRAM Data */ +#define cr1_fdata 0x04 /* RW - PIO FIFO */ +#define cr1_fstat 0x08 /* RW - PIO Status */ +#define cr1_atacmd 0x09 /* RW - ATA Command/Status */ +#define cr1_ataerr 0x0a /* RW - ATA Features/Error */ +#define cr1_pflag 0x0b /* RW - PIO Flag Interrupt Enable */ +#define cr1_cfg5 0x0d /* RW - Configuration #5 */ +#define cr1_sig 0x0e /* RO - Signature */ +#define cr1_cfg6 0x0f /* RW - Configuration #6 */ + +/* atacmd (MPS110 ONLY) */ +#define ATACMD_POWDOWN 0x2d +#define ATACMD_ENGAGE 0x24 + +/* cfg4 */ +#define C4_ANE 0x04 + +/* cfg3 */ +#define C3_NULL 0x00 +#define C3_FCLK 0x08 /* Fast SCSI */ +#define C3_FSCSI 0x10 /* Fast Clock (>25Mhz) */ + +/* cfg2 */ +#define C2_SCSI2 0x08 /* SCSI-2 Enable */ +#define C2_FE 0x40 /* Features Enable */ + +/* cfg1 */ +#define C1_SLOW 0x80 /* Slow Cable Mode */ +#define C1_SRR 0x40 /* SCSI Reset Rep Int Dis */ +#define C1_PARENB 0x10 /* Enable Parity Check */ + +/* clk factor */ +#define CLK_40M_F 0x00 +#define CLK_25M_F 0x05 +#define CLK_30M_F 0x06 +#define CLK_35M_F 0x07 + +/* interrupt status register */ +#define INTR_SBR 0x80 /* SCSI Bus Reset */ +#define INTR_ILL 0x40 /* Illegal Command */ +#define INTR_DIS 0x20 /* Disconnect */ +#define INTR_BS 0x10 /* Bus Service */ +#define INTR_FC 0x08 /* Function Complete */ +#define INTR_RESEL 0x04 /* Reselected */ +#define INTR_SELATN 0x02 /* Select with ATN */ +#define INTR_SEL 0x01 /* Selected */ +#define INTR_RESELECT (INTR_RESEL | INTR_FC) + +/* status register */ +#define STAT_INT 0x80 /* Interrupt */ +#define STAT_GE 0x40 /* Gross Error */ +#define STAT_PE 0x20 /* Parity Error */ +#define STAT_TC 0x10 /* Terminal Count */ + +/* phase bits */ +#define IOI 0x01 +#define CDI 0x02 +#define MSGI 0x04 + +/* Information transfer phases */ +#define DATA_OUT_PHASE (0) +#define DATA_IN_PHASE (IOI) +#define COMMAND_PHASE (CDI) +#define STATUS_PHASE (CDI|IOI) +#define MESSAGE_OUT_PHASE (MSGI|CDI) +#define MESSAGE_IN_PHASE (MSGI|CDI|IOI) + +#define PHASE_MASK (MSGI|CDI|IOI) + +/* fifo status register */ +#define FIFO_SMASK 0x1e +#define FIFO_E 0x10 /* fifo empty */ +#define FIFO_B 0x00 /* there exists any */ +#define FIFO_1 0x08 /* 1/3 <= bytes < 2/3 */ +#define FIFO_2 0x04 /* 2/3 <= bytes < full */ +#define FIFO_F 0x02 /* full */ +#define FIFO_EN 0x01 /* fifo direction */ +#define FIFO_BRK 0x40 /* phase miss */ + +#define FIFO_F_SZ 128 +#define FIFO_1_SZ 44 +#define FIFO_2_SZ 84 + +/* pflags */ +#define PFR_WRITE 0x01 + +/* Commands */ +#define CMD_DMA 0x80 /* DMA Bit */ +#define CMD_NOP 0x00 /* No Operation */ +#define CMD_FLUSH 0x01 /* Flush FIFO */ +#define CMD_RSTCHIP 0x02 /* Reset Chip */ +#define CMD_RSTSCSI 0x03 /* Reset SCSI Bus */ +#define CMD_RESEL 0x40 /* Reselect Sequence */ +#define CMD_SELNATN 0x41 /* Select without ATN */ +#define CMD_SELATN 0x42 /* Select with ATN */ +#define CMD_SELATNS 0x43 /* Select with ATN & Stop */ +#define CMD_ENSEL 0x44 /* Enable (Re)Selection */ +#define CMD_DISSEL 0x45 /* Disable (Re)Selection */ +#define CMD_SELATN3 0x46 /* Select with ATN3 */ +#define CMD_RESEL3 0x47 /* Reselect3 Sequence */ +#define CMD_SNDMSG 0x20 /* Send Message */ +#define CMD_SNDSTAT 0x21 /* Send Status */ +#define CMD_SNDDATA 0x22 /* Send Data */ +#define CMD_DISCSEQ 0x23 /* Disconnect Sequence */ +#define CMD_TERMSEQ 0x24 /* Terminate Sequence */ +#define CMD_TCCS 0x25 /* Target Command Comp Seq */ +#define CMD_DISC 0x27 /* Disconnect */ +#define CMD_RECMSG 0x28 /* Receive Message */ +#define CMD_RECCMD 0x29 /* Receive Command */ +#define CMD_RECDATA 0x2a /* Receive Data */ +#define CMD_RECCSEQ 0x2b /* Receive Command Sequence */ +#define CMD_ABORT 0x04 /* Target Abort DMA */ +#define CMD_TRANS 0x10 /* Transfer Information */ +#define CMD_ICCS 0x11 /* Initiator Cmd Comp Seq */ +#define CMD_MSGOK 0x12 /* Message Accepted */ +#define CMD_TRPAD 0x18 /* Transfer Pad */ +#define CMD_SETATN 0x1a /* Set ATN */ +#define CMD_RSTATN 0x1b /* Reset ATN */ + +/* Default timeout */ +#define SEL_TOUT 0xa3 +#endif /* !_NCR53C500REG_H_ */ diff -urN sys.2.2.8-RELEASE/i386/scsi/ncr53c500/ncr53c500var.h sys/i386/scsi/ncr53c500/ncr53c500var.h --- sys.2.2.8-RELEASE/i386/scsi/ncr53c500/ncr53c500var.h Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/ncr53c500/ncr53c500var.h Tue Dec 22 13:52:38 1998 @@ -0,0 +1,44 @@ +/* $NetBSD$ */ +/* $Id: ncr53c500var.h,v 1.1.8.1 1998/12/05 22:48:30 itojun Exp $ */ +/* + * [NetBSD for NEC PC98 series] + * Copyright (c) 1995, 1996 NetBSD/pc98 porting staff. + * Copyright (c) 1995, 1996 Naofumi HONDA. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _NCR53C500VAR_H_ +#define _NCR53C500VAR_H_ + +/* softc */ +struct ncv_softc { + SCSI_LOW_SOFTC + + struct ncv_hw sc_hw; +}; + +int ncvprint __P((void *, char *)); +#endif /* !_NCR53C500VAR_H_ */ diff -urN sys.2.2.8-RELEASE/i386/scsi/scsi_low/ccbque.h sys/i386/scsi/scsi_low/ccbque.h --- sys.2.2.8-RELEASE/i386/scsi/scsi_low/ccbque.h Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/scsi_low/ccbque.h Tue Dec 22 13:52:38 1998 @@ -0,0 +1,130 @@ +/* $NetBSD$ */ +/* + * [NetBSD for NEC PC98 series] + * Copyright (c) 1994, 1995, 1996 NetBSD/pc98 porting staff. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * Common command control queue funcs. + * Written by N. Honda. + */ + +#ifndef _CCBQUE_H_ +#define _CCBQUE_H_ + +/* (I) structure and prototype */ +#define GENERIC_CCB_ASSERT(DEV, CCBTYPE) \ +TAILQ_HEAD(CCBTYPE##tab, CCBTYPE); \ +struct CCBTYPE##que { \ + struct CCBTYPE##tab CCBTYPE##tab; \ + int count; \ + int maxccb; \ +}; \ +void DEV##_init_ccbque __P((int)); \ +struct CCBTYPE *DEV##_get_ccb __P((int)); \ +void DEV##_free_ccb __P((struct CCBTYPE *)); + +/* (II) static allocated memory */ +#define GENERIC_CCB_STATIC_ALLOC(DEV, CCBTYPE) \ +static struct CCBTYPE##que CCBTYPE##que; + +/* (III) functions */ +#define GENERIC_CCB(DEV, CCBTYPE, CHAIN) \ + \ +void \ +DEV##_init_ccbque(count) \ + int count; \ +{ \ + if (CCBTYPE##que.maxccb == 0) \ + TAILQ_INIT(&CCBTYPE##que.CCBTYPE##tab); \ + CCBTYPE##que.maxccb += count; \ +} \ + \ +struct CCBTYPE * \ +DEV##_get_ccb(flags) \ + int flags; \ +{ \ + struct CCBTYPE *cb; \ + int s = splbio(); \ + \ + do \ + { \ + if (CCBTYPE##que.count > CCBTYPE##que.maxccb) \ + { \ + if (flags) \ + { \ + cb = NULL; \ + goto done; \ + } \ + else \ + { \ + tsleep((caddr_t) &CCBTYPE##que.count, \ + PRIBIO, "ccbwait", 0); \ + continue; \ + } \ + } \ + \ + if (cb = CCBTYPE##que.CCBTYPE##tab.tqh_first) \ + { \ + TAILQ_REMOVE(&CCBTYPE##que.CCBTYPE##tab, cb, CHAIN);\ + break; \ + } \ + else \ + { \ + if (cb = malloc(sizeof(*cb), M_DEVBUF, M_NOWAIT))\ + { \ + bzero(cb, sizeof(*cb)); \ + break; \ + } \ + else if (flags) \ + goto done; \ + \ + tsleep((caddr_t) &CCBTYPE##que.count, \ + PRIBIO, "ccbwait", 0); \ + } \ + } \ + while (1); \ + CCBTYPE##que.count ++; \ + \ +done: \ + splx(s); \ + return cb; \ +} \ + \ +void \ +DEV##_free_ccb(cb) \ + struct CCBTYPE *cb; \ +{ \ + int s = splbio(); \ + \ + TAILQ_INSERT_TAIL(&CCBTYPE##que.CCBTYPE##tab, cb, CHAIN); \ + CCBTYPE##que.count --; \ + \ + if (CCBTYPE##que.count == CCBTYPE##que.maxccb) \ + wakeup ((caddr_t) &CCBTYPE##que.count); \ + splx(s); \ +} +#endif /* !_CCBQUE_H_ */ diff -urN sys.2.2.8-RELEASE/i386/scsi/scsi_low/scsi_dvcfg.h sys/i386/scsi/scsi_low/scsi_dvcfg.h --- sys.2.2.8-RELEASE/i386/scsi/scsi_low/scsi_dvcfg.h Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/scsi_low/scsi_dvcfg.h Tue Dec 22 13:52:38 1998 @@ -0,0 +1,54 @@ +/* $NetBSD$ */ +/* + * [NetBSD for NEC PC98 series] + * Copyright (c) 1994, 1995, 1996 NetBSD/pc98 porting staff. + * Copyright (c) 1994, 1995, 1996 Naofumi HONDA. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _SCSI_DVCFG_H_ +#define _SCSI_DVCFG_H_ + +/* common dvcfg flags defitions for bs, ncv, stg */ + +#define DVF_SCSI_SYNC 0x01 +#define DVF_SCSI_DISC 0x02 +#define DVF_SCSI_WAIT 0x04 +#define DVF_SCSI_LINK 0x08 +#define DVF_SCSI_QTAG 0x10 +#define DVF_SCSI_SP0 0x100 +#define DVF_SCSI_NOPARITY 0x200 +#define DVF_SCSI_SAVESP 0x400 +#define DVF_SCSI_SP1 0x800 +#define DVF_SCSI_PERIOD(XXX) (((XXX) >> 24) & 0xff) +#define DVF_SCSI_OFFSET(XXX) (((XXX) >> 16) & 0xff) +#define DVF_SCSI_SYNCMASK 0xffff0000 + +#define DVF_SCSI_DEFCFG (DVF_SCSI_SYNC | DVF_SCSI_NOPARITY | DVF_SCSI_SYNCMASK) + +#define DVF_SCSI_BITS "\020\13fssp\12noparity\11nosat\005qtag\004cmdlnk\003wait\002disc\001sync" + +#endif /* !_SCSI_DVCFG_H_ */ diff -urN sys.2.2.8-RELEASE/i386/scsi/scsi_low/scsi_low.c sys/i386/scsi/scsi_low/scsi_low.c --- sys.2.2.8-RELEASE/i386/scsi/scsi_low/scsi_low.c Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/scsi_low/scsi_low.c Tue Dec 22 13:52:38 1998 @@ -0,0 +1,1225 @@ +/* $NetBSD$ */ +/* $Id: scsi_low.c,v 1.1.8.1 1998/12/05 22:48:35 itojun Exp $ */ +/* + * [NetBSD for NEC PC98 series] + * Copyright (c) 1995, 1996 NetBSD/pc98 porting staff. + * Copyright (c) 1995, 1996 Naofumi HONDA. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifdef __NetBSD__ +#include +#endif /* __NetBSD__ */ +#ifdef __FreeBSD__ +#include +#endif /* __FreeBSD__ */ + +/************************************************************** + * power control + **************************************************************/ +#ifdef SCSI_LOW_POWFUNC +static void scsi_low_recover __P((void *)); + +static void +scsi_low_recover(arg) + void *arg; +{ + struct scsi_low_softc *sc = arg; + int s = splbio(); + + switch (sc->sc_rstep) + { + case 0: + sc->sc_rstep = 1; + (*sc->sc_funcs->scsi_low_power) (sc, SCSI_LOW_ENGAGE); + timeout(scsi_low_recover, sc, 1); + break; + + case 1: + sc->sc_flags &= ~HW_RESUME; + scsi_low_start(sc); + break; + } + + splx(s); +} +#endif /* SCSI_LOW_POWFUNC */ + +int +scsi_low_reset(sc, flags) + struct scsi_low_softc *sc; + u_int flags; +{ + +#ifdef SCSI_LOW_POWFUNC + untimeout(scsi_low_recover, sc); + sc->sc_flags &= ~(HW_POWDOWN | HW_RESUME); + + sc->sc_oc = 1; + sc->sc_powc = SCSI_LOW_POWDOWN_TC; +#endif /* SCSI_LOW_POWFUNC */ + + return ((*sc->sc_funcs->scsi_low_reset)(sc, flags)); +} + +/************************************************************** + * allocate targ_info + **************************************************************/ +struct targ_info * +scsi_low_alloc_ti(sc, targ) + struct scsi_low_softc *sc; + int targ; +{ + struct targ_info *ti; + + if (sc->sc_titab.tqh_first == NULL) + TAILQ_INIT(&sc->sc_titab); + + ti = malloc(sizeof(struct targ_info), M_DEVBUF, M_NOWAIT); + if (ti == NULL) + panic("%s short of memory\n", sc->sc_dvname); + + bzero(ti, sizeof(struct targ_info)); + ti->ti_id = targ; + ti->ti_sc = sc; + ti->ti_quirks = 0; +#ifdef SDEV_NOPARITY + ti->ti_quirks |= SDEV_NOPARITY; +#endif +#ifdef SDEV_NODISC + ti->ti_quirks |= SDEV_NODISC; +#endif + ti->ti_cfgflags = 0xffff0000 | SCSI_LOW_SYNC; + + sc->sc_ti[targ] = ti; + TAILQ_INSERT_TAIL(&sc->sc_titab, ti, ti_chain); + + return ti; +} + +void +scsi_low_free_ti(sc) + struct scsi_low_softc *sc; +{ + struct targ_info *ti, *tib; + + for (ti = sc->sc_titab.tqh_first; ti; ti = tib) + { + tib = ti->ti_chain.tqe_next; + free(ti, M_DEVBUF); + } +} + +int +scsi_low_attach(sc) + struct scsi_low_softc *sc; +{ + int i; + + for (i = 0; i < NTARGETS; i ++) + scsi_low_alloc_ti((struct scsi_low_softc *) sc, i); + + if (scsi_low_reset(sc, 0)) + { + scsi_low_free_ti((struct scsi_low_softc *) sc); + return EINVAL; + } + + return 0; +} + +/************************************************************** + * timeout + **************************************************************/ +void +scsi_low_timeout(arg) + void *arg; +{ + struct scsi_low_softc *sc = arg; + struct ccb *cb; + int reset, s = splbio(); + + /* check */ + reset = 0; + if (cb = sc->sc_nexus) + { + if ((cb->tc -= SCSI_LOW_TIMEOUT_CHECK_INTERVAL) < 0) + { + cb->ti->ti_error |= TIMEOUTIO; + reset = 1; + } + } + else if (sc->sc_disc > 0) + { + struct targ_info *ti; + + for (ti = sc->sc_titab.tqh_first; ti; ti = ti->ti_chain.tqe_next) + { + if ((cb = ti->ti_disccb) == NULL) + continue; + + if ((cb->tc -= SCSI_LOW_TIMEOUT_CHECK_INTERVAL) < 0) + { + ti->ti_error |= TIMEOUTIO; + reset = 1; + } + } + } + else + { + cb = sc->sc_start.tqh_first; + if (cb) + { + if ((cb->tc -= SCSI_LOW_TIMEOUT_CHECK_INTERVAL) < 0) + { + cb->ti->ti_error |= TIMEOUTIO; + reset = 1; + } + } +#ifdef SCSI_LOW_POWFUNC + else + { + if (sc->sc_oc == 0) + { + sc->sc_powc --; + if (sc->sc_powc < 0) + { + sc->sc_powc = SCSI_LOW_POWDOWN_TC; + + if ((sc->sc_flags & (HW_POWDOWN | HW_RESUME)) == 0) + { + sc->sc_flags |= HW_POWDOWN; + if (sc->sc_funcs->scsi_low_power) + (*sc->sc_funcs->scsi_low_power) (sc, SCSI_LOW_POWDOWN); + } + } + } + else + { + sc->sc_powc = SCSI_LOW_POWDOWN_TC; + sc->sc_oc = 0; + } + } +#endif /* SCSI_LOW_POWFUNC */ + } + + /* try to recover */ + if (reset) + { + struct targ_info *ti; + + printf("%s: scsi bus hangup\n", sc->sc_dvname); + for (ti = sc->sc_titab.tqh_first; ti; ti = ti->ti_chain.tqe_next) + scsi_low_print(sc, ti); + + scsi_low_reset (sc, 1); + scsi_low_start(sc); + } + + timeout(scsi_low_timeout, sc, SCSI_LOW_TIMEOUT_CHECK_INTERVAL * hz); + splx(s); +} + +/************************************************************** + * CCB + **************************************************************/ +GENERIC_CCB_STATIC_ALLOC(scsi_low, ccb) +GENERIC_CCB(scsi_low, ccb, ccb_chain) + +/************************************************************** + * SCSI INTERFACE + **************************************************************/ +#define SCSI_LOW_MINPHYS 0x10000 + +void +scsi_low_scsi_minphys(bp) + struct buf *bp; +{ + + if (bp->b_bcount > SCSI_LOW_MINPHYS) + bp->b_bcount = SCSI_LOW_MINPHYS; + minphys(bp); +} + +int +scsi_low_scsi_cmd(xs) + struct scsi_xfer *xs; +{ + struct scsi_low_softc *sc = xs->sc_link->adapter_softc; + struct targ_info *ti; + struct ccb *cb; + int s; + + if (sc->sc_cfgflags & CFG_NOATTEN) + { + if (xs->sc_link->lun > 0) + { + xs->error = XS_DRIVER_STUFFUP; + return COMPLETE; + } + } + + if ((cb = scsi_low_get_ccb(xs->flags & SCSI_NOSLEEP)) == NULL) + return TRY_AGAIN_LATER; + + cb->ti = ti = sc->sc_ti[xs->sc_link->target]; + + cb->xs = xs; + cb->lun = xs->sc_link->lun; + cb->rcnt = 0; + + s = splbio(); + + TAILQ_INSERT_TAIL(&sc->sc_start, cb, ccb_chain); + if (sc->sc_nexus == NULL) + scsi_low_start(sc); + + if (xs->flags & SCSI_POLL) + { + int timeo = xs->timeout; + + while ((xs->flags & ITSDONE) == 0 && timeo -- > 0) + { + delay(1000); /* 1 ms */ + (*sc->sc_funcs->scsi_low_intr) (sc); + } + + if (timeo <= 0 && (xs->flags & ITSDONE) == 0) + { + scsi_low_reset(sc, 0); + ti->ti_error |= (TIMEOUTIO | ABORTIO); + scsi_low_done(sc, cb); + SCSI_LOW_SETUP_PHASE(PH_NULL); + sc->sc_nexus = NULL; + } + + splx(s); + return COMPLETE; + } + + splx(s); + return SUCCESSFULLY_QUEUED; +} + +/************************************************************** + * Start & Done + **************************************************************/ +static struct scsi_test_unit_ready unit_ready_cmd; +static struct scsi_start_stop ss_cmd = { START_STOP, 0, {0,0,}, SSS_START, }; + +#define IO_BLOCK_CHECK(sc) \ +{ \ + if (sc->sc_flags & HW_INACTIVE) \ + return; \ +} + +void +scsi_low_start(sc) + struct scsi_low_softc *sc; +{ + struct scsi_xfer *xs; + struct targ_info *ti; + struct ccb *cb; + int i, wc; + + IO_BLOCK_CHECK(sc) + +#ifdef SCSI_LOW_POWFUNC + sc->sc_oc ++; + + if (sc->sc_flags & (HW_POWDOWN | HW_RESUME)) + { + if (sc->sc_flags & HW_RESUME) + return; + + sc->sc_flags &= ~HW_POWDOWN; + if (sc->sc_funcs->scsi_low_power) + { + sc->sc_flags |= HW_RESUME; + sc->sc_rstep = 0; + (*sc->sc_funcs->scsi_low_power) (sc, SCSI_LOW_ENGAGE); + + timeout(scsi_low_recover, sc, 1); + return; + } + } +#endif /* SCSI_LOW_POWFUNC */ + + /* setup nexus */ + if ((cb = sc->sc_nexus) == NULL) + { + for (cb = sc->sc_start.tqh_first; cb; cb = cb->ccb_chain.tqe_next) + if (cb->ti->ti_phase == PH_NULL) + break; + + if (cb == NULL) + return; + + if (cb != sc->sc_start.tqh_first) + { + TAILQ_REMOVE(&sc->sc_start, cb, ccb_chain); + TAILQ_INSERT_HEAD(&sc->sc_start, cb, ccb_chain); + } + + sc->sc_nexus = cb; + } + + xs = cb->xs; + ti = cb->ti; + cb->msgoutlen = 0; + ti->ti_msginptr = 0; + ti->ti_error = 0; + SCSI_LOW_SETUP_MSGPHASE(NOMSG); + + if (ti->ti_tflags & TARG_CA) + { + /* XXX: + * ahc and ncr(PCI) drivers forget to init the sense_data + * buffer! send-pr! + */ + bzero(&sc->sc_sense, sizeof(sc->sc_sense)); +#ifdef __NetBSD__ + sc->sc_sense_cmd.opcode = REQUEST_SENSE; +#else + sc->sc_sense_cmd.op_code = REQUEST_SENSE; +#endif + sc->sc_sense_cmd.byte2 = (cb->lun << 5); + sc->sc_sense_cmd.length = sizeof(sc->sc_sense); + cb->cmd = (u_int8_t *) &sc->sc_sense_cmd; + cb->cmdlen = sizeof(sc->sc_sense_cmd); + cb->data = (u_int8_t *) &sc->sc_sense; + cb->datalen = sizeof(sc->sc_sense); + cb->tcmax = 15; + } + else switch(ti->ti_state) + { + case UNIT_RDY: + cb->cmd = (u_int8_t *) &unit_ready_cmd; + cb->cmdlen = sizeof(unit_ready_cmd); + cb->datalen = 0; + cb->tcmax = 15; + break; + + case UNIT_START: + cb->cmd = (u_int8_t *) &ss_cmd; + cb->cmdlen = sizeof(ss_cmd); + cb->datalen = 0; + cb->tcmax = 30; + break; + + case UNIT_SYNCH: + ti->ti_state = UNIT_OK; + ti->ti_tflags |= TARG_SYNCH_PEND; + + case UNIT_OK: + if ((ti->ti_tflags & TARG_SYNCH_PEND) && + (xs->flags & SCSI_POLL) == 0) + { + ti->ti_tflags &= ~TARG_SYNCH_PEND; + if (ti->ti_maxsynch.offset > 0) + { + ti->ti_state = UNIT_SYNCH; + cb->msgout[0] = MSG_EXTEND; + cb->msgout[1] = MSG_EXTEND_SYNCHLEN; + cb->msgout[2] = MSG_EXTEND_SYNCHCODE; + cb->msgout[3] = ti->ti_maxsynch.period; + cb->msgout[4] = ti->ti_maxsynch.offset; + cb->msgoutlen = MSG_EXTEND_SYNCHLEN + 2; + cb->cmd = (u_int8_t *) &unit_ready_cmd; + cb->cmdlen = sizeof(unit_ready_cmd); + cb->datalen = 0; + cb->tcmax = 15; + break; + } + } + + cb->cmd = (u_int8_t *) xs->cmd; + cb->cmdlen = xs->cmdlen; + cb->data = xs->data; + cb->datalen = xs->datalen; + cb->tcmax = (xs->timeout >> 10); + break; + } + + /* timeout */ + if (cb->tcmax < SCSI_LOW_MIN_TOUT) + cb->tcmax = SCSI_LOW_MIN_TOUT; + cb->tc = cb->tcmax; + + /* setup data pointer */ + sc->sc_scp.data = ti->ti_sscp.data = cb->data; + sc->sc_scp.datalen = ti->ti_sscp.datalen = cb->datalen; + + if (((*sc->sc_funcs->scsi_low_start_bus)(sc, cb)) == 0) + { + sc->sc_selid = ti; + } + else + { + sc->sc_selid = NULL; + sc->sc_nexus = NULL; + SCSI_LOW_SETUP_PHASE(PH_NULL); + } +} + +int +scsi_low_done(arg, cb) + void *arg; + struct ccb *cb; +{ + struct scsi_low_softc *sc = arg; + struct scsi_xfer *xs = cb->xs; + struct targ_info *ti = cb->ti; + + if (ti->ti_error == 0) + { + if (ti->ti_tflags & TARG_CA) + { + xs->sense = sc->sc_sense; + xs->error = XS_SENSE; + cb->rcnt = MAXRETRY; + } + else switch (ti->ti_status) + { + case ST_GOOD: + if (sc->sc_scp.datalen != 0 && xs->bp) + { + ti->ti_error |= PDMAERR; + xs->error = XS_DRIVER_STUFFUP; + } + else + xs->error = XS_NOERROR; + break; + + case ST_CHKCOND: + case ST_MET: + ti->ti_tflags |= TARG_CA; + return 1; + + case ST_BUSY: + ti->ti_error |= ERRBUSY; + xs->error = XS_BUSY; + break; + + default: + ti->ti_error |= FATALIO; + xs->error = XS_DRIVER_STUFFUP; + break; + } + + if (ti->ti_state < UNIT_OK) + { +check: + ti->ti_tflags &= ~TARG_CA; + ti->ti_state ++; + cb->rcnt = 0; + return 1; + } + } + else + { + if (ti->ti_phase == PH_SELSTART) + { + xs->error = XS_TIMEOUT; + if (ti->ti_state == UNIT_RDY) + ti->ti_error |= ABORTIO; + } + else if (ti->ti_state < UNIT_OK) + { + goto check; + } + else + xs->error = XS_DRIVER_STUFFUP; + + if (ti->ti_error & ABORTIO) + cb->rcnt = MAXRETRY; + } + + /* internal retry check */ + if (xs->error == XS_NOERROR) + { + xs->resid = 0; + ti->ti_tflags &= ~TARG_CA; + } + else + { + if (xs->bp && xs->error != XS_SENSE) + { + printf("%s: buffered io error\n", sc->sc_dvname); + scsi_low_print(sc, ti); + } + + ti->ti_tflags &= ~TARG_CA; + if (cb->rcnt ++ < MAXRETRY) + return 1; + } + + xs->flags |= ITSDONE; + scsi_done(xs); + + /* free our target */ + TAILQ_REMOVE(&sc->sc_start, cb, ccb_chain); + scsi_low_free_ccb(cb); + return 0; +} + +/************************************************************** + * Reset + **************************************************************/ +void +scsi_low_reset_nexus(sc, fdone) + struct scsi_low_softc *sc; + int fdone; +{ + struct targ_info *ti; + struct ccb *cb; + + /* current nexus */ + if (fdone && (cb = sc->sc_nexus) && cb->rcnt ++ >= MAXRETRY) + { + cb->ti->ti_error |= FATALIO; + scsi_low_done(sc, cb); + } + + /* disconnected nexus */ + for (ti = sc->sc_titab.tqh_first; ti; ti = ti->ti_chain.tqe_next) + { + if (ti->ti_phase == PH_DISC) + { + cb = ti->ti_disccb; + ti->ti_disccb = NULL; + TAILQ_INSERT_HEAD(&sc->sc_start, cb, ccb_chain); + if (fdone && cb->rcnt ++ >= MAXRETRY) + { + ti->ti_error |= FATALIO; + scsi_low_done(sc, cb); + } + } + + SCSI_LOW_SETUP_PHASE(PH_NULL); + ti->ti_tflags &= ~TARG_CA; + } + + sc->sc_flags &= ~HW_PDMASTART; + SCSI_LOW_SETUP_MSGPHASE(NOMSG); + sc->sc_disc = 0; + sc->sc_selid = NULL; + sc->sc_nexus = NULL; +} + +/* misc */ +static int tw_pos; +static char tw_chars[] = "|/-\\"; + +void +scsi_low_twiddle_wait(void) +{ + +#ifdef __NetBSD__ + cnputc('\b'); + cnputc(tw_chars[tw_pos++]); +#endif + tw_pos %= (sizeof(tw_chars) - 1); + delay(TWIDDLEWAIT); +} + +void +scsi_low_bus_reset(sc) + struct scsi_low_softc *sc; +{ + int i; + + (*sc->sc_funcs->scsi_low_bus_reset) (sc); + + printf("%s: try to reset scsi bus ", sc->sc_dvname); + for (i = 0; i <= SCSI2_RESET_DELAY / TWIDDLEWAIT ; i++) + scsi_low_twiddle_wait(); +#ifdef __NetBSD__ + cnputc('\b'); +#endif + printf("\n"); +} + +int +scsi_low_restart(sc, s) + struct scsi_low_softc *sc; + u_char *s; +{ + int error; + + if (s) + printf("%s: scsi bus restart. reason: %s\n", + sc->sc_dvname, s); + + if (error = scsi_low_reset(sc, 0)) + return error; + + scsi_low_start(sc); + return 0; +} + +/************************************************************** + * disconnect and reselect + **************************************************************/ +struct ccb * +scsi_low_reselected(sc, targ, lun) + struct scsi_low_softc *sc; + u_int targ; + u_int lun; +{ + struct targ_info *ti; + struct ccb *cb; + u_char *s; + + /* check collision */ + if ((ti = sc->sc_selid) != NULL) + { + SCSI_LOW_SETUP_PHASE(PH_NULL); + sc->sc_selid = NULL; + } + + if (targ >= NTARGETS || targ == HOST_SCSI_ID) + { + s = "scsi id illegal"; + goto bad; + } + + ti = sc->sc_ti[targ]; + if (ti->ti_phase != PH_DISC) + { + s = "phase mismatch"; + goto bad; + } + + cb = ti->ti_disccb; + if (lun != SCSI_LOW_LUNUNK && cb->lun != lun) + { + s = "lun mismatch"; + goto bad; + } + + /* clear the disconnect state */ + ti->ti_disccb = NULL; + SCSI_LOW_SETUP_PHASE(PH_RESEL); + sc->sc_disc --; + + /* setup the nexus */ + TAILQ_INSERT_HEAD(&sc->sc_start, cb, ccb_chain); + sc->sc_nexus = cb; + + /* recover a saved data pointer */ + sc->sc_scp = ti->ti_sscp; + return cb; + +bad: + printf("%s: reselect %s (targ:lun) = (%x:%x)\n", + sc->sc_dvname, s, targ, lun); + return 0; +} + +int +scsi_low_disconnected(sc, cb) + struct scsi_low_softc *sc; + struct ccb *cb; +{ + struct targ_info *ti = cb->ti; + + /* check phase completion */ + switch (sc->sc_msgphase) + { + case DISCASSERT: + TAILQ_REMOVE(&sc->sc_start, cb, ccb_chain); + ti->ti_disccb = cb; + SCSI_LOW_SETUP_PHASE(PH_DISC); + sc->sc_disc ++; + break; + + case NOMSG: + ti->ti_error |= FATALIO; + + case CMDCOMPLETE: + scsi_low_done(sc, cb); + SCSI_LOW_SETUP_PHASE(PH_NULL); + break; + } + + SCSI_LOW_SETUP_MSGPHASE(NOMSG); + sc->sc_nexus = NULL; + return 1; +} + +/************************************************************** + * msgout + **************************************************************/ +int +scsi_low_msgout(sc, ti, cb) + struct scsi_low_softc *sc; + struct targ_info *ti; + struct ccb *cb; +{ + int len; + + if (ti->ti_phase == PH_MSGOUT) + { + if (cb->rcnt ++ < MAXRETRY) + cb->msgoutlen = ti->ti_omsgoutlen; + } + else + SCSI_LOW_SETUP_PHASE(PH_MSGOUT); + + if (ti->ti_ophase == PH_SELECTED) + { + if (cb->msgoutlen) + { + (*sc->sc_funcs->scsi_low_attention)(sc); + SCSI_LOW_SETUP_PHASE(PH_MSGOUTEXP) + } + + ID_MSG_SETUP(ti, cb); + return 0; + } + + if (cb->msgoutlen == 0) + { + cb->msgout[0] = MSG_REJECT; + len = 1; + } + else + { + ti->ti_msgout = cb->msgout[0]; + ti->ti_emsgout = cb->msgout[2]; + len = cb->msgoutlen; + } + + ti->ti_omsgoutlen = cb->msgoutlen; + cb->msgoutlen = 0; + + return len; +} + +/************************************************************** + * msgin + **************************************************************/ +static void scsi_low_msgin_ext __P((struct targ_info *, struct ccb *)); +static void scsi_low_msgin_error __P((struct targ_info *, u_int, u_int8_t)); +static int scsi_low_synch __P((struct targ_info *)); +static void scsi_low_msg_reject __P((struct targ_info *)); + +#define PERIOD (ti->ti_msgin[3]) +#define OFFSET (ti->ti_msgin[4]) + +static int +scsi_low_synch(ti) + struct targ_info *ti; +{ + struct scsi_low_softc *sc = ti->ti_sc; + u_int period = 0, offset = 0, speed; + u_char *s; + + if (PERIOD >= ti->ti_maxsynch.period && + OFFSET <= ti->ti_maxsynch.offset) + { + if (offset = OFFSET) + period = PERIOD; + s = offset ? "synchronous" : "async"; + } + else + s = "illegal"; + + (*sc->sc_funcs->scsi_low_synch) (sc, ti, period, offset); + + printf("%s(%d:0): <%s> offset %d period 0x%x chip(0x%x) ", + sc->sc_dvname, ti->ti_id, s, offset, period, + (u_int) ti->ti_synch.period); + + if (period) + { + speed = 2500 / period; + printf("%d.%d M/s", speed / 10, speed % 10); + } + + printf("\n"); + return 0; +} + +#define MSGWAIT(cnt) {if(ti->ti_msginptr < (cnt)) return;} + +static void +scsi_low_msgin_ext(ti, cb) + struct targ_info *ti; + struct ccb *cb; +{ + struct scsi_low_softc *sc = ti->ti_sc; + int count; + u_int reqlen; + u_int32_t *ptr; + + MSGWAIT(2); + + reqlen = ti->ti_msgin[1]; + if (reqlen == 0) + reqlen = 256; + + if (ti->ti_msginptr >= MAXMSGLEN) + ti->ti_msginptr = 3; /* XXX */ + + MSGWAIT(reqlen + 2); + + switch (MKMSG_EXTEND(ti->ti_msgin[1], ti->ti_msgin[2])) + { + case MKMSG_EXTEND(MSG_EXTEND_MDPLEN, MSG_EXTEND_MDPCODE): + ptr = (u_int32_t *)(&ti->ti_msgin[3]); + count = (int) htonl((long) (*ptr)); + + if(sc->sc_scp.datalen - count >= 0 && + sc->sc_scp.datalen - count <= cb->datalen) + { + sc->sc_scp.datalen -= count; + sc->sc_scp.data += count; + } + else + scsi_low_msgin_error(ti, 7, MSG_REJECT); + break; + + case MKMSG_EXTEND(MSG_EXTEND_SYNCHLEN, MSG_EXTEND_SYNCHCODE): + if (cb->ti->ti_state == UNIT_SYNCH) + scsi_low_synch(ti); + else + { + (*sc->sc_funcs->scsi_low_attention)(sc); + + cb->msgout[0] = MSG_EXTEND; + cb->msgout[1] = MSG_EXTEND_SYNCHLEN; + cb->msgout[2] = MSG_EXTEND_SYNCHCODE; + cb->msgout[3] = 0; + cb->msgout[4] = 0; + cb->msgoutlen = MSG_EXTEND_SYNCHLEN + 2; + } + break; + + case MKMSG_EXTEND(MSG_EXTEND_WIDELEN, MSG_EXTEND_WIDECODE): + (*sc->sc_funcs->scsi_low_attention)(sc); + + cb->msgout[0] = MSG_EXTEND; + cb->msgout[1] = MSG_EXTEND_WIDELEN; + cb->msgout[2] = MSG_EXTEND_WIDECODE; + cb->msgout[3] = 0; + cb->msgoutlen = MSG_EXTEND_WIDELEN + 2; + break; + + default: + scsi_low_msgin_error(ti, 0, MSG_REJECT); + break; + } + + ti->ti_msginptr = 0; + return; +} + +static void +scsi_low_msg_reject(ti) + struct targ_info *ti; +{ + struct scsi_low_softc *sc = ti->ti_sc; + struct ccb *cb; + char *s = "unexpected msg reject"; + + if ((cb = sc->sc_nexus) == NULL) + return; + + switch (ti->ti_ophase) + { + case PH_CMD: + s = "cmd rejected"; + break; + + case PH_MSGOUT: + if (ti->ti_msgout & 0x80) + { + s = "identify msg rejected"; + } + else if (ti->ti_msgout == MSG_EXTEND) + { + switch (ti->ti_emsgout) + { + case MSG_EXTEND_SYNCHCODE: + s = "synchrnous msg rejected"; + break; + + default: + break; + } + } + break; + + default: + break; + } + + printf("%s: %s\n", sc->sc_dvname, s); + ti->ti_error |= MSGERR; +} + +static void +scsi_low_msgin_error(ti, count, msg) + struct targ_info *ti; + u_int count; + u_int8_t msg; +{ + struct scsi_low_softc *sc = ti->ti_sc; + struct ccb *cb; + int n; + + MSGWAIT(count); + + printf("%s: illegal msg", sc->sc_dvname); + for (n = 0; n < ti->ti_msginptr; n ++) + printf("[0x%x] ", (u_int) ti->ti_msgin[n]); + printf("\n"); + + ti->ti_msginptr = 0; + if ((cb = sc->sc_nexus) == NULL) + return; + + (*sc->sc_funcs->scsi_low_attention) (sc); + + cb->msgoutlen = 1; + cb->msgout[0] = msg; +} + +void +scsi_low_msgin(sc, cb) + struct scsi_low_softc *sc; + struct ccb *cb; +{ + struct targ_info *ti = cb->ti; + + switch (ti->ti_msgin[0]) + { + case MSG_SAVESP: + ti->ti_sscp = sc->sc_scp; + break; + + case MSG_RESTORESP: + sc->sc_scp = ti->ti_sscp; + break; + + case MSG_REJECT: + scsi_low_msg_reject(ti); + break; + + case MSG_NOOP: + break; + + case MSG_I_ERROR:/* all I -> T : nothing to do*/ + case MSG_ABORT: + case MSG_PARITY: + case MSG_RESET: + case 0xe: + case 0xf: + scsi_low_msgin_error(ti, 1, MSG_REJECT); + goto resume; + + case MSG_EXTEND: + scsi_low_msgin_ext(ti, cb); + goto resume; + + case 0xd: + scsi_low_msgin_error(ti, 2, MSG_REJECT); + goto resume; + + case MSG_DISCON: + SCSI_LOW_SETUP_MSGPHASE(DISCASSERT); + break; + + case MSG_COMP: + SCSI_LOW_SETUP_MSGPHASE(CMDCOMPLETE); + break; + + case MSG_LCOMP: + case MSG_LCOMP_F: + scsi_low_msgin_error(ti, 1, MSG_REJECT); + goto resume; + + default: + if (ti->ti_msgin[0] & 0x80) + { + if ((ti->ti_msgin[0] & 0x07) != cb->lun) + { + printf("%s: lun error\n", sc->sc_dvname); + scsi_low_msgin_error(ti, 1, MSG_ABORT); + } + break; + } + else if (ti->ti_msgin[0] < 0x20) + scsi_low_msgin_error(ti, 1, MSG_REJECT); + else if (ti->ti_msgin[0] < 0x30) + scsi_low_msgin_error(ti, 2, MSG_REJECT); + else + scsi_low_msgin_error(ti, 1, MSG_REJECT); + goto resume; + } + + ti->ti_msginptr = 0; + +resume: + return; +} + +#define MAXOFFSET 0x10 + +void +scsi_low_calcf(ti) + struct targ_info *ti; +{ + u_int period; + u_int8_t offset; + struct scsi_low_softc *sc = ti->ti_sc; + + ti->ti_flags &= ~SCSI_LOW_DISC; +#ifdef SDEV_NODISC + if ((sc->sc_cfgflags & CFG_NODISC) == 0 && + (ti->ti_quirks & SDEV_NODISC) == 0 && + (ti->ti_cfgflags & SCSI_LOW_DISC) != 0) + ti->ti_flags |= SCSI_LOW_DISC; +#endif + + ti->ti_flags |= SCSI_LOW_NOPARITY; +#ifdef SDEV_NOPARITY + if ((sc->sc_cfgflags & CFG_NOPARITY) == 0 && + (ti->ti_quirks & SDEV_NOPARITY) == 0 && + (ti->ti_cfgflags & SCSI_LOW_NOPARITY) == 0) + ti->ti_flags &= ~SCSI_LOW_NOPARITY; +#endif + + ti->ti_flags &= ~SCSI_LOW_SYNC; + if ((ti->ti_cfgflags & SCSI_LOW_SYNC) && + (sc->sc_cfgflags & CFG_ASYNC) == 0) + { + offset = SCSI_LOW_OFFSET(ti->ti_cfgflags); + if (offset > ti->ti_maxsynch.offset) + offset = ti->ti_maxsynch.offset; + ti->ti_flags |= SCSI_LOW_SYNC; + } + else + offset = 0; + + if (offset > 0) + { + period = SCSI_LOW_PERIOD(ti->ti_cfgflags); + if (period > 100) + period = 100; /* MAX 10M FAST SCSI2 */ + if (period) + period = 2500 / period; + if (period < ti->ti_maxsynch.period) + period = ti->ti_maxsynch.period; + } + else + period = 0; + + ti->ti_maxsynch.offset = offset; + ti->ti_maxsynch.period = period; +} + +int +scsi_low_target_open(link, cf) + struct scsi_link *link; + struct cfdata *cf; +{ + u_int target = link->target; + u_int lun = link->lun; + struct scsi_low_softc *sc; + struct targ_info *ti; + u_int quirks, flags; + + sc = (struct scsi_low_softc *) link->adapter_softc; + ti = sc->sc_ti[target]; + ti->ti_quirks = (u_int) link->quirks; + ti->ti_cfgflags = cf->cf_flags; + if (ti->ti_state > UNIT_SYNCH) + ti->ti_state = UNIT_SYNCH; + + scsi_low_calcf(ti); + + printf("%s(%d:%d): max period(0x%x) max offset(%d) flags 0x%b\n", + sc->sc_dvname, target, lun, + ti->ti_maxsynch.period, + ti->ti_maxsynch.offset, + ti->ti_flags, SCSI_LOW_BITS); + return 0; +} + +/********************************************************** + * DEBUG SECTION + **********************************************************/ +static u_char *phase[] = +{ + "FREE", "ARBSTART", "SELSTART", "SELECTED", + "CMDOUT", "DATA", "MSGIN", "MSGOUT", "STATIN", "DISC", + "COMPSEQ", "RESEL", "EXPMSGOUT" +}; + +void +scsi_low_print(sc, ti) + struct scsi_low_softc *sc; + struct targ_info *ti; +{ + struct ccb *cb = sc->sc_nexus; + + if (ti == NULL) + ti = cb ? cb->ti : NULL; + + printf("%s targ 0x%x nexus 0x%x discs %d\n", + sc->sc_dvname, ti, cb, sc->sc_disc); + + /* target stat */ + if (ti) + { + struct sc_p *sp = &sc->sc_scp; + u_int lun = cb ? cb->lun : 0; + + printf("%s(%d:%d) ph<%s> ", sc->sc_dvname, + ti->ti_id, lun, phase[(int) ti->ti_phase]); + + printf("msgptr %x msg[0] %x status %x tflags %x\n", + (u_int) (ti->ti_msginptr), (u_int) (ti->ti_msgin[0]), + ti->ti_status, ti->ti_tflags); + + printf("msgout %x emsgout %x ti_omsglen %x flags %b\n", + (u_int) ti->ti_msgout, (u_int) ti->ti_emsgout, + ti->ti_omsgoutlen, ti->ti_flags, SCSI_LOW_BITS); + + printf("datalen %x dataaddr %x ", sp->datalen, sp->data); + + if (cb) + printf("cmdlen %x cmdaddr %x cmd[0] %x odatalen %x", + cb->cmdlen, cb->cmd, (u_int) cb->cmd[0], + cb->datalen); + + printf("\n"); + printf("error flags %b\n", ti->ti_error, SCSI_LOW_ERRORBITS); + } +} diff -urN sys.2.2.8-RELEASE/i386/scsi/scsi_low/scsi_low.h sys/i386/scsi/scsi_low/scsi_low.h --- sys.2.2.8-RELEASE/i386/scsi/scsi_low/scsi_low.h Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/scsi_low/scsi_low.h Tue Dec 22 13:52:38 1998 @@ -0,0 +1,387 @@ +/* $NetBSD$ */ +/* $Id: scsi_low.h,v 1.1.8.1 1998/12/05 22:48:36 itojun Exp $ */ +/* + * [NetBSD for NEC PC98 series] + * Copyright (c) 1995, 1996 NetBSD/pc98 porting staff. + * Copyright (c) 1995, 1996 Naofumi HONDA. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _SCSI_LOW_H_ +#define _SCSI_LOW_H_ + +#ifdef __NetBSD__ +#include +#endif +#ifdef __FreeBSD__ +#include +#endif + +#define SCSI_LOW_SYNC DVF_SCSI_SYNC +#define SCSI_LOW_DISC DVF_SCSI_DISC +#define SCSI_LOW_WAIT DVF_SCSI_WAIT +#define SCSI_LOW_LINK DVF_SCSI_LINK +#define SCSI_LOW_QTAG DVF_SCSI_QTAG +#define SCSI_LOW_NOPARITY DVF_SCSI_NOPARITY +#define SCSI_LOW_SAVESP DVF_SCSI_SAVESP +#define SCSI_LOW_DEFCFG DVF_SCSI_DEFCFG +#define SCSI_LOW_BITS DVF_SCSI_BITS + +#define SCSI_LOW_PERIOD(XXX) DVF_SCSI_PERIOD(XXX) +#define SCSI_LOW_OFFSET(XXX) DVF_SCSI_OFFSET(XXX) + +#define HOST_SCSI_ID 7 + +#define SCSI_LOW_MIN_TOUT 24 +#define SCSI_LOW_TIMEOUT_CHECK_INTERVAL 4 +#define SCSI_LOW_POWDOWN_TC 15 + +#define NTARGETS 8 +#define MAXMSGLEN 16 +#define MAXRETRY 3 + +struct targ_info; + +struct ccb { + TAILQ_ENTRY(ccb) ccb_chain; + + struct scsi_xfer *xs; /* scsi upper */ + + struct targ_info *ti; /* targ_info */ + + u_int lun; /* lun */ + + int rcnt; /* retry counter */ + + /***************************************** + * scsi cmd & data + *****************************************/ + u_int8_t *cmd; /* scsi cmd */ + int cmdlen; + + u_int8_t *data; /* scsi data */ + u_int datalen; + + u_int8_t msgout[MAXMSGLEN]; /* scsi msgout */ + u_int msgoutlen; + + /***************************************** + * timeout counter + *****************************************/ + int tc; + int tcmax; +}; + +/* ccb assert */ +#ifdef __NetBSD__ +#include +#endif +#ifdef __FreeBSD__ +#include +#endif + +GENERIC_CCB_ASSERT(scsi_low, ccb) + +/* scsi pointer */ +struct sc_p { + u_int8_t *data; + int datalen; +}; + +#define SCSI_LOW_SETUP_PHASE(PHASE) \ +{ \ + ti->ti_ophase = ti->ti_phase; \ + ti->ti_phase = (PHASE); \ +} + +#define SCSI_LOW_SETUP_MSGPHASE(PHASE) \ +{ \ + sc->sc_msgphase = (PHASE); \ +} + +struct scsi_low_softc; + +struct targ_info { + TAILQ_ENTRY(targ_info) ti_chain; /* targ_info link */ + + struct scsi_low_softc *ti_sc; /* our softc */ + u_int ti_id; /* scsi id */ + +#define TARG_CA 0x01 +#define TARG_SYNCH_PEND 0x02 + u_int ti_tflags; /* target state I */ + +#define UNIT_RDY 0x00 +#define UNIT_START 0x01 +#define UNIT_SYNCH 0x02 +#define UNIT_OK 0x03 + u_int ti_state; /* target state II */ + + u_int ti_flags; + u_int ti_cfgflags; + u_int ti_quirks; + +#define FATALIO 0x01 +#define ABORTIO 0x02 +#define TIMEOUTIO 0x04 +#define PDMAERR 0x08 +#define MSGERR 0x10 +#define PARITYERR 0x20 +#define ERRBUSY 0x40 +#define SCSI_LOW_ERRORBITS "\020\007busy\006parity\005msgerr\004pdmaerr\003timeout\002abort\001fatal" + u_int ti_error; /* error flags */ + + /***************************************** + * scsi phase data + *****************************************/ + struct sc_p ti_sscp; /* saved scsi data pointer */ + +#define PH_NULL 0x00 +#define PH_ARBSTART 0x01 +#define PH_SELSTART 0x02 +#define PH_SELECTED 0x03 +#define PH_CMD 0x04 +#define PH_DATA 0x05 +#define PH_MSGIN 0x06 +#define PH_MSGOUT 0x07 +#define PH_STAT 0x08 +#define PH_DISC 0x09 +#define PH_COMPSEQ 0x0a +#define PH_RESEL 0x0b +#define PH_MSGOUTEXP 0x0c + u_int ti_phase; /* scsi phase */ + u_int ti_ophase; /* old scsi phase */ + + u_int8_t ti_status; /* status in */ + + u_int ti_msginptr; /* msgin ptr */ + u_int8_t ti_msgin[MAXMSGLEN]; /* msgin buffer */ + + u_int8_t ti_msgout; /* last msgout byte */ + u_int8_t ti_emsgout; /* last msgout byte */ + u_int ti_omsgoutlen; /* for retry msgout */ + + struct synch { + u_int8_t offset; + u_int8_t period; + u_int8_t c3img; + } ti_synch, ti_maxsynch; /* synch data */ + + struct ccb *ti_disccb; /* disconnected */ +}; + +/************************************************* + * COMMON HEADER STRUCTURE + *************************************************/ +struct scsi_low_softc; +typedef struct scsi_low_softc *sc_low_t; + +#define SC_LOW_RESET_T (int (*) __P((sc_low_t, int))) +#define SC_LOW_BUSRST_T (void (*) __P((sc_low_t))) +#define SC_LOW_SELECT_T (int (*) __P((sc_low_t, struct ccb *))) +#define SC_LOW_ATTEN_T (void (*) __P((sc_low_t))) +#define SC_LOW_SYNCH_T (int (*) __P((sc_low_t, struct targ_info *, u_int, u_int))) +#define SC_LOW_INTR_T (int (*) __P((void *))) +#define SC_LOW_POWER_T (int (*) __P((sc_low_t, u_int))) + +struct scsi_low_funcs { + int (*scsi_low_reset) __P((sc_low_t, int)); + void (*scsi_low_bus_reset) __P((sc_low_t)); + + int (*scsi_low_start_bus) __P((sc_low_t, struct ccb *)); + + void (*scsi_low_attention) __P((sc_low_t)); + int (*scsi_low_synch) __P((sc_low_t, struct targ_info *, u_int, u_int)); + int (*scsi_low_intr) __P((void *)); + +#define SCSI_LOW_POWDOWN 1 +#define SCSI_LOW_ENGAGE 2 + int (*scsi_low_power) __P((sc_low_t, u_int)); +}; + +/* sc_flags */ +#define HW_POWDOWN 0x01 +#define HW_RESUME 0x02 +#define HW_PDMASTART 0x04 +#define HW_INACTIVE 0x08 + +/* msg phase */ +#define NOMSG 0x00 +#define DISCASSERT 0x01 +#define CMDCOMPLETE 0x02 + +/* read write */ +#define SCSI_LOW_WRITE 0 +#define SCSI_LOW_READ 1 + +#define CFG_NODISC 0x01 +#define CFG_NOPARITY 0x02 +#define CFG_NOATTEN 0x04 +#define CFG_ASYNC 0x08 + +TAILQ_HEAD(targ_info_tab, targ_info); + +#define SCSI_LOW_DVNAME_LEN 16 + +#define SCSI_LOW_SOFTC \ + OS_DEPEND_DEVICE_HEADER \ + OS_DEPEND_MISC_HEADER \ + OS_DEPEND_SCSI_HEADER \ + \ + struct targ_info *sc_ti[NTARGETS]; \ + \ + struct targ_info_tab sc_titab; \ + \ + struct ccbtab sc_start; \ + struct ccb *sc_nexus; \ + \ + int sc_disc; \ + struct targ_info *sc_selid; \ + \ + u_int sc_flags; \ + \ + u_int sc_msgphase; \ + \ + struct sc_p sc_scp; \ + \ + u_int sc_direction; \ + int sc_tdatalen; \ + \ + u_int sc_mask; \ + int sc_wc; \ + \ + u_int sc_oc; \ + int sc_powc; \ + u_int sc_rstep; \ + \ + u_int sc_cfgflags; \ + \ + struct scsi_low_funcs *sc_funcs; \ + \ + struct scsi_sense sc_sense_cmd; \ + struct scsi_sense_data sc_sense; \ + \ + u_char sc_dvname[SCSI_LOW_DVNAME_LEN]; + +/************************************************* + * SCSI LOW SOFTC + *************************************************/ +struct scsi_low_softc { + SCSI_LOW_SOFTC +}; + +/************************************************* + * PROTOTYPE + *************************************************/ +int scsi_low_attach __P((struct scsi_low_softc *)); +void scsi_low_timeout __P((void *)); +int scsi_low_scsi_cmd __P((struct scsi_xfer *)); +void scsi_low_scsi_minphys __P((struct buf *)); +void scsi_low_start __P((struct scsi_low_softc *)); +int scsi_low_done __P((void *, struct ccb *)); +void scsi_low_reset_nexus __P((struct scsi_low_softc *, int)); +int scsi_low_msgout __P((struct scsi_low_softc *, struct targ_info *, struct ccb *)); +void scsi_low_msgin __P((struct scsi_low_softc *, struct ccb *)); +int scsi_low_restart __P((struct scsi_low_softc *, u_char *)); +void scsi_low_free_ti __P((struct scsi_low_softc *)); +struct targ_info *scsi_low_alloc_ti __P((struct scsi_low_softc *, int)); + +#define SCSI_LOW_LUNUNK ((u_int) -1) +struct ccb *scsi_low_reselected __P((struct scsi_low_softc *, u_int, u_int)); +int scsi_low_disconnected __P((struct scsi_low_softc *, struct ccb *)); + +/* reset */ +#define SCSI2_RESET_DELAY 5000000 +#define TWIDDLEWAIT 10000 +void scsi_low_twiddle_wait __P((void)); +void scsi_low_bus_reset __P((struct scsi_low_softc *)); + +void scsi_low_print __P((struct scsi_low_softc *, struct targ_info *)); + +int scsi_low_target_open __P((struct scsi_link *, struct cfdata *)); +void scsi_low_calcf __P((struct targ_info *)); +int scsi_low_reset __P((struct scsi_low_softc *, u_int)); + +#ifdef __NetBSD__ +int scsi_low_activate __P((pisa_device_args_t)); +int scsi_low_deactivate __P((pisa_device_args_t)); +#endif + +#ifdef __FreeBSD__ +int scsi_low_activate __P((struct scsi_low_softc *, struct isa_device *)); +int scsi_low_deactivate __P((struct scsi_low_softc *)); +#endif + +/* misc */ +static inline u_int8_t scsi_low_identify __P((struct targ_info *ti)); + +static inline u_int8_t +scsi_low_identify(ti) + struct targ_info *ti; +{ + + return (ti->ti_flags & SCSI_LOW_DISC) ? 0xc0 : 0x80; +} + +#define ID_MSG_SETUP(TI, CB) \ +{ \ + (TI)->ti_msgout = scsi_low_identify(TI) | (CB)->lun; \ + (TI)->ti_omsgoutlen = 0; \ +} + +/* XXX: use scsi_message.h */ +#define ST_GOOD 0x00 +#define ST_CHKCOND 0x02 +#define ST_MET 0x04 +#define ST_BUSY 0x08 +#define ST_INTERGOOD 0x10 +#define ST_INTERMET 0x14 +#define ST_CONFLICT 0x18 +#define ST_QUEFULL 0x28 + +#define MSG_COMP 0x00 +#define MSG_EXTEND 0x01 + +#define MKMSG_EXTEND(XLEN, XCODE) ((((u_int)(XLEN)) << NBBY) | ((u_int)(XCODE))) +#define MSG_EXTEND_MDPCODE 0x00 +#define MSG_EXTEND_MDPLEN 0x05 +#define MSG_EXTEND_SYNCHCODE 0x01 +#define MSG_EXTEND_SYNCHLEN 0x03 +#define MSG_EXTEND_WIDECODE 0x03 +#define MSG_EXTEND_WIDELEN 0x02 + +#define MSG_SAVESP 0x02 +#define MSG_RESTORESP 0x03 +#define MSG_DISCON 0x04 +#define MSG_I_ERROR 0x05 +#define MSG_ABORT 0x06 +#define MSG_REJECT 0x07 +#define MSG_NOOP 0x08 +#define MSG_PARITY 0x09 +#define MSG_LCOMP 0x0a +#define MSG_LCOMP_F 0x0b +#define MSG_RESET 0x0c +#endif /* !_SCSI_LOW_H_ */ diff -urN sys.2.2.8-RELEASE/i386/scsi/scsi_low/scsi_low_if.h sys/i386/scsi/scsi_low/scsi_low_if.h --- sys.2.2.8-RELEASE/i386/scsi/scsi_low/scsi_low_if.h Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/scsi_low/scsi_low_if.h Tue Dec 22 13:52:38 1998 @@ -0,0 +1,127 @@ +/* + * Copyright (c) HONDA Naofumi, KATO Takenori, 1996. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer as + * the first lines of this file unmodified. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* $Id: scsi_low_if.h,v 1.1.8.1 1998/12/05 22:48:37 itojun Exp $ */ + +/*************************************************** + * misc device header in scsi_low_softc + ***************************************************/ +#ifdef __NetBSD__ +#define OS_DEPEND_DEVICE_HEADER \ + struct device sc_dev; \ + void *sc_ih; + +#define OS_DEPEND_SCSI_HEADER \ + struct scsi_link sc_link; + +#define OS_DEPEND_MISC_HEADER \ + pisa_device_handle_t sc_pdv; \ + bus_chipset_tag_t sc_bc; \ + bus_io_handle_t sc_ioh; \ + bus_io_handle_t sc_delayioh; \ + bus_mem_handle_t sc_memh; + +#endif /* __NetBSD__ */ +#ifdef __FreeBSD__ +#define OS_DEPEND_DEVICE_HEADER \ + struct device sc_dev; \ + int unit; + +#define OS_DEPEND_SCSI_HEADER \ + struct scsi_link sc_link; + +#define OS_DEPEND_MISC_HEADER \ + int sc_ioport; +#endif /* __FreeBSD__ */ + + +/*************************************************** + * include + ***************************************************/ +/* (I) common include */ +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +/* (II) os depend include */ +#ifdef __NetBSD__ +#include + +#include +#include +#include + +#include +#include +#include +#include +#endif /* __NetBSD__ */ + +#ifdef __FreeBSD__ +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#endif /* __FreeBSD__ */ + +#include +#include +#include + +/*************************************************** + * BUS IO MAPPINGS & BS specific inclusion + ***************************************************/ +#ifdef __NetBSD__ +#include +#include +#endif /* __NetBSD__ */ + +#ifdef __FreeBSD__ +#define SCSI_POLL SCSI_NOMASK +#define delay(y) DELAY(y) + +#if 0 +#include +#endif + +#include +#include +#endif /* __FreeBSD__ */ diff -urN sys.2.2.8-RELEASE/i386/scsi/scsi_low/scsi_low_pisa.c sys/i386/scsi/scsi_low/scsi_low_pisa.c --- sys.2.2.8-RELEASE/i386/scsi/scsi_low/scsi_low_pisa.c Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/scsi_low/scsi_low_pisa.c Tue Dec 22 13:52:38 1998 @@ -0,0 +1,143 @@ +/* $NetBSD$ */ +/* $Id: scsi_low_pisa.c,v 1.1.8.1 1998/12/05 22:48:38 itojun Exp $ */ +/* + * [NetBSD for NEC PC98 series] + * Copyright (c) 1995, 1996 NetBSD/pc98 porting staff. + * Copyright (c) 1995, 1996 Naofumi HONDA. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifdef __NetBSD__ +#include +#endif /* __NetBSD__ */ +#ifdef __FreeBSD__ +#include +#endif /* __FreeBSD__ */ + +#ifdef __NetBSD__ +#define SCSIBUS_RESCAN +#endif + +#ifdef __FreeBSD__ +static inline int +scsi_low_deactivate_1(struct scsi_low_softc *sc) +#else +inline int +scsi_low_deactivate_1(sc) + struct scsi_low_softc *sc; +#endif +{ + + sc->sc_flags |= HW_INACTIVE; + +#ifdef SCSI_LOW_POWFUNC + untimeout(scsi_low_recover, sc); +#endif /* SCSI_LOW_POWFUNC */ + untimeout(scsi_low_timeout, sc); + + return 0; +} + +#ifdef __NetBSD__ +int +scsi_low_deactivate(arg) + pisa_device_args_t arg; +{ + return (scsi_low_deactivate_1(arg->id)); +} +#endif /* __NetBSD__ */ + +#ifdef __FreeBSD__ +int +scsi_low_deactivate(struct scsi_low_softc *sc) +{ + + return (scsi_low_deactivate_1(sc)); +} +#endif /* __FreeBSD__ */ + +#ifdef __FreeBSD__ +static inline int +scsi_low_activate_1(struct scsi_low_softc *sc, int flags) +#else +inline int +scsi_low_activate_1(sc, flags) + struct scsi_low_softc *sc; + int flags; +#endif +{ + int i, error; + + sc->sc_flags &= ~HW_INACTIVE; +#ifdef __FreeBSD__ + sc->sc_cfgflags = ((sc->sc_cfgflags << 16) | (flags & 0xffff)); +#else /* __NetBSD__ */ + sc->sc_cfgflags = DVCFG_MKCFG(DVCFG_MAJOR(sc->sc_cfgflags), + DVCFG_MINOR(flags)); +#endif + +#ifdef __NetBSD__ + sc->sc_mask = (1 << ia->ia_irq); +#endif + + if (error = scsi_low_reset(sc, 0)) + { + sc->sc_flags |= HW_INACTIVE; + return error; + } + + timeout(scsi_low_timeout, sc, SCSI_LOW_TIMEOUT_CHECK_INTERVAL * hz); + + /* rescan the scsi bus */ +#ifdef SCSIBUS_RESCAN + if (arg->event == PISA_EVENT_INSERT && sc->sc_start.tqh_first == NULL) + scsi_probe_busses((int) sc->sc_link.scsibus, -1, -1); +#endif + /* start again */ + scsi_low_start(sc); + return 0; +} + +#ifdef __NetBSD__ +int +scsi_low_activate(arg) + pisa_device_args_t arg; +{ + struct isa_attach_args *ia = arg->ia; + + return (scsi_low_activate_1(arg->id, ia->ia_cfgflags)); +} +#endif /* __NetBSD__ */ + +#ifdef __FreeBSD__ +int +scsi_low_activate(sc, dev) + struct scsi_low_softc *sc; + struct isa_device *dev; +{ + return (scsi_low_activate_1(sc, dev->id_flags)); +} +#endif /* __FreeBSD__ */ diff -urN sys.2.2.8-RELEASE/i386/scsi/tmc18c30/tmc18c30.c sys/i386/scsi/tmc18c30/tmc18c30.c --- sys.2.2.8-RELEASE/i386/scsi/tmc18c30/tmc18c30.c Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/tmc18c30/tmc18c30.c Tue Dec 22 13:52:38 1998 @@ -0,0 +1,829 @@ +/* $NetBSD$ */ +/* $Id: tmc18c30.c,v 1.1.8.1 1998/12/05 22:48:40 itojun Exp $ */ +/* + * [NetBSD for NEC PC98 series] + * Copyright (c) 1996 NetBSD/pc98 porting staff. + * Copyright (c) 1996 Naofumi HONDA. + * Copyright (c) 1996 Kouichi Matsuda. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifdef __NetBSD__ +#include +#endif +#ifdef __FreeBSD__ +#include +#endif + +/*************************************************** + * USER SETTINGS + ***************************************************/ +/* DEVICE CONFIGURATION FLAGS (MINOR) + * + * 0x01 DISCONECT OFF + * 0x02 PARITY LINE OFF + * 0x04 IDENTIFY MSG OFF ( = single lun) + * 0x08 SYNC TRANSFER OFF + */ + +/* #define STG_SYNC_SUPPORT */ /* NOT YET but easy */ + +/* For the 512 fifo type: change below */ +#define TMC18C30_FIFOSZ 0x800 +#define TMC18C30_FCB 1 + +#define TMC18C50_FIFOSZ 0x2000 +#define TMC18C50_FCB 2 + +/*************************************************** + * DEBUG + ***************************************************/ +#ifndef DDB +#define Debugger() panic("should call debugger here (tmc18c30.c)") +#endif /* ! DDB */ + +#define STG_DEBUG +#ifdef STG_DEBUG +int stg_debug; + +struct stg_statics { + int disconnect; + int reselect; +} stg_statics[NTARGETS]; +#endif /* STG_DEBUG */ + +/************************************************************** + * DECLARE + **************************************************************/ +/* static */ +static void stg_pio_read __P((struct stg_softc *, struct targ_info *)); +static void stg_pio_write __P((struct stg_softc *, struct targ_info *)); +static int stg_xfer __P((struct stg_softc *, u_int8_t *, int, int)); +static int stg_synch __P((struct stg_softc *, struct targ_info *, u_int, u_int)); +static int stg_reselected __P((struct stg_softc *)); +static inline int stg_disconnected __P((struct stg_softc *, struct ccb *cb)); +static inline void stg_pdma_end __P((struct stg_softc *, struct ccb *, struct targ_info *)); +static int stghw_select_targ_wait __P((struct stg_softc *, int)); +static void stghw_init __P((struct stg_softc *)); +static void stghw_synch __P((struct stg_softc *, struct targ_info *)); + +static int stg_world_start __P((struct stg_softc *, int)); +static void stghw_reset __P((struct stg_softc *)); +static int stghw_start_selection __P((struct stg_softc *sc, struct ccb *)); +static void stghw_bus_reset __P((struct stg_softc *)); +static void stghw_attention __P((struct stg_softc *)); + +struct scsi_low_funcs stgfuncs = +{ + SC_LOW_RESET_T stg_world_start, + SC_LOW_BUSRST_T stghw_bus_reset, + + SC_LOW_SELECT_T stghw_start_selection, + + SC_LOW_ATTEN_T stghw_attention, + SC_LOW_SYNCH_T stg_synch, + + SC_LOW_INTR_T stg_sequencer, + + NULL, +}; + +/**************************************************** + * hwfuncs + ****************************************************/ +int +stghw_check(sc) + struct stg_softc *sc; +{ + u_int16_t lsb, msb; + DECLARE_IOPORT(sc); + + sc->sc_chip = TMCCHIP_UNK; + sc->sc_fsz = TMC18C50_FIFOSZ; + sc->sc_fcb = TMC18C50_FCB; + sc->sc_fcsp = 0; + + sc->sc_fcRinit = FCTL_INTEN; + sc->sc_fcWinit = FCTL_PARENB | FCTL_INTEN; + + if (sc->sc_cfgflags & CFG_NOATTEN) + sc->sc_busc = 0; + else + sc->sc_busc = BCTL_ATN; + + lsb = INB(tmc_idlsb); + msb = INB(tmc_idmsb); + switch (msb << 8 | lsb) + { + case 0x6127: + /* TMCCHIP_1800 not supported. (it's my policy) */ + sc->sc_chip = TMCCHIP_1800; + return EINVAL; + + case 0x60e9: + sc->sc_chip = TMCCHIP_18C50; + sc->sc_fcsp |= FCTL_CLRINT; + if (INB(tmc_cfg2) & 0x02) + { + sc->sc_chip = TMCCHIP_18C30; + sc->sc_fsz = TMC18C30_FIFOSZ; + sc->sc_fcb = TMC18C30_FCB; + } + break; + + default: + return ENODEV; + } + + sc->sc_icinit = ICTL_ALLINT | sc->sc_fcb; + return 0; +} + +static void +stghw_reset(sc) + struct stg_softc *sc; +{ + DECLARE_IOPORT(sc); + + OUTB(tmc_ictl, 0); + OUTB(tmc_bctl, BCTL_BUSFREE); + OUTB(tmc_fctl, sc->sc_fcsp | sc->sc_fcRinit | FCTL_CLRFIFO); + OUTB(tmc_fctl, sc->sc_fcRinit); + OUTB(tmc_ictl, sc->sc_icinit); + + OUTB(tmc_ssctl, 0); +} + +static void +stghw_init(sc) + struct stg_softc *sc; +{ + DECLARE_IOPORT(sc); + + OUTB(tmc_ictl, 0); + OUTB(tmc_bctl, BCTL_BUSFREE); + OUTB(tmc_fctl, sc->sc_fcsp | sc->sc_fcRinit | FCTL_CLRFIFO); + OUTB(tmc_fctl, sc->sc_fcRinit); + OUTB(tmc_ictl, sc->sc_icinit); + + OUTB(tmc_ssctl, 0); +} + +static void +stghw_synch(sc, ti) + struct stg_softc *sc; + struct targ_info *ti; +{ +#ifdef STG_SYNCH + DECLARE_IOPORT(sc); + + OUTB(tmc_ssctl, ti->ti_synch.c3img); +#endif +} + +/**************************************************** + * scsi low interface + ****************************************************/ +static void +stghw_attention(sc) + struct stg_softc *sc; +{ + DECLARE_IOPORT(sc); + + OUTB(tmc_bctl, BCTL_BUSEN | BCTL_ATN); +} + +static void +stghw_bus_reset(sc) + struct stg_softc *sc; +{ + DECLARE_IOPORT(sc); + + OUTB(tmc_ictl, 0); + OUTB(tmc_fctl, 0); + OUTB(tmc_bctl, BCTL_RST); + delay(100000); + OUTB(tmc_bctl, BCTL_BUSFREE); +} + +static int +stghw_start_selection(sc, cb) + struct stg_softc *sc; + struct ccb *cb; +{ + struct targ_info *ti = cb->ti; + register u_int8_t stat; + int s, tc = sc->sc_wc; + DECLARE_IOPORT(sc); + + if (ti->ti_flags & SCSI_LOW_NOPARITY) + sc->sc_fcRinit &= ~FCTL_PARENB; + else + sc->sc_fcRinit |= FCTL_PARENB; + + s = splhigh(); + if (sc->sc_disc > 0) + { + stat = INB(tmc_bstat); + if ((stat & RESEL_PHASE_MASK)== PHASE_RESELECTED) + { + splx(s); + return 1; + } + + if (stat & (BSTAT_BSY | BSTAT_SEL)) + { + delay(1); /* XXX */ + + stat = INB(tmc_bstat); + if (stat & (BSTAT_BSY | BSTAT_SEL)) + { + splx(s); + return 1; + } + } + + OUTB(tmc_bctl, BCTL_BUSFREE); + OUTB(tmc_scsiid, (1 << HOST_SCSI_ID)); + OUTB(tmc_fctl, sc->sc_fcRinit | FCTL_ARBIT); + splx(s); + } + else + { + splx(s); + + do + { + stat = INB(tmc_bstat); + if ((stat & BSTAT_BSY) == 0) + break; + + if (stat & (BSTAT_SEL | BSTAT_REQ)) + { + printf("%s hardware failure(0x%x)\n", + sc->sc_dev.dv_xname, (u_int) stat); + return 1; + } + else if (tc -- <= 0) + { + printf("%s bus free timeout\n", + sc->sc_dev.dv_xname); + return 1; + } + } + while (1); + + OUTB(tmc_bctl, BCTL_BUSFREE); + OUTB(tmc_scsiid, (1 << HOST_SCSI_ID)); + OUTB(tmc_fctl, sc->sc_fcRinit | FCTL_ARBIT); + } + + SCSI_LOW_SETUP_PHASE(PH_ARBSTART); + return 0; +} + +static int +stg_world_start(sc, fdone) + struct stg_softc *sc; + int fdone; +{ + struct targ_info *ti; + u_int stat; + int error; + + if (sc->sc_flags & HW_INACTIVE) + return EBUSY; + + /* reset current nexus */ + scsi_low_reset_nexus((struct scsi_low_softc *) sc, fdone); + + sc->sc_cfgflags |= CFG_ASYNC; /* XXX */ + + /* hardware info init */ + for (ti = sc->sc_titab.tqh_first; ti; ti = ti->ti_chain.tqe_next) + { + ti->ti_state = UNIT_RDY; + ti->ti_synch.period = ti->ti_synch.offset = 0; + ti->ti_maxsynch.offset = 8; + + scsi_low_calcf(ti); + } + + if (error = stghw_check(sc)) + return error; + + stghw_reset(sc); + scsi_low_bus_reset((struct scsi_low_softc *) sc); + stghw_init(sc); + +#ifdef __NetBSD__ + softintr(sc->sc_mask); +#endif + return 0; +} + +static int +stg_synch(sc, ti, period, offset) + struct stg_softc *sc; + struct targ_info *ti; + u_int period, offset; +{ + u_int res; + + period = period << 2; + + if (period >= 200) + { + ti->ti_synch.c3img = (period - 200) / 50; + if (period % 50) + ti->ti_synch.c3img ++; + ti->ti_synch.c3img |= SSCTL_SYNCHEN; + } + else if (period >= 100) + { + ti->ti_synch.c3img = (period - 100) / 50; + if (period % 50) + ti->ti_synch.c3img ++; + ti->ti_synch.c3img |= SSCTL_SYNCHEN | SSCTL_FSYNCHEN; + } + + ti->ti_synch.period = period; + ti->ti_synch.offset = offset; + return 0; +} + +/************************************************************** + * PDMA functions + **************************************************************/ +static inline void +stg_pdma_end(sc, cb, ti) + struct stg_softc *sc; + struct ccb *cb; + struct targ_info *ti; +{ + u_int len, tres; + DECLARE_IOPORT(sc); + + sc->sc_flags &= ~HW_PDMASTART; + + if (ti->ti_phase == PH_DATA) + { + if ((sc->sc_direction & SCSI_LOW_READ) == 0) + { + len = INW(tmc_fdcnt); + if (len) + { + tres = len + sc->sc_scp.datalen; + if (tres <= (u_int) cb->datalen) + { + sc->sc_scp.data -= len; + sc->sc_scp.datalen = tres; + } + else + { + ti->ti_error |= PDMAERR; + printf("%s len %x >= datalen %x\n", + sc->sc_dev.dv_xname, + len, sc->sc_scp.datalen); + } + } + } + } + else + { + + printf("%s data phase miss\n", sc->sc_dev.dv_xname); + ti->ti_error |= PDMAERR; + } + +#ifdef STG_SYNCH + OUTB(tmc_ssctl, 0); +#endif + OUTB(tmc_fctl, sc->sc_fcRinit); +} + +static void +stg_pio_read(sc, ti) + struct stg_softc *sc; + struct targ_info *ti; +{ + int tout = sc->sc_wc; + u_int res; + u_int8_t stat; + DECLARE_IOPORT(sc); + + OUTB(tmc_fctl, sc->sc_fcRinit | FCTL_FIFOEN); + +#ifdef STG_SYNCH + stghw_synch(sc, ti); +#endif + + sc->sc_flags |= HW_PDMASTART; + while (sc->sc_scp.datalen > 0 && tout -- > 0) + { + res = INW(tmc_fdcnt); + if (res == 0) + { + stat = INB(tmc_bstat); + if ((stat & BSTAT_PHMASK) == BSTAT_IO) + continue; + break; /* phase mismatch */ + } + + /* XXX */ + if (res > sc->sc_scp.datalen) + break; + + sc->sc_scp.datalen -= res; + if (res & 1) + { + sc->sc_scp.data[0] = INB(tmc_rfifo); + sc->sc_scp.data ++; + res --; + } + + INSW(tmc_rfifo, sc->sc_scp.data, res >> 1); + sc->sc_scp.data += res; + } + + if (tout <= 0) + printf("%s pio read timeout\n", sc->sc_dev.dv_xname); +} + +#define WFIFO_CRIT 0x100 + +static void +stg_pio_write(sc, ti) + struct stg_softc *sc; + struct targ_info *ti; +{ + u_int res; + int tout = sc->sc_wc; + register u_int8_t stat; + DECLARE_IOPORT(sc); + + stat = sc->sc_fcWinit | FCTL_FIFOEN | FCTL_FIFOW; + OUTB(tmc_fctl, stat | FCTL_CLRFIFO); + OUTB(tmc_fctl, stat); + +#ifdef STG_SYNCH + stghw_synch(sc, ti); +#endif + + sc->sc_flags |= HW_PDMASTART; + while (sc->sc_scp.datalen > 0 && tout -- > 0) + { + stat = INB(tmc_bstat); + if ((stat & BSTAT_PHMASK) != 0) + break; + + if (INW(tmc_fdcnt) >= WFIFO_CRIT) + continue; + + res = (sc->sc_scp.datalen > WFIFO_CRIT) ? WFIFO_CRIT : + sc->sc_scp.datalen; + sc->sc_scp.datalen -= res; + if ((res & 0x01) != 0) + { + OUTB(tmc_wfifo, *sc->sc_scp.data++); + res --; + } + + OUTSW(tmc_wfifo, sc->sc_scp.data, res >> 1); + sc->sc_scp.data += res; + } + + if (tout <= 0) + printf("%s pio write timeout\n", sc->sc_dev.dv_xname); +} + +static int +stg_xfer(sc, buf, len, phase) + struct stg_softc *sc; + u_int8_t *buf; + int len; + int phase; +{ + int wc, ptr; + u_int8_t stat; + DECLARE_IOPORT(sc); + + if (phase & BSTAT_IO) + OUTB(tmc_fctl, sc->sc_fcRinit); + else + OUTB(tmc_fctl, sc->sc_fcWinit); + + for (ptr = 0; len > 0; len --) + { + wc = sc->sc_wc; + + do + { + stat = INB(tmc_bstat); + if ((stat & BSTAT_PHMASK) != (phase & BSTAT_PHMASK)) + goto bad; + if (stat & BSTAT_REQ) + break; + if (wc -- <= 0) + { + printf("%s xfer tout\n", sc->sc_dev.dv_xname); + goto bad; + } + } + while (1); + + if (phase & BSTAT_IO) + buf[ptr ++] = INB(tmc_rdata); + else + OUTB(tmc_wdata, buf[ptr ++]); + } + +bad: + OUTB(tmc_fctl, sc->sc_fcRinit); + return len; +} + +/************************************************************** + * disconnect & reselect (HW low) + **************************************************************/ +static int +stg_reselected(sc) + struct stg_softc *sc; +{ + struct ccb *cb; + u_int sid; + DECLARE_IOPORT(sc); + + sid = (u_int) INB(tmc_scsiid); + sid &= ~(1 << HOST_SCSI_ID); + sid = ffs(sid) - 1; + cb = scsi_low_reselected((struct scsi_low_softc *) sc, sid, SCSI_LOW_LUNUNK); + if (cb == NULL) + return 0; + +#ifdef STG_DEBUG + stg_statics[sid].reselect ++; +#endif + + /* assert a busy line and ack the selection */ + OUTB(tmc_scsiid, (1 << HOST_SCSI_ID) || (1 << sid)); + OUTB(tmc_fctl, sc->sc_fcsp | + sc->sc_fcRinit | FCTL_CLRFIFO); + OUTB(tmc_fctl, sc->sc_fcRinit); + OUTB(tmc_bctl, BCTL_BSY | BCTL_BUSEN); + return 1; +} + +static inline int +stg_disconnected(sc, cb) + struct stg_softc *sc; + struct ccb *cb; +{ + DECLARE_IOPORT(sc); + + /* clear bus status & fifo */ + OUTB(tmc_fctl, sc->sc_fcRinit | FCTL_CLRFIFO); + OUTB(tmc_fctl, sc->sc_fcRinit); + OUTB(tmc_bctl, BCTL_BUSFREE); + +#ifdef STG_DEBUG + if (sc->sc_msgphase == DISCASSERT) + stg_statics[cb->ti->ti_id].disconnect ++; +#endif + scsi_low_disconnected((struct scsi_low_softc *) sc, cb); + scsi_low_start((struct scsi_low_softc *) sc); + return 1; +} + +/************************************************************** + * SEQUENCER + **************************************************************/ +static int +stghw_select_targ_wait(sc, targ) + struct stg_softc *sc; + int targ; +{ + int wc, error = EIO; + DECLARE_IOPORT(sc); + + OUTB(tmc_scsiid, (1 << HOST_SCSI_ID) | (1 << targ)); + OUTB(tmc_fctl, sc->sc_fcWinit & (~FCTL_INTEN)); + OUTB(tmc_bctl, BCTL_BUSEN | BCTL_SEL | sc->sc_busc); + + for (wc = 50000; wc; wc--) + { + if (INB(tmc_bstat) & BSTAT_BSY) + { + error = 0; + break; + } + + delay(1); + } + + OUTB(tmc_fctl, sc->sc_fcRinit | FCTL_CLRFIFO); + OUTB(tmc_fctl, sc->sc_fcRinit); + return error; +} + +int +stg_sequencer(sc) + struct stg_softc *sc; +{ + struct targ_info *ti; + struct ccb *cb; + int len; + u_int8_t status, astatus; + DECLARE_IOPORT(sc); + + /******************************************* + * interrupt check + *******************************************/ + if (sc->sc_flags & HW_INACTIVE) + return 0; + + astatus = INB(tmc_astat); + status = INB(tmc_bstat); + + if ((astatus & ASTAT_STATMASK) == 0) + return 0; + + if (astatus & ASTAT_SCSIRST) + { + OUTB(tmc_fctl, + sc->sc_fcRinit | FCTL_CLRFIFO); + OUTB(tmc_fctl, sc->sc_fcRinit); + return 1; + } + + /******************************************* + * debug section + *******************************************/ +#ifdef STG_DEBUG + if (stg_debug) + { + scsi_low_print((struct scsi_low_softc *) sc, NULL); + printf("%s st %x ist %x\n\n", sc->sc_dev.dv_xname, + status, astatus); + if (stg_debug > 1) + Debugger(); + } +#endif /* STG_DEBUG */ + + /******************************************* + * reselection & nexus + *******************************************/ + if ((status & RESEL_PHASE_MASK)== PHASE_RESELECTED) + return stg_reselected(sc); + + if ((cb = sc->sc_nexus) == NULL) + return 0; + ti = cb->ti; + + if ((astatus & ASTAT_PARERR) && + ti->ti_phase != PH_ARBSTART && + (ti->ti_flags & SCSI_LOW_NOPARITY) == 0) + { + ti->ti_error |= PARITYERR; + scsi_low_restart((struct scsi_low_softc *) sc, + "scsi bus parity error"); + return 1; + } + + /******************************************* + * aribitration & selection + *******************************************/ + switch (ti->ti_phase) + { + case PH_ARBSTART: + OUTB(tmc_fctl, + sc->sc_fcRinit | FCTL_CLRFIFO); + + if ((astatus & ASTAT_ARBIT) == 0) + { + OUTB(tmc_fctl, sc->sc_fcRinit); + SCSI_LOW_SETUP_PHASE(PH_NULL); + sc->sc_selid = NULL; + sc->sc_nexus = NULL; + return 1; + } + else + OUTB(tmc_fctl, sc->sc_fcWinit); + + /* assert select line */ + OUTB(tmc_scsiid, + (1 << HOST_SCSI_ID) | (1 << ti->ti_id)); + OUTB(tmc_bctl, + BCTL_SEL | BCTL_BUSEN | sc->sc_busc); + SCSI_LOW_SETUP_PHASE(PH_SELSTART); + return 1; + + case PH_SELSTART: + sc->sc_selid = NULL; + if ((status & BSTAT_BSY) == 0) + if (stghw_select_targ_wait(sc, ti->ti_id)) + return stg_disconnected(sc, cb); + + /* attention assert */ + OUTB(tmc_fctl, sc->sc_fcRinit); + OUTB(tmc_bctl, BCTL_BUSEN | sc->sc_busc); + SCSI_LOW_SETUP_PHASE(PH_SELECTED); + return 1; + + case PH_RESEL: + /* clear a busy line */ + OUTB(tmc_fctl, sc->sc_fcRinit); + OUTB(tmc_bctl, BCTL_BUSEN); + break; + } + + /******************************************* + * scsi seq + *******************************************/ + if (sc->sc_flags & HW_PDMASTART) + stg_pdma_end(sc, cb, ti); + + switch (status & PHASE_MASK) + { + case COMMAND_PHASE: + SCSI_LOW_SETUP_PHASE(PH_CMD); + stg_xfer(sc, cb->cmd, cb->cmdlen, COMMAND_PHASE); + break; + + case DATA_OUT_PHASE: + SCSI_LOW_SETUP_PHASE(PH_DATA); + sc->sc_direction = SCSI_LOW_WRITE; + stg_pio_write(sc, ti); + break; + + case DATA_IN_PHASE: + SCSI_LOW_SETUP_PHASE(PH_DATA); + sc->sc_direction = SCSI_LOW_READ; + stg_pio_read(sc, ti); + break; + + case STATUS_PHASE: + SCSI_LOW_SETUP_PHASE(PH_STAT); + ti->ti_status = INB(tmc_rdata); + break; + + case MESSAGE_OUT_PHASE: + OUTB(tmc_fctl, sc->sc_fcWinit); + len = scsi_low_msgout((struct scsi_low_softc *) sc, ti, cb); + if (len == 0) + { + if (cb->msgoutlen == 0) + OUTB(tmc_bctl, BCTL_BUSEN); + OUTB(tmc_wdata, ti->ti_msgout); + } + else if (len > 0) + { + stg_xfer(sc, cb->msgout, len, MESSAGE_OUT_PHASE); + OUTB(tmc_bctl, BCTL_BUSEN); + } + OUTB(tmc_fctl, sc->sc_fcRinit); + break; + + case MESSAGE_IN_PHASE: + SCSI_LOW_SETUP_PHASE(PH_MSGIN); + ti->ti_msgin[ti->ti_msginptr++] = INB(tmc_rdata); + scsi_low_msgin((struct scsi_low_softc *)sc, cb); + if (sc->sc_msgphase) + return stg_disconnected(sc, cb); + break; + + case BUSFREE_PHASE: + printf("%s unexpected disconnection\n", sc->sc_dev.dv_xname); + return stg_disconnected(sc, cb); + + default: + printf("%s unknown phase bus %x intr %x\n", + sc->sc_dev.dv_xname, status, astatus); + break; + } + + return 1; +} diff -urN sys.2.2.8-RELEASE/i386/scsi/tmc18c30/tmc18c30if.c sys/i386/scsi/tmc18c30/tmc18c30if.c --- sys.2.2.8-RELEASE/i386/scsi/tmc18c30/tmc18c30if.c Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/tmc18c30/tmc18c30if.c Tue Dec 22 13:52:38 1998 @@ -0,0 +1,433 @@ +/* $NetBSD$ */ +/* $Id: tmc18c30if.c,v 1.1.8.1 1998/12/05 22:48:44 itojun Exp $ */ +/* + * [NetBSD for NEC PC98 series] + * Copyright (c) 1996 NetBSD/pc98 porting staff. + * Copyright (c) 1996 Naofumi HONDA. + * Copyright (c) 1996 Kouichi Matsuda. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifdef __NetBSD__ +#include +#endif +#ifdef __FreeBSD__ +#include +#include "stg.h" +#endif + +/*************************************************** + * PARAMS + ***************************************************/ +#define STG_MAX_CCB (2 * (NTARGETS - 1)) + +/*************************************************** + * ISA DEVICE STRUCTURE + ***************************************************/ +#ifdef __NetBSD__ +int stgintr __P((void *)); + +struct cfdriver stg_cd = { + NULL, "stg", DV_DULL +}; + +struct scsi_device stg_dev = { + NULL, /* Use default error handler */ + NULL, /* have a queue, served by this */ + NULL, /* have no async handler */ + NULL, /* Use default 'done' routine */ +}; + +struct scsi_adapter stg = { + scsi_low_scsi_cmd, + scsi_low_scsi_minphys, + scsi_low_target_open, + 0, +}; +#endif /* __NetBSD__ */ + +#ifdef __FreeBSD__ +/*void stgintr (int unit);*/ + +/* pccard support */ +#if NCARD > 0 +static int stg_card_intr(struct pccard_devinfo *); +static void stg_card_unload(struct pccard_devinfo *); +static int stg_card_resume(struct stg_softc *); +static int stg_card_init(struct pccard_devinfo *); + +static struct pccard_device stg_info = { + "stg", + stg_card_init, + stg_card_unload, + stg_card_intr, + 0, /* Attributes - presently unused */ + &bio_imask /* Interrupt mask for device */ + /* This should also include net_imask?? */ +}; + +DATA_SET(pccarddrv_set, stg_info); + +#ifdef SCSI_DETACH +static void stgdetach(struct isa_device *dev); +#endif +#endif /* NCARD */ + +struct isa_driver stgdriver = { + stgprobe, + stgattach, + "stg" +}; + +struct scsi_device stg_dev = { + NULL, /* Use default error handler */ + NULL, /* have a queue, served by this */ + NULL, /* have no async handler */ + NULL, /* Use default 'done' routine */ + "stg", + 0, + {0, 0} +}; + +static struct scsi_adapter stg = { + scsi_low_scsi_cmd, + scsi_low_scsi_minphys, + scsi_low_target_open, + 0, + stg_adapter_info, + "stg", + {0, 0}, +}; +u_int32_t stg_adapter_info (int unit) +{ + return 1; +} + +static struct stg_softc *stgdata[NSTG]; +#endif /* __FreeBSD__ */ + +/************************************************************** + * DECLARE + **************************************************************/ +extern int delaycount; +extern struct scsi_low_funcs stgfuncs; + +/************************************************************** + * General probe attach + **************************************************************/ +#ifdef __FreeBSD__ +#if NCARD > 0 +static int +stg_card_resume(struct stg_softc *sc) +{ +#if 0 /* XXX stg_init */ + if (!stg_init(sc)) + return (ENXIO); +#endif + printf("%s: resumed\n", sc->sc_dvname); + return (0); +} + +static int +stg_card_init(struct pccard_devinfo *devi) +{ + int unit = devi->pd_unit; + struct stg_softc *sc = stgdata[unit]; + + if (NSTG <= unit) + return (ENODEV); + /* XXX -- ncv_init */ + printf("probe stg\n"); + if (stgprobe(&devi->isahd) == 0) + return (ENXIO); + printf("attach stg\n"); + if (stgattach(&devi->isahd) == 0) + return (ENXIO); + return (0); +} + +static void +stg_card_unload(struct pccard_devinfo *devi) +{ + struct stg_softc *sc = stgdata[devi->pd_unit]; + + printf("%s: unload\n", sc->sc_dvname); +/* scsi_low_deactivate((struct scsi_low_softc *)sc); */ +#ifdef SCSI_DETACH + stgdetach(&devi->isahd); +#endif +} + +static int +stg_card_intr(struct pccard_devinfo *devi) +{ + + (void) stg_sequencer(stgdata[devi->pd_unit]); + return 1; +} +#endif /* NCARD > 0 */ +#endif /* FreeBSD */ + +#ifdef __NetBSD__ +int +stgprobe(parent, self, aux) + struct device *parent; + struct device *self; + void *aux; +{ + struct stg_softc *sc = (void *)self; + struct isa_attach_args *ia = aux; + struct stg_hw *hw; + int rv = 0; + DECLARE_IOPORT(sc); + + if (ia->ia_iobase == IOBASEUNK || ia->ia_irq == IRQUNK) + return 0; + + bc = ia->ia_bc; + if (bus_io_map(bc, ia->ia_iobase, STGIOSZ, &ioh)) + return 0; + + sc->sc_bc = bc; + sc->sc_ioh = ioh; + sc->sc_dealyioh = ia->ia_delayioh; +#ifdef __FreeBSD__ + sc->sc_cfgflags = (ia->ia_cfgflags & 0xffff); +#else /* __NetBSD__ */ + sc->sc_cfgflags = DVCFG_MINOR(ia->ia_cfgflags); +#endif + sc->sc_wc = delaycount * 2000; /* 2 sec */ + sc->sc_funcs = &stgfuncs; + + if (stghw_check(sc)) + goto bad; + + if (scsi_low_attach((struct scsi_low_softc *) sc)) + goto bad; + + ia->ia_iosize = STGIOSZ; + rv = 1; + +bad: + bus_io_unmap(bc, ioh, STGIOSZ); + return rv; +} +#endif /* __NetBSD__ */ + +#ifdef __FreeBSD__ +static int stghw_probe (struct stg_softc *sc, int flags) +{ + sc->sc_cfgflags = flags; + sc->sc_wc = delaycount * 2000; /* 2 sec */ + sc->sc_funcs = &stgfuncs; + return (stghw_check(sc)); +} + +int stgprobe(struct isa_device *dev) +{ + struct stg_softc *sc; + int unit = dev->id_unit; + struct stg_hw *hw; + char dvname[SCSI_LOW_DVNAME_LEN]; + DECLARE_IOPORT(sc); + + sprintf(dvname, "stg%d", unit); + + if (unit >= NSTG && !dev->id_reconfig) + { + printf("%s: unit number too high\n", dvname); + return (0); + } + + if (dev->id_iobase == 0) + { + printf("%s: no ioaddr is given\n", dvname); + return (0); + } + + if (dev->id_reconfig || stgdata[unit] != NULL) + { + sc = stgdata[unit]; + sc->sc_ioport = dev->id_iobase; + +#ifdef __FreeBSD__ + if (stghw_probe(sc, dev->id_flags & 0xffff)) + return (0); +#else /* __NetBSD__ */ + if (stghw_probe(sc, DVCFG_MINOR(dev->id_flags))) + return (0); +#endif + } + else + { + sc = malloc(sizeof(struct stg_softc), M_TEMP, M_NOWAIT); + if (sc == NULL) + { + printf("%s: cannot malloc!\n", sc->sc_dvname); + return (0); + } + bzero(sc, sizeof(struct stg_softc)); + strcpy (sc->sc_dvname, dvname); + sc->unit = unit; + stgdata[unit] = sc; + sc->sc_ioport = dev->id_iobase; + + if (stghw_probe(sc, dev->id_flags)) + { + free(sc, M_TEMP); + stgdata[unit] = NULL; + return (0); + } + } + return (STGIOSZ); +} +#endif + +int +stgprint(aux, name) + void *aux; + char *name; +{ + + if (name != NULL) + printf("%s: scsibus ", name); + return UNCONF; +} + +#ifdef __FreeBSD__ +#define adapter_target adapter_targ +#define openings opennings +#endif + +#ifdef __FreeBSD__ +static inline void +stg_setup_sc(struct stg_softc *sc) +#else +inline void stg_setup_sc(sc) + struct stg_softc *sc; +#endif +{ + + scsi_low_init_ccbque(STG_MAX_CCB); + TAILQ_INIT(&sc->sc_start); + + sc->sc_link.adapter_softc = sc; + sc->sc_link.adapter_target = 7; + sc->sc_link.adapter = &stg; + sc->sc_link.device = &stg_dev; + sc->sc_link.openings = 2; +} + +#undef adapter_target +#undef openings + +#ifdef __NetBSD__ +void +stgattach(parent, self, aux) + struct device *parent; + struct device *self; + void *aux; +{ + struct stg_softc *sc = (void *)self; + struct isa_attach_args *ia = aux; + + printf("\n"); + + sc->sc_bc = ia->ia_bc; + sc->sc_dealyioh = ia->ia_delayioh; + if (bus_io_map(sc->sc_bc, ia->ia_iobase, STGIOSZ, &sc->sc_ioh)) + panic("%s: couldn't map io\n", sc->sc_dev.dv_xname); + + stg_setup_sc(sc); + sc->sc_mask = (1 << ia->ia_irq); + sc->sc_ih = isa_intr_establish(ia->ia_ic, ia->ia_irq, IST_EDGE, + IPL_BIO, stgintr, sc); + + timeout(scsi_low_timeout, sc, SCSI_LOW_TIMEOUT_CHECK_INTERVAL * hz); +} +#endif /* __NetBSD__ */ + +#ifdef __FreeBSD__ + +#ifdef SCSI_DETACH +static void +stgdetach(struct isa_device *dev) +{ + int unit = dev->id_unit; + struct scsibus_data *scbus; + + scbus = (struct scsibus_data *)scsi_extend_get(stgdata[unit]->sc_link.scsibus); +} +#endif + +int +stgattach(dev) + struct isa_device *dev; +{ + int unit = dev->id_unit; + struct stg_softc *sc = stgdata[unit]; + struct scsibus_data *scbus; + + if (scsi_low_attach((struct scsi_low_softc *) sc)) + { + printf("%s: scsi low attach failed\n", sc->sc_dvname); + return (0); + } + stg_setup_sc(sc); + sc->sc_link.adapter_unit = unit; + + /* + * Prepare the scsibus_data area for the upperlevel + * scsi code. + */ + scbus = scsi_alloc_bus(); + if (!scbus) + return (0); + scbus->adapter_link = &sc->sc_link; + /* + * ask the adapter what subunits are present + */ + scsi_attachdevs(scbus); + timeout(scsi_low_timeout, sc, SCSI_LOW_TIMEOUT_CHECK_INTERVAL * hz); + return 1; +} +#endif /* __FreeBSD__ */ + +#ifdef __NetBSD__ +int stgintr (arg) + void *arg; +{ + return (stg_sequencer((struct stg_softc *)arg)); +} +#endif + +#ifdef __FreeBSD__ +void +stgintr (int unit) +{ + (void) stg_sequencer(stgdata[unit]); +} +#endif diff -urN sys.2.2.8-RELEASE/i386/scsi/tmc18c30/tmc18c30if.h sys/i386/scsi/tmc18c30/tmc18c30if.h --- sys.2.2.8-RELEASE/i386/scsi/tmc18c30/tmc18c30if.h Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/tmc18c30/tmc18c30if.h Tue Dec 22 13:52:38 1998 @@ -0,0 +1,107 @@ +/* + * Copyright (c) HONDA Naofumi, KATO Takenori, 1996. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer as + * the first lines of this file unmodified. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* $Id: tmc18c30if.h,v 1.1.8.1 1998/12/05 22:48:45 itojun Exp $ */ + +/*************************************************** + * BUS IO MAPPINGS & TMC18C30 specific inclusion + ***************************************************/ +#ifdef __NetBSD__ +#include +#include +#include +#endif /* __NetBSD__ */ + +#ifdef __FreeBSD__ +#include +#include +#include + +#include "apm.h" +#if NAPM > 0 +#include +#endif /* NAPM > 0 */ + +/* pccard support */ +#include "card.h" +#if NCARD > 0 +#include +#include +#include +#include +#endif /* NCARD > 0 */ +#endif /* __FreeBSD__ */ + +int stg_sequencer __P((struct stg_softc *sc)); +int stghw_check __P((struct stg_softc *)); + +/* (II) os depend declare */ +#ifdef __NetBSD__ +int stgprobe __P((struct device *, struct device *, void *)); +void stgattach __P((struct device *, struct device *, void *)); +#endif /* __NetBSD__ */ + +#ifdef __FreeBSD__ +int stgprobe __P((struct isa_device *dev)); +int stgattach __P((struct isa_device *dev)); +u_int32_t stg_adapter_info __P((int)); +#endif /* __FreeBSD__ */ + +#ifdef __NetBSD__ +#define DECLARE_IOPORT(sc) \ + register bus_chipset_tag_t bc = (sc)->sc_bc; \ + register bus_io_handle_t ioh = (sc)->sc_ioh; +#define OUTB(o, val) \ + bus_io_write_1 (bc, ioh, (o), (val)) +#define OUTW(o, val) \ + bus_io_write_2 (bc, ioh, (o), (val)) +#define OUTSW(o,b,l) \ + bus_io_write_multi_2(bc, ioh, (o), (b), (l)) +#define INB(o) \ + bus_io_read_1 (bc, ioh, (o)) +#define INW(o) \ + bus_io_read_2 (bc, ioh, (o)) +#define INSW(o,b,l) \ + bus_io_read_multi_2(bc, ioh, (o), (b), (l)) +#endif + +#ifdef __FreeBSD__ +#define DECLARE_IOPORT(sc) \ + register int ioport = (sc)->sc_ioport; +#define OUTB(o, val) \ + outb((o)+ioport, (val)) +#define OUTW(o, val) \ + outw((o)+ioport, (val)) +#define OUTSW(o,b,l) \ + outsw((o)+ioport, (b), (l)) +#define INB(o) \ + inb((o)+ioport) +#define INW(o) \ + inw((o)+ioport) +#define INSW(o,b,l) \ + insw((o)+ioport, (b), (l)) +#endif diff -urN sys.2.2.8-RELEASE/i386/scsi/tmc18c30/tmc18c30reg.h sys/i386/scsi/tmc18c30/tmc18c30reg.h --- sys.2.2.8-RELEASE/i386/scsi/tmc18c30/tmc18c30reg.h Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/tmc18c30/tmc18c30reg.h Tue Dec 22 13:52:38 1998 @@ -0,0 +1,141 @@ +/* $NetBSD$ */ +/* $Id: tmc18c30reg.h,v 1.1.8.1 1998/12/05 22:48:46 itojun Exp $ */ +/* + * [NetBSD for NEC PC98 series] + * Copyright (c) 1996 NetBSD/pc98 porting staff. + * Copyright (c) 1996 Kouichi Matsuda. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _TMC18C30REG_H_ +#define _TMC18C30REG_H_ + +#define tmc_wdata 0x00 +#define tmc_rdata 0x00 + +#define tmc_bctl 0x01 +#define BCTL_BUSFREE 0x00 +#define BCTL_RST 0x01 +#define BCTL_SEL 0x02 +#define BCTL_BSY 0x04 +#define BCTL_ATN 0x08 +#define BCTL_IO 0x10 +#define BCTL_CD 0x20 +#define BCTL_MSG 0x40 +#define BCTL_BUSEN 0x80 +#define tmc_bstat 0x01 +#define BSTAT_BSY 0x01 +#define BSTAT_MSG 0x02 +#define BSTAT_IO 0x04 +#define BSTAT_CMD 0x08 +#define BSTAT_REQ 0x10 +#define BSTAT_SEL 0x20 +#define BSTAT_ACK 0x40 +#define BSTAT_PHMASK (BSTAT_MSG | BSTAT_IO | BSTAT_CMD) + +#define tmc_ictl 0x02 +#define ICTL_FIFO 0x10 +#define ICTL_ARBIT 0x20 +#define ICTL_SEL 0x40 +#define ICTL_CD 0x80 +#define ICTL_ALLINT (ICTL_ARBIT | ICTL_CD | ICTL_SEL) +#define tmc_astat 0x02 +#define ASTAT_INT 0x01 +#define ASTAT_ARBIT 0x02 +#define ASTAT_PARERR 0x04 +#define ASTAT_SCSIRST 0x08 +#define ASTAT_STATMASK 0x0f +#define ASTAT_FIFODIR 0x10 +#define ASTAT_FIFOEN 0x20 +#define ASTAT_PARENB 0x40 +#define ASTAT_BUSEN 0x80 + +#define tmc_ssctl 0x03 +#define SSCTL_FSYNCHEN 0x40 +#define SSCTL_SYNCHEN 0x80 +#define tmc_fstat 0x03 + +#define tmc_fctl 0x04 +#define FCTL_CLRFIFO 0x01 +#define FCTL_ARBIT 0x04 +#define FCTL_PARENB 0x08 +#define FCTL_INTEN 0x10 +#define FCTL_CLRINT 0x20 +#define FCTL_FIFOW 0x40 +#define FCTL_FIFOEN 0x80 +#define tmc_icnd 0x04 + +#define tmc_mctl 0x05 +#define tmc_idlsb 0x05 + +#define tmc_idmsb 0x06 + +#define tmc_wlb 0x07 +#define tmc_rlb 0x07 + +#define tmc_scsiid 0x08 +#define tmc_sdna 0x08 + +#define tmc_istat 0x09 +#define ISTAT_INTEN 0x08 +#define ISTAT_FIFO 0x10 +#define ISTAT_ARBIT 0x20 +#define ISTAT_SEL 0x40 +#define ISTAT_CD 0x80 + +#define tmc_cfg1 0x0a + +#define tmc_ioctl 0x0b +#define tmc_cfg2 0x0b + +#define tmc_wfifo 0x0c +#define tmc_rfifo 0x0c + +#define tmc_fdcnt 0x0e + +/* Information transfer phases */ +#define BUSFREE_PHASE 0x00 +#define DATA_OUT_PHASE (BSTAT_BSY) +#define DATA_IN_PHASE (BSTAT_BSY|BSTAT_IO) +#define COMMAND_PHASE (BSTAT_CMD|BSTAT_BSY) +#define STATUS_PHASE (BSTAT_CMD|BSTAT_BSY|BSTAT_IO) +#define MESSAGE_OUT_PHASE (BSTAT_CMD|BSTAT_MSG|BSTAT_BSY) +#define MESSAGE_IN_PHASE (BSTAT_CMD|BSTAT_MSG|BSTAT_BSY|BSTAT_IO) + +#define PHASE_RESELECTED (BSTAT_SEL|BSTAT_IO) + +#define PHASE_MASK 0x2f +#define RESEL_PHASE_MASK 0x2e + +/* chip type */ +#define TMCCHIP_UNK 0x00 +#define TMCCHIP_1800 0x01 +#define TMCCHIP_18C50 0x02 +#define TMCCHIP_18C30 0x03 + +#define STGIOSZ 0x10 + +#endif /* !_TMC18C30REG_H_ */ diff -urN sys.2.2.8-RELEASE/i386/scsi/tmc18c30/tmc18c30var.h sys/i386/scsi/tmc18c30/tmc18c30var.h --- sys.2.2.8-RELEASE/i386/scsi/tmc18c30/tmc18c30var.h Thu Jan 1 09:00:00 1970 +++ sys/i386/scsi/tmc18c30/tmc18c30var.h Tue Dec 22 13:52:38 1998 @@ -0,0 +1,59 @@ +/* $NetBSD$ */ +/* $Id: tmc18c30var.h,v 1.1.8.1 1998/12/05 22:48:47 itojun Exp $ */ +/* + * [NetBSD for NEC PC98 series] + * Copyright (c) 1996 NetBSD/pc98 porting staff. + * Copyright (c) 1996 Naofumi HONDA. + * Copyright (c) 1996 Kouichi Matsuda. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _TMC18C30VAR_H_ +#define _TMC18C30VAR_H_ + +/* softc */ +struct stg_softc { + SCSI_LOW_SOFTC + + u_int sc_chip; + + u_int sc_fsz; + u_int8_t sc_fcb; + + u_int8_t sc_fcWinit; + u_int8_t sc_fcRinit; + + u_int8_t sc_fcsp; + u_int8_t sc_icinit; + u_int8_t sc_busc; +}; + +#ifdef __NetBSD__ +int stgprobe __P((struct device *, struct device *, void *)); +void stgattach __P((struct device *, struct device *, void *)); +#endif +int stgprint __P((void *, char *)); +#endif /* !_TMC18C30VAR_H_ */ diff -urN sys.2.2.8-RELEASE/kern/init_main.c sys/kern/init_main.c --- sys.2.2.8-RELEASE/kern/init_main.c Thu May 7 04:10:57 1998 +++ sys/kern/init_main.c Tue Dec 22 13:52:44 1998 @@ -68,6 +68,9 @@ #include #include #include +#ifdef NECMG +#include +#endif /* NECMG */ extern struct linker_set sysinit_set; /* XXX */ @@ -490,6 +493,12 @@ #ifdef BOOTP bootpc_init(); #endif + +#ifdef NECMG + while ( ! necmg_pccard_enabled) + tsleep(& necmg_pccard_enabled, PUSER | PCATCH, "ATA mount", 0); +#endif /* NECMG */ + /* Mount the root file system. */ if ((*mountroot)(mountrootvfsops)) panic("cannot mount root"); diff -urN sys.2.2.8-RELEASE/kern/kern_shutdown.c sys/kern/kern_shutdown.c --- sys.2.2.8-RELEASE/kern/kern_shutdown.c Thu May 7 04:10:58 1998 +++ sys/kern/kern_shutdown.c Wed Dec 23 01:21:10 1998 @@ -118,6 +118,7 @@ */ static sle_p shutdown_list1; static sle_p shutdown_list2; +static sle_p shutdown_list3; static void dumpsys(void); @@ -249,6 +250,14 @@ } splhigh(); if (howto & RB_HALT) { + if (howto & RB_POWEROFF) { + ep = shutdown_list3; + while (ep) { + shutdown_list3 = ep->next; + (*ep->function)(howto, ep->arg); + ep = ep->next; + } + } printf("\n"); printf("The operating system has halted.\n"); printf("Please press any key to reboot.\n\n"); @@ -420,6 +429,9 @@ break; case SHUTDOWN_POST_SYNC: epp = &shutdown_list2; + break; + case SHUTDOWN_POWER_OFF: + epp = &shutdown_list3; break; default: printf("bad exit callout list specified\n"); diff -urN sys.2.2.8-RELEASE/pc98/pc98/syscons.c sys/pc98/pc98/syscons.c --- sys.2.2.8-RELEASE/pc98/pc98/syscons.c Sat Nov 14 11:58:17 1998 +++ sys/pc98/pc98/syscons.c Tue Dec 22 13:55:02 1998 @@ -2558,6 +2558,7 @@ } s = spltty(); +#ifndef PC98 /* * With release 2.1 of the Xaccel server, the keyboard is left * hanging pretty often. Apparently an interrupt from the diff -urN sys.2.2.8-RELEASE/pccard/cardinfo.h sys/pccard/cardinfo.h --- sys.2.2.8-RELEASE/pccard/cardinfo.h Sun Apr 19 08:24:44 1998 +++ sys/pccard/cardinfo.h Tue Dec 22 13:55:03 1998 @@ -45,6 +45,8 @@ #define PIOCRWFLAG _IOW('P', 7, int) /* Set flags for drv use */ #define PIOCRWMEM _IOWR('P', 8, unsigned long) /* Set mem for drv use */ #define PIOCSPOW _IOW('P', 9, struct power) /* Set power structure */ +#define PIOCSVIR _IOW('P', 10, int) /* Virtual insert/remove */ +#define PIOCSBEEP _IOW('P', 11, int) /* Select Beep */ /* * Debug codes. */ @@ -54,7 +56,7 @@ /* * Slot states for PIOCGSTATE */ -enum cardstate { noslot, empty, suspend, filled }; +enum cardstate { noslot, empty, suspend, filled, inactive }; /* * Descriptor structure for memory map. @@ -136,5 +138,19 @@ #define NUM_MEM_WINDOWS 10 #define NUM_IO_WINDOWS 6 #define CARD_DEVICE "/dev/card%d" /* String for sprintf */ + +#ifdef PC98 +/* + * Mask of allowable interrupts. + * Ints are 3,5,6,10,12 + */ +#define PCCARD_INT_MASK_ALLOWED 0x1468 +#else /* PC98 */ +/* + * Mask of allowable interrupts. + * Ints are 3,4,5,7,9,10,11,12,14,15 + */ +#define PCCARD_INT_MASK_ALLOWED 0xDEB8 +#endif /* PC98 */ #endif /* !_PCCARD_CARDINFO_H_ */ diff -urN sys.2.2.8-RELEASE/pccard/cis.h sys/pccard/cis.h --- sys.2.2.8-RELEASE/pccard/cis.h Wed Jun 5 14:30:09 1996 +++ sys/pccard/cis.h Tue Dec 22 13:55:03 1998 @@ -42,8 +42,17 @@ * are terminated with a 0xFF for the tuple code or * the tuple length. */ +#ifndef _PCCARD_CIS_H +#define _PCCARD_CIS_H + #define CIS_NULL 0 /* Empty tuple */ #define CIS_MEM_COMMON 0x01 /* Device descriptor, common memory */ +#define CIS_LONGLINK_CB 0x02 /* Long link to next chain for CardBus */ +#define CIS_INDIRECT 0x03 /* Indirect access */ +#define CIS_CONF_MAP_CB 0x04 /* Card Configuration map for CardBus */ +#define CIS_CONFIG_CB 0x05 /* Card Configuration entry for CardBus */ +#define CIS_LONGLINK_MFC 0x06 /* Long link to next chain for Multi function card */ +#define CIS_BAR 0x07 /* Base address register for CardBus */ #define CIS_CHECKSUM 0x10 /* Checksum */ #define CIS_LONGLINK_A 0x11 /* Link to Attribute memory */ #define CIS_LONGLINK_C 0x12 /* Link to Common memory */ @@ -247,3 +256,20 @@ #define CIS_MEM_LENSZ(x) (((x) >> 3) & 0x3) #define CIS_MEM_ADDRSZ(x) (((x) >> 5) & 0x3) #define CIS_MEM_HOST 0x80 +/* + * Misc sub-tuple. + * Byte 1: + * Byte 2: + * 0x0c - DMA Request Signal + * 00 - not support DMA + * 01 - use SPKR# line + * 10 - use IOIS16# line + * 11 - use INPACK# line + * 0x10 - DMA Width + * 0 - 8 bit DMA + * 1 - 16 bit DMA + */ +#define CIS_MISC_DMA_WIDTH(x) (((x) & 0x10) >> 4) +#define CIS_MISC_DMA_REQ(x) (((x) >> 2) & 0x3) + +#endif /* _PCCARD_CIS_H */ diff -urN sys.2.2.8-RELEASE/pccard/driver.h sys/pccard/driver.h --- sys.2.2.8-RELEASE/pccard/driver.h Thu Oct 30 09:38:24 1997 +++ sys/pccard/driver.h Tue Dec 22 13:55:03 1998 @@ -16,9 +16,19 @@ int pccard_alloc_intr __P((u_int imask, inthand2_t *hand, int unit, u_int *maskp, u_int *pcic_imask)); #endif -void pccard_configure __P((void)); +void pccard_driver_init __P((void)); void pccard_remove_driver __P((struct pccard_device *)); -int pcic_probe __P((void)); /* XXX should be linker set */ + +/* new interrupt */ +typedef void pccard_inthand_t(void *arg); + +struct pccard_int_desc { + struct pccard_int_desc *next; + pccard_inthand_t *handler; + void *arg; + unsigned *maskptr; + unsigned mask; +}; enum beepstate { BEEP_ON, BEEP_OFF }; @@ -26,6 +36,10 @@ void pccard_remove_beep __P((void)); void pccard_success_beep __P((void)); void pccard_failure_beep __P((void)); -void pccard_beep_select __P((enum beepstate)); +int pccard_beep_select __P((int)); + +#ifdef KERNEL +void pccard_configure __P((void)); +#endif /* KERNEL */ #endif /* !_PCCARD_DRIVER_H_ */ diff -urN sys.2.2.8-RELEASE/pccard/i82365.h sys/pccard/i82365.h --- sys.2.2.8-RELEASE/pccard/i82365.h Fri Oct 24 03:44:06 1997 +++ sys/pccard/i82365.h Tue Dec 22 13:55:04 1998 @@ -1,224 +0,0 @@ -/* - * i82365.h - Definitions for Intel 82365 PCIC - * PCMCIA Card Interface Controller - * - * originally by Barry Jaspan; hacked over by Keith Moore - * hacked to unrecognisability by Andrew McRae (andrew@mega.com.au) - * - * Updated 3/3/95 to include Cirrus Logic stuff. - *------------------------------------------------------------------------- - * - * Copyright (c) 1995 Andrew McRae. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#define PCIC_I82365 0 /* Intel chip */ -#define PCIC_IBM 1 /* IBM clone */ -#define PCIC_VLSI 2 /* VLSI chip */ -#define PCIC_PD672X 3 /* Cirrus logic 627x */ -#define PCIC_PD6710 4 /* Cirrus logic 6710 */ -#define PCIC_CL6729 5 /* Cirrus logic 6729 */ -#define PCIC_VG468 6 /* Vadem 468 */ -#define PCIC_VG469 7 /* Vadem 469 */ -#define PCIC_RF5C396 8 /* Ricoh RF5C396 */ -#define PCIC_IBM_KING 9 /* IBM KING PCMCIA Controller */ -#define PCIC_PC98 10 /* NEC PC98 PCMCIA Controller */ -#define PCIC_TI1130 11 /* TI PCI1130 CardBus */ - -/* - * Address of the controllers. Each controller can manage - * two PCMCIA slots. Up to 8 slots are supported in total. - * The PCIC controller is accessed via an index port and a - * data port. The index port has the 8 bit address of the - * register accessed via the data port. How I long for - * real memory mapped I/O! - * The top two bits of the index address are used to - * identify the port number, and the lower 6 bits - * select one of the 64 possible data registers. - */ -#define PCIC_INDEX_0 0x3E0 /* index reg, chips 0 and 1 */ -#define PCIC_DATA_0 (PCIC_INDEX_0 + 1) /* data reg, chips 0 and 1 */ -#define PCIC_INDEX_1 (PCIC_INDEX_0 + 2) /* index reg, chips 2 and 3 */ -#define PCIC_DATA_1 (PCIC_INDEX_1 + 1) /* data reg, chips 2 and 3 */ -/* - * Register index addresses. - */ -#define PCIC_ID_REV 0x00 /* Identification and Revision */ -#define PCIC_STATUS 0x01 /* Interface Status */ -#define PCIC_POWER 0x02 /* Power and RESETDRV control */ -#define PCIC_INT_GEN 0x03 /* Interrupt and General Control */ -#define PCIC_STAT_CHG 0x04 /* Card Status Change */ -#define PCIC_STAT_INT 0x05 /* Card Status Change Interrupt Config */ -#define PCIC_ADDRWINE 0x06 /* Address Window Enable */ -#define PCIC_IOCTL 0x07 /* I/O Control */ -#define PCIC_IO0 0x08 /* I/O Address 0 */ -#define PCIC_IO1 0x0c /* I/O Address 1 */ -#define PCIC_MEMBASE 0x10 /* Base of memory window registers */ -#define PCIC_CDGC 0x16 /* Card Detect and General Control */ -#define PCIC_MISC1 0x16 /* PD672x: Misc control register 1 per slot */ -#define PCIC_GLO_CTRL 0x1e /* Global Control Register */ -#define PCIC_MISC2 0x1e /* PD672x: Misc control register 2 per chip */ - -#define PCIC_TIME_SETUP0 0x3a -#define PCIC_TIME_CMD0 0x3b -#define PCIC_TIME_RECOV0 0x3c -#define PCIC_TIME_SETUP1 0x3d -#define PCIC_TIME_CMD1 0x3e -#define PCIC_TIME_RECOV1 0x3f - -#define PCIC_SLOT_SIZE 0x40 /* Size of register set for one slot */ - -/* Now register bits, ordered by reg # */ - -/* For Identification and Revision (PCIC_ID_REV) */ -#define PCIC_INTEL0 0x82 /* Intel 82365SL Rev. 0; Both Memory and I/O */ -#define PCIC_INTEL1 0x83 /* Intel 82365SL Rev. 1; Both Memory and I/O */ -#define PCIC_IBM1 0x88 /* IBM PCIC clone; Both Memory and I/O */ -#define PCIC_IBM2 0x89 /* IBM PCIC clone; Both Memory and I/O */ -#define PCIC_IBM3 0x8a /* IBM KING PCIC clone; Both Memory and I/O */ - -/* For Interface Status register (PCIC_STATUS) */ -#define PCIC_VPPV 0x80 /* Vpp_valid */ -#define PCIC_POW 0x40 /* PC Card power active */ -#define PCIC_READY 0x20 /* Ready/~Busy */ -#define PCIC_MWP 0x10 /* Memory Write Protect */ -#define PCIC_CD 0x0C /* Both card detect bits */ -#define PCIC_BVD 0x03 /* Both Battery Voltage Detect bits */ - -/* For the Power and RESETDRV register (PCIC_POWER) */ -#define PCIC_OUTENA 0x80 /* Output Enable */ -#define PCIC_DISRST 0x40 /* Disable RESETDRV */ -#define PCIC_APSENA 0x20 /* Auto Pwer Switch Enable */ -#define PCIC_PCPWRE 0x10 /* PC Card Power Enable */ -#define PCIC_VCC 0x18 /* Vcc control bits */ -#define PCIC_VCC_5V 0x10 /* 5 volts */ -#define PCIC_VCC_3V 0x18 /* 3 volts */ -#define PCIC_VCC_5V_KING 0x14 /* 5 volts for KING PCIC */ -#define PCIC_VPP 0x0C /* Vpp control bits */ -#define PCIC_VPP_5V 0x01 /* 5 volts */ -#define PCIC_VPP_12V 0x02 /* 12 volts */ - -/* For the Interrupt and General Control register (PCIC_INT_GEN) */ -#define PCIC_CARDTYPE 0x20 /* Card Type 0 = memory, 1 = I/O */ -#define PCIC_IOCARD 0x20 -#define PCIC_MEMCARD 0x00 -#define PCIC_CARDRESET 0x40 /* Card reset 0 = Reset, 1 = Normal */ -#define PCIC_INTR_ENA 0x10 /* Interrupt enable */ - -/* For the Card Status Change register (PCIC_STAT_CHG) */ -#define PCIC_CDTCH 0x08 /* Card Detect Change */ -#define PCIC_RDYCH 0x04 /* Ready Change */ -#define PCIC_BATWRN 0x02 /* Battery Warning */ -#define PCIC_BATDED 0x01 /* Battery Dead */ - -/* - * For the Address Window Enable Register (PCIC_ADDRWINE) - * The lower 6 bits contain enable bits for the memory - * windows (LSB = memory window 0). - */ -#define PCIC_MEMCS16 0x20 /* ~MEMCS16 Decode A23-A12 */ -#define PCIC_IO0_EN 0x40 /* I/O Window 0 Enable */ -#define PCIC_IO1_EN 0x80 /* I/O Window 1 Enable */ - -/* - * For the I/O Control Register (PCIC_IOCTL) - * The lower nybble is the flags for I/O window 0 - * The upper nybble is the flags for I/O window 1 - */ -#define PCIC_IO_16BIT 0x01 /* I/O to this segment is 16 bit */ -#define PCIC_IO_CS16 0x02 /* I/O cs16 source is the card */ -#define PCIC_IO_0WS 0x04 /* zero wait states added on 8 bit cycles */ -#define PCIC_IO_WS 0x08 /* Wait states added for 16 bit cycles */ - -/* - * The memory window registers contain the start and end - * physical host address that the PCIC maps to the card, - * and an offset calculated from the card memory address. - * All values are shifted down 12 bits, so allocation is - * done in 4Kb blocks. Only 12 bits of each value is - * stored, limiting the range to the ISA address size of - * 24 bits. The upper 4 bits of the most significant byte - * within the values are used for various flags. - * - * The layout is: - * - * base+0 : lower 8 bits of system memory start address - * base+1 : upper 4 bits of system memory start address + flags - * base+2 : lower 8 bits of system memory end address - * base+3 : upper 4 bits of system memory end address + flags - * base+4 : lower 8 bits of offset to card address - * base+5 : upper 4 bits of offset to card address + flags - * - * The following two bytes are reserved for other use. - */ -#define PCIC_MEMSIZE 8 -/* - * Flags for system memory start address upper byte - */ -#define PCIC_ZEROWS 0x40 /* Zero wait states */ -#define PCIC_DATA16 0x80 /* Data width is 16 bits */ - -/* - * Flags for system memory end address upper byte - */ -#define PCIC_MW0 0x40 /* Wait state bit 0 */ -#define PCIC_MW1 0x80 /* Wait state bit 1 */ - -/* - * Flags for card offset upper byte - */ -#define PCIC_REG 0x40 /* Attribute/Common select (why called Reg?) */ -#define PCIC_WP 0x80 /* Write-protect this window */ - -/* For Card Detect and General Control register (PCIC_CDGC) */ -#define PCIC_16_DL_INH 0x01 /* 16-bit memory delay inhibit */ -#define PCIC_CNFG_RST_EN 0x02 /* configuration reset enable */ -#define PCIC_GPI_EN 0x04 /* GPI Enable */ -#define PCIC_GPI_TRANS 0x08 /* GPI Transition Control */ -#define PCIC_CDRES_EN 0x10 /* card detect resume enable */ -#define PCIC_SW_CD_INT 0x20 /* s/w card detect interrupt */ - -/* For Misc. Control Register 1 */ -#define PCIC_SPKR_EN 0x10 /* Cirrus PD672x: speaker enable */ - -/* For Global Control register (PCIC_GLO_CTRL) */ -#define PCIC_PWR_DOWN 0x01 /* power down */ -#define PCIC_LVL_MODE 0x02 /* level mode interrupt enable */ -#define PCIC_WB_CSCINT 0x04 /* explicit write-back csc intr */ -#define PCIC_IRQ0_LEVEL 0x08 /* irq 14 pulse mode enable */ -#define PCIC_IRQ1_LEVEL 0x10 - -/* For Misc. Control Register 2 */ -#define PCIC_LPDM_EN 0x02 /* Cirrus PD672x: low power dynamic mode */ - -/* - * Mask of allowable interrupts. - * Ints are 3,4,5,7,9,10,11,12,14,15 - */ -#define PCIC_INT_MASK_ALLOWED 0xDEB8 - -#define PCIC_IO_WIN 2 -#define PCIC_MEM_WIN 5 - -#define PCIC_MAX_SLOTS 8 diff -urN sys.2.2.8-RELEASE/pccard/i82365reg.h sys/pccard/i82365reg.h --- sys.2.2.8-RELEASE/pccard/i82365reg.h Thu Jan 1 09:00:00 1970 +++ sys/pccard/i82365reg.h Tue Dec 22 13:55:04 1998 @@ -0,0 +1,220 @@ +/* + * i82365reg.h - Definitions for Intel 82365 PCIC + * PCMCIA Card Interface Controller + * + * originally by Barry Jaspan; hacked over by Keith Moore + * hacked to unrecognisability by Andrew McRae (andrew@mega.com.au) + * + * Updated 3/3/95 to include Cirrus Logic stuff. + *------------------------------------------------------------------------- + * + * Copyright (c) 1995 Andrew McRae. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _PCCARD_I82365REG_H +#define _PCCARD_I82365REG_H + +/* + * Register index addresses. + */ +#define PCIC_ID_REV 0x00 /* Identification and Revision */ +#define PCIC_STATUS 0x01 /* Interface Status */ +#define PCIC_POWER 0x02 /* Power and RESETDRV control */ +#define PCIC_INT_GEN 0x03 /* Interrupt and General Control */ +#define PCIC_STAT_CHG 0x04 /* Card Status Change */ +#define PCIC_STAT_INT 0x05 /* Card Status Change Interrupt Config */ +#define PCIC_ADDRWINE 0x06 /* Address Window Enable */ +#define PCIC_IOCTL 0x07 /* I/O Control */ +#define PCIC_IO0 0x08 /* I/O Address 0 */ +#define PCIC_IO1 0x0c /* I/O Address 1 */ +#define PCIC_MEMBASE0 0x10 /* Base of memory window registers */ +#define PCIC_CDGC 0x16 /* Card Detect and General Control */ +#define PCIC_MEMBASE1 0x18 /* Base of memory window registers */ +#define PCIC_MISC1 0x16 /* PD672x: Misc control register 1 per slot */ +#define PCIC_GLO_CTRL 0x1e /* Global Control Register */ +#define PCIC_MISC2 0x1e /* PD672x: Misc control register 2 per chip */ +#define PCIC_MEMBASE2 0x20 /* Base of memory window registers */ +#define PCIC_MEMBASE3 0x28 /* Base of memory window registers */ +#define PCIC_MEMBASE4 0x30 /* Base of memory window registers */ +#define PCIC_MEMBASEU0 0x40 /* Base of memory window (upper/optional) */ +#define PCIC_MEMBASEU1 0x41 /* Base of memory window (upper/optional) */ +#define PCIC_MEMBASEU2 0x42 /* Base of memory window (upper/optional) */ +#define PCIC_MEMBASEU3 0x43 /* Base of memory window (upper/optional) */ +#define PCIC_MEMBASEU4 0x44 /* Base of memory window (upper/optional) */ + +#define PCIC_TIME_SETUP0 0x3a +#define PCIC_TIME_CMD0 0x3b +#define PCIC_TIME_RECOV0 0x3c +#define PCIC_TIME_SETUP1 0x3d +#define PCIC_TIME_CMD1 0x3e +#define PCIC_TIME_RECOV1 0x3f + +#define PCIC_SLOT_SIZE 0x40 /* Size of register set for one slot */ + +/* Now register bits, ordered by reg # */ + +/* For Identification and Revision (PCIC_ID_REV) */ +#define PCIC_INTEL0 0x82 /* Intel 82365SL Rev. 0; Both Memory and I/O */ +#define PCIC_INTEL1 0x83 /* Intel 82365SL Rev. 1; Both Memory and I/O */ +#define PCIC_INTEL2 0x84 /* Intel 82365SL DF or VLSI; Both Memory and I/O */ +#define PCIC_IBM1 0x88 /* IBM PCIC clone; Both Memory and I/O */ +#define PCIC_IBM2 0x89 /* IBM PCIC clone; Both Memory and I/O */ +#define PCIC_IBM3 0x8a /* IBM KING PCIC clone; Both Memory and I/O */ + +/* For Interface Status register (PCIC_STATUS) */ +#define PCIC_VPPV 0x80 /* Vpp_valid */ +#define PCIC_POW 0x40 /* PC Card power active */ +#define PCIC_READY 0x20 /* Ready/~Busy */ +#define PCIC_MWP 0x10 /* Memory Write Protect */ +#define PCIC_CD 0x0C /* Both card detect bits */ +#define PCIC_BVD 0x03 /* Both Battery Voltage Detect bits */ + +/* For the Power and RESETDRV register (PCIC_POWER) */ +#define PCIC_OUTENA 0x80 /* Output Enable */ +#define PCIC_DISRST 0x40 /* Disable RESETDRV */ +#define PCIC_APSENA 0x20 /* Auto Pwer Switch Enable */ +#define PCIC_PCPWRE 0x10 /* PC Card Power Enable */ +#define PCIC_VCC 0x18 /* Vcc control bits */ +#define PCIC_VCC_5V 0x10 /* 5 volts */ +#define PCIC_VCC_3V 0x18 /* 3 volts */ +#define PCIC_VCC_5V_KING 0x14 /* 5 volts for KING PCIC */ +#define PCIC_VPP 0x0C /* Vpp control bits */ +#define PCIC_VPP_5V 0x01 /* 5 volts */ +#define PCIC_VPP_12V 0x02 /* 12 volts */ + +/* For the Interrupt and General Control register (PCIC_INT_GEN) */ +#define PCIC_CARDTYPE 0x20 /* Card Type 0 = memory, 1 = I/O */ +#define PCIC_IOCARD 0x20 +#define PCIC_MEMCARD 0x00 +#define PCIC_CARDRESET 0x40 /* Card reset 0 = Reset, 1 = Normal */ +#define PCIC_INTR_ENA 0x10 /* Interrupt enable */ + +/* For the Card Status Change register (PCIC_STAT_CHG) */ +#define PCIC_CDTCH 0x08 /* Card Detect Change */ +#define PCIC_RDYCH 0x04 /* Ready Change */ +#define PCIC_BATWRN 0x02 /* Battery Warning */ +#define PCIC_BATDED 0x01 /* Battery Dead */ + +/* + * For the Address Window Enable Register (PCIC_ADDRWINE) + * The lower 6 bits contain enable bits for the memory + * windows (LSB = memory window 0). + */ +#define PCIC_MEMCS16 0x20 /* ~MEMCS16 Decode A23-A12 */ +#define PCIC_IO0_EN 0x40 /* I/O Window 0 Enable */ +#define PCIC_IO1_EN 0x80 /* I/O Window 1 Enable */ + +/* + * For the I/O Control Register (PCIC_IOCTL) + * The lower nybble is the flags for I/O window 0 + * The upper nybble is the flags for I/O window 1 + */ +#define PCIC_IO_16BIT 0x01 /* I/O to this segment is 16 bit */ +#define PCIC_IO_CS16 0x02 /* I/O cs16 source is the card */ +#define PCIC_IO_0WS 0x04 /* zero wait states added on 8 bit cycles */ +#define PCIC_IO_WS 0x08 /* Wait states added for 16 bit cycles */ + +/* + * The memory window registers contain the start and end + * physical host address that the PCIC maps to the card, + * and an offset calculated from the card memory address. + * All values are shifted down 12 bits, so allocation is + * done in 4Kb blocks. Only 12 bits of each value is + * stored, limiting the range to the ISA address size of + * 24 bits. The upper 4 bits of the most significant byte + * within the values are used for various flags. + * + * The layout is: + * + * base+0 : lower 8 bits of system memory start address + * base+1 : upper 4 bits of system memory start address + flags + * base+2 : lower 8 bits of system memory end address + * base+3 : upper 4 bits of system memory end address + flags + * base+4 : lower 8 bits of offset to card address + * base+5 : upper 4 bits of offset to card address + flags + * + * The following two bytes are reserved for other use. + */ +#define PCIC_MEMSIZE 8 +/* + * Flags for system memory start address upper byte + */ +#define PCIC_ZEROWS 0x40 /* Zero wait states */ +#define PCIC_DATA16 0x80 /* Data width is 16 bits */ + +/* + * Flags for system memory end address upper byte + */ +#define PCIC_MW0 0x40 /* Wait state bit 0 */ +#define PCIC_MW1 0x80 /* Wait state bit 1 */ + +/* + * Flags for card offset upper byte + */ +#define PCIC_REG 0x40 /* Attribute/Common select (why called Reg?) */ +#define PCIC_WP 0x80 /* Write-protect this window */ + +/* For Card Detect and General Control register (PCIC_CDGC) */ +#define PCIC_16_DL_INH 0x01 /* 16-bit memory delay inhibit */ +#define PCIC_CNFG_RST_EN 0x02 /* configuration reset enable */ +#define PCIC_GPI_EN 0x04 /* GPI Enable */ +#define PCIC_GPI_TRANS 0x08 /* GPI Transition Control */ +#define PCIC_CDRES_EN 0x10 /* card detect resume enable */ +#define PCIC_SW_CD_INT 0x20 /* s/w card detect interrupt */ + +/* For Misc. Control Register 1 */ +#define PCIC_SPKR_EN 0x10 /* Cirrus PD672x: speaker enable */ + +/* For Global Control register (PCIC_GLO_CTRL) */ +#define PCIC_PWR_DOWN 0x01 /* power down */ +#define PCIC_LVL_MODE 0x02 /* level mode interrupt enable */ +#define PCIC_WB_CSCINT 0x04 /* explicit write-back csc intr */ +#define PCIC_IRQ0_LEVEL 0x08 /* irq 14 pulse mode enable */ +#define PCIC_IRQ1_LEVEL 0x10 + +/* For Misc. Control Register 2 */ +#define PCIC_LPDM_EN 0x02 /* Cirrus PD672x: low power dynamic mode */ + +/* Cirrus Logic PD-672X specific index */ + +#define CL672X_PCIC_MISC1 0x16 /* Misc Control 1 */ +#define CL672X_PCIC_MISC2 0x1e /* Misc Control 2 */ + +/* Misc 1 regs. */ +#define CL672X_M1_5V_DET 0x01 /* 5v detect */ +#define CL672X_M1_SPKR_EN 0x10 /* Speaker Enable */ +/* Misc 2 regs. */ +#define CL672X_M2_LPDM_EN 0x02 /* Low power dynamic mode */ + +/* Vadem VG469 specific index */ +#define VG469_VSENSE 0x1f /* Card voltage sense */ + +/* Flags for VG469_VSENSE */ +#define VG469_VSENSE_A_VS1 0x01 +#define VG469_VSENSE_A_VS2 0x02 +#define VG469_VSENSE_B_VS1 0x04 +#define VG469_VSENSE_B_VS2 0x08 + +#endif /* _PCCARD_I82365REG_H */ diff -urN sys.2.2.8-RELEASE/pccard/paoversion.h sys/pccard/paoversion.h --- sys.2.2.8-RELEASE/pccard/paoversion.h Thu Jan 1 09:00:00 1970 +++ sys/pccard/paoversion.h Thu Jan 14 13:35:00 1999 @@ -0,0 +1,4 @@ +/* + * $Id: paoversion.h,v 1.1.2.2 1999/01/14 04:34:15 hosokawa Exp $ + */ +#define PAO_VERSION "PAO-19990114" diff -urN sys.2.2.8-RELEASE/pccard/pccard.c sys/pccard/pccard.c --- sys.2.2.8-RELEASE/pccard/pccard.c Fri Sep 25 02:57:38 1998 +++ sys/pccard/pccard.c Fri Dec 25 10:40:20 1998 @@ -53,14 +53,23 @@ #include #include #include +#include #include +#ifdef NECMG +#include +#endif + /* * XXX We shouldn't be using processor-specific/bus-specific code in * here, but we need the start of the ISA hole (IOM_BEGIN). */ +#ifdef PC98 +#include +#else /*PC98*/ #include +#endif /*PC98*/ SYSCTL_NODE(_machdep, OID_AUTO, pccard, CTLFLAG_RW, 0, "pccard"); @@ -78,6 +87,7 @@ #define MIN(a,b) ((a)<(b)?(a):(b)) +static u_int build_freelist(u_int); static int allocate_driver(struct slot *, struct dev_desc *); static void inserted(void *); static void unregister_device_interrupt(struct pccard_devinfo *); @@ -86,7 +96,9 @@ static struct pccard_device *find_driver(char *); static void remove_device(struct pccard_devinfo *); static void slot_irq_handler(int); +#if 0 static void power_off_slot(void *); +#endif #if NAPM > 0 /* @@ -102,8 +114,7 @@ #endif /* NAPM > 0 */ static struct slot *pccard_slots[MAXSLOT]; /* slot entries */ -static struct slot *slot_list; -static struct slot_ctrl *cont_list; +static struct slot_ctrl *cont_list = NULL; static struct pccard_device *drivers; /* Card drivers */ /* @@ -127,6 +138,29 @@ crdioctl, nostop, nullreset, nodevtotty,/* pcmcia */ crdselect, nommap, NULL, "crd", NULL, -1 }; +/* + * Setup PC-card support for all PC-card drivers + */ +void +pccard_driver_init(void) +{ + struct pccard_device **p_drvp; + struct pccard_device *p_drv; + static int already_configured = 0; + + if (already_configured) + return; + already_configured = 1; + + p_drvp = (struct pccard_device **)pccarddrv_set.ls_items; + printf("PAO version: %s\n", PAO_VERSION); + printf("Initializing PC-card drivers: "); + while ((p_drv = *p_drvp++)) { + printf("%s ", p_drv->name); + pccard_add_driver(p_drv); + } + printf("\n"); +} /* * pccard_configure - called by autoconf code. @@ -138,23 +172,60 @@ * that it sees, and these are mapped to a master * slot number accessed via the character device entries. */ -void -pccard_configure(void) +static void +nullfunc(int unit) { - struct pccard_device **drivers, *drv; + /* empty */ +} -#include "pcic.h" -#if NPCIC > 0 - pcic_probe(); +static u_int +build_freelist(u_int pcic_mask) +{ + int irq; + u_int mask, freemask; + + /* No free IRQs (yet). */ + freemask = 0; + + /* Walk through all of the IRQ's and find any that aren't allocated. */ + for (irq = 0; irq < ICU_LEN; irq++) { + /* + * If the PCIC controller can't generate it, don't + * bother checking to see if it it's free. + */ + mask = 1 << irq; + if (!(mask & pcic_mask)) continue; + + /* See if the IRQ is free. */ + if (register_intr(irq, 0, 0, nullfunc, NULL, irq) == 0) { + /* Give it back, but add it to the mask */ + INTRMASK(freemask, mask); + unregister_intr(irq, nullfunc); + } + } +#ifdef PCIC_DEBUG + printf("Freelist of IRQ's <0x%x>\n", freemask); #endif + return freemask; +} - drivers = (struct pccard_device **)pccarddrv_set.ls_items; - printf("Initializing PC-card drivers:"); - while ((drv = *drivers++)) { - printf(" %s", drv->name); - pccard_add_driver(drv); +void +pccard_configure(void) +{ + static int already_configured = 0; + u_int free_irqs; + int i; + + if (already_configured) + return; + already_configured = 1; + + /* Determine the list of free interrupts */ + free_irqs = build_freelist(PCCARD_INT_MASK_ALLOWED); /*XXX*/ + for (i = 0; i < MAXSLOT; i++) { + if (pccard_slots[i] && pccard_slots[i]->ctrl) + pccard_slots[i]->ctrl->irqs = free_irqs; } - printf("\n"); } /* @@ -175,7 +246,6 @@ drivers = drv; } -#ifdef unused /* * pccard_remove_driver - called to unlink driver * from devices. Usually called when drivers are @@ -184,16 +254,17 @@ void pccard_remove_driver(struct pccard_device *drv) { + struct slot_ctrl *cinfo; struct slot *slt; - struct pccard_devinfo *devi, *next; + struct pccard_devinfo *devi; struct pccard_device *drvlist; - for (slt = slot_list; slt; slt = slt->next) - for (devi = slt->devices; devi; devi = next) { - next = devi->next; - if (devi->drv == drv) - remove_device(devi); - } + for (cinfo = cont_list; cinfo; cinfo = cinfo->next) + for (slt = cinfo->slot_list; slt; slt = slt->next) + for (devi = slt->devices; devi; devi = devi->next) { + if (devi->drv == drv) + remove_device(devi); + } /* * Once all the devices belonging to this driver have been * freed, then remove the driver from the list @@ -208,7 +279,26 @@ break; } } -#endif + +/* + * pccard_add_controller - link it into the + * list of controllers. + */ +void +pccard_add_controller(struct slot_ctrl *ctrl) +{ + static int unit = 0; + + ctrl->next = cont_list; + cont_list = ctrl; + ctrl->slot_list = NULL; + if (ctrl->maxmem > NUM_MEM_WINDOWS) + ctrl->maxmem = NUM_MEM_WINDOWS; + if (ctrl->maxio > NUM_IO_WINDOWS) + ctrl->maxio = NUM_IO_WINDOWS; + printf("PC-Card ctlr(%d) %s (%d mem & %d I/O windows)\n", + unit++, ctrl->name, ctrl->maxmem, ctrl->maxio); +} /* * pccard_remove_controller - Called when the slot @@ -220,48 +310,38 @@ void pccard_remove_controller(struct slot_ctrl *ctrl) { - struct slot *slt, *next, *last = 0; + struct slot *slt; struct slot_ctrl *cl; struct pccard_devinfo *devi; - for (slt = slot_list; slt; slt = next) { - next = slt->next; + for (cl = cont_list; cl; cl = cl->next) { /* - * If this slot belongs to this controller, - * remove this slot. + * remove all slot belong this controller. */ - if (slt->ctrl == ctrl) { - pccard_slots[slt->slotnum] = 0; - if (slt->insert_seq) - untimeout(inserted, (void *)slt); - /* - * Unload the drivers attached to this slot. - */ - while (devi = slt->devices) - remove_device(devi); - /* - * Disable the slot and unlink the slot from the - * slot list. - */ - disable_slot(slt); - if (last) - last->next = next; - else - slot_list = next; + if (cl == ctrl) { + for (slt = cl->slot_list; slt; slt = slt->next) { + pccard_slots[slt->slotnum] = 0; + if (slt->insert_seq) + untimeout(inserted, (void *)slt); + /* + * Unload the drivers attached to this slot. + */ + while (devi = slt->devices) + remove_device(devi); + /* + * Disable the slot. + */ + disable_slot(slt); #if NAPM > 0 - apm_hook_disestablish(APM_HOOK_SUSPEND, - &s_hook[slt->slotnum]); - apm_hook_disestablish(APM_HOOK_RESUME, - &r_hook[slt->slotnum]); -#endif - if (ctrl->extra && slt->cdata) - FREE(slt->cdata, M_DEVBUF); - FREE(slt, M_DEVBUF); - /* - * Can't use slot after we have freed it. - */ - } else { - last = slt; + apm_hook_disestablish(APM_HOOK_SUSPEND, + &s_hook[slt->slotnum]); + apm_hook_disestablish(APM_HOOK_RESUME, + &r_hook[slt->slotnum]); +#endif + if (ctrl->extra && slt->cdata) + FREE(slt->cdata, M_DEVBUF); + FREE(slt, M_DEVBUF); + } } } /* @@ -277,6 +357,14 @@ } } +static void +really_power_off_slot(void *arg) +{ + struct slot *slt = (struct slot *)arg; + slt->ctrl->disable(slt); +} + +#if 0 /* * Power off the slot. * (doing it immediately makes the removal of some cards unstable) @@ -288,8 +376,15 @@ /* Power off the slot. */ slt->pwr_off_pending = 0; +#if 1 + /* power off the slot 1/2 seconds after removal of cards */ + timeout(really_power_off_slot, (caddr_t)slt, hz / 2); + slt->pwr_off_pending = 1; +#else slt->ctrl->disable(slt); +#endif } +#endif /* * unregister_device_interrupt - Disable the interrupt generation to @@ -303,9 +398,14 @@ if (devi->running) { s = splhigh(); - devi->drv->disable(devi); + /* + * 'running' is equal to 2 when an IRQ has been mapped and + * the device enable function has returned an error. + */ + if(devi->running != 2) + devi->drv->disable(devi); devi->running = 0; - if (devi->isahd.id_irq && --slt->irqref <= 0) { + if (devi->pd_irq && --slt->irqref <= 0) { printf("Return IRQ=%d\n",slt->irq); slt->ctrl->mapirq(slt, 0); INTRDIS(1<irq); @@ -321,6 +421,43 @@ } } +#ifdef CB_TEST +/* new shared interrupt routine */ + +#define PCCARD_MAX_IRQ ICU_LEN +struct pccard_int_desc *pccard_int_desc[PCCARD_MAX_IRQ]; + +#ifndef NO_SHARED_IRQ + +static inline unsigned +splq (unsigned mask) +{ + unsigned temp=cpl; + cpl |= mask; + return temp; +} + +static void +pccard_int (int irq) +{ + struct pccard_int_desc * p; + int s; + + if (irq<0 || irq >= PCCARD_MAX_IRQ) { + printf ("pccard_int: irq %d out of range, ignored\n", irq); + return; + }; + for (p = pccard_int_desc[irq]; p!=NULL; p=p->next) { + s = splq (*p->maskptr); + (*p->handler) (p->arg); + /* p->tally++; */ + splx (s); + }; +} +#endif + +#endif /* CB_TEST */ + /* * disable_slot - Disables the slot by removing * the power and unmapping the I/O @@ -341,11 +478,19 @@ * driver is accessing the device and it is removed, then * all bets are off... */ +#ifdef NECMG + /* + * XXX, + * Unload/load wd driver cause double fault in dscheck() + * after resume. That is generic BUG. + */ +#else /* !NECMG */ for (devi = slt->devices; devi; devi = devi->next) unregister_device_interrupt(devi); +#endif /* !NECMG */ /* Power off the slot 1/2 second after removal of the card */ - timeout(power_off_slot, (caddr_t)slt, hz / 2); + timeout(really_power_off_slot, (caddr_t)slt, hz / 2); slt->pwr_off_pending = 1; /* De-activate all contexts. */ @@ -382,7 +527,7 @@ * Disable any pending timeouts for this slot since we're * powering it down/disabling now. */ - untimeout(power_off_slot, (caddr_t)slt); + untimeout(really_power_off_slot, (caddr_t)slt); slt->ctrl->disable(slt); return (0); } @@ -398,8 +543,16 @@ if (slt->state == suspend) { slt->state = empty; slt->insert_seq = 1; +#ifdef NECMG + /* + * Lock out access to wd controler. + */ + DELAY(250*1000); + inserted((void*)slt); +#else /* NECMG */ timeout(inserted, (void *)slt, hz/4); selwakeup(&slt->selp); +#endif /* !NECMG */ } return (0); } @@ -437,22 +590,8 @@ slt->ctrl = ctrl; slt->slotnum = slotno; pccard_slots[slotno] = slt; - slt->next = slot_list; - slot_list = slt; - /* - * If this controller hasn't been seen before, then - * link it into the list of controllers. - */ - if (ctrl->slots++ == 0) { - ctrl->next = cont_list; - cont_list = ctrl; - if (ctrl->maxmem > NUM_MEM_WINDOWS) - ctrl->maxmem = NUM_MEM_WINDOWS; - if (ctrl->maxio > NUM_IO_WINDOWS) - ctrl->maxio = NUM_IO_WINDOWS; - printf("PC-Card %s (%d mem & %d I/O windows)\n", - ctrl->name, ctrl->maxmem, ctrl->maxio); - } + slt->next = ctrl->slot_list; + ctrl->slot_list = slt; #if NAPM > 0 { struct apmhook *ap; @@ -483,10 +622,12 @@ pccard_alloc_intr(u_int imask, inthand2_t *hand, int unit, u_int *maskp, u_int *pcic_imask) { - int irq; + int irq, minirq, maxirq; unsigned int mask; - for (irq = 1; irq < ICU_LEN; irq++) { + minirq = 1; + maxirq = ICU_LEN - 1; + for (irq = minirq; irq <= maxirq; irq++) { mask = 1ul << irq; if (!(mask & imask)) continue; @@ -526,7 +667,7 @@ * then reject the request. */ for (devi = slt->devices; devi; devi = devi->next) - if (devi->drv == drv && devi->isahd.id_unit == desc->unit) { + if (devi->drv == drv && devi->pd_unit == desc->unit) { if (devi->running) return(EBUSY); remove_device(devi); @@ -537,11 +678,15 @@ * against the slot interrupt (if one has been allocated). */ if (desc->irqmask && drv->imask) { - if ((slt->ctrl->irqs & desc->irqmask) == 0) + if ((slt->ctrl->irqs & desc->irqmask)==0) { + printf("crd: slot_ctrl IRQ mask mismatched."); return(EINVAL); + } if (slt->irq) { - if (((1 << slt->irq) & desc->irqmask) == 0) + if (((1 << slt->irq) & desc->irqmask)==0) { + printf("crd: slot IRQ mismatched."); return(EINVAL); + } slt->irqref++; irq = slt->irq; } else { @@ -553,8 +698,10 @@ irq = pccard_alloc_intr(desc->irqmask, slot_irq_handler, (int)slt, drv->imask, slt->ctrl->imask); - if (irq < 0) + if (irq < 0) { + printf("crd: IRQ allocation failed."); return(EINVAL); + } slt->irq = irq; slt->irqref = 1; slt->ctrl->mapirq(slt, slt->irq); @@ -568,22 +715,35 @@ devi->running = 1; devi->drv = drv; devi->slt = slt; - devi->isahd.id_irq = irq; +#if 1 + if (irq) + devi->pd_irq = irq; + else + devi->pd_irq = 0; + devi->pd_unit = desc->unit; + devi->pd_msize = desc->memsize; + devi->pd_iobase = desc->iobase; + devi->pd_flags = desc->flags; + + /* compatible old driver */ + if (irq) + devi->isahd.id_irq = 1 << irq; + else + devi->isahd.id_irq = 0; devi->isahd.id_unit = desc->unit; devi->isahd.id_msize = desc->memsize; devi->isahd.id_iobase = desc->iobase; - bcopy(desc->misc, devi->misc, sizeof(desc->misc)); - if (irq) - devi->isahd.id_irq = 1 << irq; devi->isahd.id_flags = desc->flags; +#endif + bcopy(desc->misc, devi->misc, sizeof(desc->misc)); /* * Convert the memory to kernel space. */ if (desc->mem) - devi->isahd.id_maddr = - (caddr_t)(desc->mem + atdevbase - IOM_BEGIN); + devi->pd_maddr = (caddr_t)(desc->mem + atdevbase - IOM_BEGIN); else - devi->isahd.id_maddr = 0; + devi->pd_maddr = 0; + devi->isahd.id_maddr = devi->pd_maddr; /* compatible old driver */ devi->next = slt->devices; slt->devices = devi; s = splhigh(); @@ -596,8 +756,10 @@ * the error. We assume that when we free the device, * it will also set 'running' to off. */ - if (err) + if (err) { + devi->running = 2; remove_device(devi); + } return(err); } @@ -643,14 +805,19 @@ * Enable 5V to the card so that the CIS can be read. */ slt->pwr.vcc = 50; - slt->pwr.vpp = 0; + slt->pwr.vpp = 50; +#if 0 +#ifdef CB_TEST + slt->ctrl->status(slt); +#endif /* CB_TEST */ +#endif /* * Disable any pending timeouts for this slot, and explicitly * power it off right now. Then, re-enable the power using * the (possibly new) power settings. */ - untimeout(power_off_slot, (caddr_t)slt); - power_off_slot(slt); + untimeout(really_power_off_slot, (caddr_t)slt); + really_power_off_slot(slt); slt->ctrl->power(slt); printf("Card inserted, slot %d\n", slt->slotnum); @@ -658,6 +825,12 @@ * Now start resetting the card. */ slt->ctrl->reset(slt); +#ifdef NECMG + /* + * slt->ctrl->reset(slt) is not return until reset is completed. + */ + necmg_pccard_enabler(slt); +#endif } /* @@ -678,7 +851,7 @@ * The slot and devices are disabled, but the * data structures are not unlinked. */ - if (slt->state == filled) { + if (slt->state == filled || slt->state == inactive) { int s = splhigh(); disable_slot(slt); slt->state = empty; @@ -691,7 +864,7 @@ case card_inserted: slt->insert_seq = 1; timeout(inserted, (void *)slt, hz/4); - pccard_remove_beep(); + pccard_insert_beep(); break; } } @@ -711,7 +884,7 @@ * caught, the handler returns true. */ for (devi = slt->devices; devi; devi = devi->next) - if (devi->isahd.id_irq && devi->running && + if (devi->pd_irq && devi->running && devi->drv->handler(devi)) return; /* @@ -775,7 +948,7 @@ oldmap = *mp; mp->flags = slt->rwmem|MDF_ACTIVE; #if 0 - printf("Rd at offs %d, size %d\n", (int)uio->uio_offset, + printf("Rd at win %d offs %d, size %d\n", win, (int)uio->uio_offset, uio->uio_resid); #endif while (uio->uio_resid && error == 0) { @@ -862,9 +1035,12 @@ struct mem_desc *mp; struct io_desc *ip; int s, err; + int pwval; /* beep is disabled until the 1st call of crdioctl() */ - pccard_beep_select(BEEP_ON); +#if 0 + pccard_beep_select(1); +#endif if (slt == 0 && cmd != PIOCRWMEM) return(ENXIO); @@ -989,6 +1165,59 @@ else pccard_failure_beep(); return err; + /* + * Virtual removal/insertion + * + * State of cards: + * + * insertion virtual removal + * (empty) --------> (filled) --------> (inactive) + * ^ ^ | ^ | | + * | | | | | | + * | +---------------+ +-----------------+ | + * | removal virtual insertion | + * | | + * +----------------------------------------+ + * removal + * + * -- hosokawa + */ + case PIOCSVIR: + pwval = *(int *)data; + /* virtual removal */ + if (!pwval) { + if (slt->state != filled) { + return EINVAL; + } + s = splhigh(); + disable_slot(slt); + slt->state = inactive; + splx(s); + pccard_remove_beep(); +#if 0 + timeout(enable_beep, (void *)NULL, hz/5); +#endif + selwakeup(&slt->selp); + } + /* virtual insertion */ + else { + if (slt->state != inactive) { + return EINVAL; + } + slt->insert_seq = 1; + timeout(inserted, (void *)slt, hz/4); + pccard_insert_beep(); +#if 0 + timeout(enable_beep, (void *)NULL, hz/5); +#endif + break; + } + break; + case PIOCSBEEP: + if (pccard_beep_select(*(int *)data)) { + return EINVAL; + } + break; } return(0); } @@ -1065,3 +1294,184 @@ } SYSINIT(crddev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,crd_drvinit,NULL) + +#ifdef NECMG +#include + +int necmg_pccard_enabled = 0; + +int +necmg_pccard_enabler(struct slot *sp) +{ +#define ENABLER_MEM 0xd0000 /* memory window(temporally use)*/ +#define ENABLER_UNIT 0 /* wdc0 primary IDE controller */ +#define ENABLER_IRQ 14 /* IRQ */ +#define ENABLER_IO_ADDR 0x1f0 /* I/O address */ +#define ENABLER_IO_SIZE 8 /* I/O length */ + + struct { + char *name; + int config_index; + int reset_time; + int io_flags; + } *conf = NULL, conf_table[] = { + { "SunDisk SDP", 2, 50*1000, IODF_WS | IODF_16BIT |IODF_CS16 }, + { "HITACHI FLASH", 2, 50*10000, IODF_WS | IODF_16BIT |IODF_CS16 }, + { "PCMCIA VFAC", 2, 50*1000, IODF_WS | IODF_16BIT |IODF_CS16 }, + + /* This line must be last one. */ + { "default", 2, 50*1000, IODF_WS | IODF_16BIT |IODF_CS16 } + }; + struct dev_desc dd; + int dev = sp->slotnum; + unsigned char tuple_code, tuple_len; + unsigned long config_reg = 0; + unsigned char func_id = 0; + unsigned char regmask; + char card_name[255]; + unsigned char *mem = (unsigned char *)(ENABLER_MEM + atdevbase - 0xA0000); + int i, j; + int s = splhigh(); + + sp->mem[0].window = 0; + sp->mem[0].flags = MDF_ATTR | MDF_ACTIVE; + sp->mem[0].start = (caddr_t)kvtop(mem); + sp->mem[0].size = PCCARD_MEMSIZE; + sp->mem[0].card = 0; + sp->ctrl->mapmem(sp, 0); + + card_name[0] = '\0'; + i = 0; + while (i < 1024*2) { + if ((tuple_code = mem[i]) == CIS_END) { + break; + } + if (tuple_code == CIS_NULL) { + i += 2; + continue; + } + tuple_len = mem[i + 2]; + + switch (tuple_code) { + case CIS_INFO_V1: + { + unsigned char *src = &mem[i+8], *dst = card_name; + while (*src != 0xff) { + *dst++ = *src ? *src : ' '; + src += 2; + } + *dst = '\0'; + } + break; + case CIS_CONF_MAP: + config_reg = mem[i + 10] * 256 + mem[i + 8]; + regmask = mem[i + 12]; + break; + case CIS_FUNC_ID: + func_id = mem[i + 4]; + break; +#ifdef NECMG_DEBUG + case CIS_CONFIG: + printf("CIS_CONFIG: "); + for (j = 0; j <= tuple_len; j++) { + printf("%02x ", mem[i + j*2]); + } + printf("\n"); + break; +#endif /* NECMG_DEBUG */ + } + i += 4 + tuple_len * 2; + } + for (i = 0; i < sizeof(conf_table)/sizeof(*conf_table); i++) { + if (bcmp(card_name, conf_table[i].name, strlen(conf_table[i].name)) == 0) { + conf = &conf_table[i]; + break; + } + } + if (conf == NULL) { + if (!necmg_pccard_enabled || func_id != 4) + printf("Unknown card, %s on slot %d.", card_name, sp->slotnum); + if (func_id == 4) { + /* ATA card function id */ + if (!necmg_pccard_enabled) + printf(" -- Try with default settings.\n"); + conf = &conf_table[sizeof(conf_table)/sizeof(*conf_table) - 1]; + } else { + printf(" function id = %d.\n", func_id); + printf("\n"); + splx(s); + return (0); + } + } + if (necmg_pccard_enabled) { + /* + printf("Already enabled, good bye.\n"); + return (0); + */ + } + /* + * config regster setup + */ + if (!necmg_pccard_enabled) + printf("pccard: enable %s on slot %d.\n", card_name, sp->slotnum); + + sp->mem[0].card = config_reg; + sp->ctrl->mapmem(sp, 0); + mem[config_reg % PCCARD_MEMSIZE] = 0x80; + DELAY(conf->reset_time); + mem[config_reg % PCCARD_MEMSIZE] = 0x00; + DELAY(conf->reset_time); + mem[config_reg % PCCARD_MEMSIZE] = (conf->config_index | 0x40); + DELAY(conf->reset_time); + if (regmask & 0x2) { + /*printf("Setting CCSR reg to 0x%x\n", 0);*/ + mem[config_reg % PCCARD_MEMSIZE + 4] = 0; + } + DELAY(4000); + + /* unmap attribute memory */ + sp->mem[0].flags = 0; + sp->ctrl->mapmem(sp, 0); + + /* + * assign mem + */ + /* no memory */ + + /* + * assign I/O + */ + sp->io[0].window = 0; + sp->io[0].flags = conf->io_flags | IODF_ACTIVE; + sp->io[0].start = ENABLER_IO_ADDR; + sp->io[0].size = ENABLER_IO_SIZE; + sp->ctrl->mapio(sp, 0); + + if (!necmg_pccard_enabled) { + /* + * assign driver + */ + strcpy(dd.name, "wdc"); + dd.unit = ENABLER_UNIT; + dd.irqmask = 1 << ENABLER_IRQ; + dd.flags = 0x80; + dd.mem = 0; + dd.memsize = 0; + dd.iobase = ENABLER_IO_ADDR; + + if (allocate_driver(sp, &dd) != 0) { + printf("driver allocation failed\n"); + } else { + necmg_pccard_enabled = 1; + wakeup(&necmg_pccard_enabled); + } + } else { + if (0 < sp->irqref) { + sp->ctrl->mapirq(sp, sp->irq); + } + } + + splx(s); + return (0); /* XXX */ +} +#endif /* NECMG */ diff -urN sys.2.2.8-RELEASE/pccard/pccard_beep.c sys/pccard/pccard_beep.c --- sys.2.2.8-RELEASE/pccard/pccard_beep.c Thu Oct 30 09:38:25 1997 +++ sys/pccard/pccard_beep.c Tue Dec 22 13:55:05 1998 @@ -12,6 +12,11 @@ #include +#undef PCCARD_BEEP +#ifndef PCCARD_BEEP +#define PCCARD_BEEP 2 +#endif /* !PCCARD_BEEP */ + #define PCCARD_BEEP_PITCH0 1600 #define PCCARD_BEEP_DURATION0 20 #define PCCARD_BEEP_PITCH1 1200 @@ -19,6 +24,113 @@ #define PCCARD_BEEP_PITCH2 3200 #define PCCARD_BEEP_DURATION2 40 +static void pccard_insert_beep_type0(void) +{ + /* dummy */ +} + +static void pccard_remove_beep_type0(void) +{ + /* dummy */ +} + +static void pccard_success_beep_type0(void) +{ + /* dummy */ +} + +static void pccard_failure_beep_type0(void) +{ + /* dummy */ +} + + +static void pccard_insert_beep_type1(void) +{ + sysbeep(PCCARD_BEEP_PITCH0, PCCARD_BEEP_DURATION0); +} + +static void pccard_remove_beep_type1(void) +{ + sysbeep(PCCARD_BEEP_PITCH0, PCCARD_BEEP_DURATION0); +} + +static void pccard_success_beep_type1(void) +{ + sysbeep(PCCARD_BEEP_PITCH1, PCCARD_BEEP_DURATION1); +} + +static void pccard_failure_beep_type1(void) +{ + sysbeep(PCCARD_BEEP_PITCH2, PCCARD_BEEP_DURATION2); +} + +static void pccard_insert_beep0_type2(void *dummy) +{ + sysbeep_cancel(); + sysbeep(1200, 5); +} + +static void pccard_insert_beep_type2(void) +{ + sysbeep(1600, 20); + timeout(pccard_insert_beep0_type2, NULL, hz / 10); +} + +static void pccard_remove_beep0_type2(void *dummy) +{ + sysbeep_cancel(); + sysbeep(1600, 5); +} + +static void pccard_remove_beep_type2(void) +{ + sysbeep(1200, 20); + timeout(pccard_remove_beep0_type2, NULL, hz / 10); +} + +static void pccard_success_beep1_type2(void *dummy) +{ + sysbeep_cancel(); + sysbeep(800, 15); +} + +static void pccard_success_beep0_type2(void *dummy) +{ + sysbeep_cancel(); + sysbeep(1000, 20); + timeout(pccard_success_beep1_type2, NULL, hz / 15); +} + +static void pccard_success_beep_type2(void) +{ + sysbeep(1200, 20); + timeout(pccard_success_beep0_type2, NULL, hz / 15); +} + +static void pccard_failure_beep1_type2(void *dummy) +{ + sysbeep_cancel(); + sysbeep(2800, 15); +} + +static void pccard_failure_beep0_type2(void *dummy) +{ + sysbeep_cancel(); + sysbeep(2400, 20); + timeout(pccard_failure_beep1_type2, NULL, hz / 15); +} +static void pccard_failure_beep_type2(void) +{ + sysbeep(2000, 20); + timeout(pccard_failure_beep0_type2, NULL, hz / 15); +} + +static void (*insert)(void) = pccard_insert_beep_type0; +static void (*remove)(void) = pccard_remove_beep_type0; +static void (*success)(void) = pccard_success_beep_type0; +static void (*failure)(void) = pccard_failure_beep_type0; + static enum beepstate allow_beep = BEEP_OFF; /* @@ -33,6 +145,58 @@ allow_beep = 1; } +#ifdef PCCARD_BEEP +int pccard_beep_select(int type) +{ + int errcode = 0; + + switch (type) { + case 0: + insert = pccard_insert_beep_type0; + remove = pccard_remove_beep_type0; + success = pccard_success_beep_type0; + failure = pccard_failure_beep_type0; + break; + case 1: + insert = pccard_insert_beep_type1; + remove = pccard_remove_beep_type1; + success = pccard_success_beep_type1; + failure = pccard_failure_beep_type1; + break; + case 2: + insert = pccard_insert_beep_type2; + remove = pccard_remove_beep_type2; + success = pccard_success_beep_type2; + failure = pccard_failure_beep_type2; + break; + default: + errcode = 1; + break; + } + return errcode; +} + +void pccard_insert_beep(void) +{ + insert(); +} + +void pccard_remove_beep(void) +{ + remove(); +} + +void pccard_success_beep(void) +{ + success(); +} + +void pccard_failure_beep(void) +{ + failure(); +} + +#else void pccard_insert_beep(void) { if (allow_beep == BEEP_ON) { @@ -65,3 +229,4 @@ { allow_beep = state; } +#endif /* PCCARD_BEEP */ diff -urN sys.2.2.8-RELEASE/pccard/pcic.c sys/pccard/pcic.c --- sys.2.2.8-RELEASE/pccard/pcic.c Tue Apr 21 00:05:09 1998 +++ sys/pccard/pcic.c Tue Dec 22 13:55:05 1998 @@ -30,9 +30,12 @@ /* * pcic98 : PC9801 original PCMCIA controller code for NS/A,Ne,NX/C,NR/L. - * by Noriyuki Hosobuchi + * by Noriyuki Hosobuchi . */ +#include "pcic.h" +#if NPCIC > 0 + #include #include #include @@ -43,22 +46,42 @@ #include #include -#include +#include #ifdef PC98 #include #endif - #include #include #include +#include +/* + * TODO + * change driver.h -> pccardvar.h ?? + * (include struct pccard_device) + * (include struct pccard_devinfo) + * change slot.h -> pccardbus.h ?? + * (or merge to pccardvar.h) + */ + +#include "pci.h" +#if NPCI > 0 +#include +#include +#endif + + +#define CIRRUSHACK_FLAGS 0x1 /* * Prototypes for interrupt handler. */ -static void pcicintr __P((int unit)); static int pcic_ioctl __P((struct slot *, int, caddr_t)); static int pcic_power __P((struct slot *)); +#ifndef NECMG static timeout_t pcic_reset; +#else /* NECMG */ +static timeout_t necmg_pcic_reset; +#endif /* NECMG */ static void pcic_resume(struct slot *); static void pcic_disable __P((struct slot *)); static void pcic_mapirq __P((struct slot *, int)); @@ -68,28 +91,95 @@ #endif static int pcic_memory(struct slot *, int); static int pcic_io(struct slot *, int); -static u_int build_freelist(u_int); +#ifdef CB_TEST +static void pcic_status __P((struct slot *)); +static int cardbus_power __P((struct slot *)); +static int cardbus_memory(struct slot *, int); +static void cardbus_status __P((struct slot *)); +#endif /* CB_TEST */ +#ifdef PC98 +/* local functions for PC98 Original PC-Card controller */ +static int pcic98_power __P((struct slot *)); +static void pcic98_mapirq __P((struct slot *, int)); +static int pcic98_memory(struct slot *, int); +static int pcic98_io(struct slot *, int); +static timeout_t pcic98_reset; +static void pcic98_disable __P((struct slot *)); +static void pcic98_resume(struct slot *); +#endif /*PC98*/ /* * Per-slot data table. */ -static struct pcic_slot { - int slotnum; /* My slot number */ - int index; /* Index register */ - int data; /* Data register */ - int offset; /* Offset value for index */ - char controller; /* Device type */ - char revision; /* Device Revision */ - struct slot *slt; /* Back ptr to slot */ - u_char (*getb)(struct pcic_slot *, int); - void (*putb)(struct pcic_slot *, int, u_char); - u_char *regs; /* Pointer to regs in mem */ -} pcic_slots[PCIC_MAX_SLOTS]; +static struct pcic_slot pcic_slots[MAXSLOT]; -static int pcic_irq; +static int pcic_irq = 0; /*the control irq for pcic first seen*/ static unsigned pcic_imask; -static struct slot_ctrl cinfo; +static struct slot_ctrl controller_info[NPCIC]; + +static int pcic_slotnum = 0; +static int pcic_unit = 0; +#ifdef PC98 +static u_char pcic98_last_reg1; +#endif /*PC98*/ + +#include "isa.h" +#if NISA > 0 +static int pcic_isa_probe __P((struct isa_device *)); +static int pcic_isa_attach __P((struct isa_device *)); +struct isa_driver pcicdriver = { + pcic_isa_probe, pcic_isa_attach, "pcic", 0 +}; + +static int +pcic_isa_probe(isa_dev) + struct isa_device *isa_dev; +{ + int ports, irq, i; + struct slot_ctrl *cinfo; + + /* isa_dev->id_unit check*/ + if (isa_dev->id_unit >= NPCIC) + return 0; + + /* initialize controller info */ + cinfo = &controller_info[isa_dev->id_unit]; + + /* used unit check*/ + if (cinfo->slot_use == 'u') { + /* already attached */ + return 0; + } + + /* isa_dev->id_irq is in "mask" style */ + irq = 0; + for (i = 0; i < 16; i++) { + if ((1 << i) & isa_dev->id_irq) { + irq = i; + break; + } + } + + ports = pcic_probe(cinfo, isa_dev->id_iobase, irq); + + return ports; +} + +static int +pcic_isa_attach(dev) + struct isa_device *dev; +{ + int irq; + struct slot_ctrl *cinfo; + + cinfo = &controller_info[dev->id_unit]; + + pcic_attach(cinfo, dev->id_flags); + + return 1; /*XXX*/ +} +#endif /* NISA */ /* * Internal inline functions for accessing the PCIC. @@ -107,8 +197,35 @@ static __inline unsigned char getb2(struct pcic_slot *sp, int reg) { + return (sp->regs[reg + 0x800]); +} + +static __inline unsigned char +getb(struct pcic_slot *sp, int reg) +{ + return sp->getb(sp, reg); +} + +#ifdef CB_TEST +static __inline unsigned char +cb_getb(struct pcic_slot *sp, int reg) +{ return (sp->regs[reg]); } + +static __inline u_long +cb_getl(struct pcic_slot *sp, int reg) +{ + u_long val = 0u; + + val |= sp->regs[reg+3] << 24; + val |= sp->regs[reg+2] << 16; + val |= sp->regs[reg+1] << 8; + val |= sp->regs[reg]; + + return val; +} +#endif /* CB_TEST */ /* * Write a register on the PCIC @@ -123,9 +240,32 @@ static __inline void putb2(struct pcic_slot *sp, int reg, unsigned char val) { + sp->regs[reg + 0x800] = val; +} + +static __inline void +putb(struct pcic_slot *sp, int reg, unsigned char val) +{ + sp->putb(sp, reg, val); +} + +#ifdef CB_TEST +static __inline void +cb_putb(struct pcic_slot *sp, int reg, unsigned char val) +{ sp->regs[reg] = val; } +static __inline void +cb_putl(struct pcic_slot *sp, int reg, u_long val) +{ + sp->regs[reg] = val & 0xFF; + sp->regs[reg+1] = (val >> 8) & 0xFF; + sp->regs[reg+2] = (val >> 16) & 0xFF; + sp->regs[reg+3] = (val >> 24) & 0xFF; +} +#endif /* CB_TEST */ + /* * Clear bit(s) of a register. */ @@ -165,6 +305,22 @@ */ MOD_MISC(pcic); +#ifndef PCIC_INTR +#define PCIC_INTR (1 << PCIC_IRQ) +#endif + +#if NISA > 0 +static struct isa_device isa_devtab_pcic[] = { +{ 0, &pcicdriver, IO_PCIC1, PCIC_INTR, -1, (caddr_t) 0, 0, pcicintr, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, +#ifndef PC98 +{ 0, &pcicdriver, IO_PCIC3, PCIC_INTR, -1, (caddr_t) 0, 0, pcicintr, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, +{ 0, &pcicdriver, IO_PCIC2, 0, -1, (caddr_t) 0, 0, NULL, 1, 0, 0, 0, 0, 0, 1, 0, 0 }, +{ 0, &pcicdriver, IO_PCIC3, 0, -1, (caddr_t) 0, 0, NULL, 1, 0, 0, 0, 0, 0, 1, 0, 0 }, +#endif /*!PC98*/ +0 +}; +#endif + /* * Module handler that processes loads and unloads. * Once the module is loaded, the probe routine @@ -174,6 +330,13 @@ pcic_handle(struct lkm_table *lkmtp, int cmd) { int err = 0; /* default = success*/ + int found = 0; +#if NISA > 0 + struct isa_device *dvp; +#endif +#if NPCI > 0 + extern struct pci_device pcic_pci_driver; +#endif switch(cmd) { case LKM_E_LOAD: @@ -183,11 +346,31 @@ */ if (lkmexists(lkmtp)) return(EEXIST); + + bzero(pcic_slots, sizeof(pcic_slots)); + /* * Call the probe routine to find the slots. If * no slots exist, then don't bother loading the module. */ - if (pcic_probe() == 0) +#if NPCI > 0 + /* PCI PCIC probe */ + if (pci_register_lkm (&pcic_pci_driver, 0) == 0) { +#if 0 + found++; +#endif + } +#endif +#if NISA > 0 + /* ISA PCIC probe */ + for (dvp = isa_devtab_pcic; dvp->id_driver; dvp++) + if (pcic_isa_probe(dvp)) { + pcic_isa_attach(dvp); + found++; + } +#endif + + if (!found) return(ENODEV); break; /* Success*/ /* @@ -239,21 +422,24 @@ static int pcic_unload(struct lkm_table *lkmtp, int cmd) { - int slot; + int slot, unit; struct pcic_slot *sp = pcic_slots; untimeout(pcictimeout, 0); - if (pcic_irq) { - for (slot = 0; slot < PCIC_MAX_SLOTS; slot++, sp++) { - if (sp->slt) - sp->putb(sp, PCIC_STAT_INT, 0); - } - unregister_intr(pcic_irq, pcicintr); + for (slot = 0; slot < MAXSLOT; slot++, sp++) { + if (sp->slt) + putb(sp, PCIC_STAT_INT, 0); + if (sp->irq) + unregister_intr(sp->irq, pcicintr); + } + for (unit = 0; unit < NPCIC; unit++) { + struct slot_ctrl *cinfo = &controller_info[unit]; + + if (cinfo->slot_use == 'u') + pccard_remove_controller(cinfo); } - pccard_remove_controller(&cinfo); return(0); } - #endif /* LKM */ #if 0 @@ -280,43 +466,6 @@ } #endif -static void -nullfunc(int unit) -{ - /* empty */ -} - -static u_int -build_freelist(u_int pcic_mask) -{ - int irq; - u_int mask, freemask; - - /* No free IRQs (yet). */ - freemask = 0; - - /* Walk through all of the IRQ's and find any that aren't allocated. */ - for (irq = 1; irq < ICU_LEN; irq++) { - /* - * If the PCIC controller can't generate it, don't - * bother checking to see if it it's free. - */ - mask = 1 << irq; - if (!(mask & pcic_mask)) continue; - - /* See if the IRQ is free. */ - if (register_intr(irq, 0, 0, nullfunc, NULL, irq) == 0) { - /* Give it back, but add it to the mask */ - INTRMASK(freemask, mask); - unregister_intr(irq, nullfunc); - } - } -#ifdef PCIC_DEBUG - printf("Freelist of IRQ's <0x%x>\n", freemask); -#endif - return freemask; -} - /* * entry point from main code to map/unmap memory context. */ @@ -325,50 +474,7 @@ { struct pcic_slot *sp = slt->cdata; struct mem_desc *mp = &slt->mem[win]; - int reg = mp->window * PCIC_MEMSIZE + PCIC_MEMBASE; - -#ifdef PC98 - if (sp->controller == PCIC_PC98) { - if (mp->flags & MDF_ACTIVE) { - /* slot = 0, window = 0, sys_addr = 0xda000, length = 8KB */ - unsigned char x; - - if ((unsigned long)mp->start != 0xda000) { - printf("sys_addr must be 0xda000. requested address = 0x%x\n", - mp->start); - return(EINVAL); - } - - /* omajinai ??? */ - outb(PCIC98_REG0, 0); - x = inb(PCIC98_REG1); - x &= 0xfc; - x |= 0x02; - outb(PCIC98_REG1, x); - - outw(PCIC98_REG_PAGOFS, 0); - - if (mp->flags & MDF_ATTR) { - outb(PCIC98_REG6, inb(PCIC98_REG6) | PCIC98_ATTRMEM); - }else{ - outb(PCIC98_REG6, inb(PCIC98_REG6) & (~PCIC98_ATTRMEM)); - } - - outb(PCIC98_REG_WINSEL, PCIC98_MAPWIN); - -#if 0 - if (mp->flags & MDF_16BITS == 1) { /* 16bit */ - outb(PCIC98_REG2, inb(PCIC98_REG2) & (~PCIC98_8BIT)); - }else{ /* 8bit */ - outb(PCIC98_REG2, inb(PCIC98_REG2) | PCIC98_8BIT); - } -#endif - }else{ - outb(PCIC98_REG_WINSEL, PCIC98_UNMAPWIN); - } - return 0; - } -#endif /* PC98 */ + int reg = mp->window * PCIC_MEMSIZE + PCIC_MEMBASE0; if (mp->flags & MDF_ACTIVE) { unsigned long sys_addr = (unsigned long)mp->start >> 12; @@ -406,9 +512,9 @@ printf("Map window to sys addr 0x%x for %d bytes, card 0x%x\n", mp->start, mp->size, mp->card); printf("regs are: 0x%02x%02x 0x%02x%02x 0x%02x%02x flags 0x%x\n", - sp->getb(sp, reg), sp->getb(sp, reg+1), - sp->getb(sp, reg+2), sp->getb(sp, reg+3), - sp->getb(sp, reg+4), sp->getb(sp, reg+5), + getb(sp, reg), getb(sp, reg+1), + getb(sp, reg+2), getb(sp, reg+3), + getb(sp, reg+4), getb(sp, reg+5), mp->flags); #endif /* @@ -428,6 +534,14 @@ return(0); } +#ifdef CB_TEST +int +cardbus_memory(struct slot *slt, int win) +{ + return(0); +} +#endif /* CB_TEST */ + /* * pcic_io - map or unmap I/O context */ @@ -437,46 +551,7 @@ int mask, reg; struct pcic_slot *sp = slt->cdata; struct io_desc *ip = &slt->io[win]; -#ifdef PC98 - if (sp->controller == PCIC_PC98) { - unsigned char x; - -#if 0 - if (win =! 0) { - printf("pcic98:Illegal PCIC I/O window request(%d)!", win); - return(EINVAL); - } -#endif - if (ip->flags & IODF_ACTIVE) { - unsigned short base; - - x = inb(PCIC98_REG2) & 0x0f; - if (! (ip->flags & IODF_16BIT)) - x |= PCIC98_8BIT; - - if (ip->size > 16) /* 128bytes mapping */ - x |= PCIC98_MAP128; - - x |= PCIC98_IOMEMORY; - outb(PCIC98_REG2, x); - - base = 0x80d0; - outw(PCIC98_REG4, base); /* 98side IO base */ - outw(PCIC98_REG5, ip->start); /* card side IO base */ - -#ifdef PCIC_DEBUG - printf("pcic98: IO mapped 0x%04x(98) -> 0x%04x(Card) and width %d bytes\n", - base, ip->start, ip->size); -#endif - ip->start = base; - - }else{ - outb(PCIC98_REG2, inb(PCIC98_REG2) & (~PCIC98_IOMEMORY)); - } - return 0; - } -#endif switch (win) { case 0: mask = PCIC_IO0_EN; @@ -511,14 +586,14 @@ * Flags for window 0 in lower nybble, and in upper nybble * for window 1. */ - ioctlv = sp->getb(sp, PCIC_IOCTL); + ioctlv = getb(sp, PCIC_IOCTL); DELAY(100); switch (win) { case 0: - sp->putb(sp, PCIC_IOCTL, x | (ioctlv & 0xf0)); + putb(sp, PCIC_IOCTL, x | (ioctlv & 0xf0)); break; case 1: - sp->putb(sp, PCIC_IOCTL, (x << 4) | (ioctlv & 0xf)); + putb(sp, PCIC_IOCTL, (x << 4) | (ioctlv & 0xf)); break; } DELAY(100); @@ -533,64 +608,136 @@ return(0); } +#ifdef CB_TEST +extern struct cb_slot *get_cb_info(u_long iobase); +extern int get_pci_pcic_slots(u_long iobase); +#endif /* CB_TEST */ +#if NPCI > 0 +extern int get_pci_pcic_info(u_long iobase, pcici_t *tag); +extern char set_controller_info(pcici_t tag, struct slot_ctrl *cinfo); +#endif /* NPCI */ + /* * Look for an Intel PCIC (or compatible). * For each available slot, allocate a PC-CARD slot. */ - /* * VLSI 82C146 has incompatibilities about the I/O address * of slot 1. Assume it's the only PCIC whose vendor ID is 0x84, * contact Nate Williams if incorrect. + * rewrite: NAKAGAWA, Yoshihisa + */ +/* + * TODO: + * separate pcic_probe() and initialize + * merge pcic_probe() to pcic_isa_probe() */ int -pcic_probe(void) +pcic_probe(struct slot_ctrl *cinfo, int iobase, int irq) { int slotnum, i, validslots = 0; - u_int free_irqs; - struct slot *slt; struct pcic_slot *sp; unsigned char c; - static int maybe_vlsi = 0; + int maybe_vlsi = 0; + int iorange = 0; + char oc = 0; + int max_slots = pcic_slotnum > MAXSLOT - PCIC_MAX_SLOTS ? + MAXSLOT - pcic_slotnum : PCIC_MAX_SLOTS; +#if NPCI > 0 + pcici_t tag; + char pci_controller = -1; +#endif /* NPCI */ +#ifdef CB_TEST + int pci_slots; + + pci_slots = get_pci_pcic_slots(iobase); + if (pci_slots) max_slots = pci_slots; +#endif /* CB_TEST */ + + /* try to share slot irq */ + if (irq == 0 && pcic_irq) { + printf("pcic%d: sharing irq %d with other pcic\n", + pcic_unit, pcic_irq); + irq = pcic_irq; + } - /* Determine the list of free interrupts */ - free_irqs = build_freelist(PCIC_INT_MASK_ALLOWED); - /* * Initialise controller information structure. */ - cinfo.mapmem = pcic_memory; - cinfo.mapio = pcic_io; - cinfo.ioctl = pcic_ioctl; - cinfo.power = pcic_power; - cinfo.mapirq = pcic_mapirq; - cinfo.reset = pcic_reset; - cinfo.disable = pcic_disable; - cinfo.resume = pcic_resume; - cinfo.maxmem = PCIC_MEM_WIN; - cinfo.maxio = PCIC_IO_WIN; - cinfo.irqs = free_irqs; - cinfo.imask = &pcic_imask; - -#ifdef LKM - bzero(pcic_slots, sizeof(pcic_slots)); -#endif - sp = pcic_slots; - for (slotnum = 0; slotnum < PCIC_MAX_SLOTS; slotnum++, sp++) { + cinfo->mapmem = pcic_memory; + cinfo->mapio = pcic_io; +#ifdef CB_TEST + cinfo->status = pcic_status; +#endif /* CB_TEST */ + cinfo->ioctl = pcic_ioctl; + cinfo->power = pcic_power; + cinfo->mapirq = pcic_mapirq; +#ifndef NECMG + cinfo->reset = pcic_reset; +#else /* NECMG */ + cinfo->reset = necmg_pcic_reset; +#endif /* NECMG */ + cinfo->disable = pcic_disable; + cinfo->resume = pcic_resume; + cinfo->maxmem = PCIC_MEM_WIN; + cinfo->maxio = PCIC_IO_WIN; + cinfo->irqs = 0; /* set pccard.c */ + cinfo->imask = &pcic_imask; /* XXXX pccard.c ? */ + cinfo->slots = 0; + cinfo->name = "Unknown!"; +#ifdef CB_TEST + cinfo->cardbus = 0; +#endif /* CB_TEST */ + cinfo->next = NULL; + +id_recheck: + sp = &pcic_slots[pcic_slotnum]; + for (slotnum = 0; slotnum < max_slots; slotnum++, sp++) { /* * Initialise the PCIC slot table. */ - sp->getb = getb1; - sp->putb = putb1; - if (slotnum < 4) { - sp->index = PCIC_INDEX_0; - sp->data = PCIC_DATA_0; - sp->offset = slotnum * PCIC_SLOT_SIZE; +#if NPCI > 0 + if (get_pci_pcic_info(iobase, &tag)) { + /* override controller info */ + pci_controller = set_controller_info(tag, cinfo); + } +#endif /* NPCI */ +#ifdef CB_TEST + if (!cinfo->cardbus) { +#endif /* CB_TEST */ + sp->getb = getb1; + sp->putb = putb1; + sp->index = iobase; + sp->data = iobase + 1; + sp->regs = 0; +#ifdef CB_TEST } else { - sp->index = PCIC_INDEX_1; - sp->data = PCIC_DATA_1; - sp->offset = (slotnum - 4) * PCIC_SLOT_SIZE; + struct cb_slot *cb_info; + + cb_info = get_cb_info(iobase); + if (cb_info) { + cb_info += slotnum; + sp->regs = (u_char *)cb_info->cb_base; + } + sp->getb = getb2; + sp->putb = putb2; + sp->index = 0; + sp->data = 0; +#if 0 + sp->regs = (u_char *)iobase; + max_slots = 1; +#endif } +#endif /* CB_TEST */ + iorange = iorange < 2 ? 2 : iorange; + sp->offset = slotnum * PCIC_SLOT_SIZE; + sp->irq = irq; + +#ifdef CB_TEST + if (pci_controller >= 0) { + sp->controller = pci_controller; + } else { +#endif /* CB_TEST */ /* * XXX - Screwed up slot 1 on the VLSI chips. According to * the Linux PCMCIA code from David Hinds, working chipsets @@ -598,17 +745,20 @@ * ones would need to be probed at the new offset we set after * we assume it's broken. */ - if (slotnum == 1 && maybe_vlsi && sp->getb(sp, PCIC_ID_REV) != 0x84) { + if (maybe_vlsi && slotnum == 1) { sp->index += 4; sp->data += 4; sp->offset = PCIC_SLOT_SIZE << 1; + iorange = iorange < 6 ? 6 : iorange; } /* * see if there's a PCMCIA controller here * Intel PCMCIA controllers use 0x82 and 0x83 * IBM clone chips use 0x88 and 0x89, apparently */ - c = sp->getb(sp, PCIC_ID_REV); + c = getb(sp, PCIC_ID_REV); + if (bootverbose) + printf("PCIC ID = 0x%02x\n", (u_int)c); sp->revision = -1; switch(c) { /* @@ -624,7 +774,7 @@ outb(sp->index, 0x0E); outb(sp->index, 0x37); setb(sp, 0x3A, 0x40); - c = sp->getb(sp, PCIC_ID_REV); + c = getb(sp, PCIC_ID_REV); if (c & 0x08) { sp->controller = ((sp->revision = c & 7) == 4) ? PCIC_VG469 : PCIC_VG468 ; @@ -634,18 +784,21 @@ /* * Check for RICOH RF5C396 PCMCIA Controller */ - c = sp->getb(sp, 0x3a); + c = getb(sp, 0x3a); if (c == 0xb2) { sp->controller = PCIC_RF5C396; } break; /* - * VLSI chips. + * 82365DF or clones or VLSI. */ case 0x84: - sp->controller = PCIC_VLSI; - maybe_vlsi = 1; + if (!maybe_vlsi) { + sp->controller = PCIC_I82365DF; + } else { + sp->controller = PCIC_VLSI; + } break; case 0x88: case 0x89: @@ -654,18 +807,28 @@ break; case 0x8a: sp->controller = PCIC_IBM_KING; - sp->revision = c & 1; break; default: + /* + * check VLSI chips. + */ + if (slotnum == 1 && oc == PCIC_I82365DF) { + maybe_vlsi = 1; + validslots = 0; + goto id_recheck; + } continue; } + /* store old controller type */ + oc = sp->controller; + /* * Check for Cirrus logic chips. */ - sp->putb(sp, 0x1F, 0); - c = sp->getb(sp, 0x1F); + putb(sp, 0x1F, 0); + c = getb(sp, 0x1F); if ((c & 0xC0) == 0xC0) { - c = sp->getb(sp, 0x1F); + c = getb(sp, 0x1F); if ((c & 0xC0) == 0) { if (c & 0x20) sp->controller = PCIC_PD672X; @@ -674,47 +837,162 @@ sp->revision = 8 - ((c & 0x1F) >> 2); } } +#if NPCI > 0 + if (pci_controller >= 0) { + sp->controller = pci_controller; + } else { +#endif /* NPCI */ switch(sp->controller) { case PCIC_I82365: - cinfo.name = "Intel 82365"; + cinfo->name = "Intel 82365A/B"; + break; + case PCIC_I82365DF: + cinfo->name = "Intel 82365DF"; break; case PCIC_IBM: - cinfo.name = "IBM PCIC"; + cinfo->name = "IBM PCIC"; break; case PCIC_IBM_KING: - cinfo.name = "IBM KING PCMCIA Controller"; + cinfo->name = "IBM KING PCMCIA Controller"; break; case PCIC_PD672X: - cinfo.name = "Cirrus Logic PD672X"; + cinfo->name = "Cirrus Logic PD672X"; break; case PCIC_PD6710: - cinfo.name = "Cirrus Logic PD6710"; + cinfo->name = "Cirrus Logic PD6710"; break; case PCIC_VG468: - cinfo.name = "Vadem 468"; + cinfo->name = "Vadem 468"; break; case PCIC_VG469: - cinfo.name = "Vadem 469"; + cinfo->name = "Vadem 469"; break; case PCIC_RF5C396: - cinfo.name = "Ricoh RF5C396"; + cinfo->name = "Ricoh RF5C396"; break; case PCIC_VLSI: - cinfo.name = "VLSI 82C146"; + cinfo->name = "VLSI 82C146"; break; default: - cinfo.name = "Unknown!"; + cinfo->name = "Unknown!"; break; } +#if NPCI > 0 + } +#endif /* NPCI */ +#ifdef CB_TEST + } +#endif /* CB_TEST */ + validslots++; + } +#ifdef PC98 + if (validslots == 0) { + sp = &pcic_slots[pcic_slotnum]; + if (inb(PCIC98_REG0) != 0xff) { + sp->controller = PCIC_PC98; + sp->revision = 0; + cinfo->mapmem = pcic98_memory; + cinfo->mapio = pcic98_io; + cinfo->power = pcic98_power; + cinfo->mapirq = pcic98_mapirq; + cinfo->reset = pcic98_reset; + cinfo->disable = pcic98_disable; + cinfo->resume = pcic98_resume; + cinfo->name = "PC98 Original"; + cinfo->maxmem = 1; +#if 0 + cinfo->maxio = 1; +#else + cinfo->maxio = 2; /* fake for UE2212 LAN card */ +#endif + validslots++; + } + } +#endif /* PC98 */ + cinfo->slots = validslots; + + return validslots ? iorange : 0; +} + +/* + * This code is for a PC which the ExCA timing register isn't + * defined by BIOS. When you use this, it is necessary to write + * "flags 0x1" in a line of pcic? in kernel configuration file. + * Takeshi Shibagaki(shiba@jp.freebsd.org) + */ +static void +cirrus_hack(struct pcic_slot *sp) +{ + switch (sp->controller) { + case PCIC_PD6710: + case PCIC_PD672X: + sp->putb(sp, PCIC_TIME_SETUP0, 0x01); + sp->putb(sp, PCIC_TIME_CMD0, 0x06); + sp->putb(sp, PCIC_TIME_RECOV0, 0x03); + sp->putb(sp, PCIC_TIME_SETUP1, 0x01); + sp->putb(sp, PCIC_TIME_CMD1, 0x0f); + sp->putb(sp, PCIC_TIME_RECOV1, 0x03); + break; + case PCIC_PD6729: + sp->putb(sp, PCIC_TIME_SETUP0, 0x01); + sp->putb(sp, PCIC_TIME_CMD0, 0x05); + sp->putb(sp, PCIC_TIME_RECOV0, 0x00); + sp->putb(sp, PCIC_TIME_SETUP1, 0x01); + sp->putb(sp, PCIC_TIME_CMD1, 0x14); + sp->putb(sp, PCIC_TIME_RECOV1, 0x00); + break; + case PCIC_PD6832: + sp->putb(sp, PCIC_TIME_SETUP0, 0x00); + sp->putb(sp, PCIC_TIME_CMD0, 0x07); + sp->putb(sp, PCIC_TIME_RECOV0, 0x04); + sp->putb(sp, PCIC_TIME_SETUP1, 0x03); + sp->putb(sp, PCIC_TIME_CMD1, 0x1d); + sp->putb(sp, PCIC_TIME_RECOV1, 0x04); + break; + } + /* + * This code is to turn on speaker enable bit in + * the ExCA register. + * In fact, the bit must be defined by BIOS. + * I don't know a reason that the Low-Power Dynamic Mode + * enable bit turn on to '1'. + * Please justify, someone. + * Takeshi Shibagaki(shiba@jp.freebsd.org) + */ + switch (sp->controller) { + case PCIC_PD6710: + case PCIC_PD672X: + case PCIC_PD6729: + setb(sp, CL672X_PCIC_MISC2, CL672X_M2_LPDM_EN); + case PCIC_PD6832: + setb(sp, CL672X_PCIC_MISC1, CL672X_M1_SPKR_EN); + break; + } +} + +int +pcic_attach(struct slot_ctrl *cinfo, int flags) +{ + int slotnum, i; + struct slot *slt; + struct pcic_slot *sp; +#ifdef CB_TEST + struct cb_slot *cb_info; +#endif /* CB_TEST */ + + pccard_add_controller(cinfo); + sp = &pcic_slots[pcic_slotnum]; + for (slotnum = 0; slotnum < cinfo->slots; slotnum++, sp++) { /* * OK it seems we have a PCIC or lookalike. * Allocate a slot and initialise the data structures. */ - validslots++; sp->slotnum = slotnum; - slt = pccard_alloc_slot(&cinfo); + slt = pccard_alloc_slot(cinfo); if (slt == 0) continue; + printf("pcic%d: slot %d controller I/O address 0x%x\n", + pcic_unit, slotnum, sp->index); slt->cdata = sp; sp->slt = slt; /* @@ -723,29 +1001,31 @@ */ if (pcic_irq == 0) { pcic_imask = SWI_MASK; - pcic_irq = pccard_alloc_intr(free_irqs, - pcicintr, 0, &pcic_imask, NULL); - if (pcic_irq < 0) - printf("pcic: failed to allocate IRQ\n"); - else - printf("pcic: controller irq %d\n", pcic_irq); - } - /* - * Modem cards send the speaker audio (dialing noises) - * to the host's speaker. Cirrus Logic PCIC chips must - * enable this. There is also a Low Power Dynamic Mode bit - * that claims to reduce power consumption by 30%, so - * enable it and hope for the best. - */ - if (sp->controller == PCIC_PD672X) { - setb(sp, PCIC_MISC1, PCIC_SPKR_EN); - setb(sp, PCIC_MISC2, PCIC_LPDM_EN); + if (sp->irq) + pcic_irq = sp->irq; + else { + printf( +"pcic%d: no irq specified, no previous pcic irq found\n", pcic_unit); + } } + /* * Check for a card in this slot. */ +#ifdef PC98 + if(sp->controller == PCIC_PC98) { + pcic98_last_reg1 = inb(PCIC98_REG1); + if (pcic98_last_reg1 & PCIC98_CARDEXIST) { + /* PCMCIA card exist */ + slt->laststate = slt->state = filled; + pccard_event(sp->slt, card_inserted); + } else { + slt->laststate = slt->state = empty; + } + } else { +#endif /*PC98*/ setb(sp, PCIC_POWER, PCIC_PCPWRE| PCIC_DISRST); - if ((sp->getb(sp, PCIC_STATUS) & PCIC_CD) != PCIC_CD) { + if ((getb(sp, PCIC_STATUS) & PCIC_CD) != PCIC_CD) { slt->laststate = slt->state = empty; } else { slt->laststate = slt->state = filled; @@ -754,47 +1034,27 @@ /* * Assign IRQ for slot changes */ - if (pcic_irq > 0) - sp->putb(sp, PCIC_STAT_INT, (pcic_irq << 4) | 0xF); - } + if (sp->irq > 0) + putb(sp, PCIC_STAT_INT, (sp->irq << 4) | 0xF); + /* + * If flags 0x1 is defined in kernel configuration file, + * jump to cirrus pcic specific code. + */ + if((flags & CIRRUSHACK_FLAGS) == CIRRUSHACK_FLAGS) + cirrus_hack(sp); #ifdef PC98 - if (validslots == 0) { - sp = pcic_slots; - slotnum = 0; - if (inb(PCIC98_REG0) != 0xff) { - sp->controller = PCIC_PC98; - sp->revision = 0; - cinfo.name = "PC98 Original"; - cinfo.maxmem = 1; - cinfo.maxio = 1; -/* cinfo.irqs = PCIC_INT_MASK_ALLOWED;*/ - cinfo.irqs = 0x1468; - validslots++; - sp->slotnum = slotnum; - - slt = pccard_alloc_slot(&cinfo); - if (slt == 0) { - printf("pcic98: slt == NULL\n"); - goto pcic98_probe_end; - } - slt->cdata = sp; - sp->slt = slt; - - /* Check for a card in this slot */ - if (inb(PCIC98_REG1) & PCIC98_CARDEXIST) { - /* PCMCIA card exist */ - slt->laststate = slt->state = filled; - pccard_event(sp->slt, card_inserted); - } else { - slt->laststate = slt->state = empty; } - } - pcic98_probe_end: +#endif /*PC98*/ } -#endif /* PC98 */ - if (validslots) + if (cinfo->slots) { timeout(pcictimeout, 0, hz/2); - return(validslots); + cinfo->slot_use = 'u'; + } + + pcic_slotnum += cinfo->slots; + pcic_unit++; + + return 1; } /* @@ -813,16 +1073,85 @@ */ case PIOCGREG: ((struct pcic_reg *)data)->value = - sp->getb(sp, ((struct pcic_reg *)data)->reg); + getb(sp, ((struct pcic_reg *)data)->reg); break; case PIOCSREG: - sp->putb(sp, ((struct pcic_reg *)data)->reg, + putb(sp, ((struct pcic_reg *)data)->reg, ((struct pcic_reg *)data)->value); break; } return(0); } +#ifdef CB_TEST +/* + * pcic_status - Get slot status + */ +static void +pcic_status(struct slot *slt) +{ + struct pcic_slot *sp = slt->cdata; + unsigned char reg; + int stschg = 0, detect = 0, power = 0; + int ready = 0; + + reg = getb(sp, PCIC_STATUS); + if ((reg & PCIC_CD) == PCIC_CD) + detect = 1; + if (reg & PCIC_POW) + power = 1; + if (reg & PCIC_READY) + ready = 1; + + if (sp->controller == PCIC_PD672X) { + reg = getb (sp, CL672X_PCIC_MISC1); + if (!(reg & CL672X_M1_5V_DET)) + slt->pwr.vcc = 33; + } + if (sp->controller == PCIC_VG469) { + reg = getb (sp, VG469_VSENSE); + if (slt->ctrl->slots & 1) { + if (!(reg & VG469_VSENSE_B_VS1)) + slt->pwr.vcc = 33; + } else { + if (!(reg & VG469_VSENSE_A_VS1)) + slt->pwr.vcc = 33; + } + } + + return; +} + +void +cardbus_status(struct slot *slt) +{ + struct pcic_slot *sp = slt->cdata; + u_long reg; + int stschg = 0, detect = 0, power = 0, cardbus = 0; + int ready = 0; + + if (slt->ctrl->cardbus) { + reg = cb_getl(sp, CB_PRESENT_STATE); + if (reg & CB_CSTSCHG) + stschg = 1; + if (!(reg & CB_CCD1) && !(reg & CB_CCD2)) + detect = 1; + if (reg & CB_POWER_CYCLE) { + power = 1; + ready = 1; + } + if (reg & CB_CB_CARD) + cardbus = 1; + if (reg & CB_5V_CARD) + slt->pwr.vcc = 50; + if (reg & CB_3V_CARD) + slt->pwr.vcc = 33; + } + + return; +} +#endif /* CB_TEST */ + /* * pcic_power - Enable the power of the slot according to * the parameters in the power structure(s). @@ -834,35 +1163,8 @@ struct pcic_slot *sp = slt->cdata; switch(sp->controller) { -#ifdef PC98 - case PCIC_PC98: - reg = inb(PCIC98_REG6) & (~PCIC98_VPP12V); - switch(slt->pwr.vpp) { - default: - return(EINVAL); - case 50: - break; - case 120: - reg |= PCIC98_VPP12V; - break; - } - outb(PCIC98_REG6, reg); - DELAY(100*1000); - - reg = inb(PCIC98_REG2) & (~PCIC98_VCC3P3V); - switch(slt->pwr.vcc) { - default: - return(EINVAL); - case 33: - reg |= PCIC98_VCC3P3V; - break; - case 50: - break; - } - outb(PCIC98_REG2, reg); - DELAY(100*1000); - return (0); -#endif + case PCIC_PD6832: + case PCIC_PD6729: case PCIC_PD672X: case PCIC_PD6710: case PCIC_VG468: @@ -870,6 +1172,12 @@ case PCIC_RF5C396: case PCIC_VLSI: case PCIC_IBM_KING: + case PCIC_I82365DF: + case PCIC_TI1130: + case PCIC_TI1131: + case PCIC_TI1220: + case PCIC_TI1221: + case PCIC_TI1250: switch(slt->pwr.vpp) { default: return(EINVAL); @@ -898,34 +1206,34 @@ (sp->controller == PCIC_VG469)) setb(sp, 0x2f, 0x03) ; else - setb(sp, 0x16, 0x02); + setb(sp, PCIC_CDGC, 0x02); break; case 50: - if (sp->controller == PCIC_IBM_KING) { - reg |= PCIC_VCC_5V_KING; - break; - } + if (sp->controller == PCIC_IBM_KING) { + reg |= PCIC_VCC_5V_KING; + break; + } reg |= PCIC_VCC_5V; if ((sp->controller == PCIC_VG468)|| (sp->controller == PCIC_VG469)) clrb(sp, 0x2f, 0x03) ; else - clrb(sp, 0x16, 0x02); + clrb(sp, PCIC_CDGC, 0x02); break; } break; } - sp->putb(sp, PCIC_POWER, reg); + putb(sp, PCIC_POWER, reg); DELAY(300*1000); if (slt->pwr.vcc) { reg |= PCIC_OUTENA; - sp->putb(sp, PCIC_POWER, reg); + putb(sp, PCIC_POWER, reg); DELAY(100*1000); } /* Some chips are smarter than us it seems, so if we weren't * allowed to use 5V, try 3.3 instead */ - if (!(sp->getb(sp, PCIC_STATUS) & 0x40) && slt->pwr.vcc == 50) { + if (!(getb(sp, PCIC_STATUS) & 0x40) && slt->pwr.vcc == 50) { slt->pwr.vcc = 33; slt->pwr.vpp = 0; return (pcic_power(slt)); @@ -933,6 +1241,67 @@ return(0); } +#ifdef CB_TEST +int +cardbus_power(struct slot *slt) +{ + u_long reg = 0u; + struct pcic_slot *sp = slt->cdata; + struct slot_ctrl *cinfo = slt->ctrl; + u_int16_t brgcntl; + + if (slt->ctrl->cardbus) { + switch(slt->pwr.vpp) { + default: + return(EINVAL); + case 0: + break; + case 50: + reg |= CB_VPP_5V; + break; + case 33: + reg |= CB_VPP_3V; + break; + case 120: + reg |= CB_VPP_12V; + break; + } + switch(slt->pwr.vcc) { + default: + return(EINVAL); + case 0: + break; + case 50: + reg |= CB_VCC_5V; + break; + case 33: + reg |= CB_VCC_3V; + break; + } + if (reg != cb_getl(sp, CB_CONTROL)) { + cb_putl(sp, CB_CONTROL, reg); + DELAY(100*1000); + } + + /* Bridge Control */ +#if 0 /* XXXX */ + brgcntl = pci_cfgread(cinfo->tag, CB_PCI_BRIDGE_CTRL, 2); + brgcntl &= ~CB_BCR_CB_RESET; + pci_cfgwrite(cinfo->tag, CB_PCI_BRIDGE_CTRL, brgcntl, 2); +#endif + +#if 1 + reg = cb_getl(sp, CB_PRESENT_STATE); + if (reg & CB_POWER_CYCLE) + printf("powered up\n"); + else + printf("not yet powered up\n"); +#endif + } + return(0); +} +#endif /* CB_TEST */ + /* * tell the PCIC which irq we want to use. only the following are legal: * 3, 4, 5, 7, 9, 10, 11, 12, 14, 15 @@ -941,41 +1310,62 @@ pcic_mapirq(struct slot *slt, int irq) { struct pcic_slot *sp = slt->cdata; -#ifdef PC98 - if (sp->controller == PCIC_PC98) { - unsigned char x; - switch (irq) { - case 3: - x = PCIC98_INT0; break; - case 5: - x = PCIC98_INT1; break; - case 6: - x = PCIC98_INT2; break; - case 10: - x = PCIC98_INT4; break; - case 12: - x = PCIC98_INT5; break; - case 0: /* disable */ - x = PCIC98_INTDISABLE; - break; - default: - printf("pcic98: illegal irq %d\n", irq); - return; - } -#ifdef PCIC_DEBUG - printf("pcic98: irq=%d mapped.\n", irq); -#endif - outb(PCIC98_REG3, x); + u_char x; - return; - } -#endif if (irq == 0) clrb(sp, PCIC_INT_GEN, 0xF); else - sp->putb(sp, PCIC_INT_GEN, - (sp->getb(sp, PCIC_INT_GEN) & 0xF0) | irq); + putb(sp, PCIC_INT_GEN, + (getb(sp, PCIC_INT_GEN) & 0xF0) | irq); +#if NPCI > 0 + switch (sp->controller) { + /* CLPD-6832 ISA-mode interrupt support (experimental) */ + case PCIC_PD6832: + /* Read "Misc Control 3" register of PD-6832 */ + putb(sp, CL6832_ExCA_EXTEND_INDEX, CL6832_ExCA_EXT_MISC3); + x = getb(sp, CL6832_ExCA_EXTEND_DATA); +#if 1 +printf("Experimental clpd-6832 support:\n"); +printf("please send the following messages to hosokawa@jp.FreeBSD.org\n"); +printf("Misc 3 register is 0x%x\n", (u_int)x); +#endif + x = ((x & ~0x3) | 0x1); /* set "external hardware" bit */ +#if 1 +printf("Set Misc 3 register to 0x%x\n", (u_int)x); +#endif + putb(sp, CL6832_ExCA_EXTEND_INDEX, CL6832_ExCA_EXT_MISC3); + putb(sp, CL6832_ExCA_EXTEND_DATA, x); + + /* check it again */ + putb(sp, CL6832_ExCA_EXTEND_INDEX, CL6832_ExCA_EXT_MISC3); + x = getb(sp, CL6832_ExCA_EXTEND_DATA); +#if 1 +printf("Misc 3 register is 0x%x\n", (u_int)x); +#endif + } +#endif /* NPCI > 0 */ +} + +#ifdef CB_TEST +static void +cardbus_print_register(struct slot *slt) +{ + struct pcic_slot *sp = (struct pcic_slot *)slt->cdata; + + if (slt->ctrl->cardbus) { + int i; + + printf ("Cardbus Socket registers:\n"); + printf("00: "); + for (i=0;i<16;i+=4) + printf(" %08x:", cb_getl(sp, i)); + printf("\n10: "); + for (i=16;i<32;i+=4) + printf(" %08x:", cb_getl(sp, i)); + printf("\n"); + } } +#endif /* CB_TEST */ /* * pcic_reset - Reset the card and enable initial power. @@ -986,19 +1376,13 @@ struct slot *slt = chan; struct pcic_slot *sp = slt->cdata; -#ifdef PC98 - if (sp->controller == PCIC_PC98) { - outb(PCIC98_REG0, 0); - outb(PCIC98_REG2, inb(PCIC98_REG2) & (~PCIC98_IOMEMORY)); - outb(PCIC98_REG3, PCIC98_INTDISABLE); - outb(PCIC98_REG2, inb(PCIC98_REG2) & (~PCIC98_VCC3P3V)); - outb(PCIC98_REG6, inb(PCIC98_REG6) & (~PCIC98_VPP12V)); - outb(PCIC98_REG1, 0); - - selwakeup(&slt->selp); - return; +#ifdef CB_TEST + if (bootverbose) { + printf("pcic_reset\n"); + cardbus_print_register(slt); } -#endif +#endif /* CB_TEST */ + switch (slt->insert_seq) { case 0: /* Something funny happended on the way to the pub... */ return; @@ -1013,20 +1397,12 @@ timeout(pcic_reset, (void *)slt, hz/4); return; case 3: /* Wait if card needs more time */ - if (!sp->getb(sp, PCIC_STATUS) & PCIC_READY) { + if (!getb(sp, PCIC_STATUS) & PCIC_READY) { timeout(pcic_reset, (void *)slt, hz/10); return; } } slt->insert_seq = 0; - if (sp->controller == PCIC_PD672X || sp->controller == PCIC_PD6710) { - sp->putb(sp, PCIC_TIME_SETUP0, 0x1); - sp->putb(sp, PCIC_TIME_CMD0, 0x6); - sp->putb(sp, PCIC_TIME_RECOV0, 0x0); - sp->putb(sp, PCIC_TIME_SETUP1, 1); - sp->putb(sp, PCIC_TIME_CMD1, 0xf); - sp->putb(sp, PCIC_TIME_RECOV1, 0); - } selwakeup(&slt->selp); } @@ -1038,13 +1414,8 @@ { struct pcic_slot *sp = slt->cdata; -#ifdef PC98 - if (sp->controller == PCIC_PC98) { - return; - } -#endif - sp->putb(sp, PCIC_INT_GEN, 0); - sp->putb(sp, PCIC_POWER, 0); + putb(sp, PCIC_INT_GEN, 0); + putb(sp, PCIC_POWER, 0); } /* @@ -1064,45 +1435,98 @@ * register. If this is non-zero, then a change has occurred * on this card, so send an event to the main code. */ -static void +void pcicintr(int unit) { int slot, s; unsigned char chg; struct pcic_slot *sp = pcic_slots; -#ifdef PC98 - if (sp->controller == PCIC_PC98) { - slot = 0; - s = splhigh(); - /* Check for a card in this slot */ - if (inb(PCIC98_REG1) & PCIC98_CARDEXIST) { - if (sp->slt->laststate != filled) { - pccard_event(sp->slt, card_inserted); - } - } else { - if (sp->slt->laststate != empty) { - pccard_event(sp->slt, card_removed); - } - } - splx(s); - return; - } -#endif /* PC98 */ s = splhigh(); - for (slot = 0; slot < PCIC_MAX_SLOTS; slot++, sp++) - if (sp->slt && (chg = sp->getb(sp, PCIC_STAT_CHG)) != 0) +#ifdef PC98 + if (sp->controller == PCIC_PC98) { + u_char reg1; + /* Check for a card in this slot */ + reg1 = inb(PCIC98_REG1); + if ((pcic98_last_reg1 ^ reg1) & PCIC98_CARDEXIST) { + pcic98_last_reg1 = reg1; + if (reg1 & PCIC98_CARDEXIST) + pccard_event(sp->slt, card_inserted); + else + pccard_event(sp->slt, card_removed); + } + } else { +#endif + for (slot = 0; slot < PCIC_MAX_SLOTS * NPCIC; slot++, sp++) { + if (sp->slt && (chg = getb(sp, PCIC_STAT_CHG)) != 0) if (chg & PCIC_CDTCH) { - if ((sp->getb(sp, PCIC_STATUS) & PCIC_CD) == +#ifdef CB_TEST + if (bootverbose) { + printf("pcicintr\n"); + cardbus_print_register(sp->slt); + } + if (sp->slt->ctrl->cardbus) { + u_long reg; + + reg = cb_getl(sp, CB_PRESENT_STATE); + if (bootverbose) { + if (reg & CB_16BIT_CARD) + printf("16bit card\n"); + if (reg & CB_CB_CARD) + printf("CardBus card\n"); + if (reg & CB_5V_CARD) + printf("5V card\n"); + if (reg & CB_3V_CARD) + printf("3V card\n"); + } + } +#endif /* CB_TEST */ + if ((getb(sp, PCIC_STATUS) & PCIC_CD) == PCIC_CD) { pccard_event(sp->slt, card_inserted); +#ifdef CB_TEST + if (bootverbose) { + printf("inserted\n"); + cardbus_print_register(sp->slt); + } +#endif /* CB_TEST */ } else { pccard_event(sp->slt, card_removed); } } + } +#ifdef PC98 + } +#endif splx(s); } +#ifdef CB_TEST +void +pcic_intr_sc(void *arg) +{ + int slot, s; + unsigned char chg; + struct slot_ctrl *cinfo = (struct slot_ctrl *)arg; + struct slot *slt; + struct pcic_slot *sp; + +#if 0 + /* intr slot_list per controller */ + for (slt = cinfo->slot_list; slt; slt = slt->next) { + sp = (struct pcic_slot *)slt->cdata; + pcic_status(slt); + if (status) + pccard_event(slt, card_inserted); + else + pccard_event(slt, card_removed); + } +#else + pcicintr(0); /* XXXX */ +#endif +} +#endif /* CB_TEST */ + /* * pcic_resume - Suspend/resume support for PCIC */ @@ -1110,10 +1534,236 @@ pcic_resume(struct slot *slt) { struct pcic_slot *sp = slt->cdata; - if (pcic_irq > 0) - sp->putb(sp, PCIC_STAT_INT, (pcic_irq << 4) | 0xF); - if (sp->controller == PCIC_PD672X) { - setb(sp, PCIC_MISC1, PCIC_SPKR_EN); - setb(sp, PCIC_MISC2, PCIC_LPDM_EN); + if (sp->irq > 0) + putb(sp, PCIC_STAT_INT, (sp->irq << 4) | 0xF); +} + +#ifdef PC98 +/* + * local functions for PC98 Original PC-Card controller + */ +#define PCIC98_ALWAYS_128MAPPING 1 + +static int +pcic98_memory(struct slot *slt, int win) +{ + struct mem_desc *mp = &slt->mem[win]; + unsigned char x; + + if (mp->flags & MDF_ACTIVE) { + /* slot = 0, window = 0, sys_addr = 0xda000, length = 8KB */ + if ((unsigned long)mp->start != 0xda000) { + printf( + "sys_addr must be 0xda000. requested address = 0x%x\n", + mp->start); + return(EINVAL); + } + + /* omajinai ??? */ + outb(PCIC98_REG0, 0); + x = inb(PCIC98_REG1); + x &= 0xfc; + x |= 0x02; + outb(PCIC98_REG1, x); + outb(PCIC98_REG_WINSEL, PCIC98_MAPWIN); + outw(PCIC98_REG_PAGOFS, (mp->card >> 13)); /* 8KB */ + + if (mp->flags & MDF_ATTR) { + outb(PCIC98_REG6, inb(PCIC98_REG6) | PCIC98_ATTRMEM); + }else{ + outb(PCIC98_REG6, inb(PCIC98_REG6) & (~PCIC98_ATTRMEM)); + } + + outb(PCIC98_REG_WINSEL, PCIC98_MAPWIN); +#if 0 + if (mp->flags & MDF_16BITS == 1) { /* 16bit */ + outb(PCIC98_REG2, inb(PCIC98_REG2) & (~PCIC98_8BIT)); + }else{ /* 8bit */ + outb(PCIC98_REG2, inb(PCIC98_REG2) | PCIC98_8BIT); + } +#endif + } else { /* !(mp->flags & MDF_ACTIVE) */ + outb(PCIC98_REG0, 0); + x = inb(PCIC98_REG1); + x &= 0xfc; + x |= 0x02; + outb(PCIC98_REG1, x); + outb(PCIC98_REG_WINSEL, PCIC98_UNMAPWIN); + outw(PCIC98_REG_PAGOFS, 0); + } + return 0; +} + +static int +pcic98_io(struct slot *slt, int win) +{ + struct io_desc *ip = &slt->io[win]; + unsigned char x; + unsigned short base; + u_short ofst; + + if (win != 0) { + /* ignore for UE2212 */ + printf( + "pcic98:Illegal PCIC I/O window(%d) request! Ignored.\n", win); +/* return(EINVAL);*/ + return 0; + } + + if (ip->flags & IODF_ACTIVE) { + x = inb(PCIC98_REG2) & 0x0f; + if (! (ip->flags & IODF_CS16)) + x |= PCIC98_8BIT; + + ofst = ip->start & 0xf; +#ifdef PCIC98_ALWAYS_128MAPPING + /* trick for using UE2212 */ + x |= PCIC98_MAP128; + ofst = ofst + ((ip->start & 0x70) << 4); +#else + if (ip->size + ofst > 16) { /* 128bytes mapping */ + x |= PCIC98_MAP128; + ofst = ofst + ((ip->start & 0x70) << 4); + } +#endif + + x |= PCIC98_MAPIO; + outb(PCIC98_REG2, x); + + outw(PCIC98_REG4, PCIC98_IOBASE); /* 98side IO base */ + outw(PCIC98_REG5, ip->start); /* card side IO base */ + + base = PCIC98_IOBASE + ofst; + +#ifdef PCIC_DEBUG + printf("pcic98: " + "IO mapped 0x%04x(98) -> 0x%04x(Card) and width %d bytes\n", + base, ip->start, ip->size); +#endif + ip->start = base; + }else{ + outb(PCIC98_REG2, inb(PCIC98_REG2) & (~PCIC98_MAPIO)); + } + return 0; +} + +static int +pcic98_power(struct slot *slt) +{ + unsigned char reg; + + reg = inb(PCIC98_REG6) & (~PCIC98_VPP12V); + switch(slt->pwr.vpp) { + default: + return(EINVAL); + case 50: + break; + case 120: + reg |= PCIC98_VPP12V; + break; + } + outb(PCIC98_REG6, reg); + DELAY(100*1000); + + reg = inb(PCIC98_REG2) & (~PCIC98_VCC3P3V); + switch(slt->pwr.vcc) { + default: + return(EINVAL); + case 33: + reg |= PCIC98_VCC3P3V; + break; + case 50: + break; + } + outb(PCIC98_REG2, reg); + DELAY(100*1000); + return 0; +} + +static void +pcic98_mapirq(struct slot *slt, int irq) +{ + u_char x; + + switch (irq) { + case 3: + x = PCIC98_INT0; + break; + case 5: + x = PCIC98_INT1; + break; + case 6: + x = PCIC98_INT2; + break; + case 10: + x = PCIC98_INT4; + break; + case 12: + x = PCIC98_INT5; + break; + case 0: /* disable */ + x = PCIC98_INTDISABLE; + break; + default: + printf("pcic98: illegal irq %d\n", irq); + return; + } +#ifdef PCIC_DEBUG + printf("pcic98: irq=%d mapped.\n", irq); +#endif + outb(PCIC98_REG3, x); +} + +static void +pcic98_reset(void *chan) +{ + struct slot *slt = chan; + + outb(PCIC98_REG0, 0); + outb(PCIC98_REG2, inb(PCIC98_REG2) & (~PCIC98_MAPIO)); + outb(PCIC98_REG3, PCIC98_INTDISABLE); + outb(PCIC98_REG2, inb(PCIC98_REG2) & (~PCIC98_VCC3P3V)); + outb(PCIC98_REG6, inb(PCIC98_REG6) & (~PCIC98_VPP12V)); + outb(PCIC98_REG1, 0); + + selwakeup(&slt->selp); +} + +static void +pcic98_disable(struct slot *slt) +{ + /* null function */ +} + +static void +pcic98_resume(struct slot *slt) +{ + /* XXX PCIC98 How ? */ +} +#endif /* PC98 */ +/* end of local functions for PC98 Original PC-Card controller */ + +#ifdef NECMG +/* + * local functions for NECMG + */ +static void +necmg_pcic_reset(void *chan) +{ + struct slot *slt = chan; + struct pcic_slot *sp = slt->cdata; + /* + * Lock out access to wd controler. + */ + clrb (sp, PCIC_INT_GEN, PCIC_CARDRESET); + DELAY(250*1000); + setb (sp, PCIC_INT_GEN, PCIC_CARDRESET|PCIC_IOCARD); + DELAY(250*1000); + while (!getb1(sp, PCIC_STATUS) & PCIC_READY) { + printf("pcic reset timeout?\n"); + DELAY(100*1000); } } +/* end of local functions for NECMG */ +#endif /* NECMG */ +#endif /* NPCIC */ diff -urN sys.2.2.8-RELEASE/pccard/pcic98reg.h sys/pccard/pcic98reg.h --- sys.2.2.8-RELEASE/pccard/pcic98reg.h Fri Aug 30 19:43:14 1996 +++ sys/pccard/pcic98reg.h Tue Dec 22 13:55:05 1998 @@ -1,10 +1,10 @@ /* - pcic98reg.h - - PC9801NS/A PCMCIA contorer routine conpatible to PCIC - Noriyuki Hosobuchi 96.1.20 - -*/ + * pcic98reg.h + * + * PC9801 original PCMCIA controller code for NS/A,Ne,NX/C,NR/L. + * by Noriyuki Hosobuchi + * + */ /*--- I/O port definition */ #define PCIC98_REG0 0x0a8e /* byte */ @@ -26,9 +26,9 @@ #define PCIC98_CARDEXIST 0x08 /* 1:exist 0:not exist */ /* PCIC98_REG2 */ -#define PCIC98_IOMEMORY 0x80 /* 1:IO 0:Memory */ -#define PCIC98_MAPIO 0x40 /* 0:IO map 1:??? */ -#define PCIC98_8BIT 0x20 /* bit width 1:8bit 0:16bit */ +#define PCIC98_MAPIO 0x80 /* 1:IO 0:Memory */ +#define PCIC98_IOTHROUGH 0x40 /* 0:IO map 1:IO addr-through */ +#define PCIC98_8BIT 0x20 /* bit width 1:8bit 0:16bit */ #define PCIC98_MAP128 0x10 /* IO map size 1:128byte 0:16byte */ #define PCIC98_VCC3P3V 0x02 /* Vcc 1:3.3V 0:5.0V */ diff -urN sys.2.2.8-RELEASE/pccard/pcicvar.h sys/pccard/pcicvar.h --- sys.2.2.8-RELEASE/pccard/pcicvar.h Thu Jan 1 09:00:00 1970 +++ sys/pccard/pcicvar.h Tue Dec 22 13:55:05 1998 @@ -0,0 +1,127 @@ +/* + * Copyright (c) 1998 NAKAGAWA, Yoshihisa + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the author nor the names of any co-contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $Id: pcicvar.h,v 1.1.6.1 1998/12/05 22:49:45 itojun Exp $ + */ + +#ifndef _PCCARD_PCICVAR_H_ +#define _PCCARD_PCICVAR_H_ + +#define PCIC_IO_WIN 2 +#define PCIC_MEM_WIN 5 + +#ifndef PCIC_MAX_SLOTS +#define PCIC_MAX_SLOTS 4 +#endif + +#define PCIC_I82365 0 /* Intel chip */ +#define PCIC_IBM 1 /* IBM clone */ +#define PCIC_VLSI 2 /* VLSI chip */ +#define PCIC_PD672X 3 /* Cirrus logic 672x */ +#define PCIC_PD6710 4 /* Cirrus logic 6710 */ +#define PCIC_PD6729 5 /* Cirrus logic 6729 */ +#define PCIC_VG468 6 /* Vadem 468 */ +#define PCIC_VG469 7 /* Vadem 469 */ +#define PCIC_RF5C396 8 /* Ricoh RF5C396 */ +#define PCIC_IBM_KING 9 /* IBM KING PCMCIA Controller */ +#define PCIC_PC98 10 /* NEC PC98 PCMCIA Controller */ +#define PCIC_TI1130 11 /* TI PCI1130 CardBus bridge */ +#define PCIC_TI1131 12 /* TI PCI1131 CardBus bridge */ +#define PCIC_PD6832 13 /* Cirrus logic PD6832 CardBus bridge */ +#define PCIC_OZ6730 14 /* O2Micro OZ6730 PC-card bridge */ +#define PCIC_TOSHIBA 15 /* Toshiba CardBus bridge */ +#define PCIC_RL5C465 16 /* Ricoh RL5C465 CardBus bridge */ +#define PCIC_TI1250 17 /* TI PCI1250 CardBus bridge */ +#define PCIC_I82365DF 18 /* Intel chip */ +#define PCIC_RL5C475 19 /* Ricoh RL5C475/476 CardBus bridge */ +#define PCIC_TI1220 20 /* TI PCI1220 CardBus bridge */ +#define PCIC_TI1221 21 /* TI PCI1221 CardBus bridge */ +#define PCIC_RL5C478 22 /* Ricoh RL5C478 CardBus bridge */ + +/* + * Address of the controllers. Each controller can manage + * two PCMCIA slots. Up to 8 slots are supported in total. + * The PCIC controller is accessed via an index port and a + * data port. The index port has the 8 bit address of the + * register accessed via the data port. How I long for + * real memory mapped I/O! + * The top two bits of the index address are used to + * identify the port number, and the lower 6 bits + * select one of the 64 possible data registers. + */ + +#ifndef IO_PCIC1 +#define IO_PCIC1 0x3e0 +#endif +#ifndef IO_PCIC2 +#define IO_PCIC2 0x3e2 +#endif +#ifndef IO_PCIC3 +#define IO_PCIC3 0x3e4 +#endif + +#ifdef PC98 +#ifndef PCIC98_IOBASE +#define PCIC98_IOBASE 0x80d0 +#endif +#endif /*PC98*/ + +#ifndef PCIC_IRQ +#ifdef PC98 +#define PCIC_IRQ 6 +#else +#define PCIC_IRQ 5 +#endif +#endif + +/* + * Per-slot data table. + */ +struct pcic_slot { + int slotnum; /* My slot number */ + int index; /* Index register */ + int data; /* Data register */ + int offset; /* Offset value for index */ + int irq; /* controller irq */ + char controller; /* Device type */ + char revision; /* Device Revision */ + struct slot *slt; /* Back ptr to slot */ + u_char (*getb)(struct pcic_slot *sp, int reg); + void (*putb)(struct pcic_slot *sp, int reg, u_char val); + u_char *regs; /* Pointer to regs in mem */ +}; + +int pcic_probe __P((struct slot_ctrl *cinfo, int iobase, int irq)); +int pcic_attach __P((struct slot_ctrl *cinfo, int flags)); +void pcicintr __P((int unit)); /* XXXX */ +void pcic_intr_sc __P((void *arg)); + +#endif /* !_PCCARD_PCICVAR_H_ */ diff -urN sys.2.2.8-RELEASE/pccard/slot.h sys/pccard/slot.h --- sys.2.2.8-RELEASE/pccard/slot.h Thu Oct 30 09:38:27 1997 +++ sys/pccard/slot.h Tue Dec 22 13:55:05 1998 @@ -33,6 +33,10 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#ifndef _PCCARD_SLOT_H +#define _PCCARD_SLOT_H + + /* * Controller data - Specific to each slot controller. */ @@ -44,6 +48,10 @@ /* Map io */ void (*reset) __P((void *)); /* init */ +#ifdef CB_TEST + void (*status) __P((struct slot *)); + /* Get status */ +#endif /* CB_TEST */ void (*disable) __P((struct slot *)); /* Disable slot */ int (*power) __P((struct slot *)); @@ -65,7 +73,12 @@ * The rest is maintained by the mainline PC-CARD code. */ struct slot_ctrl *next; /* Allows linked list of controllers */ + struct slot *slot_list; /* Allows linked list of slots */ int slots; /* Slots available */ + char slot_use; /* Slot use */ +#ifdef CB_TEST + int cardbus; /* CardBus flag */ +#endif /* CB_TEST */ }; /* @@ -83,7 +96,7 @@ int attr; /* driver attributes */ unsigned int *imask; /* Interrupt mask ptr */ - struct pccard_device *next; + struct pccard_device *next; /* really need ?? */ }; /* @@ -95,7 +108,17 @@ */ struct pccard_devinfo { struct pccard_device *drv; + /* compatible old driver */ struct isa_device isahd; /* Device details */ +#if 1 + /* new style */ + int pd_iobase; /* base i/o address */ + u_short pd_irq; /* interrupt request ??? */ + caddr_t pd_maddr; /* physical i/o memory address on bus (if any)*/ + int pd_msize; /* size of i/o memory */ + int pd_unit; /* unit number */ + int pd_flags; /* flags */ +#endif #if 0 void *arg; /* Device argument */ #endif @@ -103,6 +126,7 @@ u_char misc[128]; /* For any random info */ struct slot *slt; /* Back pointer to slot */ + /* really need ?? */ struct pccard_devinfo *next; /* List of drivers */ }; @@ -128,6 +152,7 @@ struct power pwr; /* Power values */ struct slot_ctrl *ctrl; /* Per-controller data */ void *cdata; /* Controller specific data */ + int suspend_power; /* Keep power on suspended state */ int pwr_off_pending;/* Power status of slot */ #ifdef DEVFS void *devfs_token; @@ -140,4 +165,7 @@ struct slot *pccard_alloc_slot(struct slot_ctrl *); void pccard_event(struct slot *, enum card_event); +void pccard_add_controller(struct slot_ctrl *); void pccard_remove_controller(struct slot_ctrl *); + +#endif /* _PCCARD_SLOT_H */ diff -urN sys.2.2.8-RELEASE/pci/pci.c sys/pci/pci.c --- sys.2.2.8-RELEASE/pci/pci.c Tue Jul 7 14:24:23 1998 +++ sys/pci/pci.c Wed Dec 23 22:19:34 1998 @@ -403,6 +403,7 @@ u_char reg; u_char pciint; int irq; + u_int classcode; pcici_t tag = pcibus->pb_tag (bus, dev, func); /* @@ -415,8 +416,10 @@ ** Announce this device */ - printf ("%s%d <%s> rev %d", dvp->pd_name, unit, name, - (unsigned) pci_conf_read (tag, PCI_CLASS_REG) & 0xff); + classcode = (unsigned) pci_conf_read (tag, PCI_CLASS_REG) >> 8; + printf ("%s%d <%s> rev %d class %x", dvp->pd_name, unit, name, + (unsigned) pci_conf_read (tag, PCI_CLASS_REG) & 0xff, + classcode); /* ** Get the int pin number (pci interrupt number a-d) @@ -1577,11 +1580,14 @@ {0x104B, "Bus Logic"}, {0x104C, "TI"}, {0x1060, "UMC"}, + {0x1066, "Pico Power"}, {0x1080, "Contaq"}, {0x1095, "CMD"}, {0x10b9, "ACER Labs"}, {0x10c8, "NeoMagic"}, {0x1106, "VIA Technologies"}, + {0x1179, "Toshiba"}, + {0x1283, "ITE"}, {0x5333, "S3 Inc."}, {0x8086, "Intel Corporation"}, {0x9004, "Adaptec"}, diff -urN sys.2.2.8-RELEASE/pci/pcic_p.c sys/pci/pcic_p.c --- sys.2.2.8-RELEASE/pci/pcic_p.c Sun Feb 8 05:42:29 1998 +++ sys/pci/pcic_p.c Mon Jan 11 16:14:32 1999 @@ -32,24 +32,214 @@ #include "pci.h" #if NPCI > 0 +/* share the PCI code with 2.2-RELENG and 3.0-CURRENT */ +#ifndef FREEBSD22 +#define FREEBSD22 +#endif + #include #include #include +#include + #include #include #include -#include + +/* for slot.h */ +#include +#include +#include + +#include +#include +#include + +#ifndef FREEBSD22 +#include +#endif /* FREEBSD22 */ #include #include +#ifdef FREEBSD22 +/* enable 3.0-compatible routine for 2.2.x */ +#define PCIFBSD22 +#endif -static u_long pcic_pci_count = 0; +/* + * XXX + * Do our own re-probe protection until a configuration + * manager can do it for us. This ensures that we don't + * reprobe a card already found by the PCI probes. + */ +static struct pcic_found +{ + u_long port; + char probed; +} found[] = +{ + { IO_PCIC1, 0 }, + { IO_PCIC2, 0 }, + { IO_PCIC3, 0 } +}; + +static u_long +get_pci_pcic_addr(void) +{ + u_long iobase = 0; + int i; + + for (i=0; i < sizeof(found)/sizeof(struct pcic_found); i++) { + if (!found[i].probed) { + found[i].probed = 1; + iobase = found[i].port; + break; + } + } + return iobase; +} + +struct pci_pcic_info +{ + u_long port; + int slots; + pcici_t tag; +#ifdef CB_TEST + struct cb_slot *cb_info; +#endif /* CB_TEST */ + struct pci_pcic_info *next; +}; + +static struct pci_pcic_info *info_list = NULL; +#ifdef CB_TEST +struct cb_slot cb_slots[MAXSLOT]; +#endif /* CB_TEST */ + +static void +set_pci_pcic_info(u_long iobase, pcici_t tag, int unit) +{ + struct pci_pcic_info *info; + + for (info = info_list; info; info = info->next) { + if (info->port == iobase) { + info->slots++; + return; + } + } + + info = malloc(sizeof *info, M_DEVBUF, M_NOWAIT); + if (info) { + info->port = iobase; + info->slots = 1; + info->tag = tag; + info->next = info_list; +#ifdef CB_TEST + info->cb_info = &cb_slots[unit]; +#endif /* CB_TEST */ + info_list = info; + } +} + +int +get_pci_pcic_info(u_long iobase, pcici_t *tag) +{ + struct pci_pcic_info *info; + + for (info = info_list; info; info = info->next) { + if (info->port == iobase) { + *tag = info->tag; + return 1; + } + } + return 0; +} + +int +get_pci_pcic_slots(u_long iobase) +{ + struct pci_pcic_info *info; + + for (info = info_list; info; info = info->next) { + if (info->port == iobase) { + return info->slots; + } + } + return 0; +} + +#ifdef CB_TEST +struct cb_slot * +get_cb_info(u_long iobase) +{ + struct pci_pcic_info *info; + + for (info = info_list; info; info = info->next) { + if (info->port == iobase) { + return info->cb_info; + } + } + return NULL; +} +#endif /* CB_TEST */ + +#ifdef PCIFBSD22 /* compatibility with FreeBSD 3.0 PCI code */ +u_long pci_cfgread(pcici_t tag, u_long reg, int bytes); +void pci_cfgwrite(pcici_t tag, u_long reg, u_long data, int bytes); +u_long +pci_cfgread(pcici_t tag, u_long reg, int bytes) +{ + int off; + u_long x; + + off = (reg % 4); + x = pci_conf_read(tag, reg - off); + x >>= (8 * off); + switch (bytes) { + case 1: + x &= 0xffu; + break; + case 2: + x &= 0xffffu; + break; + } + return x; +} + +void +pci_cfgwrite(pcici_t tag, u_long reg, u_long data, int bytes) +{ + int off; + u_long x, mask; + + off = (reg % 4); + x = pci_conf_read(tag, reg - off); + switch (bytes) { + case 1: + data &= 0xffu; + mask = 0xffu; + break; + case 2: + data &= 0xffffu; + mask = 0xffffu; + break; + } + data <<= (off * 8); + mask <<= (off * 8); + x &= (~mask); + x |= data; + pci_conf_write(tag, reg - off, x); +} +#endif /* PCIFBSD22 */ + +static u_long pcic_pci_count = 0; static char *pcic_pci_probe(pcici_t, pcidi_t); static void pcic_pci_attach(pcici_t, int); -static void pd6832_legacy_init(pcici_t tag, int unit); - +#ifdef LKM +struct pci_device pcic_pci_driver = { +#else static struct pci_device pcic_pci_driver = { +#endif "pcic", pcic_pci_probe, pcic_pci_attach, @@ -57,7 +247,9 @@ NULL }; +#ifndef LKM DATA_SET(pcidevice_set, pcic_pci_driver); +#endif /* * Return the ID string for the controller if the vendor/product id @@ -66,131 +258,645 @@ static char * pcic_pci_probe(pcici_t tag, pcidi_t type) { +#ifdef CB_TEST + u_long data, class, subclass; +#endif /* CB_TEST */ + switch (type) { + /* 32bit CardBus bridges */ + case PCI_DEVICE_ID_PCIC_CLPD6832_CARDBUS: + return "Cirrus Logic PD6832 PCI-CardBus Bridge"; + case PCI_DEVICE_ID_PCIC_TI1130_CARDBUS: + return ("TI PCI-1130 PCI-CardBus Bridge"); + case PCI_DEVICE_ID_PCIC_TI1131_CARDBUS: + return ("TI PCI-1131 PCI-CardBus Bridge"); + case PCI_DEVICE_ID_PCIC_TI1220_CARDBUS: + return ("TI PCI-1220 PCI-CardBus Bridge"); + case PCI_DEVICE_ID_PCIC_TI1221_CARDBUS: + return ("TI PCI-1221 PCI-CardBus Bridge"); + case PCI_DEVICE_ID_PCIC_TI1250_CARDBUS: + return ("TI PCI-1250 PCI-CardBus Bridge"); + case PCI_DEVICE_ID_TOSHIBA_TOPIC95_CARDBUS: + return ("Toshiba ToPIC95 PCI-CardBus Bridge"); + case PCI_DEVICE_ID_TOSHIBA_TOPIC97_CARDBUS: + return ("Toshiba ToPIC97 PCI-CardBus Bridge"); + case PCI_DEVICE_ID_RICOH_RL5C465_CARDBUS: + return("Ricoh RL5C465 PCI-CardBus Brige"); + case PCI_DEVICE_ID_RICOH_RL5C475_CARDBUS: + return("Ricoh RL5C475 PCI-CardBus Brige"); + case PCI_DEVICE_ID_RICOH_RL5C476_CARDBUS: + return("Ricoh RL5C476 PCI-CardBus Brige"); + case PCI_DEVICE_ID_RICOH_RL5C478_CARDBUS: + return("Ricoh RL5C478 PCI-CardBus Brige"); + /* 16bit PC-card bridges */ case PCI_DEVICE_ID_PCIC_CLPD6729: - return ("Cirrus Logic PD6729/6730 PC-Card Controller"); - case PCI_DEVICE_ID_PCIC_CLPD6832: - return ("Cirrus Logic PD6832 CardBus Adapter"); - case PCI_DEVICE_ID_PCIC_TI1130: - return ("TI 1130 PCMCIA/CardBus Bridge"); - case PCI_DEVICE_ID_PCIC_TI1131: - return ("TI 1131 PCI to PCMCIA/CardBus bridge"); + return "Cirrus Logic PD6729/6730 PC-card Bridge"; + case PCI_DEVICE_ID_PCIC_OZ6729: + return "O2micro OZ6729 PC-Card Bridge"; + case PCI_DEVICE_ID_PCIC_OZ6730: + return "O2micro OZ6730 PC-Card Bridge"; + default: +#ifdef CB_TEST + data = pci_conf_read(tag, PCI_CLASS_REG); + class = data & PCI_CLASS_MASK; + subclass = data & PCI_SUBCLASS_MASK; + + if (class == PCI_CLASS_BRIDGE + && subclass == PCI_SUBCLASS_BRIDGE_CARDBUS) { + return("generic PCI/CardBus Brige"); + } +#endif /* CB_TEST */ break; } return (NULL); } +static void pci_legacy_attach(pcici_t tag, pcidi_t id, u_long legacy16); +static void generic_cardbus_attach(pcici_t tag, pcidi_t id, int unit); +static void print_cardbus_registers(pcici_t tag); /* - * General PCI based card dispatch routine. Right now - * it only understands the CL-PD6832. + * TI1XXX PCI-CardBus Host Adapter specific function code. + * This function is separated from pcic_pci_attach(). + * Support Device: TI1130,TI1131,TI1250,TI1220. + * Test Device: TI1221. + * Takeshi Shibagaki(shiba@jp.freebsd.org). */ static void -pcic_pci_attach(pcici_t config_id, int unit) +ti1xxx_pci_init(pcici_t tag, u_long pcic_pci_id, u_int8_t func) { - u_long pcic_type; /* The vendor id of the PCI pcic */ + u_long syscntl,devcntl,cardcntl; + char buf[128]; + int ti113x = (pcic_pci_id == PCI_DEVICE_ID_PCIC_TI1130_CARDBUS) + || (pcic_pci_id == PCI_DEVICE_ID_PCIC_TI1131_CARDBUS); + + syscntl = pci_cfgread(tag, TI113X_PCI_SYSTEM_CONTROL, 4); + devcntl = pci_cfgread(tag, TI113X_PCI_DEVICE_CONTROL, 1); + cardcntl = pci_cfgread(tag, TI113X_PCI_CARD_CONTROL, 1); + + switch(ti113x){ + case 0 : + strcpy(buf, "TI12XX PCI Config Reg: "); + break; + case 1 : + strcpy(buf, "TI113X PCI Config Reg: "); + /* + * Defalut card control register setting is PCI interrupt. + * The method of this code switches PCI INT and ISA IRQ + * by bit 7 of Bridge Control Register(Offset:0x3e,0x13e). + * Takeshi Shibagaki(shiba@jp.freebsd.org) + */ + if(!func) cardcntl |= TI113X_CARDCNTL_PCI_IRQ_ENA; + cardcntl |= TI113X_CARDCNTL_PCI_IREQ; + cardcntl |= TI113X_CARDCNTL_PCI_CSC; + if(syscntl & TI113X_SYSCNTL_CLKRUN_ENA){ + if(syscntl & TI113X_SYSCNTL_CLKRUN_SEL) + strcat(buf, "[clkrun irq 12]"); + else + strcat(buf, "[clkrun irq 10]"); + } + break; + } + if(cardcntl & TI113X_CARDCNTL_RING_ENA) + strcat(buf, "[ring enable]"); + if(cardcntl & TI113X_CARDCNTL_SPKR_ENA) + strcat(buf, "[speaker enable]"); + if(syscntl & TI113X_SYSCNTL_PWRSAVINGS) + strcat(buf, "[pwr save]"); + switch(devcntl & TI113X_DEVCNTL_INTR_MASK){ + case TI113X_DEVCNTL_INTR_ISA : + strcat(buf, "[CSC parallel isa irq]"); + break; + case TI113X_DEVCNTL_INTR_SERIAL : + strcat(buf, "[CSC serial isa irq]"); + break; + case TI113X_DEVCNTL_INTR_NONE : + strcat(buf, "[pci only]"); + break; + case TI12XX_DEVCNTL_INTR_ALLSERIAL : + strcat(buf, "[FUNC pci int + CSC serial isa irq]"); + break; + } +#if 0 + pci_cfgwrite(tag, TI113X_PCI_SYSTEM_CONTROL, syscntl, 4); + pci_cfgwrite(tag, TI113X_PCI_DEVICE_CONTROL, devcntl, 1); +#endif /* 0 */ + pci_cfgwrite(tag, TI113X_PCI_CARD_CONTROL, cardcntl, 1); + if(ti113x){ + cardcntl = pci_cfgread(tag, TI113X_PCI_CARD_CONTROL, 1); + switch(cardcntl & TI113X_CARDCNTL_MASK){ + case TI113X_FUNC0_VALID : + if(!func) strcat(buf, "[FUNC pci int]"); + break; + case TI113X_FUNC1_VALID : + if(func) strcat(buf, "[FUNC pci int]"); + break; + } + } + printf("%s\n",buf); +} - pcic_type = pci_conf_read(config_id, PCI_ID_REG); +/* + * CLPD683X PCI-CardBus Host Adapter specific function code. + * This function is separated from pcic_pci_attach(). + * Support Device: CLPD6832. + * Takeshi Shibagaki(shiba@jp.freebsd.org). + */ +static void +clpd683x_pci_init(pcici_t tag, u_long pcic_pci_id) +{ + u_long brgcntl; + char buf[128]; - switch (pcic_type) { - case PCI_DEVICE_ID_PCIC_CLPD6832: - pd6832_legacy_init(config_id, unit); - break; + strcpy(buf, "CLPD683X PCI Config Reg: "); + brgcntl = pci_cfgread(tag, CB_PCI_BRIDGE_CTRL, 2); + /* + * CLPD683X management interrupt enable bit is bit 11 in bridge + * control register(offset 0x3d). + * When this bit is turned on, card status change interrupt sets + * on ISA IRQ interrupt. + * Takeshi Shibagaki(shiba@jp.freebsd.org). + */ + brgcntl |= CL6832_BCR_MGMT_INT_ENA; + pci_cfgwrite(tag, CB_PCI_BRIDGE_CTRL, brgcntl, 2); + brgcntl = pci_cfgread(tag, CB_PCI_BRIDGE_CTRL, 2); + switch(brgcntl & CL6832_BCR_MGMT_INT_ENA){ + case CL6832_BCR_MGMT_INT_ENA : + strcat(buf, "[CSC isa irq]"); + break; } + printf("%s\n",buf); +} - if (bootverbose) { - int i, j; - u_char *p; - u_long *pl; - - printf("PCI Config space:\n"); - for (j = 0; j < 0x98; j += 16) { - printf("%02x: ", j); - for (i = 0; i < 16; i += 4) - printf(" %08x", pci_conf_read(config_id, i+j)); - printf("\n"); +/* + * RL5C4XX PCI-CardBus Host Adapter specific function code. + * This function is separated from pcic_pci_attach(). + * Support Device: RL5C465,RL5C475,RL5C476. + * Test Device: RL5C478. + * Takeshi Shibagaki(shiba@jp.freebsd.org). + */ +static void +rl5c4xx_init_setup(pcici_t tag, u_long pcic_pci_id) +{ + u_long mngcntl,pwstate; + char buf[128]; + int new = (pcic_pci_id == PCI_DEVICE_ID_RICOH_RL5C478_CARDBUS); + + strcpy(buf, "RL5C4XX PCI Config Reg: "); + if(!new){ + mngcntl = pci_cfgread(tag, 0x91, 1); + /* + * This code is made with hacking PCI Config Reg of + * AL-N2T515J5(RL5C476). + * When The bit 3 of PCI Config Reg(offset 0x91) turned on, + * CSC interrupt would set to ISA IRQ. + * Takeshi Shibagaki(shiba@jp.freebsd.org). + */ + mngcntl |= 0x08; + pci_cfgwrite(tag, 0x91, mngcntl, 1); + mngcntl = pci_cfgread(tag, 0x91, 1); + switch(mngcntl & 0x08){ + case 0x08 : + strcat(buf, "[CSC isa irq]"); + break; + } + } else { + /* + * When FreeBSD is rebooted after Win95 booted, + * PCIC isn't recognized. But this code avoids it's phenomena. + * Submitted by shigeru@iij.ad.jp. + * Reviewed by Takeshi Shibagaki(shiba@jp.freebsd.org). + */ + pwstate = pci_cfgread(tag, 0xe0, 1); + if((pwstate & 0x3) != 0x0) { + pwstate &= 0xffc0; + pci_cfgwrite(tag, 0xe0, pwstate, 1); + pwstate = pci_cfgread(tag, 0xe0, 1); + if((pwstate & 0x3) == 0x0) + strcat(buf, "[Power state set to D0]"); } - p = (u_char *)pmap_mapdev(pci_conf_read(config_id, 0x10), - 0x1000); - pl = (u_long *)p; - printf("Cardbus Socket registers:\n"); - printf("00: "); - for (i = 0; i < 4; i += 1) - printf(" %08x:", pl[i]); - printf("\n10: "); - for (i = 4; i < 8; i += 1) - printf(" %08x:", pl[i]); - printf("\nExCa registers:\n"); - for (i = 0; i < 0x40; i += 16) - printf("%02x: %16D\n", i, p + 0x800 + i, " "); } + printf("%s\n",buf); } /* - * Set up the CL-PD6832 to look like a ISA based PCMCIA chip (a - * PD672X). This routine is called once per PCMCIA socket. + * General PCI based card dispatch routine. */ static void -pd6832_legacy_init(pcici_t tag, int unit) +pcic_pci_attach(pcici_t tag, int unit) { - u_long bcr; /* to set interrupts */ - u_short io_port; /* the io_port to map this slot on */ - static int num6832 = 0; /* The number of 6832s initialized */ + int i; + u_int8_t func; + u_int8_t bus, slot; + u_long pcic_pci_id, command, legacy16; + struct slot_ctrl *cinfo; + + bus = (u_int8_t)pci_get_bus(tag); + slot = (u_int8_t)pci_get_device(tag); + func = (u_int8_t)pci_get_function(tag); - /* - * Some BIOS leave the legacy address uninitialized. This - * insures that the PD6832 puts itself where the driver will - * look. We assume that multiple 6832's should be laid out - * sequentially. We only initialize the first socket's legacy port, - * the other is a dummy. - */ - io_port = PCIC_INDEX_0 + num6832 * CLPD6832_NUM_REGS; - if (unit == 0) - pci_conf_write(tag, CLPD6832_LEGACY_16BIT_IOADDR, - io_port & ~PCI_MAP_IO); + if (bootverbose) + printf("bus = %d, slot = %d, func = %d\n", bus, slot, func); + pcic_pci_id = pci_conf_read(tag, PCI_ID_REG); + + /* Init. CardBus/PC-card controllers as 16-bit PC-card controllers */ + + /* Place any per "slot" initialization here */ /* - * I think this should be a call to pci_map_port, but that - * routine won't map regiaters above 0x28, and the register we - * need to map is 0x44. + * In sys/pci/pcireg.h, PCI_COMMAND_STATUS_REG must be separated + * PCI_COMMAND_REG(0x04) and PCI_STATUS_REG(0x06). + * Takeshi Shibagaki(shiba@jp.freebsd.org). */ - io_port = pci_conf_read(tag, CLPD6832_LEGACY_16BIT_IOADDR) - & ~PCI_MAP_IO; + command = pci_cfgread(tag, PCI_COMMAND_STATUS_REG, 4); + command |= PCI_COMMAND_IO_ENABLE | PCI_COMMAND_MEM_ENABLE; + pci_cfgwrite(tag, PCI_COMMAND_STATUS_REG, command, 4); + + switch (pcic_pci_id) { + /* CardBus Bridges */ + case PCI_DEVICE_ID_PCIC_TI1130_CARDBUS: + case PCI_DEVICE_ID_PCIC_TI1131_CARDBUS: + case PCI_DEVICE_ID_PCIC_TI1220_CARDBUS: + case PCI_DEVICE_ID_PCIC_TI1221_CARDBUS: + case PCI_DEVICE_ID_PCIC_TI1250_CARDBUS: + ti1xxx_pci_init(tag, pcic_pci_id, func); + generic_cardbus_attach(tag, pcic_pci_id, unit); + break; + case PCI_DEVICE_ID_PCIC_CLPD6832_CARDBUS: + clpd683x_pci_init(tag, pcic_pci_id); + generic_cardbus_attach(tag, pcic_pci_id, unit); + break; + case PCI_DEVICE_ID_TOSHIBA_TOPIC95_CARDBUS: + case PCI_DEVICE_ID_TOSHIBA_TOPIC97_CARDBUS: + generic_cardbus_attach(tag, pcic_pci_id, unit); + break; + case PCI_DEVICE_ID_RICOH_RL5C465_CARDBUS: + case PCI_DEVICE_ID_RICOH_RL5C475_CARDBUS: + case PCI_DEVICE_ID_RICOH_RL5C476_CARDBUS: + case PCI_DEVICE_ID_RICOH_RL5C478_CARDBUS: + rl5c4xx_init_setup(tag, pcic_pci_id); + generic_cardbus_attach(tag, pcic_pci_id, unit); + break; - /* - * Configure the first I/O window to contain CLPD6832_NUM_REGS - * words and deactivate the second by setting the limit lower - * than the base. + /* Legacy PC-card Bridges */ + case PCI_DEVICE_ID_PCIC_OZ6729: + case PCI_DEVICE_ID_PCIC_OZ6730: + case PCI_DEVICE_ID_PCIC_CLPD6729: + legacy16 = pci_conf_read(tag, PCI_MAP_REG_START) & ~PCI_MAP_IO; + /* XXX -- should be initialized more carefully */ + if (!legacy16) { + legacy16 = get_pci_pcic_addr(); + pci_conf_write(tag, PCI_MAP_REG_START, + legacy16 | PCI_MAP_IO); + } +#if 0 + pci_legacy_attach(tag, pcic_pci_id, legacy16); +#endif + set_pci_pcic_info(legacy16, tag, unit); + break; + } + +#if 0 + if (func == 0) { + /* Place any per "chip" initialization here */ + switch (pcic_pci_id) { + default: + break; + } + } +#endif + +#if 0 + /* + * TODO: + * use PCI IRQ for CSC */ - pci_conf_write(tag, CLPD6832_IO_BASE0, io_port | 1); - pci_conf_write(tag, CLPD6832_IO_LIMIT0, - (io_port + CLPD6832_NUM_REGS) | 1); + /* XXXX */ + if(!(pci_map_int(tag, cbintr, (void *)0, NULL))) { + printf(); + return; + } +#endif + + if (bootverbose) + print_cardbus_registers(tag); + + return; +} + +char +set_controller_info(pcici_t tag, struct slot_ctrl *cinfo) +{ + char controller = -1; + pcidi_t id; +#ifdef CB_TEST + u_long data, class, subclass; + + data = pci_conf_read(tag, PCI_CLASS_REG); + class = data & PCI_CLASS_MASK; + subclass = data & PCI_SUBCLASS_MASK; + + if (class == PCI_CLASS_BRIDGE && subclass == PCI_SUBCLASS_BRIDGE_CARDBUS) { + cinfo->cardbus = 1; + } +#endif /* CB_TEST */ + + if (!cinfo) return -1; + + id = pci_conf_read(tag, PCI_ID_REG); + + switch (id) { + /* 32bit CardBus bridges */ + case PCI_DEVICE_ID_PCIC_CLPD6832_CARDBUS: + controller = PCIC_PD6832; + cinfo->name = "Cirrus Logic PD-6832 " + "[CardBus bridge mode]"; + break; + case PCI_DEVICE_ID_PCIC_TI1130_CARDBUS: + controller = PCIC_TI1130; + cinfo->name = "TI PCI-1130 " + "[CardBus bridge mode]"; + break; + case PCI_DEVICE_ID_PCIC_TI1131_CARDBUS: + controller = PCIC_TI1131; + cinfo->name = "TI PCI-1131 " + "[CardBus bridge mode]"; + break; + case PCI_DEVICE_ID_PCIC_TI1220_CARDBUS: + controller = PCIC_TI1220; + cinfo->name = "TI PCI-1220 " + "[CardBus bridge mode]"; + break; + case PCI_DEVICE_ID_PCIC_TI1221_CARDBUS: + controller = PCIC_TI1221; + cinfo->name = "TI PCI-1221 " + "[CardBus bridge mode]"; + break; + case PCI_DEVICE_ID_PCIC_TI1250_CARDBUS: + controller = PCIC_TI1250; + cinfo->name = "TI PCI-1250 " + "[CardBus bridge mode]"; + break; + case PCI_DEVICE_ID_TOSHIBA_TOPIC95_CARDBUS: + controller = PCIC_TOSHIBA; + cinfo->name = "TOSHIBA TOPIC95 " + "[CardBus bridge mode]"; + break; + case PCI_DEVICE_ID_TOSHIBA_TOPIC97_CARDBUS: + controller = PCIC_TOSHIBA; + cinfo->name = "TOSHIBA TOPIC97 " + "[CardBus bridge mode]"; + break; + case PCI_DEVICE_ID_RICOH_RL5C465_CARDBUS: + controller = PCIC_RL5C465; + cinfo->name = "Ricoh RL5C465 " + "[CardBus bridge mode]"; + break; + case PCI_DEVICE_ID_RICOH_RL5C475_CARDBUS: + case PCI_DEVICE_ID_RICOH_RL5C476_CARDBUS: + controller = PCIC_RL5C475; + cinfo->name = "Ricoh RL5C475/476 " + "[CardBus bridge mode]"; + break; + case PCI_DEVICE_ID_RICOH_RL5C478_CARDBUS: + controller = PCIC_RL5C478; + cinfo->name = "Ricoh RL5C478 " + "[CardBus bridge mode]"; + break; + /* 16bit PC-card bridges */ + case PCI_DEVICE_ID_PCIC_CLPD6729: + controller = PCIC_PD6729; + cinfo->name = "Cirrus Logic PD-6729/6730 " + "[i82365 compatible mode]"; + break; + case PCI_DEVICE_ID_PCIC_OZ6729: + case PCI_DEVICE_ID_PCIC_OZ6730: + controller = PCIC_OZ6730; + cinfo->name = "O2micro OZ6729/6730 " + "[i82365 compatible mode]"; + break; + default: +#ifdef CB_TEST + if (cinfo->cardbus) { + cinfo->name = "generic CardBus bridge " + "[CardBus bridge mode]"; + } +#endif /* CB_TEST */ + break; + } - pci_conf_write(tag, CLPD6832_IO_BASE1, (io_port + 0x20) | 1); - pci_conf_write(tag, CLPD6832_IO_LIMIT1, io_port | 1 ); + return controller; +} +static void +pci_legacy_attach(pcici_t tag, pcidi_t id, u_long legacy16) +{ +#if 0 + struct slot_ctrl *cinfo; + + cinfo = malloc(sizeof *cinfo, M_DEVBUF, M_NOWAIT); + if (!cinfo) return NULL; + + /* initialize slot_ctrl *cinfo */ + bzero(cinfo, sizeof *cinfo); + cinfo->cardbus = 0; + + /* XXXX */ + pcic_probe(cinfo, legacy16, PCIC_IRQ); + /* override controller info */ + set_controller_info(tag, cinfo); + + pcic_attach(cinfo); +#endif + + return; +} + +static void +generic_cardbus_attach(pcici_t tag, pcidi_t id, int unit) +{ + u_int8_t func; + u_long cb_base; + u_int8_t cb_bus, cb_sub_bus; + u_int8_t cb_irq; + u_int16_t command, brgcntl; + static u_long iobase; /* XXXX */ + +#ifdef CB_TEST + static u_long cb_base_mem = CB_BASE_MEM; + static u_int8_t cb_bus_base = CB_BUS_BASE; +#if 0 + struct slot_ctrl *cinfo; + + cinfo = malloc(sizeof *cinfo, M_DEVBUF, M_NOWAIT); + if (!cinfo) return; +#endif + + /* PCI Command and Status */ + command = pci_cfgread(tag, CB_PCI_COMMAND, 2); + command |= CB_CMD_DEFAULT; + pci_cfgwrite(tag, CB_PCI_COMMAND, command, 2); + + /* PC-Card Socket Status/Control Registers Base Address */ + cb_base = pci_cfgread(tag, CB_PCI_SOCKET_BASE, 4); + if (cb_base == 0) { + cb_base = cb_base_mem; + pci_cfgwrite(tag, CB_PCI_SOCKET_BASE, cb_base, 4); + cb_base_mem += 0x1000; + } + cb_base = (u_long)pmap_mapdev(cb_base, 0x1000); + + /* CardBus Bus Number */ + cb_bus = pci_cfgread(tag, CB_PCI_CB_BUS_NUM, 1); + cb_sub_bus = pci_cfgread(tag, CB_PCI_CB_SUB_BUS_NUM, 1); + if (cb_bus == 0) { + /* XXXX */ + cb_bus = cb_bus_base; + cb_sub_bus = cb_bus_base + 2; + pci_cfgwrite(tag, CB_PCI_CB_BUS_NUM, cb_bus, 1); + pci_cfgwrite(tag, CB_PCI_CB_SUB_BUS_NUM, cb_sub_bus, 1); + cb_bus_base += 3; + } + + /* Interrupt Line */ + cb_irq = pci_cfgread(tag, CB_PCI_INT_LINE, 1); + if (cb_irq > 15) cb_irq = 0; +#if 0 + if (cb_irq == 0) { + /* XXXX test code */ + cb_irq = 10; + pci_cfgwrite(tag, CB_PCI_INT_LINE, cb_irq, 1); + } +#endif + + /* Bridge Control */ + brgcntl = pci_cfgread(tag, CB_PCI_BRIDGE_CTRL, 2); +#if 0 + brgcntl &= ~CB_BCR_CB_RESET; +#endif + if (!cb_irq) brgcntl |= CB_BCR_INT_EXCA; /* XXX */ + pci_cfgwrite(tag, CB_PCI_BRIDGE_CTRL, brgcntl, 2); +#endif /* CB_TEST */ + +#ifndef CB_TEST +#ifndef PCI_INTR_ENA /* - * Set default operating mode (I/O port space) and allocate - * this socket to the current unit. + * This code exists to output ISA IRQ indicated in ExCA register(0x03). + * The recent PAO needs this 3 lines absolutely. Don't remove!! + * Takeshi Shibagaki(shiba@jp.freebsd.org). */ - pci_conf_write(tag, PCI_COMMAND_STATUS_REG, CLPD6832_COMMAND_DEFAULTS ); - pci_conf_write(tag, CLPD6832_SOCKET, unit); - + brgcntl = pci_cfgread(tag, CB_PCI_BRIDGE_CTRL, 2); + brgcntl |= CB_BCR_INT_EXCA; + pci_cfgwrite(tag, CB_PCI_BRIDGE_CTRL, brgcntl, 2); +#else /* PCI_INTR_ENA */ /* - * Set up the card inserted/card removed interrupts to come - * through the isa IRQ. + * To output PCI INT indicated in Interrupt Pin Register(0x3d). + * When each IRQ is routed to per slot, would be enable. + * Takeshi Shibagaki(shiba@jp.freebsd.org). */ - bcr = pci_conf_read(tag, CLPD6832_BRIDGE_CONTROL); - bcr |= (CLPD6832_BCR_ISA_IRQ|CLPD6832_BCR_MGMT_IRQ_ENA); - pci_conf_write(tag, CLPD6832_BRIDGE_CONTROL, bcr); - - /* After initializing 2 sockets, the chip is fully configured */ - if (unit == 1) - num6832++; + brgcntl = pci_cfgread(tag, CB_PCI_BRIDGE_CTRL, 2); + brgcntl &= ~CB_BCR_INT_EXCA; + pci_cfgwrite(tag, CB_PCI_BRIDGE_CTRL, brgcntl, 2); +#endif /* PCI_INTR_ENA */ +#endif /* CB_TEST */ + + func = (u_int8_t)pci_get_function(tag); + + /* 16bit Legacy Mode Base Address */ + if (func == 0) { +#if 1 + u_long legacy16; + + legacy16 = pci_cfgread(tag, CB_PCI_LEGACY16_IOADDR, 2) + & ~PCI_MAP_IO; + iobase = legacy16; /* XXXX */ + if (!legacy16) { + u_int res; + + legacy16 = get_pci_pcic_addr(); + if (!legacy16) { + printf("not free legacy mode address\n"); + return; + } + iobase = legacy16; /* XXXX */ + legacy16 |= PCI_MAP_IO; + pci_cfgwrite(tag, CB_PCI_LEGACY16_IOADDR, legacy16, 2); + res = pci_cfgread(tag, CB_PCI_LEGACY16_IOADDR, 2) + & ~PCI_MAP_IO; + if (bootverbose) + printf("pcic%d, Legacy PC-card " + "16bit I/O address is set to 0x%x " + "(res: 0x%x)\n", + unit, iobase, res); + iobase = res; + } else { + if (bootverbose) + printf("pcic%d, Legacy PC-card " + "16bit I/O address [0x%x]\n", + unit, iobase); + } + } +#else + pci_cfgwrite(tag, CB_PCI_LEGACY16_IOADDR, 0, 4); +#endif + +#if 0 + /* initialize slot_ctrl *cinfo */ + bzero(cinfo, sizeof *cinfo); + cinfo->cardbus = 1; + cinfo->tag = tag; + + /* XXXX */ + pcic_probe(cinfo, cb_base, PCIC_IRQ); + /* override controller info */ + set_controller_info(tag, cinfo); + + /* attach controller and slot */ + pcic_attach(cinfo); +#endif + +#ifdef CB_TEST + /* XXXX */ + cb_slots[unit].tag = tag; + cb_slots[unit].cb_base = cb_base; + cb_slots[unit].cb_bus = cb_bus; + cb_slots[unit].cb_irq = cb_irq; +#endif /* CB_TEST */ - if (bootverbose) - printf("CardBus: Legacy PC-card 16bit I/O address [0x%x]\n", - io_port); + set_pci_pcic_info(iobase, tag, unit); + + return; +} + +static void +print_cardbus_registers(pcici_t tag) +{ + int i,j; + u_char *p; + u_long *pl; + + printf ("PCI Config space:\n"); + for (j=0;j<0x100;j+=16) { + printf("%02x: ", j); + for (i=0;i<16;i+=4) { + printf(" %08x", pci_conf_read(tag, i+j)); + } + printf("\n"); + } +#ifdef CB_TEST + /* pci_conf_write(tag, 0x44, 1); */ + p = (u_char*)pmap_mapdev(pci_conf_read(tag, 0x10), 0x1000); + pl = (u_long *)p; + printf ("Cardbus Socket registers:\n"); + printf("00: "); + for (i=0;i<4;i+=1) printf(" %08x:",pl[i]); + printf("\n10: "); + for (i=4;i<8;i+=1) printf(" %08x:",pl[i]); + printf ("\nExCa registers:\n"); + for (i=0;i<0x40;i+=16) + printf("%02x: %16D\n",i, p+0x800+i," "); +#endif /* CB_TEST */ } + #endif /* NPCI > 0 */ diff -urN sys.2.2.8-RELEASE/pci/pcic_p.h sys/pci/pcic_p.h --- sys.2.2.8-RELEASE/pci/pcic_p.h Sun Feb 8 05:38:58 1998 +++ sys/pci/pcic_p.h Tue Dec 22 13:55:21 1998 @@ -29,26 +29,231 @@ * $Id: pcic_p.h,v 1.3.2.1 1998/02/07 20:38:58 nate Exp $ */ -/* PCI/CardBus Device IDs */ -#define PCI_DEVICE_ID_PCIC_CLPD6729 0x11001013ul -#define PCI_DEVICE_ID_PCIC_CLPD6832 0x11101013ul -#define PCI_DEVICE_ID_PCIC_O2MICRO 0x673A1217ul -#define PCI_DEVICE_ID_PCIC_TI1130 0xAC12104Cul -#define PCI_DEVICE_ID_PCIC_TI1131 0xAC15104Cul - -/* CL-PD6832 CardBus defines */ -#define CLPD6832_IO_BASE0 0x002c -#define CLPD6832_IO_LIMIT0 0x0030 -#define CLPD6832_IO_BASE1 0x0034 -#define CLPD6832_IO_LIMIT1 0x0038 -#define CLPD6832_BRIDGE_CONTROL 0x003c -#define CLPD6832_LEGACY_16BIT_IOADDR 0x0044 -#define CLPD6832_SOCKET 0x004c - -/* Configuration constants */ -#define CLPD6832_BCR_MGMT_IRQ_ENA 0x08000000 -#define CLPD6832_BCR_ISA_IRQ 0x00800000 -#define CLPD6832_COMMAND_DEFAULTS 0x00000045 -#define CLPD6832_NUM_REGS 2 +#ifndef _PCIC_P_H_ +#define _PCIC_P_H_ -/* End of CL-PD6832 defines */ +#ifdef PCIFBSD22 /* compatibility with FreeBSD 3.0 PCI code */ +u_long pci_cfgread(pcici_t tag, u_long reg, int bytes); +void pci_cfgwrite(pcici_t tag, u_long reg, u_long data, int bytes); +#endif /* PCIFBSD22 */ + +/* PCI-PCMCIA Device IDs */ +#define PCI_DEVICE_ID_PCIC_CLPD6729 0x11001013ul +#define PCI_DEVICE_ID_PCIC_OZ6729 0x67291217ul +#define PCI_DEVICE_ID_PCIC_OZ6730 0x673A1217ul + +/* PCI-CardBus Device IDs */ +#define PCI_DEVICE_ID_PCIC_CLPD6832_CARDBUS 0x11101013ul +#define PCI_DEVICE_ID_PCIC_TI1130_CARDBUS 0xac12104cul +#define PCI_DEVICE_ID_PCIC_TI1131_CARDBUS 0xac15104cul +#define PCI_DEVICE_ID_PCIC_TI1220_CARDBUS 0xac17104cul +#define PCI_DEVICE_ID_PCIC_TI1221_CARDBUS 0xac19104cul /* XXX - test */ +#define PCI_DEVICE_ID_PCIC_TI1250_CARDBUS 0xac16104cul +#define PCI_DEVICE_ID_TOSHIBA_TOPIC95_CARDBUS 0x060a1179ul /* XXX - test */ +#define PCI_DEVICE_ID_TOSHIBA_TOPIC97_CARDBUS 0x060f1179ul /* XXX - test */ +#define PCI_DEVICE_ID_RICOH_RL5C465_CARDBUS 0x04651180ul +#define PCI_DEVICE_ID_RICOH_RL5C475_CARDBUS 0x04751180ul +#define PCI_DEVICE_ID_RICOH_RL5C476_CARDBUS 0x04761180ul +#define PCI_DEVICE_ID_RICOH_RL5C478_CARDBUS 0x04781180ul /* XXX - test */ + +/* PCI Configuration Registers (common) */ +#define CB_PCI_VENDOR_ID 0x00 /* vendor ID */ +#define CB_PCI_DEVICE_ID 0x02 /* device ID */ +#define CB_PCI_COMMAND 0x04 /* PCI command */ +#define CB_PCI_STATUS 0x06 /* PCI status */ +#define CB_PCI_REVISION_ID 0x08 /* PCI revision ID */ +#define CB_PCI_CLASS 0x09 /* PCI class code */ +#define CB_PCI_CACHE_LINE_SIZE 0x0c /* Cache line size */ +#define CB_PCI_LATENCY 0x0d /* PCI latency timer */ +#define CB_PCI_HEADER_TYPE 0x0e /* PCI header type */ +#define CB_PCI_BIST 0x0f /* Built-in self test */ +#define CB_PCI_SOCKET_BASE 0x10 /* Socket/ExCA base address reg. */ +#define CB_PCI_CB_STATUS 0x16 /* CardBus Status */ +#define CB_PCI_PCI_BUS_NUM 0x18 /* PCI bus number */ +#define CB_PCI_CB_BUS_NUM 0x19 /* CardBus bus number */ +#define CB_PCI_CB_SUB_BUS_NUM 0x1A /* Subordinate CardBus bus number */ +#define CB_PCI_CB_LATENCY 0x1A /* CardBus latency timer */ +#define CB_PCI_MEMBASE0 0x1C /* Memory base register 0 */ +#define CB_PCI_MEMLIMIT0 0x20 /* Memory limit register 0 */ +#define CB_PCI_MEMBASE1 0x24 /* Memory base register 1 */ +#define CB_PCI_MEMLIMIT1 0x28 /* Memory limit register 1 */ +#define CB_PCI_IOBASE0 0x2C /* I/O base register 0 */ +#define CB_PCI_IOLIMIT0 0x30 /* I/O limit register 0 */ +#define CB_PCI_IOBASE1 0x34 /* I/O base register 1 */ +#define CB_PCI_IOLIMIT1 0x38 /* I/O limit register 1 */ +#define CB_PCI_INT_LINE 0x3C /* Interrupt Line */ +#define CB_PCI_INT_PIN 0x3D /* Interrupt Pin */ +#define CB_PCI_BRIDGE_CTRL 0x3E /* Bridge Control */ +#define CB_PCI_SUBSYS_VENDOR_ID 0x40 /* Subsystem Vendor ID */ +#define CB_PCI_SUBSYS_ID 0x42 /* Subsystem ID */ +#define CB_PCI_LEGACY16_IOADDR 0x44 /* Legacy 16bit I/O address */ + +/* For PCI Command register (CB_PCI_COMMAND) */ +#define CB_CMD_DEFAULT 0x0007 + +/* For Bridge Control register (CB_PCI_BRIDGE_CTRL) */ +#define CB_BCR_CB_RESET 0x0040 +#define CB_BCR_INT_EXCA 0x0080 + +/* Vendor specific PCI configuration regisrers */ + +/* Texas Instruments PCI-1130/1131 CardBus Controller */ +#define TI113X_PCI_SYSTEM_CONTROL 0x80 /* System Control */ +#define TI113X_PCI_RETRY_STATUS 0x90 /* Retry Status */ +#define TI113X_PCI_CARD_CONTROL 0x91 /* Card Control */ +#define TI113X_PCI_DEVICE_CONTROL 0x92 /* Device Control */ +#define TI113X_PCI_BUFFER_CONTROL 0x93 /* Buffer Control */ +#define TI113X_PCI_SOCKET_DMA0 0x94 /* Socket DMA Register 0 */ +#define TI113X_PCI_SOCKET_DMA1 0x98 /* Socket DMA Register 1 */ + +/* Card control register (TI113X_SYSTEM_CONTROL == 0x80) */ +#define TI113X_SYSCNTL_VCC_PROTECT 0x00200000u +#define TI113X_SYSCNTL_CLKRUN_SEL 0x00000080u +#define TI113X_SYSCNTL_PWRSAVINGS 0x00000040u +#define TI113X_SYSCNTL_KEEP_CLK 0x00000002u +#define TI113X_SYSCNTL_CLKRUN_ENA 0x00000001u + +/* Card control register (TI113X_CARD_CONTROL == 0x91) */ +#define TI113X_CARDCNTL_RING_ENA 0x80u +#define TI113X_CARDCNTL_ZOOM_VIDEO 0x40u +#define TI113X_CARDCNTL_PCI_IRQ_ENA 0x20u +#define TI113X_CARDCNTL_PCI_IREQ 0x10u +#define TI113X_CARDCNTL_PCI_CSC 0x08u +#define TI113X_CARDCNTL_MASK (TI113X_CARDCNTL_PCI_IRQ_ENA | TI113X_CARDCNTL_PCI_IREQ | TI113X_CARDCNTL_PCI_CSC) +#define TI113X_FUNC0_VALID TI113X_CARDCNTL_MASK +#define TI113X_FUNC1_VALID (TI113X_CARDCNTL_PCI_IREQ | TI113X_CARDCNTL_PCI_CSC) +/* Reserved bit 0x04u */ +#define TI113X_CARDCNTL_SPKR_ENA 0x02u +#define TI113X_CARDCNTL_INT 0x01u + +/* Device control register (TI113X_DEVICE_CONTROL == 0x92) */ +#define TI113X_DEVCNTL_5V_SOCKET 0x40u +#define TI113X_DEVCNTL_3V_SOCKET 0x20u +#define TI113X_DEVCNTL_INTR_MASK 0x06u +#define TI113X_DEVCNTL_INTR_NONE 0x00u +#define TI113X_DEVCNTL_INTR_ISA 0x02u +#define TI113X_DEVCNTL_INTR_SERIAL 0x04u +/* TI112X specific code */ +#define TI12XX_DEVCNTL_INTR_ALLSERIAL 0x06u + +/* Cirrus Logic PD-6832 CardBus Controller */ +#define CL6832_PCI_DMA_SLAVE 0x48 /* DMA Slave configuration */ +#define CL6832_PCI_SOCKET_NUMBER 0x4C /* Socket Number */ + +/* bridge control register (CB_PCI_BRIDGE_CTRL) */ +#define CL6832_BCR_IREQ_INT_ENA 0x0080u /* IREQ-INT Enable */ +#define CL6832_BCR_MGMT_INT_ENA 0x0800u /* Management Intr Enable */ + +/* Vendor specific ExCA registers (for common part, see i82365.h) */ + +/* Texas Instruments PCI-1130/1131 CardBus Controller */ +#define TI113X_ExCA_IO_OFFSET0 0x36 /* Offset of I/O window */ +#define TI113X_ExCA_IO_OFFSET1 0x38 /* Offset of I/O window */ +#define TI113X_ExCA_MEM_WINDOW_PAGE 0x3C /* Memory Window Page */ + +/* Cirrus Logic PD-6832 CardBus Controller */ +#define CL6832_ExCA_MISC1 0x16 /* Misc control 1 */ +#define CL6832_ExCA_FIFO 0x17 /* FIFO control */ +#define CL6832_ExCA_MISC2 0x1e /* Misc control 2 */ +#define CL6832_ExCA_CHIP_INFO 0x1f /* Chip information */ +#define CL6832_ExCA_ATA 0x1f /* ATA Control */ +#define CL6832_ExCA_EXTEND_INDEX 0x2e /* Extended Index */ +#define CL6832_ExCA_EXTEND_DATA 0x2f /* Extended Data */ + +/* Extended Index (CL6832_ExCA_EXTEND_INDEX == 0x2e) */ +#define CL6832_ExCA_EXT_EXT1 0x03 /* Extension Control 1 */ +#define CL6832_ExCA_EXT_GEN_MAP_U0 0x05 /* Gen Map Upper addr 0 */ +#define CL6832_ExCA_EXT_GEN_MAP_U1 0x06 /* Gen Map Upper addr 1 */ +#define CL6832_ExCA_EXT_GEN_MAP_U2 0x07 /* Gen Map Upper addr 2 */ +#define CL6832_ExCA_EXT_GEN_MAP_U3 0x08 /* Gen Map Upper addr 3 */ +#define CL6832_ExCA_EXT_GEN_MAP_U4 0x09 /* Gen Map Upper addr 4 */ +#define CL6832_ExCA_EXT_EXT2 0x0b /* Extension Control 2 */ +#define CL6832_ExCA_EXT_GEN_MAP_U5 0x20 /* Gen Map Upper addr 5 */ +#define CL6832_ExCA_EXT_GEN_MAP_U6 0x21 /* Gen Map Upper addr 6 */ +#define CL6832_ExCA_EXT_PCI_SPACE 0x22 /* PCI Space Control */ +#define CL6832_ExCA_EXT_PCCARD_SPACE 0x23 /* PC-Card Space Control */ +#define CL6832_ExCA_EXT_WINDOW_TYPE 0x24 /* Window Type Select */ +#define CL6832_ExCA_EXT_MISC3 0x25 /* Misc Control 3 */ +#define CL6832_ExCA_EXT_SMB_POWER 0x26 /* SMB Sock Pwr Ctrl Addr */ +#define CL6832_ExCA_EXT_GEN_MAP_EXTRA0 0x27 /* Gen Map Extra Control 0 */ +#define CL6832_ExCA_EXT_GEN_MAP_EXTRA1 0x28 /* Gen Map Extra Control 1 */ +#define CL6832_ExCA_EXT_GEN_MAP_EXTRA2 0x29 /* Gen Map Extra Control 2 */ +#define CL6832_ExCA_EXT_GEN_MAP_EXTRA3 0x2a /* Gen Map Extra Control 3 */ +#define CL6832_ExCA_EXT_GEN_MAP_EXTRA4 0x2b /* Gen Map Extra Control 4 */ +#define CL6832_ExCA_EXT_GEN_MAP_EXTRA5 0x2c /* Gen Map Extra Control 5 */ +#define CL6832_ExCA_EXT_GEN_MAP_EXTRA6 0x2d /* Gen Map Extra Control 6 */ +#define CL6832_ExCA_EXT_CSC 0x2e /* Ext. Card Status Change */ +#define CL6832_ExCA_EXT_MISC4 0x2f /* Misc Control 4 */ +#define CL6832_ExCA_EXT_MISC5 0x30 /* Misc Control 5 */ +#define CL6832_ExCA_EXT_MISC6 0x31 /* Misc Control 5 */ + +/* infomation about PCI PC-card bridges */ + +struct pci_pcic { + u_int8_t bus; + u_int8_t slot; + u_long legacy16; + u_int pci_id; +}; + +#ifdef CB_TEST +struct cb_slot { + /* CardBus support */ + pcici_t tag; + u_long cb_base; + u_int8_t cb_bus; + u_int8_t cb_irq; +}; + +#ifndef CB_BASE_MEM +#define CB_BASE_MEM 0x68000000 +#endif +#ifndef CB_BUS_BASE +#define CB_BUS_BASE 0x20 +#endif + +/* + * CardBus Register index addresses. + */ + +#define CB_STATUS_EVENT 0x00 /* Status Event Register */ +#define CB_STATUS_MASK 0x04 /* Status Mask Register */ +#define CB_PRESENT_STATE 0x08 /* Present State Register */ +#define CB_FORCE 0x0c /* Force Register */ +#define CB_CONTROL 0x10 /* Control Register */ + +/* For Present State and Force register (CB_PRESENT_STATE and CB_FORCE) */ +#define CB_CSTSCHG 0x00000001u /* Card Status Change */ +#define CB_CCD1 0x00000002u /* Card Detects 1 */ +#define CB_CCD2 0x00000004u /* Card Detects 2 */ +#define CB_POWER_CYCLE 0x00000008u /* Power Cycle */ +#define CB_16BIT_CARD 0x00000010u /* 16-bit PC Card */ +#define CB_CB_CARD 0x00000020u /* CardBus PC Card */ +#define CB_INTERRUPT 0x00000040u /* Interrupt pin from card */ +#define CB_NOT_A_CARD 0x00000080u /* Not a Card */ +#define CB_DATA_LOST 0x00000100u /* Data Lost */ +#define CB_BAD_VCC_REQ 0x00000200u /* Bad Vcc Request */ +#define CB_5V_CARD 0x00000400u /* 5V Card */ +#define CB_3V_CARD 0x00000800u /* 3V Card */ +#define CB_XV_CARD 0x00001000u /* XV Card */ +#define CB_YV_CARD 0x00002000u /* YV Card */ +#define CB_CV_TEST 0x00004000u /* test VS and CCD */ +#define CB_5V_AVAIL 0x10000000u /* 5V Vcc Voltage Available */ +#define CB_3V_AVAIL 0x20000000u /* 3V Vcc Voltage Available */ +#define CB_XV_AVAIL 0x40000000u /* XV Vcc Voltage Available */ +#define CB_YV_AVAIL 0x80000000u /* YV Vcc Voltage Available */ + +/* For Control register (CB_CONTROL) */ +#define CB_VPP_CTRL 0x0007u /* Vpp control bits */ +#define CB_VPP_0V 0x0000u /* 0 volts */ +#define CB_VPP_12V 0x0001u /* 12 volts */ +#define CB_VPP_5V 0x0002u /* 5 volts */ +#define CB_VPP_3V 0x0003u /* 3 volts */ +#define CB_VCC_CTRL 0x0070u /* Vcc control bits */ +#define CB_VCC_0V 0x0000u /* 0 volts */ +#define CB_VCC_5V 0x0020u /* 5 volts */ +#define CB_VCC_3V 0x0030u /* 3 volts */ +#define CB_STOP_CLOCK 0x0080u /* stop CardBus clock */ +#endif /* CB_TEST */ + +#endif /* _PCIC_P_H_ */ diff -urN sys.2.2.8-RELEASE/pci/pcireg.h sys/pci/pcireg.h --- sys.2.2.8-RELEASE/pci/pcireg.h Thu Apr 24 17:05:15 1997 +++ sys/pci/pcireg.h Tue Dec 22 13:55:21 1998 @@ -126,6 +126,7 @@ #define PCI_SUBCLASS_BRIDGE_MC 0x00030000 #define PCI_SUBCLASS_BRIDGE_PCI 0x00040000 #define PCI_SUBCLASS_BRIDGE_PCMCIA 0x00050000 +#define PCI_SUBCLASS_BRIDGE_CARDBUS 0x00070000 #define PCI_SUBCLASS_BRIDGE_MISC 0x00800000 /* diff -urN sys.2.2.8-RELEASE/pci/pcisupport.c sys/pci/pcisupport.c --- sys.2.2.8-RELEASE/pci/pcisupport.c Thu Jun 18 00:29:09 1998 +++ sys/pci/pcisupport.c Wed Dec 23 22:37:45 1998 @@ -174,10 +174,42 @@ return ("Intel 82454GX (Orion) host to PCI bridge"); case 0x00051166: return ("Ross (?) host to PCI bridge"); + case 0xc5571045: + return ("Opti 82C557 (Viper-M) host to PCI bridge"); + case 0xc5581045: + return ("Opti 82C558 (Viper-M) ISA+IDE"); + case 0xc7001045: + return ("Opti 82C700 (FireStar) PCI-ISA bridge"); + case 0xc7011045: + return ("Opti 82C701 (FireStar) host to PCI bridge"); + case 0xd7211045: + return ("Opti (FireStar) IDE interface"); case 0x00221014: return ("IBM 82351 PCI-PCI bridge"); case 0x00011011: return ("DEC 21050 PCI-PCI bridge"); + case 0xe8911060: + return ("UMC UM8891N host to PCI bridge"); + case 0xe8861060: + return ("UMC UM8886N PCI-ISA bridge"); + case 0x673a1060: + return ("UMC UM8886BF PCI Dual IDE controller"); + case 0x83301283: + return ("ITE8330g PCI bridge"); + case 0xe8861283: + return ("ITE8330g PCI-ISA bridge"); + case 0x673a1283: + return ("ITE8330g IDE interface"); + case 0x12341283: + return ("ITE8330g USB interface"); + case 0x00011066: + return ("PicoPower Vesuvius host to PCI bridge"); + case 0x00021066: + return ("PicoPower Vesuvius PCI-ISA bridge"); + case 0x06431095: + return ("CMD 0643 Bus Master PCI-IDE controller"); + case 0x06011179: + return ("TOSHIBA 0601 host to PCI bridge"); /* NEC -- vendor 0x1033 */ case 0x00011033: @@ -725,6 +757,25 @@ pciroots++; } +#ifdef FORCE_IRQ_ROUTING +static void +viper_irq_routing(pcici_t tag) +{ + pci_conf_write (tag, 0x40, 0x0008001bul); +} + +static void +piix_irq_routing(pcici_t tag) +{ + int elcr2; + /* pci_conf_write (tag, 0x60, 0x0980800aul); */ + pci_conf_write (tag, 0x60, 0x09800a09ul); + elcr2 = inb(0x4d1); + outb(0x4d1, elcr2|0x04); + printf("ELCR2 %02x -> %02x\n", elcr2, elcr2|0x04); +} +#endif /* FORCE_IRQ_ROUTING */ + static void chipset_attach (pcici_t config_id, int unit) { @@ -740,6 +791,20 @@ config_Ross (config_id); break; } +#ifdef FORCE_IRQ_ROUTING + switch (pci_conf_read (config_id, PCI_ID_REG)) { + + case 0xc5581045: /* Opti Viper-M ISA+IDE */ + viper_irq_routing(config_id); + break; + case 0x122e8086: /* Intel PIIX */ + case 0x12348086: /* Intel MPIIX */ + case 0x70008086: /* Intel PIIX3 */ + case 0x71108086: /* Intel PIIX4 */ + piix_irq_routing(config_id); + break; + } +#endif /* FORCE_IRQ_ROUTING */ #ifndef PCI_QUIET if (!bootverbose) return; @@ -765,10 +830,12 @@ break; case 0x70008086: case 0x122e8086: + case 0x71108086: writeconfig (config_id, conf82371fb); break; case 0x70108086: case 0x12308086: + case 0x71118086: writeconfig (config_id, conf82371fb2); break; #if 0 diff -urN sys.2.2.8-RELEASE/scsi/scsiconf.c sys/scsi/scsiconf.c --- sys.2.2.8-RELEASE/scsi/scsiconf.c Sun Mar 8 15:53:13 1998 +++ sys/scsi/scsiconf.c Tue Dec 22 13:55:24 1998 @@ -27,7 +27,7 @@ #include #include #include -#ifdef PC98 +#if 1 /* PC98 */ #include #endif @@ -52,6 +52,10 @@ static void extend_release __P((struct extend_array *ea, int index)); static void *extend_set __P((struct extend_array *ea, int index, void *value)); +#ifdef SCSI_DETACH +#define UNIT_ALLOC_COUNT 32 +#endif + /* * XXX SCSI_DEVICE_ENTRIES() generates extern switches but it should * generate static switches except for this. Separate macros are @@ -250,7 +254,7 @@ { #if NOD > 0 { - T_OPTICAL, T_OPTICAL, T_REMOV, "MATSHITA", "PD-1 LF-100*", "*", + T_OPTICAL, T_OPTICAL, T_REMOV, "MATSHITA", "PD-1 LF-1*", "*", "od", SC_MORE_LUS }, { @@ -645,10 +649,18 @@ * a wired down device, but we do want "sd 4 target 5" or * even "sd 4 scbus 1" to match. */ +#ifdef SCSI_DETACH + if (IS_SPECIFIED(sdc->unit) && + (IS_SPECIFIED(sdc->target) || IS_SPECIFIED(sdc->cunit ))) { + for(i = 0; i <= sdc->unit; i++) + scsi_unit_use(sd, i); + } +#else if (IS_SPECIFIED(sdc->unit) && (IS_SPECIFIED(sdc->target) || IS_SPECIFIED(sdc->cunit)) && sd->free_unit <= sdc->unit) sd->free_unit = sdc->unit + 1; +#endif } } } @@ -720,7 +732,7 @@ { int i; int found; -#ifdef PC98 +#if 1 /* PC98 */ struct cfdata cf; cf.cf_flags = 0; #endif @@ -736,7 +748,7 @@ sc_link->scsibus == scsi_dinit[i].cunit) { sc_link->dev_unit = scsi_dinit[i].unit; found = 1; -#ifdef PC98 +#if 1 /* PC98 */ cf.cf_flags = scsi_dinit[i].flags; #endif if (bootverbose) @@ -746,10 +758,17 @@ } } - if (!found) + if (!found) { +#ifdef SCSI_DETACH + sc_link->dev_unit = + scsi_free_unit_get(sc_link->device); + scsi_unit_use(sc_link->device, sc_link->dev_unit); +#else sc_link->dev_unit = sc_link->device->free_unit++; +#endif + } -#ifdef PC98 +#if 1 /* PC98 */ if (!found) { for (i = 0; scsi_dinit[i].name; i++) { if ((strcmp(sc_link->device->name, scsi_dinit[i].name) == 0) && @@ -1472,3 +1491,113 @@ } return (bestmatch); } + +#ifdef SCSI_DETACH +void +scsi_unit_use(struct scsi_device *device, int unit) +{ + int n, i; + u_char mask; + u_char *q; + + if (device->free_unit == 0 || unit >= UNIT_ALLOC_COUNT ) { + if (device->free_unit == 0) + device->max_unit_count = UNIT_ALLOC_COUNT; + n = device->max_unit_count * sizeof(char); + q = malloc(n, M_DEVBUF, M_NOWAIT); + bzero(q, n); + if (device->free_unit) { + bcopy(device->free_unit, q, + n - (UNIT_ALLOC_COUNT * sizeof(char))); + free(device->free_unit,M_DEVBUF); + } + device->free_unit = q; + device->max_unit_count =+ UNIT_ALLOC_COUNT; + } + i = unit / (sizeof(char) * 8); + mask = 1 << (unit - (i * sizeof(char) * 8)); + (device->free_unit)[i] = (device->free_unit)[i] | mask; +#ifdef PCCARD_LKM_DEBUG + printf("unit_use:free_unit=%x mask=%x unit=%d\n", + (device->free_unit)[i], mask, unit); +#endif +} + +void +scsi_unit_unuse(struct scsi_device *device, int unit) +{ + int i; + u_char mask; + + i = unit / (sizeof(char) * 8); + mask = 1 << (unit - (i * sizeof(char) * 8)); +#ifdef PCCARD_LKM_DEBUG + printf("unit_unuse:free_unit=%x i=%d\n",(device->free_unit)[i],i); +#endif + (device->free_unit)[i] = (device->free_unit)[i] & ~mask; +#ifdef PCCARD_LKM_DEBUG + printf("unit_unuse:free_unit=%x mask=%x unit=%d\n", + (device->free_unit)[i],~mask,unit); +#endif +} + +int +scsi_free_unit_get(struct scsi_device *device) +{ + int i, j, n; + u_char mask; + + if (device->free_unit == 0) { + device->max_unit_count = UNIT_ALLOC_COUNT; + n = device->max_unit_count * sizeof(char); + device->free_unit = malloc(n,M_DEVBUF,M_NOWAIT); + bzero(device->free_unit,n); + } +#ifdef PCCARD_LKM_DEBUG + printf("scsi:unit_get free_unit = %x\n",device->free_unit); +#endif + for(i = 0; i <= (device->max_unit_count / (sizeof(char) * 8)); i++) { + for(j = 0; j < 8; j++) { + mask = 1 << j; +#ifdef PCCARD_LKM_DEBUG + printf("unit_get:mask=%x free_unit=%x\n", + mask,(device->free_unit)[i]); +#endif + if(mask & (device->free_unit)[i]) + continue; + else + return(i * sizeof(char) * 8 + j); + } + } + return(i * sizeof(char) * 8); +} + +void +scsi_detachdev(struct scsibus_data *scbus) +{ + struct scsi_link *sc_link; + int targ,lun,i; + + for(targ = 0; targ < scbus->maxtarg + 1; targ++) { + for(lun=0; lun < 8; lun++) { + sc_link = (*scbus->sc_link)[targ][lun]; + if (sc_link) { + scsi_unit_unuse(sc_link->device, + sc_link->dev_unit); + extend_release(scbusses,sc_link->scsibus); + scsi_free_unit(sc_link); + } + } + } + free(scbus->sc_link, M_TEMP); + scbus->sc_link = NULL; + free(scbus,M_TEMP); + scbus = NULL; +} + +struct scsibus_data * +scsi_extend_get(int bus) +{ + return (struct scsibus_data *)extend_get(scbusses, bus); +} +#endif /* SCSI_DETACH */ diff -urN sys.2.2.8-RELEASE/scsi/scsiconf.h sys/scsi/scsiconf.h --- sys.2.2.8-RELEASE/scsi/scsiconf.h Tue Dec 30 12:46:56 1997 +++ sys/scsi/scsiconf.h Tue Dec 22 13:55:24 1998 @@ -56,7 +56,7 @@ struct buf; struct scsi_xfer; -#ifdef PC98 +#if 1 /* PC98 */ struct cfdata; #endif @@ -77,7 +77,7 @@ { /* 04*/ int32_t (*scsi_cmd) __P((struct scsi_xfer *xs)); /* 08*/ void (*scsi_minphys) __P((struct buf *bp)); -#ifdef PC98 +#if 1 /* PC98 */ /* 12*/ int32_t (*open_target_lu) __P((struct scsi_link *sc_link, struct cfdata *cf)); #else @@ -170,8 +170,15 @@ /* 80*/ struct extend_array *links; +#ifdef SCSI_DETACH +/* 84*/ u_char *free_unit; +#else /* 84*/ int free_unit; +#endif /* 88*/ struct scsi_device *next; /* Next in list in the registry. */ +#ifdef SCSI_DETACH + int max_unit_count; +#endif }; /* SCSI_DEVICE_ENTRIES: A macro to generate all the entry points from the @@ -486,6 +493,14 @@ errval scsi_change_def( struct scsi_link *sc_link, u_int32_t flags); #endif #endif /* KERNEL */ + +#ifdef SCSI_DETACH +void scsi_unit_use __P((struct scsi_device *, int)); +void scsi_unit_unuse __P((struct scsi_device *, int)); +int scsi_free_unit_get __P((struct scsi_device *)); +struct scsibus_data *scsi_extend_get(int); +void scsi_detachdev __P((struct scsibus_data *)); +#endif #define SCSI_EXTERNALLEN (sizeof(struct scsi_link)) diff -urN sys.2.2.8-RELEASE/sys/systm.h sys/sys/systm.h --- sys.2.2.8-RELEASE/sys/systm.h Thu May 7 04:15:49 1998 +++ sys/sys/systm.h Wed Dec 23 01:21:33 1998 @@ -173,6 +173,7 @@ int rm_at_shutdown(bootlist_fn function, void *arg); #define SHUTDOWN_PRE_SYNC 0 #define SHUTDOWN_POST_SYNC 1 +#define SHUTDOWN_POWER_OFF 2 /* forking */ /* XXX not yet */ typedef void (*forklist_fn)(struct proc *parent,struct proc *child,int flags); #!/bin/sh # # This is rc.conf - a file full of useful variables that you can set # to change the default startup behavior of your system. # # All arguments must be in double or single quotes. # # $Id: rc.conf.sample,v 1.1.2.1.4.1.2.3 1998/12/24 14:47:33 hosokawa Exp $ ############################################################## ### Important initial Boot-time options ##################### ############################################################## swapfile="NO" # Set to name of swapfile if aux swapfile desired. apm_enable="YES" # Set to YES if you want APM enabled. pccard_enable="YES" # Set to YES if you want to configure PCCARD devices. pccard_mem="DEFAULT" # If pccard_enable=YES, this is card memory address. pccard_beep="2" # 0: silent, 1: simple beep, 2: melody pccard_ifconfig="NO" # Specialized pccard ethernet configuration (or NO). pccardd=/stand/pccardd # Absolute pathname of pccard daemon pccardc=/stand/pccardc # Absolute pathname of pccard control utility local_startup="/usr/local/etc/rc.d /usr/X11R6/etc/rc.d" # startup script dirs. ############################################################## ### Network configuration sub-section ###################### ############################################################## ### Basic network options: ### hostname="myname.my.domain" # Set this! nisdomainname="NO" # Set to NIS domain if using NIS (or NO). firewall_enable="NO" # Set to YES to enable firewall functionality firewall_type="UNKNOWN" # Firewall type (see /etc/rc.firewall) firewall_quiet="NO" # Set to YES to suppress rule display tcp_extensions="YES" # Allow RFC1323 & RFC1644 extensions (or NO). network_interfaces="lo0" # List of network interfaces (lo0 is loopback). ifconfig_lo0="inet 127.0.0.1" # default loopback device configuration. #ifconfig_lo0_alias0="inet 127.0.0.254 netmask 0xffffffff" # Sample alias entry. ### Network daemon (miscellaneous) & NFS options: ### syslogd_enable="YES" # Run syslog daemon (or NO). syslogd_flags="" # Flags to syslogd (if enabled). inetd_enable="YES" # Run the network daemon dispatcher (or NO). inetd_flags="" # Optional flags to inetd. named_enable="NO" # Run named, the DNS server (or NO). named_program="/usr/sbin/named" # named program, in case we want bind8 instead. named_flags="-b /etc/namedb/named.boot" # Flags to named (if enabled). kerberos_server_enable="NO" # Run a kerberos master server (or NO). kadmind_server_enable="NO" # Run kadmind (or NO) -- do not run on # a slave kerberos server kerberos_stash="" # Is the kerberos master key stashed? rwhod_enable="NO" # Run the rwho daemon (or NO). amd_enable="NO" # Run amd service with $amd_flags (or NO). amd_flags="-a /net -c 1800 -k i386 -d my.domain -l syslog /host /etc/amd.map" nfs_client_enable="NO" # This host is an NFS client (or NO). nfs_client_flags="-n 4" # Flags to nfsiod (if enabled). nfs_access_cache="0" # Client cache timeout in seconds nfs_server_enable="NO" # This host is an NFS server (or NO). nfs_server_flags="-u -t 4" # Flags to nfsd (if enabled). mountd_flags="-r" # Flags to mountd (if NFS server enabled). nfs_reserved_port_only="NO" # Provide NFS only on secure port (or NO). rpc_lockd_enable="NO" # Run NFS rpc.lockd (*broken!*) if nfs_server. rpc_statd_enable="YES" # Run NFS rpc.statd if nfs_server (or NO). portmap_enable="YES" # Run the portmapper service (or NO). portmap_flags="" # Flags to portmap (if enabled). rarpd_enable="NO" # Run rarpd (or NO). rarpd_flags="" # Flags to rarpd. xtend_enable="NO" # Run the X-10 power controller daemon. xtend_flags="" # Flags to xtend (if enabled). dhcp_flags="" # Flags to dhcp ### Network Time Services options: ### timed_enable="NO" # Run the time daemon (or NO). timed_flags="" # Flags to timed (if enabled). ntpdate_enable="NO" # Run the ntpdate to sync time (or NO). ntpdate_program="ntpdate" # path to ntpdate, if you want a different one. ntpdate_flags="" # Flags to ntpdate (if enabled). xntpd_enable="NO" # Run xntpd Network Time Protocol (or NO). xntpd_program="xntpd" # path to xntpd, if you want a different one. xntpd_flags="-p /var/run/xntpd.pid" # Flags to xntpd (if enabled). tickadj_enable="NO" # Run tickadj (or NO). tickadj_flags="-Aq" # Flags to tickadj (if enabled). # Network Information Services (NIS) options: ### nis_client_enable="NO" # We're an NIS client (or NO). nis_client_flags="" # Flags to ypbind (if enabled). nis_ypset_enable="NO" # Run ypset at boot time (or NO). nis_ypset_flags="" # Flags to ypset (if enabled). nis_server_enable="NO" # We're an NIS server (or NO). nis_server_flags="" # Flags to ypserv (if enabled). nis_ypxfrd_enable="NO" # Run rpc.ypxfrd at boot time (or NO). nis_ypxfrd_flags="" # Flags to rpc.ypxfrd (if enabled). nis_yppasswdd_enable="NO" # Run rpc.yppasswdd at boot time (or NO). nis_yppasswdd_flags="" # Flags to rpc.yppasswdd (if enabled). ### Network routing options: ### defaultrouter="NO" # Set to default gateway (or NO). static_routes="" # Set to static route list (or leave empty). gateway_enable="NO" # Set to YES if this host will be a gateway. router_enable="NO" # Set to YES to enable a routing daemon. router="routed" # Name of routing daemon to use if enabled. router_flags="-q" # Flags for routing daemon. mrouted_enable="NO" # Do multicast routing (see /etc/mrouted.conf). mrouted_flags="" # Flags for multicast routing daemon. ipxgateway_enable="NO" # Set to YES to enable IPX routing. ipxrouted_enable="NO" # Set to YES to run the IPX routing daemon. ipxrouted_flags="" # Flags for IPX routing daemon. arpproxy_all="" # replaces obsolete kernel option ARP_PROXYALL. forward_sourceroute="NO" # do source routing (only if gateway_enable is set to "YES") accept_sourceroute="NO" # accept source routed packets to us natd_enable="NO" # Enable natd if firewall_enable. natd_interface="fxp0" # Public interface to use with natd if natd_enable. natd_flags="" # Additional flags for natd. ############################################################## ### System console options ################################# ############################################################## keymap="NO" # keymap in /usr/share/syscons/keymaps/* (or NO). keyrate="NO" # keyboard rate to: slow, normal, fast (or NO). keybell="NO" # bell to duration.pitch or normal or visual (or NO). keychange="NO" # function keys default values (or NO). cursor="NO" # cursor type {normal|blink|destructive} (or NO). scrnmap="NO" # screen map in /usr/share/syscons/scrnmaps/* (or NO). font8x16="NO" # font 8x16 from /usr/share/syscons/fonts/* (or NO). font8x14="NO" # font 8x14 from /usr/share/syscons/fonts/* (or NO). font8x8="NO" # font 8x8 from /usr/share/syscons/fonts/* (or NO). blanktime="300" # blank time (in seconds) or "NO" to turn it off. saver="NO" # screen saver: blank/daemon/green/snake/star/NO. moused_enable="NO" # Run the mouse daemon. moused_type="auto" # See man page for rc.conf(5) for available settings. moused_port="/dev/cuaa0" # Set to your mouse port. moused_flags="" # Any additional flags to moused. allscreens_flags="" # Set this vidcontrol mode for all virtual screens ############################################################## ### Miscellaneous administrative options ################### ############################################################## cron_enable="YES" # Run the periodic job daemon. lpd_enable="NO" # Run the line printer daemon. lpd_flags="" # Flags to lpd (if enabled). sendmail_enable="YES" # Run the sendmail daemon (or NO). sendmail_flags="-bd -q30m" # -bd is pretty mandatory. dumpdev="NO" # Device name to crashdump to (if enabled). check_quotas="NO" # Check quotas (or NO). accounting_enable="NO" # Turn on process accounting (or NO). ibcs2_enable="NO" # Ibcs2 (SCO) emulation loaded at startup (or NO). linux_enable="NO" # Linux emulation loaded at startup (or NO). rand_irqs="NO" # Stir the entropy pool (like "5 11" or NO). clear_tmp_enable="NO" # Clear /tmp at startup. ldconfig_paths="/usr/lib/compat /usr/X11R6/lib /usr/local/lib" # shared library search paths ############################################################## ### PC-card options ######################################## ############################################################## pccard_ether="ed0 ep0 fe0 sn0" # Pccard ethernet interfaces (or NO). ifconfig_common="inet 192.168.1.100 netmask 255.255.255.0" ifconfig_ed0=$ifconfig_common ifconfig_ep0=$ifconfig_common ifconfig_fe0=$ifconfig_common ifconfig_sn0=$ifconfig_common # Sample alias entry. #ifconfig_common_alias0="inet 192.168.1.101 netmask 255.255.255.255" #ifconfig_ed0_alias0=$ifconfig_common_alias0 #ifconfig_ep0_alias0=$ifconfig_common_alias0 #ifconfig_fe0_alias0=$ifconfig_common_alias0 #ifconfig_sn0_alias0=$ifconfig_common_alias0 # Sample static routes #static_routes_common="" # Set to static route list (or leave empty). #static_routes_ed0=$static_routes_common #static_routes_ep0=$static_routes_common #static_routes_fe0=$static_routes_common #static_routes_sn0=$static_routes_common # Clean the routing table # if $route_flush==YES || $defaultrouter!=NO || $static_routes!=NULL # when card is removed route_flush=YES ############################################################## ### Allow local configuration override at the very end here ## ############################################################## if [ -f /etc/rc.conf.local ]; then . /etc/rc.conf.local fi #!/bin/sh - # # pccard_ether_remove interfacename # # example: pccard_ether_remove ep0 # # $Id: pccard_ether_remove,v 1.1.1.1.10.5 1998/12/25 01:12:06 hosokawa Exp $ # Mar 9, 1996 by Hajimu UMEMOTO # Mar 31, 1997 by Tatsumi Hosokawa # Suck in the /etc/rc.conf variables if [ -f /etc/rc.conf ]; then . /etc/rc.conf fi interface=$1 if [ "x$pccard_ether" != "xNO" ]; then eval ifconfig_args=\$ifconfig_${interface} if [ "x$ifconfig_args" = "xDHCP" ]; then if [ -s /var/run/dhclient.pid ]; then kill `cat /var/run/dhclient.pid` rm -f /var/run/dhclient.pid elif [ -s /var/run/dhcpc.$interface.pid ]; then kill `cat /var/run/dhcpc.$interface.pid` rm -f /var/run/dhcpc.$interface.pid else killarg=`ps x | awk '$5 ~/(^|\/)dhc(pc|lient)$/ && $6 ~/^'$1'$/ {print $1}'` if [ "x$killarg" != "x" ] ; then kill $killarg fi fi else # Delelte static route if specified eval ifx_routes=\$static_routes_${interface} if [ -n "$ifx_routes" ]; then for i in ${ifx_routes}; do eval route_args=\$route_${i} route delete ${route_args} done fi # Delete aliases if exist alias=0 while : do eval ifx_args=\$ifconfig_${interface}_alias${alias} if [ -n "$ifx_args" ]; then ifconfig $interface $ifx_args alias delete alias=`expr ${alias} + 1` else break; fi done ifconfig $interface delete arp -d -a fi fi # Clean the routing table # $route_flush==YES || $defaultrouter!=NO || $static_routes!=NULL [ -n "$defaultrouter" -a "x$defaultrouter" != "xNO" ] && route_flush="YES" [ "x${static_routes}" != "x" ] && route_flush="YES" if [ -n "$route_flush" -a "x$route_flush" != "xNO" ]; then route -n flush arp -d -a fi #!/bin/sh cp -p /stand/PAO/etc/rc.pccard /etc cp -p /stand/PAO/etc/pccard_ether* /etc cp -p /stand/PAO/etc/pccard.conf /etc mv /etc/rc.conf /etc/rc.conf.orig cp -p /stand/PAO/etc/rc.conf /etc cd /dev sh MAKEDEV apm card0 card1 card2 card3 bpf0 bpf1 bpf2 bpf3 ln -s apm apm0 #!/bin/sh - # # pccard_ether interfacename [ifconfig option] # # example: pccard_ether ep0 link1 # # $Id: pccard_ether,v 1.1.1.1.4.1.4.1.2.3 1998/12/25 01:12:01 hosokawa Exp $ # HOSOKAWA, Tatsumi # # Suck in the /etc/rc.conf variables if [ -f /etc/rc.conf ]; then . /etc/rc.conf fi interface=$1 shift if [ "x$pccard_ether" != "xNO" ]; then eval ifconfig_args=\$ifconfig_${interface} if [ "x$ifconfig_args" = "xDHCP" ]; then if [ -x /usr/local/sbin/dhclient ]; then if [ -s /var/run/dhclient.pid ]; then kill `cat /var/run/dhclient.pid` rm -f /var/run/dhclient.pid fi /usr/local/sbin/dhclient elif [ -x /usr/local/sbin/dhcpc ]; then if [ -s /var/run/dhcpc.$interface.pid ]; then kill `cat /var/run/dhcpc.$interface.pid` rm -f /var/run/dhcpc.$interface.pid fi /usr/local/sbin/dhcpc $dhcp_flags $interface else echo "DHCP client software not available" fi else # Do the primary ifconfig if specified if [ "x$ifconfig_args" != "xNO" ]; then ifconfig $interface $ifconfig_args $* fi # Check to see if aliases need to be added alias=0 while : do eval ifx_args=\$ifconfig_${interface}_alias${alias} if [ -n "$ifx_args" ]; then ifconfig $interface $ifx_args alias alias=`expr ${alias} + 1` else break; fi done # Do ipx address if specified eval ifx_args=\$ifconfig_${interface}_ipx if [ -n "$ifx_args" ]; then ifconfig $interface $ifx_args fi # Add to static route if specified eval ifx_routes=\$static_routes_${interface} if [ -n "$ifx_routes" ]; then for i in ${ifx_routes}; do eval route_args=\$route_${i} route add ${route_args} done fi fi fi if [ -n "$defaultrouter" -a "x$defaultrouter" != "xNO" -a "x$ifconfig_args" != "xDHCP" ]; then static_routes="default ${static_routes}" route_default="default ${defaultrouter}" fi # Set up any static routes. This should be done before router discovery. if [ "x${static_routes}" != "x" ]; then route -n flush for i in ${static_routes}; do eval route_args=\$route_${i} route add ${route_args} done fi s .g ..tusr.sbin{sbin> bininstall.sht .s ..u apmyMakefilez Makefile.incu .t ..vMakefilewapm.8xapm.c# PC-card sample configuration file # Tatsumi Hosokawa # # Removing all IRQ conflicts from this file can't be done because of some # IRQ-selfish PC-cards. So if you want to use some of these cards in # your machine, you will be forced to modify their IRQ parameters from # the following list. # # $Id: pccard.conf.sample,v 1.1.1.1.2.10.2.6.2.21.2.11 1999/01/10 10:11:45 toshi Exp $ # Generally available IO ports io 0x240-0x2e0 0x300-0x360 # Generally available IRQs (DEPRECATED, USE OF THE OPTION IS DISCOURAGED) #irq 10 11 # Unavailable IRQs #ignirq 9 # refrain from using SoundBlaster's IRQ, by default. ignirq 5 # it may be helful for most of notebook PCs #ignirq 15 # Available memory slots memory 0xd4000 96k #----------------------------------------------------------------------- # Were not for special reasons, please add new entries at the top of # this file when you wrote new entries for unsupported cards. # And, if you succeed using new unsupported cards, please e-mail me # the new entries. # Tatsumi Hosokawa #----------------------------------------------------------------------- # ......... for unsupported cards ......... #----------------------------------------------------------------------- # Fast Ethernet Cards #----------------------------------------------------------------------- # PLANEX (PLANET) FNW-3600-T card "Fast Ethernet" "Adapter" config 0x1 "ed0" any insert echo PLANEX FNW-3600-T inserted insert /etc/pccard_ether $device remove echo PLANEX FNW-3600-T removed remove /etc/pccard_ether_remove $device # Laneed LD-10/100CD card "Laneed" "LD-10/100CD" config default "ed0" any insert echo Laneed LD-10/100CD inserted insert /etc/pccard_ether $device remove echo Laneed LD-10/100CD removed remove /etc/pccard_ether_remove $device # Linksys EtherFast 10/100 PC Card (NE2000 Compatible) card "Linksys" "EtherFast 10/100 PC Card \(PCMPC100\)" config default "ed0" any insert echo Linksys EtherFast 10/100 inserted insert /etc/pccard_ether $device remove echo Linksys EtherFast 10/100 removed remove /etc/pccard_ether_remove $device # Logitec LPM-LN100TX 100BASE-TX Ethernet LAN CARD card "Logitec" "LPM-LN100TX" config default "ed0" any insert echo Logitec LPM-LN100TX Ethernet inserted insert /etc/pccard_ether $device remove echo Logitec LPM-LN100TX Ethernet removed remove /etc/pccard_ether_remove $device # BayNetworks NETGEAR FA410TXC Fast Ethernet card "NETGEAR" "FA410TX" "Fast Ethernet" config default "ed0" any insert echo NETGEAR FA410TX inserted insert /etc/pccard_ether $device remove echo NETGEAR FA410TX removed remove /etc/pccard_ether_remove $device # Telecom Device SuperSocket RE550T card "Telecom Device K\.K\." "SuperSocket RE550T" config default "ed0" any insert echo Telecom Device SuperSocket RE550T inserted insert /etc/pccard_ether $device remove echo Telecom Device SuperSocket RE550T removed remove /etc/pccard_ether_remove $device # ONTEC LN-2221 10/100 Ethernet Adapter card "ONTEC & SMC" "LN-2221 Ethernet PCCard" config default "sn0" any insert echo ONTEC LN-2221 Ethernet inserted insert /etc/pccard_ether $device remove echo ONTEC LN-2221 Ethernet removed remove /etc/pccard_ether_remove $device # COREGA FastEther PCC-TX card "corega K.K." "corega FastEther PCC-TX" config default "ed0" any insert echo corega FastEther PCC-TX inserted insert /etc/pccard_ether $device remove echo corega FastEther PCC-TX removed remove /etc/pccard_ether_remove $device # I/O DATA PCET/TX card "IO DATA" "PCETTX" config default "ed0" any insert echo IODATA PCETTX inserted insert /etc/pccard_ether $device remove echo IODATA PCETTX removed remove /etc/pccard_ether_remove $device #----------------------------------------------------------------------- # Ethernet Cards #----------------------------------------------------------------------- #IBM PCMCIA Ethernet I/II, RIOS PC CARD II ETHERNET card "IBM Corp\." "Ethernet" config default "ed0" any ether 0xff0 # 08:00:5a 00:04:ac 00:06:29 insert echo IBM PCMCIA Ethernet inserted insert /etc/pccard_ether $device remove echo IBM PCMCIA Ethernet removed remove /etc/pccard_ether_remove $device # Planet Smart COM 2000, Melco LPC-T card "PCMCIA" "UE2212" config default "ed0" any 0x10 ether 0xff0 00:00:e8 insert echo UE2212 inserted insert /etc/pccard_ether $device remove echo UE2212 card removed remove /etc/pccard_ether_remove $device # Accton EN2212 card "ACCTON" "EN2212" config default "ed0" any 0x30 ether 0xff0 00:00:e8 insert echo Accton EN2212 inserted insert /etc/pccard_ether $device remove echo Accton EN2212 removed remove /etc/pccard_ether_remove $device # Planet Communications Ethernet Card ENW-3501-T card "IC-CARD+" "IC-CARD+" config default "ed0" any 0x10 insert echo Planet ENW-3501-T inserted insert /etc/pccard_ether $device remove echo Planet ENW-3501-T removed remove /etc/pccard_ether_remove $device # Planet Smart COM 3500, IC-Card Ethernet, SYSCOM SC100 Ethernet Card card "IC-CARD" "IC-CARD" config default "ed0" any 0x20 # config default "ed0" any 0x10 insert echo Planet Smart Com 3500 inserted insert /etc/pccard_ether $device remove echo Planet Smart Com 3500 removed remove /etc/pccard_ether_remove $device # 3Com Etherlink III 3C589, 3C589B, 3C589C, 3C589D card "3Com Corporation" "3C589" config default "ep0" any insert echo 3Com Etherlink III inserted insert /etc/pccard_ether $device remove echo 3Com Etherlink III removed remove /etc/pccard_ether_remove $device # 3Com Megahertz 3CXE589ET card "3Com" "Megahertz 589E" config default "ep0" any insert echo 3Com Megahertz 3C589E inserted insert /etc/pccard_ether $device remove echo 3Com Megahertz 3C589E removed remove /etc/pccard_ether_remove $device # Farallon EtherMac card "Farallon" "ENet" config default "ep0" any insert echo Farallon EtherMac inserted insert /etc/pccard_ether $device remove echo Farallon EtherMac removed remove /etc/pccard_ether_remove $device # Fujitsu FMV-J181 card "PCMCIA MBH10302" "01" config 0xc "fe0" any insert echo Fujitsu FMV-J181 inserted insert /etc/pccard_ether $device remove echo Fujitsu FMV-J181 removed remove /etc/pccard_ether_remove $device # NextCom J Link NC5310 card "NextComK\.K\." "NC5310 Ver1\.0.*" config 0x14 "fe0" any # config 0x1a "fe0" any insert echo NextCom J Link NC5310 inserted insert /etc/pccard_ether $device remove echo NextCom J Link NC5310 removed remove /etc/pccard_ether_remove $device # HITACHI HT-4840-11 card "HITACHI" "HT-4840-11" config 0x1a "fe0" any insert echo HT-4840-11 inserted insert /etc/pccard_ether $device remove echo HT-4840-11 removed remove /etc/pccard_ether_remove $device # CONTEC C-NET(PC)C Ethernet card "CONTEC Co\.,Ltd\." "C-NET\(PC\)C.*" config default "fe0" any ether 0x58 00:80:4c insert echo CONTEC C-NET inserted insert /etc/pccard_ether $device remove echo CONTEC C-NET removed remove /etc/pccard_ether_remove $device # TDK LAC-CD021, LAC-CD021A card "TDK" "LAC-CD02x" config default "fe0" any # These cards have same ID strings, and different MAC address # locations. ether 0x92 00:80:98 # LAC-CD021, LAC-021A ether 0x96 00:80:98 # LAC-CD021BX insert echo TDK LAC-CD021 inserted insert /etc/pccard_ether $device remove echo TDK LAC-CD021 removed remove /etc/pccard_ether_remove $device # Fujitsu FMV-J182, FMV-J182A card "FUJITSU" "LAN Card\(FMV-J182\)" config 0x32 "fe0" any # These cards have same ID strings, and different MAC address # locations. ether 0xf2c 00:00:0e #FMV-J182 ether 0x1cc 00:00:0e #FMV-J182A insert echo Fujitsu FMV-J182 insert /etc/pccard_ether $device remove echo Fujitsu FMV-J182 remove /etc/pccard_ether_remove $device # Megahertz X-Jack Ethernet CC10BT/2 card "Megahertz" "CC10BT/2" config default "sn0" any ether attr2hex 00:00:86 insert echo X-Jack Ethernet inserted insert /etc/pccard_ether $device remove echo X-Jack Ethernet removed remove /etc/pccard_ether_remove $device # Megahertz Ethernet Adapter card "Megahertz" "ETHERNET ADAPTOR" config default "sn0" any ether attr2hex 00:00:86 insert echo Megahertz Ethernet inserted insert /etc/pccard_ether $device remove echo Megahertz Ethernet removed remove /etc/pccard_ether_remove $device # Dayna Communications CommuniCard E card "Dayna Communications, Inc\." "CommuniCard E" config default "ed0" any 0x10 ether 0x110 00:80:19 insert echo Dayna CommuniCard inserted insert /etc/pccard_ether $device remove echo Dayna CommuniCard remove remove /etc/pccard_ether_remove $device # GVC NIC-2000P Ethernet Card card "GVC" "NIC-2000p" config default "ed0" any 0x10 insert echo GVC NIC-200P inserted insert /etc/pccard_ether $device remove echo GVC NIC-200P removed remove /etc/pccard_ether_remove $device # No-brand NE-2000 compatible card card "PCMCIA" "ETHERNET V1.0" config default "ed0" any 0x10 ether 0xff0 # MAC address field should be filled insert echo PCMCIA ETHERNET V1.0 inserted insert /etc/pccard_ether $device remove echo PCMCIA ETHERNET V1.0 removed remove /etc/pccard_ether_remove $device # Eiger Labs Ethernet COMBO card "EIGER Labs Inc\." "Ethernet COMBO Card" config default "ed0" any 0x10 insert echo Eiger Labs Ethernet COMBO inserted insert /etc/pccard_ether $device remove echo Eiger Labs Ethernet COMBO inserted remove /etc/pccard_ether_remove $device # D-Link DE-650 Ethernet Card card "D-Link" "DE-650" config default "ed0" any 0x10 # New models of DE650 has no ether MAC address definition in CIS tupples. # If you have an older one, please uncomment the following line. # ether 0x40 00:80:c8 insert echo D-link DE-650 inserted insert /etc/pccard_ether $device remove echo D-link DE-650 removed remove /etc/pccard_ether_remove $device # National Semiconductor InfoMover 4100 card "National Semiconductor" "InfoMover 4100" config default "ed0" any ether 0xff0 08:00:17 insert echo National Semiconductor InfoMover inserted insert /etc/pccard_ether $device remove echo National Semiconductor InfoMover removed remove /etc/pccard_ether_remove $device # Accton EN2216 EtherCard card "ACCTON" "EN2216-PCMCIA-ETHERNET" config 0x22 "ed0" any 0x10 ether 0x1c0 00:00:e8 insert /etc/pccard_ether $device insert echo Accton EN2216 inserted remove /etc/pccard_ether_remove $device remove echo Accton EN2216 removed # Accton UE2216 Ethernet OEM card "PCMCIA" "PCMCIA-ETHERNET-CARD" config 0x22 "ed0" any 0x10 ether 0x1c0 00:00:e8 insert echo UE2216 Ethernet inserted insert /etc/pccard_ether $device remove echo UE2216 Ethernet removed remove /etc/pccard_ether_remove $device # NDC Instant-Link card "NDC" "Ethernet" config default "ed0" any 0x30 insert echo NDC Instant-Link insert /etc/pccard_ether $device remove echo NDC Instant-Link remove /etc/pccard_ether_remove $device #Laneed PCMCIA Ethernet card. ELECOM LD-CDWA (DP83902A) card "MACNICA" "ME1-JEIDA" config default "ed0" any ether 0xb8 08:00:42 insert echo MACNICA PCMCIA Ethernet inserted insert /etc/pccard_ether $device remove echo MACNICA PCMCIA Ethernet removed remove /etc/pccard_ether_remove $device # Digital DEPCM-BA Ethernet card "DIGITAL" "DEPCM-XX" config default "ed0" any 0x10 insert echo Digital DEPCM-BA Ethernet inserted insert /etc/pccard_ether $device remove echo Digital DEPCM-BA Ethernet removed remove /etc/pccard_ether_remove $device # Matsushita Electric Industrial Co.,LTD. CF-VEL211P-B card "Matsushita Electric Industrial Co.,LTD." "CF-VEL211" config default "ed0" any ether 0xff0 00:80:45 insert echo Panasonic CF-VEL211 inserted insert /etc/pccard_ether $device remove echo Panasonic CF-VEL211 removed remove /etc/pccard_ether_remove $device # ADDTRON EP-210A card "EP-210 PCMCIA LAN CARD\." ".*" config default "ed0" any 0x10 ether 0x110 00:40:33 insert echo ADDTRON EP-210A inserted insert /etc/pccard_ether $device remove echo ADDTRON EP-210A removed remove /etc/pccard_ether_remove $device # PreMax PE-200 Ethernet Card card "PMX " "PE-200" config default "ed0" any 0x10 ether 0x7f0 00:20:e0 insert echo PREMAX PE-200 inserted insert /etc/pccard_ether $device remove echo PREMAX PE-200 removed remove /etc/pccard_ether_remove $device # No-brand NE2000 compatible card (FCC ID: LXLC1LANTB) card " " "Ethernet Combo card" config default "ed0" any 0x10 insert echo NE2000 compatible card inserted insert /etc/pccard_ether $device remove echo NE2000 compatible card removed remove /etc/pccard_ether_remove $device # RATOC REX-5588 (now testing...) card "PCMCIA LAN MBH10304 ES" " 01" # Kouji Yamamoto reported that # following entry worked with his REX-5588, but the card I borrowed # has no such config index on CIS tupple. Minor version problem? # # config 0x3a "fe0" 5 # ether 0x328 00:c0:d0 # # I tried to drive it by following entry on my DHU II, but it does # not work! # # config 0x1f "fe0" any config 0x3a "fe0" any # config 0x38 "fe0" any ether 0x32c 00:c0:d0 # many minor revs.... ether 0x328 00:c0:d0 ether 0x200 00:c0:d0 insert echo RATOC REX-5588 Ethernet inserted insert /etc/pccard_ether $device remove echo RATOC REX-5588 Ethernet removed remove /etc/pccard_ether_remove $device # SCM Ethernet Combo (*Not SMC :-)*) card "SCM" "Ethernet Combo card" config default "ed0" any 0x10 ether 0xff0 00:20:cb insert echo SCM Ethernet card inserted insert /etc/pccard_ether $device remove echo SCM Ethernet card removed remove /etc/pccard_ether_remove $device # Linksys Combo PCMCIA Ethernet Card card "LINKSYS" "E-CARD" config default "ed0" any 0x10 insert echo PCMCIA ETHERNET V1.0 inserted insert /etc/pccard_ether $device remove echo PCMCIA ETHERNET V1.0 removed remove /etc/pccard_ether_remove $device # Linksys Combo PCMCIA Ethernet Card card "Linksys" "Combo PCMCIA EthernetCard \(EC2T\)" config default "ed0" any 0x10 insert echo Linksys PCMCIA Ethernet inserted insert /etc/pccard_ether $device remove echo Linksys PCMCIA Ethernet removed remove /etc/pccard_ether_remove $device # I/O DATA PCLA/T card "I-O DATA" "PCLA" config default "ed0" any 0x10 ether 0x1c0 00:a0:b0 ether 0xff0 00:a0:b0 insert echo I-O DATA PCLA/T Ethernet inserted insert /etc/pccard_ether $device remove echo I-O DATA PCLA/T Ethernet removed remove /etc/pccard_ether_remove $device # I/O DATA PCLA/TE card "IO DATA" "PCLATE" config default "ed0" any 0x10 insert echo I-O DATA PCLA/TE Ethernet inserted insert /etc/pccard_ether $device remove echo I-O DATA PCLA/TE Ethernet removed remove /etc/pccard_ether_remove $device # Fujitsu Towa LA501 Ethernet card "FUJITSU TOWA" "LA501" config 0x29 "fe1" any 0x10 ether 0x332 00:00:0e insert echo Fujitsu Towa LA501 Ethernet inserted insert /etc/pccard_ether $device remove echo Fujitsu Towa LA501 Ethernet removed remove /etc/pccard_ether_remove $device # Grey Cell GCS2220 Ethernet Card card "Grey Cell" "GCS2220" config default "ed0" any 0x10 insert echo Grey Cell GCS2220 inserted insert /etc/pccard_ether $device remove echo Grey Cell GCS2220 removed remove /etc/pccard_ether_remove $device # Epson EEN10B Ethernet Card card "Seiko Epson Corp\." "Ethernet" config default "ed0" any 0x10 ether 0xff0 00:00:48 insert echo Epson EEN10B Ethernet Card inserted insert /etc/pccard_ether $device remove echo Epson EEN10B Ethernet Card removed remove /etc/pccard_ether_remove $device # COREGA Ethernet Card card "Corega,K.K." "(Ethernet LAN Card)" config default "ed0" any ether 0xff0 00:00:f4 insert echo Corega,K.K. Ethernet LAN Card inserted insert /etc/pccard_ether $device remove echo Corega,K.K. Ethernet LAN Card removed remove /etc/pccard_ether_remove $device # COREGA Ether PCC-T card "corega K.K." "corega Ether PCC-T" config default "ed0" any insert echo corega Ether PCC-T inserted insert /etc/pccard_ether $device remove echo corega Ether PCC-T removed remove /etc/pccard_ether_remove $device # Telecom Device SuperSocket RE450T card "Ethernet" "Adapter" config 0x3 "ed0" any # There's another minor revision of this card that has no MAC address in # CIS tupple. This revision does not require "ether" definition. If you # have it, please comment out the following line. ether 0x110 00:e0:98 # Please note that if the log message says that the MAC address of the # card is 00:00:00:00:00:00, please uncomment the "ether" definition again # and set it to proper value. insert echo Telecom Device SuperSocket RE450T inserted insert /etc/pccard_ether $device remove echo Telecom Device SuperSocket RE450T removed remove /etc/pccard_ether_remove $device # Telecom Device SuperSocket RE450T card "Telecom Device K.K." "SuperSocket RE450T" config default "ed0" any insert echo Telecom Device SuperSocket RE450T inserted insert /etc/pccard_ether $device remove echo Telecom Device SuperSocket RE450T removed remove /etc/pccard_ether_remove $device # RPTI EP401 Ethernet NE2000 compatible card "RPTI" "EP401 Ethernet NE2000 Compatible" config default "ed0" any insert echo RPTI EP401 Ethernet inserted insert /etc/pccard_ether $device remove echo RPTI EP401 Ethernet removed remove /etc/pccard_ether_remove $device # Nihon Unisys, Ltd. JPF0400-LAN card "Nihon Unisys, Ltd." "JPF0400-LAN" config default "ed0" any ether 0xff0 00:80:45 insert echo Nihon Unisys JPF0400-LAN inserted insert /etc/pccard_ether $device remove echo Nihon Unisys JPF0400-LAN removed remove /etc/pccard_ether_remove $device # Nihon Unisys, Ltd. JPF0400-ETH card "Nihon Unisys, Ltd." "JPF0400-ETH" config default "ed0" any ether 0xff0 00:80:45 insert echo Nihon Unisys JPF0400-ETH inserted insert /etc/pccard_ether $device remove echo Nihon Unisys JPF0400-ETH removed remove /etc/pccard_ether_remove $device # SURECOM EtherPerfect EP-427 Adapter card "TAMARACK" "Ethernet" config default "ed0" any ether attr2hex 00:47:43 insert echo SURECOM EtherPerfect EP-427 inserted insert /etc/pccard_ether $device remove echo SURECOM EtherPerfect EP-427 removed remove /etc/pccard_ether_remove $device # RATOC REX-R280 card "RATOC System Inc\." "10BASE_T CARD R280" config 0x3a "fe0" any ether 0x1fc 00:c0:d0 insert echo RATOC REX-R280 10BASE-T LAN card inserted insert /etc/pccard_ether $device remove echo RATOC REX-R280 10BASE-T LAN card removed remove /etc/pccard_ether_remove $device # D-Link DE-660 Ethernet Card card "D-Link" "DE-660" config default "ed0" any 0x10 insert echo D-link DE-660 inserted insert /etc/pccard_ether $device remove echo D-link DE-660 removed remove /etc/pccard_ether_remove $device # D-Link DFE-650 Ethernet Card card "D-Link" "DFE-650" config default "ed0" any 0x10 insert echo D-link DFE-650 inserted insert /etc/pccard_ether $device remove echo D-link DFE-650 removed remove /etc/pccard_ether_remove $device # Allied Telesis Ethernet Card card "Allied Telesis,K\.K" "Ethernet LAN Card" config default "ed0" any 0x10 ether 0xff0 00:00:f4 insert echo Allied Telesis Ethernet Card inserted insert /etc/pccard_ether $device remove echo Allied Telesis Ethernet Card removed remove /etc/pccard_ether_remove $device # Toshiba Joho System PTJ-LAN/T card "TJ" "Ethernet" config default "ed0" any 0x10 insert echo TJ Ethernet card inserted insert /etc/pccard_ether $device remove echo TJ Ethernet card removed remove /etc/pccard_ether_remove $device # NextCom Next Hawk Etherneet Adapter card "NextCom K.K." "Next Hawk" config default "ed0" any insert echo NextCom Next Hawk Ethernet inserted insert /etc/pccard_ether $device remove echo NextCom Next Hawk Ethernet removed remove /etc/pccard_ether_remove $device # Logitec LPM-LN20T card "Logitec" "LPM-LN20T" config default "ed0" any insert echo Logitec LPM-LN20T inserted insert /etc/pccard_ether $device insert echo Logitec LPM-LN20T removed remove /etc/pccard_ether_remove $device # CentreCOM LA-PCM V2 card "Allied Telesis, K\.K\." "CentreCOM LA-PCM_V2" config 0x20 "ed0" any 0x10 insert echo CentreCOM LA-PCM V2 inserted insert /etc/pccard_ether $device remove echo CentreCOM LA-PCM V2 removed remove /etc/pccard_ether_remove $device # Map Japan MPL-972 card "2408LAN" "Ethernet" config default "ed0" any insert echo 2408LAN inserted insert /etc/pccard_ether $device remove echo 2408LAN removed remove /etc/pccard_ether_remove $device # EXPsys PCMCIA Ethernet Combo, Relia PCMCIA Ethernet card "PCMCIA LAN" "Ethernet" config default "ed0" any insert echo PCMCIA LAN Ethernet inserted insert /etc/pccard_ether $device remove echo PCMCIA LAN Ethernet removed remove /etc/pccard_ether_remove $device # CyQ've ELA-010 10BASE-T LAN Card card "CyQ've" "ELA-010" config default "ed0" any 0x10 insert echo CyQ\'ve ELA-010 LAN card inserted insert /etc/pccard_ether $device remove echo CyQ\'ve ELA-010 LAN card removed remove /etc/pccard_ether_remove $device # Billionton LNT-10TB card "Billionton" "LNT-10TB" config 0x20 "ed0" any insert echo Billionton LNT-10TB inserted. insert /etc/pccard_ether $device remove echo Billionton LNT-10TB removed. remove /etc/pccard_ether_remove $device # MELCO LPC2-T card "MELCO" "LPC2-T" config default "ed0" any insert echo MELCO LPC2-T inserted insert /etc/pccard_ether $device remove echo MELCO LPC2-T removed remove /etc/pccard_ether_remove $device # CNet PCMCIA PowerNIC CN40BC(BT) card "CNet" "CN40BC Ethernet" config default "ed0" any 0x10 insert echo CNet CN40BC inserted insert /etc/pccard_ether $device remove echo CNet CN40BC removed remove /etc/pccard_ether_remove $device # Kingston KNE-PCM/x Ethernet card "Kingston Technology Corp\." "EtheRx PC Card Ethernet.*" config default "ed0" any ether 0xff0 00:c0:f0 insert echo Kingston KNE-PCM/x Ethernet inserted insert /etc/pccard_ether $device remove echo Kingston KNE-PCM/x Ethernet removed remove /etc/pccard_ether_remove $device #----------------------------------------------------------------------- # Modem Cards #----------------------------------------------------------------------- # Most of modem cards does not match these definitions. Please read # "wildcard entries" listed at the end of this file. #----------------------------------------------------------------------- # Omron MD24XCA FAX/Data Modem card "OMRON Corp\." "MD24XCA" config 0x23 "sio2" pio reset 10000 insert echo OMRON MD24XCA Modem inserted remove echo OMRON MD24XCA Modem removed # US Robotics Sportster PCMCIA V.34 # US Robotics COURIER PCMCIA V.34 card "USRobotics" "PCMCIA 28800.*" config 0x3 "sio2" any insert echo USRobotics PCMCIA Modem inserted remove echo USRobotics PCMCIA Modem removed # TDK 28.8K modem series card "TDK" "DF2814.*" config 0x33 "sio2" any reset 1000 insert echo TDK 28.8K modem inserted remove echo TDK 28.8K modem removed # TDK 33.6K modem series (1) # (don't put this entry under "(2)") card "TDK" "DF3314E DATA/FAX MODEM" config 0x23 "sio2" any reset 1000 insert echo TDK 33.6K modem inserted remove echo TDK 33.6K modem removed # TDK 33.6K modem series (2) card "TDK" "DF3314.*" config 0x33 "sio2" any reset 1000 insert echo TDK 33.6K modem inserted remove echo TDK 33.6K modem removed # MEGASOFT STARFAX CARD 288 card "MEGASOFT Inc\." "SFI-.*" config 0x33 "sio2" any reset 1000 insert echo MEGASOFT STARFAX CARD inserted remove echo MEGASOFT STARFAX CARD removed # Lasat Credit 288, V34 Data/Fax Modem card "LASAT COMMUNICATIONS A/S" "LASAT CREDIT 288" config 0x18 "sio2" any insert echo LASAT Modem inserted remove echo LASAT Modem removed # Microcom Travelcard 28.8 FAX/Modem card "MICROCOM, Inc\." "TRAVELCARD 28\.8P DATA/FAX MODEM" config 0x33 "sio2" any insert echo Microcom Modem inserted remove echo Microcom Modem removed # Motorola Marine multifunction card (as modem) card "Motorola, Inc\." "MARINER MODEM/FAX/LAN" config 0x35 "sio2" any insert echo Microcom Modem inserted remove echo Microcom Modem removed # MOTOROLA 28.8K modem card "Motorola" "MONTANA*" config 0x23 "sio1" any reset 1000 insert echo Motorola 28.8K modem inserted remove echo Motorola 28.8k modem removed # Fujitsu 14.4K modem FMV-JMD713 card "FUJITSU" "FC14F*" config 0x24 "sio2" any insert echo Fujitsu FMV-JMD713 inserted remove echo Fujitsu FMV-JMD713 removed # Fujitsu 28.8K modem FMV-JMD911 card "FUJITSU" "FC28F*" config 0x22 "sio1" any insert echo Fujitsu FMV-JMD911 inserted remove echo Fujitsu FMV-JMD911 removed # PCMCIA MAKER FM5600-LJ DataFax card "PCMCIA MAKER" "FM5600-LJ DataFax" config default "sio2" any reset 100 insert echo PCMCIA MAKER 56K modem inserted remove echo PCMCIA MAKER 56K modem removed # Xircom CreditCard Ethernet 10/100+ Modem 56 (as modem) card "Xircom" "CreditCard Ethernet" config 0x27 "sio2" any insert echo Xircom CEM56 Card inserted as Modem remove echo Xircom CEM56 Card removed # TDK V.90/K56flex modem DF5633EX card "TDK" "DF5633E/J MODEM" config 0x5 "sio1" any reset 1000 insert echo TDK V.90/K56flex modem inserted remove echo TDK V.90/K56flex modem removed # IO-DATA V.90/K56flex FAX/Modem PCML-560 card "IO DATA DEVICE,INC\." "DATA&FAX MODEM PCML560" config 0x5 "sio2" any insert echo IO DATA V.90 Modem PCML560 inserted remove echo IO DATA V.90 Modem PCML560 removed #----------------------------------------------------------------------- # ISDN Serial Cards #----------------------------------------------------------------------- # BUG Linkboy D64K (ISDN) card "BUG Inc\." "Linkboy D64K" config 0x23 "sio2" any insert echo BUG Linkboy D64K inserted remove echo BUG Linkboy D64K removed # BUG Linkboy D128 (ISDN) card "B\.U\.G\.,Inc\." "Linkboy D128" # choose one line. # config default "sio0" any # config 0x21 "sio1" any # config 0x22 "sio2" any config 0x23 "sio3" any reset 1000 insert echo BUG Linkboy D128 inserted remove echo BUG Linkboy D128 removed # IO DATA PCINS2128 card "IO DATA DEVICE,INC." "PCINS2128" config 0x33 "sio2" any insert echo IO DATA PCINS2128 inserted remove echo IO DATA PCINS2128 removed # NEC AtermIC20 card "NEC" "Aterm IC20 " config 0x12 "sio2" any insert echo NEC Aterm IC20 inserted remove echo NEC Aterm IC20 removed # NTT-IT ThunderCard card "NTT Intelligent Technology Co., Ltd." "ThunderCard DD128" config 0x22 "sio2" any 0x80 reset 1000 insert echo Thunder-card inserted remove echo Thunder-card removed # TDK DN1280 card "TDK" "DN1280" config 0x22 "sio2" any reset 1000 insert echo TDK ISDN Adapter DN1280 inserted remove echo TDK ISDN Adapter DN1280 removed #----------------------------------------------------------------------- # Digital Cellular Cards #----------------------------------------------------------------------- # NTT DoCoMo DATA/FAX Adapter card "NTT DoCoMo" "PCMCIA DATA/FAX.*" config 0x22 "sio3" any 0x82 insert echo NTT DoCoMo DATA/FAX Adapter inserted remove echo NTT DoCoMo DATA/FAX Adapter removed # NTT DoCoMo MFCard96F1 card "NTT DoCoMo" "MFCard96F1" config 0x20 "sio3" any insert echo NTT DoCoMo MFCard96F1 Adapter inserted remove echo NTT DoCoMo MFCard96F1 Adapter removed # NTT DoCoMo Mobile D Card 96P1 card "NTT DoCoMo" "Mobile D Card 96P1" config 0x22 "sio3" any 0x82 insert echo NTT DoCoMo Mobile D Card 96P1 Adapter inserted remove echo NTT DoCoMo Mobile D Card 96P1 Adapter removed #----------------------------------------------------------------------- # PHS Digital Communication Cards #----------------------------------------------------------------------- # ASTEL 32kbps Data card XN-11 card "ASTEL" "32kbps Data card" config 0x11 "sio3" any insert echo ASTEL 32kbps Data card inserted remove echo ASTEL 32kbps Data card removed # ASTEL 32kbps Data Fax card XN-12 card "ASTEL" "32kbps Data Fax card" config 0x11 "sio3" any insert echo ASTEL 32kbps Data Fax card inserted remove echo ASTEL 32kbps Data Fax card removed # FUJITSU PHS CARD FMV-J931 card "FUJITSU" "MC32F " config 0x22 "sio3" any insert echo FUJITSU PHS CARD FMV-J931 inserted remove echo FUJITSU PHS CARD FMV-J931 removed # NTT Personal Paldio DataFAX Card DC-2S card "NTT Personal" "Paldio DataFAX Card" "DC-2S" config 0x22 "sio3" any insert echo NTT Personal Paldio DataFAX Card DC-2S inserted remove echo NTT Personal Paldio DataFAX Card DC-2S removed # NTT Personal Paldio DataFax Card card "NTT Personal" "Paldio DataFAX Card" config 0x13 "sio3" any insert echo NTT Personal Paldio DataFax Card inserted remove echo NTT Personal Paldio DataFax Card removed # NTT Personal Paldio Data Card DC-1N card "NTT Personal" "Paldio Data Card" "DC-1N" config 0x13 "sio3" any insert echo NTT Personal Paldio Data Card DC-1N inserted remove echo NTT Personal Paldio Data Card DC-1N removed # NTT Personal Paldio Data Card DC-1S card "NTT Personal" "Paldio Data Card" "DC-1S" config 0x22 "sio3" any insert echo NTT Personal Paldio Data Card DC-1S inserted remove echo NTT Personal Paldio Data Card DC-1S removed # NTT Personal Paldio Data/Fax Card DC-1S card "NTT Personal" "Paldio Data/Fax Card" "DC-1S" config 0x22 "sio3" any 0x40000 insert echo NTT Personal Paldio Data/Fax Card DC-1S inserted remove echo NTT Personal Paldio Data/Fax Card DC-1S removed # other NTT Personal Paldio Data Cards (may need some changes on "config" line) card "NTT Personal" "Paldio Data Card" config 0x22 "sio3" any insert echo NTT Personal Paldio Data Card inserted remove echo NTT Personal Paldio Data Card removed # NTT DoCoMo (formerly NTT Personal) Paldio 321S card "NTT Personal" "32K Paldio 321S PC CARD" config 0x22 "sio2" any 0x40000 insert echo NTT Personal Paldio 321S PC Card inserted remove echo NTT Personal Paldio 321S PC Card removed # SII PHS Two LINK DATA MC-P110/TD card "SII" "PHS Two LINK DATA MC-P110/TD" config 0x22 "sio2" any insert echo PHS Two LINK DATA Card inserted remove echo PHS Two LINK DATA Card removed # SII PHS DATA LINK MC-P100 card "SII" "PHS DATA LINK" config 0x22 "sio3" any insert echo SII PHS DATA LINK MC-P100 inserted remove echo SII PHS DATA LINK MC-P100 removed # Intel EtherExpress(TM) PRO/100 LAN/Modem PC Card Adapter (as modem) card "Intel" "EtherExpress\(TM\) PRO/100 LAN/Modem PC Card Adapter" config 0x1f "sio2" any insert echo Intel EtherExpress PRO/100 LAN/Modem as Modem remove echo Intel EtherExpress PRO/100 LAN/Modem # KYOEI CO., LTD. SHURIKEN FAX MODEM S-336FM card "KYOEI CO., LTD." "S-336FM" config 0x23 "sio2" any reset 1000 insert echo KYOEI SHURIKEN MODEM inserted remove echo KYOEI SHURIKEN MODEM removed # KYOCERA DataScope DS-320 card "KYOCERA" "DATA MODEM" config 0x20 "sio2" any insert echo KYOCERA DATA MODEM Adapter inserted remove echo KYOCERA DATA MODEM Adapter removed #----------------------------------------------------------------------- # Misc. Serial Cards #----------------------------------------------------------------------- # Panasonic FM-RADIO card card "Panasonic" "CF-JVR101" config 0x22 "sio3" pio insert echo Panasonic FM radio card inserted remove echo Panasonic FM radio card removed # SONY GPS card card "SONY PACY" "CNV10 Ver\.1\.0" config 0x22 "sio3" any insert echo SONY GPS card inserted remove echo SONY GPS card removed # SRC-230 card "CTI" "SRC-230" config 0x5 "sio2" any insert echo SRC-230 inserted remove echo SRC-230 removed # RATOC REX-5056 Serial Interface card card "RATOC System,Inc\." "REX5056 RS232C PC Card" config 0x2c "sio2" any reset 1000 # safety reset time insert echo RATOC Serial Card inserted remove echo RATOC Serial Card removed #----------------------------------------------------------------------- # SCSI Cards #----------------------------------------------------------------------- # Adaptec SlimSCSI card "Adaptec, Inc\." "APA-1460.*" config default "aic0" any insert echo Adaptec Slim SCSI inserted remove echo Adaptec Slim SCSI removed # New Media Corporation BASICS SCSI # (Do not put this entry under Bustoaster) card "BASICS by New Media Corporation" "SCSI Sym53C500" config 0x14 "ncv0" any insert echo New Media BASICS SCSI inserted remove echo New Media BASICS SCSI removed # NewMedia Bustoaster SCSI card "New Media" "SCSI" config 0x22 "aic0" any insert echo New Media Bus Toaster inserted remove echo New Media Bus Toaster removed # RATOC REX-5536AM, REX-9836A, ICM PSC-2401 SCSI # (Don't put this entry under REX5535 series!) # There's a buggy revision of this card which has broken CIS tupples. # if you can't use this card, please use the point enabler. (for example, # type "pccardc enabler 0 stg0 -a 0x4140 -i 5" from root command prompt) card "PCMCIA SCSI MBH10404" "01" config 0x37 "stg0" any insert echo REX-5536AM SCSI card inserted remove echo REX-5536AM SCSI card removed # RATOC REX-5535AC, REX-5535X, REX-9835X, REX-9835Z SCSI card "PCMCIA SCSI MBH1040" "01" config 0x3a "spc0" any insert echo REX-5535 SCSI card inserted remove echo REX-5535 SCSI card removed # RATOC REX-5536M card "PCMCIA SCSI2 CARD" "01" config 0x5 "stg0" any 0 insert echo REX-5536M inserted remove echo REX-5536M removed # RATOC REX-5572 (as SCSI only) card "RATOC System Inc\." "SOUND/SCSI2 CARD.*" config default "ncv0" any 0x84d00000 cardio 0x640 0x10 insert echo RATOC SOUND/SCSI2 REX-5572 inserted remove echo RATOC SOUND/SCSI2 REX-5572 removed # RATOC REX-5536, Melco IFC-SC card "1195 RATOC System Inc\." "REX5536 SCSI2 CARD" config 0x7 "stg0" any 0 insert echo REX5536 inserted remove echo REX5536 removed # RATOC REX-9530 card "RATOC System Inc." "SCSI2 CARD.*" config default "ncv0" any 0x84d00000 insert echo RATOC SCSI2 PCMCIA Card inserted remove echo RATOC SCSI2 PCMCIA Card removed # IO DATA PCSC-DV # Macnica Miracle SCSI mPS100 card "MACNICA" "MIRACLE SCSI" "mPS100" "D.0" config 0x11 "ncv0" any 0xb6250000 insert echo Miracle SCSI inserted remove echo Miracle SCSI removed # Macnica Miracle SCSI-II mPS110 card "MACNICA" "MIRACLE SCSI-II mPS110" config 0x15 "ncv0" any 0 insert echo Miracle SCSI-II inserted remove echo Miracle SCSI-II removed # IBM SCSI PCMCIA Card card "IBM Corp\." "SCSI PCMCIA Card" config default "stg0" any insert echo IBM SCSI PCMCIA Card inserted remove echo IBM SCSI PCMCIA Card removed # Future Domain SCSI2GO card "Future Domain Corporation" "SCSI PCMCIA Credit Card Controller" config default "stg0" any insert echo IBM SCSI PCMCIA Card inserted remove echo IBM SCSI PCMCIA Card removed # KME (TAXAN ICD-400PN, etc.) card "KME" "KXLC002" config 0x26 "ncv0" any 0xb4d00000 insert echo KME SCSI PCMCIA Card inserted remove echo KME SCSI PCMCIA Card removed # Qlogic Fast SCSI card "QLOGIC CORPORATION" "pc05" config 0x2f "ncv0" any 0x84d00000 insert echo Qlogic Fast SCSI inserted remove echo Qlogic Fast SCSI removed # Media Intelligent SCSI-2 PC Card MSC-200 card "EPSON" "SCSI-2 PC Card SC200" config 0x12 "ncv0" any insert echo EPSON SCSI-2 PC Card MSC200 inserted remove echo EPSON SCSI-2 PC Card MSC200 removed # NEC PC-9801N-J03R card "NEC" "PC-9801N-J03R" config 0x15 "ncv0" any 0 insert echo PC-9801N-J03R inserted remove echo PC-9801N-J03R removed # WORKBIT Ninja SCSI series card "WBT" "NinjaSCSI-3" config default "nin0" any insert echo Workbit NinjaSCSI-3 inserted remove echo Workbit NinjaSCSI-3 removed #------------------------ untested ---------------------------- #------------------------ untested ---------------------------- # If these entry do not work, try other config index than default. # Please e-mail me whether it works or not. Thanks # Tatsumi Hosokawa card "MIDORI ELECTRONICS.*" "CN-SC43.*" config default "ncv0" any 0x80100000 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org card "EIger Labs" "PCMCIA-to-SCSI Adapter" config default "ncv0" any insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org card "SCSI PCMCIA Adapter Card" ".*" config 0x20 "stg0" any insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org card " SIMPLE TECHNOLOGY Corporation" "SCSI PCMCIA Credit Card Controller" config default "stg0" any insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org card "KME" "KXLC003" config 0x26 "ncv0" any 0xb4d00000 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org #----------------------------------------------------------------------- # ATAPI CD-ROM Cards #----------------------------------------------------------------------- # IO Data CBIDE (bundled with CDP-FX24, etc.) card "WIT" "IDE16" config default "wdc1" any insert echo IO Data CBIDE inserted remove echo IO Data CBIDE removed # DHU Mobile Media CD-ROM # (no hotplug support) card "Digital Equipment Corporation\." "Digital Mobile Media CD-ROM" config 0xb "wdc1" 15 # Caravelle PSC-IDE 6x ATAPI CD-ROM card "Caravelle" "PSC-IDE " config 0x2a "wdc1" any 0x1 insert echo Caravelle PSC-IDE card inserted remove echo Caravelle PSC-IDE card removed # IBM Portable 4X Speed CD-ROM Drive CD-400 card "IBM" "PCMCIA CD-ROM Drive CD-400" config 0x1 "wdc1" any 0x1000 cardio 0x250 0x20 insert echo IBM PCMCIA CD-ROM CD-400 inserted remove echo IBM PCMCIA CD-ROM CD-400 removed # IO Data PCIDEII (bundled with CDP-TX10, etc.) card "IO DATA" "PCIDEII" config default "wdc1" any insert echo IO Data PCIDEII inserted remove echo IO Data PCIDEII removed # IBM CD-20XSeries(IDE PC Card) card "IBM" "PCMCIA Portable CD-ROM Drive" config 0x1 "wdc1" any 0x1000 cardio 0x250 0x20 insert echo IBM CD-20XS inserted remove echo IBM CD-20XS removed # NOVAC Station Series card "PCMCIA" "CD-ROM" config default "wdc1" any insert echo Novac Station CD-ROM inserted remove echo Novac Station CD-ROM removed #----------------------------------------------------------------------- # Flash ATA Cards #----------------------------------------------------------------------- # SunDisk Flash ATA card "SunDisk" ".*" config 0x03 "wdc1" any insert echo SunDisk Flash ATA inserted remove echo SunDisk Flash ATA removed # Midori Elec. Flash ATA card "Midori Elec\." ".*FLASH.*" config 0x03 "wdc1" any insert echo Midori Flash ATA inserted remove echo Midori Flash ATA removed # IO DATA PCMF144/20 (as Flash ATA only) card "IO DATA" "ATA&MODEM" config 0x7 "wdc1" any insert echo IO DATA PCMF144/20 inserted remove echo IO DATA PCMF144/20 removed #----------------------------------------------------------------------- # ATA HDD Cards #----------------------------------------------------------------------- card "Maxtor" "MXL.*" config 0x03 "wdc1" any insert echo Maxtor ATA HDD inserted remove echo Maxtor ATA HDD removed #----------------------------------------------------------------------- # ATA External HDD Adapters #----------------------------------------------------------------------- # Greystone Diskdock card "GREYSTONE PERIPHERAL DISKDOCK" ".*" config default "wdc1" any insert echo Greystone Diskdock inserted remove echo Greystone Diskdock removed # card "INTEGRAL PERIPHERALS" "ATA CARD" config default "wdc1" any insert echo Integral Peripherals inserted remove echo Integral Peripherals removed # DATAFAB PCMMD2 card "DATAFAB" "PCMCIA-TO-IDE" config 0x1 "wdc1" any insert echo DATAFAB PCMMD2 inserted remove echo DATAFAB PCMMD2 removed # PCM250AM 2.5in HDD adapter card "PC CARD MANUFACTURER" "PCMCIA ATA/ATAPI Adapter" config 0xd "wdc1" any insert echo PCM250AM inserted remove echo PCM250AM removed # Sicon Peripheral PCMCIA ATA/ATAPI Adapter card "Sicon Peripheral" "PCMCIA ATA/ATAPI Adapter" config default "wdc1" any insert echo Sicon Peripherals inserted remove echo Sicon Peripherals removed # Microtech XpressDock card "Microtech International Inc\." "IDE PCCARD" config default "wdc1" any 0x2000 cardio 0x170 0x10 insert echo Microtech XpressDock inserted remove echo Microtech XpressDock removed #----------------------------------------------------------------------- # ATAPI LS120 Floppy Disk #----------------------------------------------------------------------- # LK-RM120 card "Panasonic" "LMEK0406" config 0x22 "wdc1" any 0x1 insert echo Panasonic LMEK0406 inserted remove echo Panasonic LMEK0406 removed #----------------------------------------------------------------------- # # Ongoing Projects ---- These entries are for ongoing projects of # our package. Most of these entries do not work. # #----------------------------------------------------------------------- #----------------------------------------------------------------------- # Sound cards #----------------------------------------------------------------------- # RATOC REX-5570 Sound Card card "1195 RATOC System Inc\." "REX5570 SOUND CARD" config default "opl0" any #----------------------------------------------------------------------- # Multifunction cards #----------------------------------------------------------------------- # Multifunction card support is still under development. If you want # to use them as modem only in conservative way, uncomment "modem-only" # definitions, comment-out multifunction definitions, and recompile # pccardd and kernel without MULTIFUNC option. (see # PAO-dir/usr.sbin/pccard/pccardd and PAO config file for details) # Tatsumi Hosokawa # APEX DATA MultiCard (as Modem only) card "APEX DATA" "MULTICARD" config 0xb "sio2" any insert echo APEX DATA MultiCard inserted as Modem remove echo APEX DATA MultiCard removed # Megahertz multifunction card: # The second multifunction definition does not work (under development). # if you want to use this card as modem, uncomment the first one. # Megahertz X-Jack Ethernet/Modem 14.4K (as Modem only) card "Megahertz" "XJEM1144/CCEM1144" config 0x27 "sio2" any insert echo Megahertz X-Jack Multifunction Card inserted as Modem. remove echo Megahertz X-Jack Multifunction Card removed. # Megahertz X-Jack Ethernet/Modem 14.4K #card "MEGAHERTZ" "XJEM1144/CCEM1144" # multifunc # config default "sn0" any # config 0x27 "sio2" shared # insert echo Megahertz X-Jack Multifunction Card inserted # remove echo Megahertz X-Jack Multifunction Card removed # TDK Multifunctioon Card (as Modem) card "TDK" "GlobalNetworker 3410/3412" config default "sio2" any insert echo TDK Multifunction Card inserted as Modem remove echo TDK Multifunction Card removed # Toshiba Modem/LAN card IPC5001B card "TOSHIBA" "Modem/LAN Card" config 0x25 "sio2" any insert echo TOSHIBA IPC5001B Multifunction Card inserted as Modem remove echo TOSHIBA IPC5001B Multifunction Card removed #----------------------------------------------------------------------- # Wireless LAN #----------------------------------------------------------------------- # NCR Wavelan PCMCIA # If you want to use Japanese version, uncomment the second config # line and comment-out the first line. card "NCR" "WaveLAN/PCMCIA" config default "wlp0" any # US version (915MHz) # config default "wlp0" any 0x01 # Japanese version (2.4GHz) ether wavelan insert echo WaveLAN PCMCIA inserted insert /etc/pccard_ether $device remove echo WaveLAN PCMCIA removed remove /etc/pccard_ether_remove $device # AT&T GIS Wavelan PCMCIA # If you want to use Japanese version, uncomment the second config # line and comment-out the first line. card "AT&T" "WaveLAN/PCMCIA" config default "wlp0" any # US version (915MHz) # config default "wlp0" any 0x01 # Japanese version (2.4GHz) ether wavelan insert echo WaveLAN PCMCIA inserted insert /etc/pccard_ether $device remove echo WaveLAN PCMCIA removed remove /etc/pccard_ether_remove $device # Digital RoamAbout/DS card "Digital" "RoamAbout/DS" config default "wlp0" any ether wavelan insert echo Digital RoamAbout/DS inserted insert /etc/pccard_ether $device remove echo Digital RoamAbout/DS removed remove /etc/pccard_ether_remove $device # NetWave AirSurfer # NOTE: For some machines, wait cycle for memory access is required. # you should change "0x40" on the last part of "cardmem" line to "0x44", # like: # cardmem 0xd4000 0x20000 0x9000 0x44 # IBM ThinkPads are known to require this change. card "Xircom" "CreditCard Netwave" config 0x01 "cnw0" any cardmem 0xd4000 0x20000 0x9000 0x40 # config 0x01 "cnw1" any # cardmem 0xdd000 0x20000 0x9000 0x40 ether 0x126 00:80:c7 00:20:d8 insert echo Netwave Ethernet inserted insert /etc/pccard_ether $device remove echo Netwave Ethernet removed remove /etc/pccard_ether_remove $device # Victor M-MOIL CARD card "JVC" "MiniMoil Ethernet Card" config 0x01 "sn0" any insert echo MiniMoil Ethernet inserted insert /etc/pccard_ether $device remove echo MiniMoil Ethernet removed remove /etc/pccard_ether_remove $device #----------------------------------------------------------------------- # Video Capture Cards #----------------------------------------------------------------------- # IBM Smart Capture Card card "IBM Corp\." "Video Capture" config default "scc0" pio cardmem 0xd4000 0x0 0x8000 insert echo Smart Capture Card inserted remove echo Smart Capture Card removed #----------------------------------------------------------------------- # Speech Synthesizer Cards #----------------------------------------------------------------------- # Hitachi microcomputer speech synthesizer card card "HITACHI MICROCOMPUTER SYSTEM LTD." "MSSHVPC02" config default "hss0" pio insert echo Hitachi microcomputer speech synthesizer inserted remove echo Hitachi microcomputer speech synthesizer removed #----------------------------------------------------------------------- # Joystick Port Cards #----------------------------------------------------------------------- card "IO DATA" "PCJOY" config default "joy0" pio # config 0x1 "joy0" pio # config 0x2 "joy0" pio insert echo IO DATA PCJOY inserted remove echo IO DATA PCJOY removed #----------------------------------------------------------------------- # Floppy Drive Cards #----------------------------------------------------------------------- # Libretto floppy drive. card "Y-E DATA" "External FDD" config 0x4 "fdc1" any insert echo Y-E DATA External FDD inserted remove echo Y-E DATA External FDD removed # ------------------------------------------------------------------- # # Experimental ---- If you have one of them, please e-mail me *WHETHER # IT WORKS OR NOT*. I wrote these entries by reading Linux PCMCIA driver # package. I've not tested them. I need results of your experiences. # Especially, if the ed_probe() is succeeded, it does not always mean # that probed MAC address is correct. If you have or if your friend # has these cards, send me the result of the results of # # pccardc dumpcis # and # pccardc rdattr 0 0 1000 (the first 0 means slot number) # # of these cards. I can write more accurate pccard.conf entries if I # can read these result. # # I NEED YOUR HELP!!!! # # Thanks. # # My e-mail address is hosokawa@jp.FreeBSD.org (Tatsumi Hosokawa) # # ------------------------------------------------------------------- #----------------------------------------------------------------------- # Ethernet Cards #----------------------------------------------------------------------- # CNet CN30BC Ethernet Card card "CNet.*" "CN30BC" config default "ed0" any 0x10 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # DataTrek NetCard card "DataTrek\." "NetCard" config default "ed0" any 0x10 ether 0xff0 00:20:e8 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # D-Link DE-650 Ethernet Card card ".*D-Link PC Ethernet Card.*" ".*" config default "ed0" any 0x10 ether 0x40 00:80:c8 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # D-Link DE-650 Ethernet Card card ".*" ".*D-Link PC Ethernet Card.*" config default "ed0" any 0x10 ether 0x40 00:80:c8 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # Edimax Ethernet Combo card "Edimax Technology Inc\." "PCMCIA" config default "ed0" any 0x10 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # EP-210 Ethernet Card card "Ethernet PCMCIA adapter" "EP-210" config default "ed0" any 0x10 ether 0x110 00:40:33 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # Katron PE-520 Ethernet Card card "KCI" "PE520 PCMCIA Ethernet Adapter" config default "ed0" any 0x10 ether 0x110 00:40:f6 insert echo Untested card in serted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # Linksys Ethernet Card card ".*E-CARD PC Ethernet Card.*" ".*" config default "ed0" any 0x10 insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # Linksys Ethernet Card card ".*" ".*E-CARD PC Ethernet Card.*" config default "ed0" any 0x10 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # Linksys Ethernet Card card "E-CARD" "E-CARD" config default "ed0" any 0x10 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # Maxtech PCN2000 Ethernet card "MAXTECH" "PCN2000" config default "ed0" any 0x10 ether 0x5000 00:00:e8 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # NE2000 Compatible Ethernet Card card "NE2000 Compatible" "PCMCIA" config default "ed0" any 0x10 ether 0xff0 00:a0:0c insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # RPTI EP400 Ethernet Card card "RPTI LTD\." "EP400" config default "ed0" any 0x10 ether 0x110 00:40:95 insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # SCM Ethernet Combo card "SCM" "Ethernet Combo card" config default "ed0" any 0x10 ether 0xff0 00:20:cb insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # SMC EliteCard Ethernet card "SMC" "PCM Ethernet Adapter" config default "sn0" any ether attr2hex insert echo Untested card inserted. please e-mail the result to hosokawa@jp.FreeBSD.org insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # Socket EA LAN Adapter # This card should not work because of its broken DMA status register, # if you have this card, please fix this bug. card "Socket Communications Inc" "Socket EA PCMCIA LAN.*" # This card has broken CIS tupples # We can't use "default" config 0x1 "ed0" any 0x30 ether 0x4000 00:c0:1b insert /etc/pccard_ether $device remove /etc/pccard_ether_remove $device # ------------------------------------------------------------------- # # "Wildcard" entries # # ------------------------------------------------------------------- # GENERIC PCMCIA modem function serial config 0x23 "sio2" any # config 0x23 "sio2" pio # alternative definitions # config 0x21 "sio2" any # ......... # config 0x22 "sio2" any # config 0x21 "sio2" pio # config 0x22 "sio2" pio # config 0x23 "sio2" 5 # config 0x21 "sio2" 5 # config 0x22 "sio2" 5 # reset 100 # default reset 1000 # safety reset time # reset 10000 # for unstable cards insert echo PCMCIA Modem inserted remove echo PCMCIA Modem removed # GENERIC Flash ATA / ATA HDD function fixed_disk # config default "wdc1" 15 # config default "wdc1" any # config 0x03 "wdc1" 15 config 0x03 "wdc1" any insert echo Flash ATA / ATA HDD inserted remove echo Flash ATA / ATA HDD removed # $Id: Makefile,v 1.1.1.1 1997/12/11 14:46:05 itojun Exp $ PROG= apm LINKS= ${BINDIR}/apm ${BINDIR}/zzz MAN8= apm.8 MLINKS= apm.8 zzz.8 .include .\" LP (Laptop Package) .\" .\" Copyright (c) 1994 by HOSOKAWA, Tatsumi .\" .\" This software may be used, modified, copied, and distributed, in .\" both source and binary form provided that the above copyright and .\" these terms are retained. Under no circumstances is the author .\" responsible for the proper functioning of this software, nor does .\" the author assume any responsibility for damages incurred with its .\" use. .Dd November 1, 1994 .Dt APM 8 .Os .Sh NAME .Nm apm, zzz .Nd control the APM BIOS and display its information .Sh SYNOPSIS .Nm apm .Op Fl z .Op Fl b .Op Fl a .Op Fl l .Op Fl s .Pp .Nm zzz .Sh DESCRIPTION .Nm apm controls the Intel / Microsoft APM (Advanced Power Management) BIOS and displays the current status of APM on laptop PCs. .Nm zzz suspends the system by controlling APM. .Pp The following options are available for .Nm apm (no options are available for .Nm zzz. ) If no options are specified, .Nm apm displays information and current status of APM in verbose mode. .Bl -tag -width indent .It Fl z Suspend the system. It is equivalent to .Nm zzz. .Pp .It Fl b Display an integer value reflecting the current battery status. The values 0, 1, 2, 3, correspond to the .Dq high status, .Dq low status, .Dq critical status, .Dq charging status respectively. .Pp .It Fl a Display the current AC-line status as an integer value. The values 0 and 1 correspond to the .Dq off-line state or .Dq on-line state, respectively. .Pp .It Fl l Display the remaining battery percentage. If your laptop does not support this function, 255 is displayed. .Pp .It Fl s Display the status of the APM support as an integer value. The values 0 and 1 correspond to the .Dq enabled state or .Dq disabled state respecitively .Sh BUGS Some APM implementations do not support parameters needed by .Nm apm. On such systems, .Nm apm displays them as unknown. .Pp Some APM implementations cannot handle events such as pushing the power button or closing the cover. On such implementations, the system .Ar must be suspended .Ar only by using .Nm apm or .Nm zzz. .Sh SEE ALSO .Xr apm 4 , .Xr apmconf 8 .Sh AUTHOR HOSOKAWA, Tatsumi (Keio Univ., Japan) BINDIR=/usr/sbin { .s ..|shutdownMakefile Makefile.inc/* * apm / zzz APM BIOS utility for FreeBSD * * Copyright (C) 1994-1996 by HOSOKAWA Tatasumi * * This software may be used, modified, copied, distributed, and sold, * in both source and binary form provided that the above copyright and * these terms are retained. Under no circumstances is the author * responsible for the proper functioning of this software, nor does * the author assume any responsibility for damages incurred with its * use. * * Sep., 1994 Implemented on FreeBSD 1.1.5.1R (Toshiba AVS001WD) */ #include #include #include #include #include #include #include #define APMDEV "/dev/apm" #define xh(a) (((a) & 0xff00) >> 8) #define xl(a) ((a) & 0xff) #define APMERR(a) xh(a) int cmos_wall = 0; /* True when wall time is in cmos clock, else UTC */ int main_argc; char **main_argv; int bcd2int(int bcd) { int retval = 0; if (bcd > 0x9999) return -1; while (bcd) { retval = retval * 10 + ((bcd & 0xf000) >> 12); bcd = (bcd & 0xfff) << 4; } return retval; } void apm_suspend(int fd) { if (ioctl(fd, APMIO_SUSPEND, NULL) == -1) { perror(main_argv[0]); exit(1); } } void apm_standby(int fd) { if (ioctl(fd, APMIO_STANDBY, NULL) == -1) err(1, NULL); } void apm_getinfo(int fd, apm_info_t aip) { if (ioctl(fd, APMIO_GETINFO, aip) == -1) { perror(main_argv[0]); exit(1); } } void print_all_info(int fd, apm_info_t aip) { struct apm_bios_arg args; int apmerr, i; printf("APM version: %d.%d\n", aip->ai_major, aip->ai_minor); printf("APM Managment: %s\n", (aip->ai_status ? "Enabled" : "Disabled")); printf("AC Line status: "); if (aip->ai_acline == 255) { printf("unknown"); } else if (aip->ai_acline > 1) { printf("invalid value (0x%x)", aip->ai_acline); } else { static char messages[][10] = {"off-line", "on-line"}; printf("%s", messages[aip->ai_acline]); } printf("\n"); printf("Battery status: "); if (aip->ai_batt_stat == 255) { printf("unknown"); } else if (aip->ai_batt_stat > 3) { printf("invalid value (0x%x)", aip->ai_batt_stat); } else { static char messages[][10] = {"high", "low", "critical", "charging"}; printf("%s", messages[aip->ai_batt_stat]); } printf("\n"); printf("Remaining battery life: "); if (aip->ai_batt_life == 255) { printf("unknown"); } else if (aip->ai_batt_life <= 100) { printf("%d%%", aip->ai_batt_life); } else { printf("invalid value (0x%x)", aip->ai_batt_life); } printf("\n"); printf("Remaining battery time: "); if (aip->ai_batt_time == -1) printf("unknown"); else if (aip->ai_batt_time >= 0) { int t, h, m, s; t = aip->ai_batt_time; s = t % 60; t /= 60; m = t % 60; t /= 60; h = t; printf("%2d:%02d:%02d", h, m, s); } else printf("invarid value (0x%x)", aip->ai_batt_time); printf("\n"); if (aip->ai_infoversion >= 1) { printf("Number of batteries: "); if (aip->ai_batteries == (u_int) -1) printf("unknown\n"); else printf("%d\n", aip->ai_batteries); } /* * try to get the suspend timer */ bzero(&args, sizeof(args)); args.eax = (APM_BIOS) << 8 | APM_RESUMETIMER; args.ebx = PMDV_APMBIOS; args.ecx = 0x0001; if (ioctl(fd, APMIO_BIOS, &args)) { err(1,"Get resume timer"); } else { apmerr = APMERR(args.eax); if (apmerr == 0x0d || apmerr == 0x86) printf("Resume timer: disabled\n"); else if (apmerr) fprintf(stderr, "Failed to get the resume timer: APM error0x%x\n", apmerr); else { /* * OK. We have the time (all bcd). * CH - seconds * DH - hours * DL - minutes * xh(SI) - month (1-12) * xl(SI) - day of month (1-31) * DI - year */ struct tm tm; char buf[1024]; time_t t; tm.tm_sec = bcd2int(xh(args.ecx)); tm.tm_min = bcd2int(xl(args.edx)); tm.tm_hour = bcd2int(xh(args.edx)); tm.tm_mday = bcd2int(xl(args.esi)); tm.tm_mon = bcd2int(xh(args.esi)) - 1; tm.tm_year = bcd2int(args.edi) - 1900; if (cmos_wall) t = mktime(&tm); else t = timegm(&tm); tm = *localtime(&t); strftime(buf, sizeof(buf), "%c", &tm); printf("Resume timer: %s\n", buf); } } /* * Get the ring indicator resume state */ bzero(&args, sizeof(args)); args.eax = (APM_BIOS) << 8 | APM_RESUMEONRING; args.ebx = PMDV_APMBIOS; args.ecx = 0x0002; if (ioctl(fd, APMIO_BIOS, &args) == 0) { printf("Resume on ring indicator: %sabled\n", args.ecx ? "en" : "dis"); } if (aip->ai_infoversion >= 1) { printf("APM Capacities:\n", aip->ai_capabilities); if (aip->ai_capabilities == 0xff00) printf("\tunknown\n"); if (aip->ai_capabilities & 0x01) printf("\tglobal standby state\n"); if (aip->ai_capabilities & 0x02) printf("\tglobal suspend state\n"); if (aip->ai_capabilities & 0x04) printf("\tresume timer from standby\n"); if (aip->ai_capabilities & 0x08) printf("\tresume timer from suspend\n"); if (aip->ai_capabilities & 0x10) printf("\tRI resume from standby\n"); if (aip->ai_capabilities & 0x20) printf("\tRI resume from suspend\n"); if (aip->ai_capabilities & 0x40) printf("\tPCMCIA RI resume from standby\n"); if (aip->ai_capabilities & 0x80) printf("\tPCMCIA RI resume from suspend\n"); } } /* * currently, it can turn off the display, but the display never comes * back until the machine suspend/resumes :-). */ void apm_display(int fd, int newstate) { if (ioctl(fd, APMIO_DISPLAY, &newstate) == -1) { perror(main_argv[0]); exit(1); } } extern char *optarg; extern int optind; int main(int argc, char *argv[]) { int i, j, fd; int c; int sleep = 0, all_info = 1, apm_status = 0, batt_status = 0; int display = 0, batt_life = 0, ac_status = 0, standby = 0; char *cmdname; main_argc = argc; main_argv = argv; if ((cmdname = strrchr(argv[0], '/')) != NULL) { cmdname++; } else { cmdname = argv[0]; } if (strcmp(cmdname, "zzz") == 0) { sleep = 1; all_info = 0; goto finish_option; } while ((c = getopt(argc, argv, "zbalsd:Z")) != EOF) { switch (c) { case 'z': sleep = 1; all_info = 0; break; case 'b': batt_status = 1; all_info = 0; break; case 'a': ac_status = 1; all_info = 0; break; case 'l': batt_life = 1; all_info = 0; break; case 's': apm_status = 1; all_info = 0; break; case 'd': display = *optarg - '0'; if (display < 0 || display > 1) { fprintf(stderr, "%s: Argument of option '-%c' is invalid.\n", argv[0], c); exit(1); } display++; all_info = 0; break; case 'Z': standby = 1; all_info = 0; break; case '?': default: fprintf(stderr, "%s: Unknown option '-%c'.\n", argv[0], c); exit(1); } } finish_option: fd = open(APMDEV, O_RDWR); if (fd == -1) { fprintf(stderr, "%s: Can't open %s.\n", argv[0], APMDEV); return 1; } if (sleep) { apm_suspend(fd); } else if (standby) { apm_standby(fd); } else { struct apm_info info; apm_getinfo(fd, &info); if (all_info) { print_all_info(fd, &info); } if (batt_status) { printf("%d\n", info.ai_batt_stat); } if (batt_life) { printf("%d\n", info.ai_batt_life); } if (ac_status) { printf("%d\n", info.ai_acline); } if (apm_status) { printf("%d\n", info.ai_status); } if (display) { apm_display(fd, display - 1); } } close(fd); return 0; } SUBDIR= apm .include | .{ ..}Makefile~ pathnames.h shutdown.8 shutdown.c# @(#)Makefile 8.1 (Berkeley) 6/5/93 PROG= shutdown MAN8= shutdown.8 BINOWN= root BINGRP= operator BINMODE=4550 .include /* * Copyright (c) 1989, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)pathnames.h 8.1 (Berkeley) 6/5/93 */ #include #define _PATH_FASTBOOT "/fastboot" #define _PATH_HALT "/sbin/halt" #define _PATH_REBOOT "/sbin/reboot" #define _PATH_WALL "/usr/bin/wall" a message is written in the system log, containing the time of shutdown, who initiated the shutdown and the reason. A terminate signal is then sent to .Xr init to bring the system down to single-user state (depending on above options). The time of the shutdown and the warning message are placed in .Pa /etc/nologin and should be used to inform the users about when the system will be back up and why it is going down (or anything else). .Sh FILES .Bl -tag -width /etc/nologin -compact .It Pa /etc/nologin tells login not to let anyone log in .El .Sh SEE ALSO .Xr login 1 , .Xr wall 1 , .Xr nologin 5 , .Xr halt 8 , .Xr reboot 8 .Sh BACKWARD COMPATIBILITY The hours and minutes in the second time format may be separated by a colon (``:'') for backward compatibility. .Sh HISTORY The .Nm command appeared in .Bx 4.0 . .\" Copyright (c) 1988, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)shutdown.8 8.1 (Berkeley) 6/5/93 .\" .Dd June 5, 1993 .Dt SHUTDOWN 8 .Os BSD 4 .Sh NAME .Nm shutdown .Nd "close down the system at a given time" .Sh SYNOPSIS .Nm shutdown .Op Fl .Op Fl hkrnx .Ar time .Op Ar warning-message ... .Sh DESCRIPTION .Nm Shutdown provides an automated shutdown procedure for super-users to nicely notify users when the system is shutting down, saving them from system administrators, hackers, and gurus, who would otherwise not bother with such niceties. .Pp Available friendlinesses: .Bl -tag -width time .It Fl h The system is halted at the specified .Ar time when .Nm shutdown execs .Xr halt 8 . .It Fl k Kick every body off. The .Fl k option does not actually halt the system, but leaves the system multi-user with logins disabled (for all but super-user). .It Fl n Prevent the normal .Xr sync 2 before stopping. .It Fl r .Nm Shutdown execs .Xr reboot 8 at the specified .Ar time . .It Fl x Halt the system at the specified .Ar time and turn off the power supply. This option can be used when power-control supported. .It Ar time .Ar Time is the time at which .Nm shutdown will bring the system down and may be the word .Ar now (indicating an immediate shutdown) or specify a future time in one of two formats: .Ar +number , or .Ar yymmddhhmm , where the year, month, and day may be defaulted to the current system values. The first form brings the system down in .Ar number minutes and the second at the absolute time specified. .It Ar warning-message Any other arguments comprise the warning message that is broadcast to users currently logged into the system. .It Fl If .Ql Fl is supplied as an option, the warning message is read from the standard input. .El .Pp At intervals, becoming more frequent as apocalypse approaches and starting at ten hours before shutdown, warning messages are displayed on the terminals of all users logged in. Five minutes before shutdown, or immediately if shutdown is in less than 5 minutes, logins are disabled by creating .Pa /etc/nologin and copying the warning message there. If this file exists when a user attempts to log in, .Xr login 1 prints its contents and exits. The file is removed just before .Nm shutdown exits. .Pp At shutdown time /* * Copyright (c) 1988, 1990, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $Id: shutdown.c,v 1.1.1.1.8.1.2.1 1998/12/22 08:27:49 nakagawa Exp $ */ #ifndef lint static char copyright[] = "@(#) Copyright (c) 1988, 1990, 1993\n\ The Regents of the University of California. All rights reserved.\n"; #endif /* not lint */ #ifndef lint static char sccsid[] = "@(#)shutdown.c 8.2 (Berkeley) 2/16/94"; #endif /* not lint */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "pathnames.h" #ifdef DEBUG #undef _PATH_NOLOGIN #define _PATH_NOLOGIN "./nologin" #endif #define H *60*60 #define M *60 #define S *1 #define NOLOG_TIME 5*60 struct interval { int timeleft, timetowait; } tlist[] = { { 10 H, 5 H }, { 5 H, 3 H }, { 2 H, 1 H }, { 1 H, 30 M }, { 30 M, 10 M }, { 20 M, 10 M }, { 10 M, 5 M }, { 5 M, 3 M }, { 2 M, 1 M }, { 1 M, 30 S }, { 30 S, 30 S }, { 0 , 0 } }; #undef H #undef M #undef S static time_t offset, shuttime; static int dohalt, doreboot, killflg, mbuflen; static int dopoweroff; static char *nosync, *whom, mbuf[BUFSIZ]; void badtime __P((void)); void die_you_gravy_sucking_pig_dog __P((void)); void finish __P((int)); void getoffset __P((char *)); void loop __P((void)); void nolog __P((void)); void timeout __P((int)); void timewarn __P((int)); void usage __P((void)); int main(argc, argv) int argc; char *argv[]; { extern int optind; register char *p, *endp; struct passwd *pw; int arglen, ch, len, readstdin; #ifndef DEBUG if (geteuid()) errx(1, "NOT super-user"); #endif nosync = NULL; readstdin = 0; while ((ch = getopt(argc, argv, "-hknrxp")) != -1) switch (ch) { case '-': readstdin = 1; break; case 'h': dohalt = 1; break; case 'k': killflg = 1; break; case 'n': nosync = "-n"; break; case 'r': doreboot = 1; break; case 'x': case 'p': dopoweroff = 1; break; case '?': default: usage(); } argc -= optind; argv += optind; if (argc < 1) usage(); if (doreboot + dohalt + dopoweroff > 1) { warnx("incompatible switches -h and -r and -x."); usage(); } getoffset(*argv++); if (*argv) { for (p = mbuf, len = sizeof(mbuf); *argv; ++argv) { arglen = strlen(*argv); if ((len -= arglen) <= 2) break; if (p != mbuf) *p++ = ' '; bcopy(*argv, p, arglen); p += arglen; } *p = '\n'; *++p = '\0'; } if (readstdin) { p = mbuf; endp = mbuf + sizeof(mbuf) - 2; for (;;) { if (!fgets(p, endp - p + 1, stdin)) break; for (; *p && p < endp; ++p); if (p == endp) { *p = '\n'; *++p = '\0'; break; } } } mbuflen = strlen(mbuf); if (offset) (void)printf("Shutdown at %.24s.\n", ctime(&shuttime)); else (void)printf("Shutdown NOW!\n"); if (!(whom = getlogin())) whom = (pw = getpwuid(getuid())) ? pw->pw_name : "???"; #ifdef DEBUG (void)putc('\n', stdout); #else (void)setpriority(PRIO_PROCESS, 0, PRIO_MIN); { int forkpid; forkpid = fork(); if (forkpid == -1) err(1, "fork"); if (forkpid) errx(0, "[pid %d]", forkpid); } setsid(); #endif openlog("shutdown", LOG_CONS, LOG_AUTH); loop(); /* NOTREACHED */ } void loop() { struct interval *tp; u_int sltime; int logged; if (offset <= NOLOG_TIME) { logged = 1; nolog(); } else logged = 0; tp = tlist; if (tp->timeleft < offset) (void)sleep((u_int)(offset - tp->timeleft)); else { while (offset < tp->timeleft) ++tp; /* * Warn now, if going to sleep more than a fifth of * the next wait time. */ if ((sltime = offset - tp->timeleft)) { if (sltime > tp->timetowait / 5) timewarn(offset); (void)sleep(sltime); } } for (;; ++tp) { timewarn(tp->timeleft); if (!logged && tp->timeleft <= NOLOG_TIME) { logged = 1; nolog(); } (void)sleep((u_int)tp->timetowait); if (!tp->timeleft) break; } die_you_gravy_sucking_pig_dog(); } static jmp_buf alarmbuf; static char *restricted_environ[] = { "PATH=" _PATH_STDPATH, NULL }; void timewarn(timeleft) int timeleft; { static int first; static char hostname[MAXHOSTNAMELEN + 1]; FILE *pf; char wcmd[MAXPATHLEN + 4]; extern char **environ; if (!first++) (void)gethostname(hostname, sizeof(hostname)); /* undoc -n option to wall suppresses normal wall banner */ (void)snprintf(wcmd, sizeof(wcmd), "%s -n", _PATH_WALL); environ = restricted_environ; if (!(pf = popen(wcmd, "w"))) { syslog(LOG_ERR, "shutdown: can't find %s: %m", _PATH_WALL); return; } (void)fprintf(pf, "\007*** %sSystem shutdown message from %s@%s ***\007\n", timeleft ? "": "FINAL ", whom, hostname); if (timeleft > 10*60) (void)fprintf(pf, "System going down at %5.5s\n\n", ctime(&shuttime) + 11); else if (timeleft > 59) (void)fprintf(pf, "System going down in %d minute%s\n\n", timeleft / 60, (timeleft > 60) ? "s" : ""); else if (timeleft) (void)fprintf(pf, "System going down in 30 seconds\n\n"); else (void)fprintf(pf, "System going down IMMEDIATELY\n\n"); if (mbuflen) (void)fwrite(mbuf, sizeof(*mbuf), mbuflen, pf); /* * play some games, just in case wall doesn't come back * probably unecessary, given that wall is careful. */ if (!setjmp(alarmbuf)) { (void)signal(SIGALRM, timeout); (void)alarm((u_int)30); (void)pclose(pf); (void)alarm((u_int)0); (void)signal(SIGALRM, SIG_DFL); } } void timeout(signo) int signo; { longjmp(alarmbuf, 1); } void die_you_gravy_sucking_pig_dog() { char *empty_environ[] = { NULL }; syslog(LOG_NOTICE, "%s by %s: %s", doreboot ? "reboot" : dohalt ? "halt" : dopoweroff ? "power off" : "shutdown", whom, mbuf); (void)sleep(2); (void)printf("\r\nSystem shutdown time has arrived\007\007\r\n"); if (killflg) { (void)printf("\rbut you'll have to do it yourself\r\n"); exit(0); } #ifdef DEBUG if (doreboot) (void)printf("reboot"); else if (dohalt) (void)printf("halt"); else if (dopoweroff) (void)printf("power off"); if (nosync) (void)printf(" no sync"); (void)printf("\nkill -HUP 1\n"); #else if (doreboot) { execle(_PATH_REBOOT, "reboot", "-l", nosync, (char *)NULL, empty_environ); syslog(LOG_ERR, "shutdown: can't exec %s: %m.", _PATH_REBOOT); warn(_PATH_REBOOT); } else if (dohalt) { execle(_PATH_HALT, "halt", "-l", nosync, (char *)NULL, empty_environ); syslog(LOG_ERR, "shutdown: can't exec %s: %m.", _PATH_HALT); warn(_PATH_HALT); } else if (dopoweroff) { execle(_PATH_HALT, "halt", "-l", "-p", nosync, (char *)NULL, empty_environ); syslog(LOG_ERR, "shutdown: can't exec %s: %m.", _PATH_HALT); warn(_PATH_HALT); } (void)kill(1, SIGTERM); /* to single user */ #endif finish(0); } #define ATOI2(p) (p[0] - '0') * 10 + (p[1] - '0'); p += 2; void getoffset(timearg) register char *timearg; { register struct tm *lt; register char *p; time_t now; int this_year; if (!strcasecmp(timearg, "now")) { /* now */ offset = 0; return; } (void)time(&now); if (*timearg == '+') { /* +minutes */ if (!isdigit(*++timearg)) badtime(); offset = atoi(timearg) * 60; shuttime = now + offset; return; } /* handle hh:mm by getting rid of the colon */ for (p = timearg; *p; ++p) if (!isascii(*p) || !isdigit(*p)) if (*p == ':' && strlen(p) == 3) { p[0] = p[1]; p[1] = p[2]; p[2] = '\0'; } else badtime(); unsetenv("TZ"); /* OUR timezone */ lt = localtime(&now); /* current time val */ switch(strlen(timearg)) { case 10: this_year = lt->tm_year; lt->tm_year = ATOI2(timearg); /* * check if the specified year is in the next century. * allow for one year of user error as many people will * enter n - 1 at the start of year n. */ if (lt->tm_year < (this_year % 100) - 1) lt->tm_year += 100; /* adjust for the year 2000 and beyond */ lt->tm_year += (this_year - (this_year % 100)); /* FALLTHROUGH */ case 8: lt->tm_mon = ATOI2(timearg); if (--lt->tm_mon < 0 || lt->tm_mon > 11) badtime(); /* FALLTHROUGH */ case 6: lt->tm_mday = ATOI2(timearg); if (lt->tm_mday < 1 || lt->tm_mday > 31) badtime(); /* FALLTHROUGH */ case 4: lt->tm_hour = ATOI2(timearg); if (lt->tm_hour < 0 || lt->tm_hour > 23) badtime(); lt->tm_min = ATOI2(timearg); if (lt->tm_min < 0 || lt->tm_min > 59) badtime(); lt->tm_sec = 0; if ((shuttime = mktime(lt)) == -1) badtime(); if ((offset = shuttime - now) < 0) errx(1, "that time is already past."); break; default: badtime(); } } #define NOMSG "\n\nNO LOGINS: System going down at " void nolog() { int logfd; char *ct; (void)unlink(_PATH_NOLOGIN); /* in case linked to another file */ (void)signal(SIGINT, finish); (void)signal(SIGHUP, finish); (void)signal(SIGQUIT, finish); (void)signal(SIGTERM, finish); if ((logfd = open(_PATH_NOLOGIN, O_WRONLY|O_CREAT|O_TRUNC, 0664)) >= 0) { (void)write(logfd, NOMSG, sizeof(NOMSG) - 1); ct = ctime(&shuttime); (void)write(logfd, ct + 11, 5); (void)write(logfd, "\n\n", 2); (void)write(logfd, mbuf, strlen(mbuf)); (void)close(logfd); } } void finish(signo) int signo; { (void)unlink(_PATH_NOLOGIN); exit(0); } void badtime() { errx(1, "bad time format."); } void usage() { fprintf(stderr, "usage: shutdown [-hknrx] shutdowntime [ message ]\n"); exit(1); } SUBDIR= shutdown .include BINDIR=/sbin #!/bin/sh cd /stand/PAO/bin/usr.sbin make && make install cd /stand/PAO/bin/sbin make && make install .R ..i18n.hlp usermgmt.hlp anonftp.hlp configure.hlpdistributions.hlp drives.hlp fixit.hlp pccard.hlp media.hlpnetwork_device.hlp options.hlp partition.hlp shortcuts.hlp slice.hlptcp.hlp usage.hlp register.hlpthtml.hlpZE 16 POINT_SIZE 150 RESOLUTION_X 75 RESOLUTION_Y 75 SPACING "C" AVERAGE_WIDTH 160 CHARSET_REGISTRY "JISX0208.1983" CHARSET_ENCODING "0" ENDPROPERTIES ˻ʸ FONT -HKU-Fixed-Medium-R-Normal--16-160-72-72-C-160-BIG5.HKU-0 SIZE 16 72 72 FONTBOUNDINGBOX 16 16 0 -2 STARTPROPERTIES 19 FONTNAME_REGISTRY "" FOUNDRY "HKU" FAMILY_NAME "Fixed" WEIGHT_NAME "Medium" SLANT "R" SETWIDTH_NAME "Normal" ADD_STYLE_NAME "" PIXEL_SIZE 16 POINT_SIZE 160 RESOLUTION_X 72 RESOLUTION_Y 72 SPACING "C" AVERAGE_WIDTH 160 CHARSET_REGISTRY "BIG5.HKU" CHARSET_ENCODING "0" FONT_ASCENT 14 FONT_DESCENT 2 DEFAULT_CHAR 41280 COPYRIGHT "Society of HKU Postgrad. By permission to use." COMMENT Contributed by Soc. of Hong Kong University Postgrad on Chinese Affairs. COMMENT Produced by TheDog. Converted to bdf by W. Wilson Ho. ENDPROPERTIES ϥ󥰥 STARTFONT 2.1 FONT -Kaist-Iyagi-Bold-R-Normal--16-120-100-100-C-160-KSC5601.1987-0 SIZE 16 100 100 FONTBOUNDINGBOX 16 16 0 -2 STARTPROPERTIES 19 FONTNAME_REGISTRY "" FOUNDRY "Kaist" FAMILY_NAME "Iyagi" WEIGHT_NAME "Bold" SLANT "R" SETWIDTH_NAME "Normal" ADD_STYLE_NAME "" PIXEL_SIZE 16 POINT_SIZE 120 RESOLUTION_X 100 RESOLUTION_Y 100 SPACING "C" AVERAGE_WIDTH 160 CHARSET_REGISTRY "KSC5601.1987" CHARSET_ENCODING "0" DEFAULT_CHAR 8481 FONT_DESCENT 2 FONT_ASCENT 14 COPYRIGHT "Original Johab from KAIST, reencoded by NARAE, SNU, 1997" ENDPROPERTIES CHARS 8224 STARTCHAR J2121 ENCODING 8481 SWIDTH 960 0 DWIDTH 16 0 BBX 16 16 0 -2 ---------------------------------------------------------------------- $Id: i18n.hlp,v 225.1 1997/11/02 02:20:29 hosokawa Exp $ β̤Ǥ ƿ̾ FTP 桼򤪤ʤޤ ѹǽƤϰʲΤȤǤ: UID: ƿ̾ FTP 桼˳Ƥ桼 ID ꤷޤ åץɤ뤹٤ƤΥեϡ ID θ¤ ޤ Group: ƿ̾ FTP 桼°륰롼פꤷޤ Comment: /etc/passwd Ͽƿ̾ FTP 桼ξܺ٤Ǥ FTP Root Directory: ƿ̾ FTP 󶡤ե֤٤ǥ쥯ȥ ꤷޤ Upload subdirectory ƿ̾ FTP 桼ǥåץɤե뤬¸ ٤ǥ쥯ȥꤷޤ # Original revision: 1.1 $Id: anonftp.hlp,v 220.11 1997/03/26 06:51:17 hosokawa Exp $ ----------------------------------------------------- FreeBSD BootAsia 󥹥ȡեåԡ˴ؤ륬 ----------------------------------------------------- ================================================================ աΥեåԡϤޤ¸ŪʳǤꡢʤư ڤΤǤϤޤ󡣲桹ȯԤϡΥեåԡ˴ؤ »ȥ֥ФǤ餦ΤǤϤޤ ================================================================ FreeBSD 2.1.5-RELEASE Υ꡼ˤȤʤäƳȯ줿 FreeBSD ܸ 󥹥ȡեåԡϡBootAsia 󥹥ȡեåԡȤƤ ĥޤߤΥСϡ2.2-RELEASE бȹ碌¿첽 ΤΥɤľѸǤȤ礬ưפˤʤ褦ʲɤ ޤ Υեåԡϡ FreeBSD Ρ1 Υեåԡǥ󥹥ȡ פȤħ򤽤ΤޤޤˡܸեȤܸɽƥ ϤʤߤǤե ( Big-5 ʸ ѡǤä 褯ѤƤ륳ǥ) ɽƥޤǤ򡢴 1 Υ󥹥ȡեåԡ˵ͤΤǤ˴ڹʸ ʤɤȤ߹ߤ򸽺߸ƤƤޤ FreeBSD 󥹥ȡեåԡǥϡLinux NetBSD FreeBSD ؤȰܿ줿 kon Ȥ PC Ѵ󥽡ɽץ Ikuo Nakagawa ᤬¤Τ١ˡ Tatsumi Hosokawa FreeBSD Υ󥹥ȡ sysinstall Ȥ߹ΤǤ 桼󥿡եΤ libncurses 饤֥ΥޥХȸ бˤĤƤϡNobuyuki Koganemaru ˤ 롢PC-9801 FreeBSD (98) Υ󥹥ȡǻѤƤѥå ¿ɤäƻѤޤ󥿡եѤ libdialog Tatsumi Hosokawa ¤Ԥʤ ޤ Υեåԡκǿ󡢺ǿСˤĤƤϡWEB ڡ http://www.mt.cs.keio.ac.jp/person/hosokawa/freebsd-jpinst/ ޤ å ǥ Tatsumi Hosokawa إץեܸ첽 Akira Hasegawa (readme.hlp) Hiroshi Miyauchi (install.hlp) Ikuo Nakagawa (anonftp.hlp, configure.hlp, partition.hlp, relnotes.html, tcp.hlp) Mitsuru IWASAKI (distributions.hlp, drives.hlp, fixit.hlp, upgrade.hlp) Noritaka Ishizumi (apache.hlp) Takayuki Matsui (hardware.hlp, media.hlp, slice.hlp) Takefumi Tsukada (XF86.hlp) Tatsumi Hosokawa (i18n.hlp, Τν) 󥹥ȡåܸ첽 Kazuo HORIKAWA Mitsuru IWASAKI Tatsumi Hosokawa Toshihiko SHIMOKAWA 2.1.5 2.1.6, 2.1.6 2.2.1 Ǥܸإץեι Mitsuru IWASAKI Tatsumi Hosokawa SADA Kenji Motoyuki Konno Norihiro Kumagai Takahiro Yugawa Akihiko Gotanda 2.2.1 2.2.2 Ǥܸإץեι Mitsuru IWASAKI Tatsumi Hosokawa 2.2.2 2.2.5 Ǥܸإץեι Mitsuru IWASAKI MITA Yoshio Tatsumi Hosokawa 2.2.5 2.2.6 Ǥܸإץեι Mitsuru IWASAKI Motoyuki Konno ȿġɧ 2.2.6 2.2.7 Ǥܸإץեι Mitsuru IWASAKI 2.2.7 2.2.8 Ǥܸإץեι Mitsuru IWASAKI SUGIMURA Takashi 2.1.5 2.1.6, 2.1.6 2.2.1, 2.2.1 2.2.2, 2.2.2 2.2.5 Ǥܸ쥤󥹥ȡåι Tatsumi Hosokawa إץեʸ Chen Hsiung Chan Jian-Da Li jihib@casd2.iie.ncku.edu.tw Kevin Chan mjhsieh@life.nthu.edu.tw Shyh-Donq Yu unixer yoc.bbs@vlsi1.iie.ncku.edu.tw 󥹥ȡåʸ Jian-Da Li إץեΥϥ󥰥벽 Choi Jun Ho 󥹥ȡåγ Chikara Kakinuma Kazuo HORIKAWA Kenji SADA Mihoko Tanaka Mitsuru IWASAKI Naoki Sugihara Takeshi OHASHI Tatsumi Hosokawa Tomohiro Adachi Toshihiko SHIMOKAWA Yoshiyuki IIJIMA libncurses ΥޥХб Nobuyuki Koganemaru Tatsumi Hosokawa libdialog ΥޥХб Tatsumi Hosokawa (ե٥åȽ) 󥽡 kon ۾˴ؤƤϡԤ Takashi MANABE ˤ kon ΥɥȤʲ ˰ѤƤޤˤ kon FreeBSD Υ󥹥ȡ˻Ѥ뤳 ˤĤƲ򤤤ޤξڤƴդޤ ---------------------------------------------------------------------- ץࡢХˤĤ KON Υץ˴ؤƻĿͤȤƤϤʤʬˤɤʸ ĥĤϤޤ(뤳ȤϤǤʤǤ) äơѹۤϼͳ˹ԤäƤƷ빽ǤХեå βϼޤȤ᤿ΤǺԤޤäƤйǤ ޤKON Ȥäƥϡɥ¾Υեȥ꤬ȯƤ ǤȤ뤳ȤϤǤޤ ХոʤɤޤʲΥɥ쥹˥ᥤ򲼤 E-Mail: manabe@papilio.tutics.tut.ac.jp. PC-VAN: FFE91293 ---------------------------------------------------------------------- Υեåԡ˴ؤ뤴ոۡХݡȤʤɤϰʲΥɥ쥹 ޤǤꤤޤ Tatsumi Hosokawa ( ã) localization.hlp ---------------------------------------------------------------------- ΥեåԡǻѤեȤ˴ؤ BDF եȥեΥإå ʲźդޤ Ѹ FONT -Sony-Fixed-Medium-R-Normal--16-120-100-100-C-80-ISO8859-1 SIZE 16 100 100 FONTBOUNDINGBOX 8 16 0 -2 STARTPROPERTIES 19 FONTNAME_REGISTRY "" FOUNDRY "Sony" FAMILY_NAME "Fixed" WEIGHT_NAME "Medium" SLANT "R" SETWIDTH_NAME "Normal" ADD_STYLE_NAME "" PIXEL_SIZE 16 POINT_SIZE 120 RESOLUTION_X 100 RESOLUTION_Y 100 SPACING "C" AVERAGE_WIDTH 80 CHARSET_REGISTRY "ISO8859" CHARSET_ENCODING "1" DEFAULT_CHAR 32 FONT_DESCENT 2 FONT_ASCENT 14 COPYRIGHT "Copyright (c) 1987, 1988 Sony Corp." ENDPROPERTIES ܸ FONT -JIS-Fixed-Medium-R-Normal--16-150-75-75-C-160-JISX0208.1983-0 SIZE 6 78 78 FONTBOUNDINGBOX 16 16 0 2 STARTPROPERTIES 19 FONT_ASCENT 14 FONT_DESCENT 2 DEFAULT_CHAR 8481 COPYRIGHT "from JIS X 9051-1984, by permission to use" FONTNAME_REGISTRY "" FOUNDRY "JIS" FAMILY_NAME "Fixed" WEIGHT_NAME "Medium" SLANT "R" SETWIDTH_NAME "Normal" ADD_STYLE_NAME "" PIXEL_SIΥ꡼Ǥϡƥإ롼פȥ桼ɲäǤޤ TABBACK-TABENTER Ѥƥեɴ֤ΰưǤޤ եɤԽˤϡDELETE BACKSPACE ѤƤޤ ^A (control-A) ǹƬء^E (control-E) ǹذư ^F (control-F) DZء^B (control-B) Ǻذʸʬưޤ ^D (control-D) ǥ֤ʸ^K (control-K) ǹޤǺ ޤϤ⡢EMACS ɸΥƤƱǤ ΥեϤѤ顢OK 򤷤Ƥ Ϥά硢¿ιܤˤʥǥեͤꤵޤ 桼䥰롼פ̾ΤϤˤϡƥϤ եɤΤۤȤɤФǽʤΤɽޤ ͳѹ뤳ȤǤޤ 桼 롼 =============== ξ硢ǽ˼ʬΥ桼Ѥ˿롼פ뤳Ȥϡְ ʤ褤ͤȤǤ礦Τ褦ʥ롼פΰŪ̾Τ "users" äȴñ "other" Ȥʤޤ롼̾Ʊ롼 °Ƥ桼Υե륢Ĥ˻ѤޤĤ 롼̾ƥեѤ˻ѤƤޤ ͤɽƤ桼 ID 䥰롼 ID ɬŪ˻ꤹ ɬפϤޤ󡣤ΥեɤϤʤϡƥ ʥǥեͤ򤷤ޤڥ졼ƥ󥰥ƥब桼 ȥ롼פ̤뤿˼ºݤ˻ѤΤϴϢդ줿̾Τ षοͤʤΤǤ -- äơ̾Ϥ줾Υ桼 롼פФ ID ϥˡǤɬפޤ (롼ѤνΥХåץꥹȤϼƤޤ ʤ) 桼 ====== 桼Υ ID ϡƥ˥󤹤ݤϤʤФʤʤ ѿû (8 ʸʲ) ID Ǥ桼λ̾ƬʸǤ뤳Ȥ¿ Ū˾ʸȤޤޤʥ᡼ˤѤޤ ( ǡ᡼ΤäȾܤ̾ꤹ뤳ȤǤޤ) 桼Υѥɤ⤳Ǥޤդ֤褦ˤƤ 褤ѥɤȤϡ6 ʸʾǤꡢȿޤߡˤ ܤäƤ餺桼̾˴ϢƤʤ褦ñǤ 桼Υ󥰥롼פϡˤɤΥ롼פΥǽ ˼뤫ꤷޤ桼Фˤʤ륰롼פɲåꥹȤ 󶡤Ƥ硢ѥɲ򤷤ʤƤ¾Υ롼פ ե˥Ǥ褦ˤʤޤ "wheel" ơ ̾ɲäΥ롼ץХåץꥹȤˤϥ󥰥롼פƤӴޤ Ϥޤ ĤΥƥΥ롼פ̤ʰ̣äƤޤºݡ롼 "wheel" ΥФ su(1) ޥɤȤäơǥ桼ѥ桼ˤʤ ˸¤ƤޤǤǥƥΥԤʤ桼 ɲä褦Ȥ硢򤳤Υ롼פ˲ä뤳Ȥ˺ʤǤ! (ȡֽϡפȤϤʤȤΤȤǤ礦:) ޤ롼 "operator" ΥФˤϥǥեȤǥƥХåå Ԥʤäꡢ -- ѥ桼ˤʤʤƤ -- ƥ򥷥åȥ 󤹤Ȥäޥʡʥƥڥ졼ФĤͿ ޤ! Ǥ顢Υ롼פɲä뤳ȤդʧäƤ ``full name'' ΥեɤϥȤȤƤΰ̣ޤޤ 桼̾᡼ΥեȥɤǻѤޤΤǡºݤˤϥ桼 Υեȥ͡ࡢ饹ȥ͡ϤƤ٤Ǥ礦ص塢 ΥեɤϥޤǶڤä֥եɤʬǤ桼Υե ͡³ƥեξꡢֹ̳桢ֹ򵭽ҤǤ ۡǥ쥯ȥϥ桼󤷤Ƥե륷ƥΥǥ ȥǤꡢˤϸĿŪե (̾ `.' ǻϤޤ뤿֥ɥ ȥեפȸƤФƤꡢǥեȤǤ ls(1) ޥɤɽ ) Ǥ礦/usr/home/ /home/ β˺뤳Ȥ ¿褦Ǥ Ǹˤʤޤϥ桼κǽΥޥɥ󥿥ץ꥿Ȥʤޤ ǥեȤΥ /bin/sh ȤʤäƤޤͤϤäͭ̾ /bin/csh 򹥤褦Ǥ¾Τäȥ桼եɥDzŬʥ ports packages 쥯Ȥ󶡤Ƥޤ # Original revision: 1.1.2.4 $Id:$ β̤Ǥϥ󥹥ȡ뤬λȤΥƥ򤪤ʤޤ Ǥ⥷ƥԤΥѥɤȥॾꤷޤ礦 ¾bash, emacs, Pascal ʥġˤĤƤϡ֥ѥå ˥塼򤷤Ƥ ƥ।󥹥ȡ奿ॾꤹˤ ``tzsetup'' Ϥ Ƥ ¾ˤƤˤĤƤ ``/etc/rc.conf'' 򸫤Ƥ # Original revision: 1.2.2.2 $Id: configure.hlp,v 220.11 1997/03/26 06:51:17 hosokawa Exp $ ۥե˴ؤ ------------------------ ۥե륻åȤΡX-פȤƬϡXFree86 3.3.2.3 ١ ۥե롢饤֥ꡢޥ˥奢ڡSVGAСǥեȥե ȤΥåȤȤΥåȤɲäȤȤ̣ޤΤ褦 ʥåȤ򤹤СX Window ƥΥåȥåפޥ 뤿Υ˥塼ɽޤ ˥塼ȴˡ֥ץƥ򤹤뤳Ȥǡۥե 򤵤˥ޥǤǤ礦 ΥɥȤǽҤ٤ƤִʥפȤϡʥĥ꡼ ˡΧŪ͢е줿٤ƤΰŹ沽ɤΤ̣ޤ ǤΡֽ礤Ρץ󥹥ȡ֤ϰʲ̤Ǥ ȯ: ("bin") ۥե롢ޥ˥奢ڡե 롢ץե󥰥饤֥ȡʥĥ꡼ ͥ볫ȯ: ƱǤʥĥ꡼ǤϤʤͥ Τ 桼: ۥե롢ޥ˥奢ڡե롢 FreeBSD 1.x, 2.0, 2.1.x θߴå Ǿ: ۥեΤ : ۥե롢ޥ˥奢ڡե롢ץ ե󥰥饤֥ꡢFreeBSD 1.x FreeBSD 2.0 ߴ饤֥ꡢʥĥ꡼ࡢʤ XFree86 ۥեΥݡͥȡ Υ쥯ˤϰŹ沽ɤϴޤޤơ֤ʤ ȤդƤ罰ˤϼư ɬפޤ : ۥե륻åȤ佤ۥեñ̤Dzǽ : 򤵤Ƥۥե򤹤٤ƥꥢ --- Ź沽եȥ ------------------ desפȡkrbפΤ褦ʡۥեˤϡ͢жػ!פΰ Ƥ뤳ȤˤŤǤ뤳ȤȻפޤϥꥫ罰 (ޤ ϰŹ沽Ѥ͢еꥹȤ˵ܤƤ뤹٤Ƥι) λФ ˡǤȤͳǤˡΧ򤪤̤ȤΤϡ Υ (罰!) ȥ֥˸뤳ȤǤΤǡ罰 ΥФ餳ۥեɤʤǤ! Ϥʤʤʾˡ¤äƤޤ ĤƤǤϤޤꤢޤ (ϥꥫ罰εİޤ!) 罰񳰤ΥȤؤΤ¿Ρֹ罰ʳΡץФ¸ߤƤꡢ ȤϰʲΤ褦ˤʤäƤޤ: ftp://ftp.internat.freebsd.org/pub/FreeBSD 罰ʳοͤϤΤ褦͢е줿եȥ򤳤 Ƥthanks! translated by iwasaki@pc.jaring.my Sun Jul 14 01:30:52 SGT 1996 # Original revision: 1.3.2.7 $Id: distributions.hlp,v 225.1 1997/11/02 02:20:29 hosokawa Exp $ ȥ طޤ)餯̤Ωǥ˥󥹥ȡ뤹 ( ֡ȥޥ͡ι򻲾) 뤤ϥѡƥ礭ѹ ξOS1024˥֡ȥѡƥݤǤ褦 ɬפǤ礦 10ӥåȤΥɥ쥹¤ˤĤIBMʸ򤤤ʤ뤫Τ ޤ󡣡1024ĶǥʤïȤʤפʤɤȸ ͤΤǤ礦 $Id: drives.hlp,v 220.11 1997/03/20 10:46:06 hosokawa Exp $ # Original revision: 1.2.2.1 ֡ȥޥ͡: ----------------------- ʣOS򤷤ƻѤȤ뤤ܰʹߤΥɥ饤֤FreeBSD 򥤥󥹥ȡ뤹Ȥˤϡ֡ȥޥ͡򥤥󥹥ȡ뤹ɬפ ޤܰʹߤΥɥ饤֤֡ȤȤˤ⡢ǽΥɥ饤֤ ֡ȥޥ͡򥤥󥹥ȡ뤷ʤƤϤʤޤ ˤΥɥ饤֤ FreeBSDΥѡƥͽ꤬ʤǤ⡢ (㤨С ̤Ӥ˻ȤƤȤǤ) ֡ȥޥ͡ϥ֡ȥץڤ ؤǽΤ˰ܤΥɥ饤֤¸ߤɬפޤ 򤪤ʤˤϡɥ饤˥塼ǰܤΥɥ饤֤ӡ ѡƥ󥨥ǥΩ夬äƤ顢ѹ(Q)uit ǤǤΥ֡ȥޥ͡˥塼Ǻǽ (FreeBSD֡ ޥ͡("Booteasy")򥤥󥹥ȡ) ӡ³¾Υɥ饤֤ FreeBSDѤˤĤ̤ꤷƤ Windows 95 Τ褦ʡ֥ڥ졼ƥ󥰥ƥפξ硢äƸ夫 󥹥ȡ뤷ˤϡŤˡ֥֡ȥޥ͡Ƥ⤤Ǥ פȤä䤤碌򤹤뤳Ȥʤ˥֡ȥޥ͡˾ ƤޤȤⵤαƤ٤ǤFreeBSD˥󥹥ȡ뤷 ޤäƤ餳äƤޤäˤ⡢Ƥ򼺤櫓ǤϤޤ ñˤ⤦FreeBSDۥǥ쥯ȥ tools/ ֥ǥ쥯ȥ õС"bootinst.exe""boot.bin"ĤǤ礦 tools/ ֥ǥ쥯ȥ"bootinst boot.bin"ϤǺ 󥹥ȡǤޤ ǽΩ夲˥֡ȥޥ͡``F?''Ȥɽ졢 FreeBSDƤե󥯥󥭡򲿲áƤѹǤʤ ϡȥ꤬Ƥޤ顢򤹤 ˼νפʾɤǤ ȥѴ / ǥ¾OSȤζͭ: ------------------------------------------ ɥ饤֤ FreeBSD ΰºݤ˥󥹥ȡ뤹硢ɥ饤֤ȥ ȥȹ礻Фƥѡƥ󥨥ǥ𤵤줿ȥ꤬ Ȥֽʬ˳ǧƤס IDE ɥ饤֤¿ξ硢PC BIOS åȥåפˤƤϤĤ ȥ˴ؤǽʽޤ ( IDE ɥ饤֤ξ ) IDE ȥ顢ޤ̤ʥ֡ȥѴ桼ƥƥ (OnTrack SystemsФƤ褦ʤ) ˤäơ֥ޥåספ줿 ȥĤȤޤξ硢Υɥ饤֤ȥ 뤳Ȥϡɥ饤֤ΤΤ PC BIOS åȥåפ򸫤Фˤ狼 Ȥä褦ʴñʤΤǤϤޤ󡣤Τ褦ʾǥȥ꤬ ׻Ƥ뤫򸡺ɤˡϡDOS ֡Ȥ (եåԡ ǥǤϤʤϡɥǥ!)FreeBSD CDROM FTP tools/ ֥ǥ쥯ȥˤ󶡤Ƥpfdiskץ桼ƥƥ ¹ԤǤDOS 鸫ƤŪȥ꤬𤵤 ޤ ǥ DOS ѡƥ󤬶¸ƤʤϡFreeBSD Υ ȡˡ DOS ѡƥƤȥȥ ФʳǥåȻפ⤷ޤ󡣰ö FreeBSD 󥹥ȡ С̤ɬפʤ餤ĤǤǤޤ ºݡFreeBSD ޥ˾ʥ֡Ȳǽ DOS ѡƥĤ ƤȤ (뤫ʤ̤ˤ) ͤǤϤޤ ˥ޥ԰ˤʤäꡢɤѤʵư (PC ΥϡɥǤ ȤǤϤʤ!) ħФƤ硢ʤȤ⾦ѤΥƥ ǥ桼ƥƥ򥤥󥹥ȡ롦¹Ԥ뤿 DOS ȤǤޤ : ֡Ȥ롼ȥѡƥ1024ܰΥ¸ߤ ƤϤʤޤѴ줿ȥȤäƤʤС礷 ǤϤޤ󤬡Υǥȥ1024ĶƤ 褦ǤС1024Ķΰ˥롼ȥѡƥ (Τ ϥ롼ȥѡƥΥͥե) 򥤥󥹥ȡ뤷Ƥޤ ֡ȤϤޤʤ⤷ޤ󡣰ܤΥǥǤ餫ᥤ ȡ뤵줿̤OSFreeBSD¸Ȥˤäˤ꤬ ΤǡǥΥɥ쥹ǰ˳ǧ뤳Ȥ򴫤ޤ 1024FreeBSDΥ롼ȥѡƥΤ˽ʬ ΰ褬ʤ (֤ޤϥ롼ȥѡƥΤߤ ϤޤꡢҤȤFreeBSDΥͥ뤬ɤСΥץ fixit եåԡǥ (ޤ CD-ROM 2) /mnt2 ȤƥޥȤ̤ʥưޤ /mnt2 ̤ ޥɷ /mnt2/dev Τ괰ʥǥХե뷲˥ Ǥ褦ˤʤޤ Ǥ fsck disklabel Τ褦ʥǥХ򤪤ʤˤϡ եȤ /dev (boot Υǥ˺Ƥꡢɬ׺Ǿ¤Τ) ¸ ߤΤȿ¬ϡ/mnt2/dev ذươˤ륨ȥ Ȥɬפ뤫⤷ޤ translated by iwasaki@pc.jaring.my Sun Jul 14 02:19:57 SGT 1996 # Original revision: 1.1.4.3 $Id: fixit.hlp,v 220.11 1997/03/20 10:46:06 hosokawa Exp $ ꥹȤ /stand/PAO/doc/PAO-FAQ ֤ޤ桹˼ ֤Ĥˡɤ߲¿ŵŪʼ䤬Υե DzƤޤ Υեåԡϡ󥹥ȡɬפǤϤʤǥХɥ饤Фϴޤޤ ޤ (㤨Сӥǥץ㡢ܥ󥻥LS120 ѡ եåԡʤ)Υɥ饤Ф򥤥󥹥ȡ뤹ˤϡͥ ꥸʥ PAO ѥåȤȤ˥󥹥ȡ뤹ɬפޤPAO ѥåӾϡPAO Web ڡ (http://Makefile.ORG/PAO/, http://www.jp.FreeBSD.org/PAO/) PAO anonymous FTP (ftp://jaz.jp.FreeBSD.org/pub/FreeBSD-jp/PAO/) ˤƸĤ뤳Ȥ ǤǤ礦 FreeBSD ǥ⡼Х륳ԥ塼ƥ󥰤򤪳ڤ߲ Ѥۤ򤹤 distSetUser 桼Ѥۤ򤹤 distSetXUser X-桼Ѥۤ򤹤 distSetMinimum Ǿۤ򤹤 distSetEverything ٤Ƥۤ򤹤 distSetDES DES ʬۤ򤹤 distSetSrc ʬۤ򤹤 distSetXF86 XFree86 ʬۤ򤹤 distExtractAll 򤷤٤ƤʪŸ docBrowser ɥȤɤ installCommit αƤ󥹥ȡȤ¹Ԥ installExpress ®󥹥ȡ installUpgrade åץ졼ɥ󥹥ȡ installFixup "fixit" ⡼ɤư mediaSetCDROM CDROM ǥ򤹤 mediaSetFloppy floppy ǥ򤹤 mediaSetDOS DOS ǥ򤹤 mediaSetTape tape ǥ򤹤 mediaSetFTP FTP ǥ򤹤 mediaSetFTPPassive եͳ FTP ǥ򤹤 mediaSetUFS UFS ǥ򤹤 mediaSetNFS NFS ǥ򤹤 mediaSetFtpUserPass FTP桼̾ȥѥɤΤΥץץ mediaSetCPIOVerbosity CPIOνϤФץץ mediaGetType ǥפФץץ optionsEditor ץ󥨥ǥư register Ͽǥư : /stand/sysinstall mediaSetFTP configPackages FTPȤ򤷤ơѥå˥塼˹Ԥޤ /stand/sysinstall disk=sd0 diskPartitionEditor ǥ sd0 ˴ؤƥǥѡƥ󥨥ǥưޤ ⤷ /stand/sysinstall ¾Υե̾˥󥯤ƤȤ㤨 `/usr/local/bin/configPackages' ΤȤŪʥޥ̾Ȥƥ١ ͡ȤʤФʤޤ # Original revision: 1.3.2.4 $Id: shortcuts.hlp,v 220.11 1997/03/26 06:51:17 hosokawa Exp $ FreeBSD 2.2.8-RELEASE PC-card 󥹥ȡ ۤ Ĥ BSD-nomads team, Japan 1. ΥեåԡϤʤˡ Υ󥹥ȡΥͥȥեåԡ FreeBSD PAO PC-card ѥå ޤǤޤΥեåԡѤ뤳Ȥǡޤޤ PC (ͥåȡSCSI CDROMATAPI CDROM ʤ) FreeBSD 򥤥󥹥ȡ 뤹뤳ȤǤޤΥեåԡ 2.2.8-RELEASE PAO-19990114 ١ȤƤޤäơݡȤƤ륫ɤ PAO-19990114 ˤäƥݡȤƤ륫ɤƱǤܤϡ ΥեˤꥹȤ PAO FreeBSD ǥ⡼Х륳ԥ塼ƥ󥰤򥵥ݡȤѥå Ǥ PAO ѥåΰʬϤǤ˥ꥸʥ FreeBSD ĥ꡼äƤꡢޤΥɤԤäƤ֤Ǥ PAO ΥɤΰʬϤޤ褯ӥ塼Ƥ餺ޤǤϤޤ ꥸʥΥ礹ˤŬʤĤμ¸Ū (ץ٥ ) ɤޤǤޤPAO ϸߤ FreeBSD PC-card ݡȤ ٤ƤǤꡢĤ¿Υɤ򥵥ݡȤƤޤ *2.2.8-RELEASE ˴ؤפʥΡ* 2.2.8 Ѥ PAO PC-card ȥ IRQ Ū˻ꤷޤ եȤ IRQ 5 ǤĤΥåץȥåפ IRQ 5 ˥ɥ ɤäƤޤΤ褦ʥޥǤϡUserConfig ˤä IRQ Ƥʤ IRQ ꤹɬפޤԤʤˤϡΥ֡ ȥեåԡκǽΥ˥塼 UserConfig "CLI" ˥塼 򤷤ơ -------------------------------------------------------------------- config> irq pcic0 9 ~~~~~~~~~~~ -------------------------------------------------------------------- Ϥޤ (IRQ 9 ѤƤʤ)ߡpcic0 UserConfig "visual" ⡼ɤ򥵥ݡȤƤޤ PAO ͥ뤬ѥ뤵줿⡢ٹԤʤɬפޤ 󥹥ȡѤߥƥ UserConfig ¹Ԥˤϡ֡ȥץץ -------------------------------------------------------------------- boot: -c ~~ -------------------------------------------------------------------- Ϥɬפޤ 2. PC-card δ ΥեåԡѤˤϡǤ PC-card ƥΤ δŪʳǰˤĤΤɬפޤPC-card ¿ ISA ǥ Ʊ͡I/O ݡȡIRQƶͭѤޤ ɥ쥹 IRQ ٥ PC-card ȥ (뤤 PC-card ֥å) ȸƤФüʥϡɥˤäưŪ˳꿶ޤ 줾 PC-card åȤϡ8 ĤΥꥦɥ2 Ĥ I/O ɥ 1 ĤֹŤƤʤ IRQ äƤޤPC-card ȥϤλ񸻤 ISA뤤 PCI ֤˥ޥåפޤ Υޥåԥ󥰤εǽƩŪˤϤ餯ᡢCPU PC-card ̾ ISA ǥХΤ褦˻Ѥ뤳ȤǽǤ (All memory windows and I/O Window 1 are unused) +---------+ +------------+ / | |--------------------| |-----------/ ISA BUS | Modem | I/O Window 0 | PC-card | 3f8 - 3ff / | PC-card |--------------------| Controller |-----------/ | |<==================>| |<=========>/ +---------+ unnumbered IRQ +------------+ IRQ 3 / 1 ǥ५ɤ ISA ХΥꥢåפȤƥޥåפ Υѥ᡼ꤹ뤿ˡڥ졼ƥ󥰥ƥϥ EEPROM ˵Ҥ줿CIS (Card Information Structure) ץ ޤڥ졼ƥ󥰥ƥϤξ PC-card ȥ ͳꤷޤPC-card ȥϤŪΤ 16 Х ΰɬפȤޤ (ȥ EEPROM 򤳤Υꥢ˥ޥå ޤ)Υǡϡ"/stand/pccardc dumpcsis" ȥޥɥץ ץȤáȤɤळȤǽǤʲ "/stand/pccardc dumpcsis" νϥץ򼨤ޤ ----------------------------------------------------------------------- Tuple #6, code = 0x1b (Configuration entry), length = 16 000: e0 41 99 49 55 26 25 aa 60 f8 03 07 30 ff ff 28 Config index = 0x20(default) Interface byte = 0x41 (I/O) +RDY/-BSY active Vcc pwr: Nominal operating supply voltage: 5 x 1V Continuous supply current: 2 x 100mA Power down supply current: 2 x 10mA Card decodes 10 address lines, 8 Bit I/O only I/O address # 1: block start = 0x3f8 block length = 0x8 IRQ modes: Level IRQs: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Max twin cards = 0 Misc attr: (Audio-BVD2) (Power down supported) Tuple #7, code = 0x1b (Configuration entry), length = 7 000: 21 08 aa 60 f8 02 07 Config index = 0x21 Card decodes 10 address lines, 8 Bit I/O only I/O address # 1: block start = 0x2f8 block length = 0x8 ----------------------------------------------------------------------- fig.2 CIS ץΥץ (Megahertz XJ3288 CIS ΰ) ΥեåԡϥǥեȤǤ 0xd0000-0xd3fff 򤳤Υåΰ ƻѤޤ⤷ʤΥϡɥΰ̤Ū ѤƤϡΥեåԡκǽΥ˥塼¾Υɥ쥹 򤹤뤳ȤǤޤ (0xd4000, 0xd8000, 0xdc000)⤷ʤΥϡɥ ξܤڥåɤΤʤΤǤСץͤ򤻤 Τޤ޿ʤߡ꤬Ƥ :-) ץƤߤޤ礦 0xd0000 ϤۤȤɤΥåץȥåץϡɥˤŬڤͤǤ Υեåԡˤ PC-card ˴ؤ⤦ĤΥ˥塼ޤ ĤΥ˥塼ϡե꡼ IRQ ס˴ؤ˻ѤޤPC ɤ¾ΥǥХ˻ѤƤʤ IRQ ɬפȤޤڥ졼ƥ ƥϤŪΤᡢե꡼ IRQ סɬפޤ ˥塼餳Υե꡼ IRQ ס򤹤뤳ȤǤޤǥե IRQ 10 11 ǤǡĤΥޥǤ IRQ 10 򤹤륵 ɥ (˺äȤˡ󥹥ȡեåԡ ϸФǤʤ) äƤȤȤˤʤ롣Τ褦ʥޥä ϡIRQ 10 򤳤Ū˻Ѥ뤳ȤϤǤʤIRQ 5 11 ɤؼʤǤ IRQ 5 ͭƤǥХ IRQ 11 ΤߤλѤȤɬפ 3. FreeBSD 󥹥ȡΡ 󥹥ȡ뤬λ PC-card ѤʤСͥ PC-card ݡȤȶ˥ꥳѥ뤹ɬפ롣äơͥ Υϡɬ󥹥ȡ뤹ɬפ롣ΥեåԡϼưŪ src/ssys (ͥ륽) ۥե֥桼פӡX-桼 ۥե륻åȤɲä롣ֺǾפ򥤥󥹥ȡ뤹 硢Ӽʬۥե򤹤ϡsrc/ssysۥե Ȥɲäɬפ롣 4. 󥹥ȡ뽪λ ⤷ 2.2.7-RELEASE 򤳤Υեåԡǥ󥹥ȡ뤷ϡPAO ѥ ͥåȥ뤤 CDROM äƤ뤳Ȥʤ PAO ͥ򥤥󥹥ȡ뤹뤳ȤǽǤΥեåԡ PAO Υѥå /stand/PAO/sys ˡ/etc ե /stand/PAO/etc ˡ pccardd (PC-card ǡ) pccardc (PC-card ȥ) /stand ˤ 쥤󥹥ȡ뤷ޤˡ/stand/sysinstall Ρץ˥塼 顢PAO ͥꥳѥ뤹뤳ȤǤΤǤ FreeBSD 򤳤Υեåԡǥ󥹥ȡ뤷ޥ֡Ȥ顢root 桼ǥޥ˥󤷡/stand/sysinstall ¹Ԥޤ礦 PAO ͥΥꥳѥȥ󥹥ȡ򥤥󥹥ȡΥ˥塼 ʤȤǽǤ ץ˥塼ΡPC-cardפ򤷤ƲǡκȤ 󥹥ȡ뤬λľ˹ԤʤʤФʤʤȤȤ˵Ĥ Ʋäˡ⤷ͥΥ˲餫ΥѥåƤƤޤä ˤϡϼԤǽޤκȤϤǤ ԤʤäƲ ⤷ PC-card ȥΥåե꡼ IRQ סΤ ѥ᡼ȤơǥեȤǤʤΤ򤷤ϡʲΥѥ᡼ ưѹƲ (ߤޤ󡢼ưŪˤϤǤޤ) PC-card ȥ /etc/sysconfig "pccardmem" PC-card ΤΥե꡼ IRQ ס /etc/pccard.conf "irq" PAO FAQʲΥǥΥ󥹥ȡ뤬ǽǤ CDROM ݡȤƤ CDROM ɥ饤 (ʲΤɤ줫) ɬפǤ Sony CDU 31/33A /Panasonic "Sound Blaster" CDROM. ߥĥ FX-001{A-D} (IDE ǤʤΤΥɥ饤). IDE CDROM SCSI - ݡȤƤ륳ȥ (ϡɥ ) ³줿̤ SCSI CDROM ɥ饤֡ DOS FreeBSD ۥե DOS Υץ饤ޥѡƥ ( C:\FREEBSD\) ˥ԡơ饤󥹥ȡ뤷ޤ ե륷ƥ ۥե򡢥ǥδ¸ FreeBSD Υե륷ƥ Фޤ եåԡ ۥե DOS UFS ǥեޥåȤ줿եåԡ ǥФޤΥեåԡǥˤŬڤ ۥե뤬ǼƤΤȲꤷޤեåԡǥ ۥǥˤĤƤξܺ٤ˤĤƤ ABOUT.TXT FTP ۥեƿ̾ ftp ФФޤ (ФΥꥹȤ󶡤Ƥޤ). FTP ˤ Active Passive ĤΥ⡼ɤդ ̤ˡǥեФΤ Active ⡼ɤǡ Passive ⡼ɤϥե䤽¾Υƥǽˤä ̤ FTP ͥ󤬶ػߤƤ˻Ȥޤ FTP ˥塼ǡ֤¾פꤷˤϡ٤ƤΥѥ̾ 󤷤Ƥ桼Υۡǥ쥯ȥ꤫Хѥ ʤ뤳ȤˤդƤ ǥեȤΥ桼̾ "ftp" (ƿ̾ ftp) Ǥץ ̤ѹǤޤ NFS ۥե NFS ФФޤ (NFS ФΥѡߥåǧƤ) ϥ󥰤ưʤˤϡФˤäƤ̤ ץꤹɬפ뤫⤷ޤ ܤϥץ̤򸫤Ƥ Tape ۥեơפǥ쥯ȥ˥ԡơ 󥹥ȡ뤷ޤơפΥ֥å 20 ǤϤʤ ˤϡץ̤ѹǤޤ # Original revision: 1.3.2.1 $Id: media.hlp,v 225.1 1997/11/02 02:20:29 hosokawa Exp $ Usage: bios_drive:interface(unit,partition)kernel_name options bios_drive 0, 1, ... interface fd, wd or sd unit 0, 1, ... partition a, c, ... kernel_name name of kernel, or ? for list of files in root directory options -a (ask name) -C (cdrom) -c (userconfig) -D (dual consoles) -d (debug early) -g (gdb) -h (serial console) -P (probe kbd) -r (default root) -s (single user) -v (verbose) Examples: 1:sd(0,a)mykernel boot `mykernel' on the first SCSI drive when one IDE drive is present 1:wd(2,a) boot from the second (secondary master) IDE drive 1:sd(0,a)? list the files in the root directory on the specified drive/unit/partition, and set the default bios_drive, interface, unit and partition -cv boot with the defaults, then run UserConfig to modify hardware parameters (c), and print verbose messages (v) ͥåȥ󥹥ȡϡ3̿ϩ (link) ˤäƤȤ Ǥޤ: ꥢݡ: SLIP / PPPѤơ ѥݡ: PLIP (Laplink/Interlinkѥ֥) Ѥơ ͥå: ɸŪʥͥåȥȥѤơ (PCMCIAͥåȥɤȤޤ) SLIP ݡȤϾŪǡӤϡ㤨Хåץȥåץԥ塼 ̤ PC 򥷥ꥢ륱֥ǤĤʤ褦ʡľ³󥯤˸¤ ޤ SLIP 󥹥ȡǤä򤫤뵡ǽ󶡤Ƥʤ ᡢSLIP ѤΥ󥯤ϥ֥ľǤʤФʤޤ(ä򤫤뵡 ǽ PPP 󶡤ƤޤPPP ȤˤϡSLIP ǤϤʤǤ PPP ȤäǤ礦) SLIP 򤷤ˤϡǡ ݤ˥ꥢ륱֥Ȥˡslattach ޥɤԽȤ 褬ޤλǤϡ̿Ǥ slattach (ޤϤʤ餫 ʥޥ) ¹ԤơưƤȤˤƤޤ FreeBSD Υ󥹥ȡϡ 115.2Kbps (֥ľǤο侩®) ꥢ®٤Ǥʤޤ ǥȤĤʤСPPP ͣȻפޤ󥹥ȡ ΤʤᤤʳǥӥץХ˴ؤɬפˤʤޤ顢 狼褦ˤƤƤ¡ӥץХ IP ɥ쥹ȡ餯ʤȤ IP ɥ쥹ɬפǤ(⤷ ISP ʥߥå IP ɥ쥹γƤ򥵥ݡȤƤʤСʤ IP ɥ쥹϶ΤޤޤˤƤPPP ꤵ뤳ȤǤޤ) Ȥ̤ˡʤȤäƤǥε ISP ä򤫤뤿 ˡAT ޥɡפɤΤ褦˻ȤΤ狼äƤʤФʤޤ PPP Υñüߥ졼εǽ󶡤Ƥ ꡢ֥ǥǡ١פƤʤǤ ̤ FreeBSD (2.0Rʹ) ޥȥ֥ľǤʤСlaplink ѥݡȥ֥ (: ܤǤϡINTERLINK ѥѥ륱֥ Ȥ褦̾Τ䤵Ƥ뤳Ȥ¿) ǥ󥹥ȡ뤹뤳Ȥ⸡ ƤƤߤƤѥݡȤΥǡž®٤ϡꥢ ǽ®٤٤Ȥäȹ⤯50KB/ä뤳Ȥ᤺餷 ޤ 줫顢ǽʸ¤®ʥͥåȥ󥹥ȡ򤪤ʤˤϡ ʤȤäƤ⡢ͥåȥץ褤Ǥ! FreeBSD ŪPC ѤΥͥåȥɤ򥵥ݡȤƤޤݡȤ륫 ɤΰɽ FreeBSD ϡɥɤ˷ǺܤƤޤ(֡ȥե ԡǥΡʸץ˥塼򻲾ȤƤ) PCMCIA ͥ ȥ (ݡȤ) ȤȤˤϡåץȥåץԥ塼 Ÿפ˥ͥåȥɤץ饰󤷤Ƥ褦ˤ FreeBSD ϡޤȤ˻ǰʤ顢ΤȤPCMCIAɤΡ֥ۥ ȥ󥵡ȡפˤбƤޤ(: ϡᤤ衢 븫ߤǤ) ¾ΥͥåȥǤ IP ɥ쥹ΥͥåȥΡ֥ͥåȥ פ͡ơʤΥޥ̾狼äƤʤФʤޤ ʤΥͥåȥǻȤ٤ͤϥƥԤƤޤ¾ ۥȤ IP ɥ쥹ǤϤʤ̾ǻꤹĤʤС͡ॵФ IP ɥ쥹ɬפǤޤ͡ॵФȲäȤ˻Ȥȥ (PPP ʤХץХ IP ɥ쥹ˤʤޤ) Υɥ쥹ɬפˤ Ǥ礦⤷⤢ʤ˽񤫤줿ȤΤ٤Ƥޤʬ ʤСͥåȥΥ󥹥ȡĩ魯ˡޤֺ ˡץƥԤ̤٤Ǥ礦ѤΥͥåȥ ʤ IP ɥ쥹ȤäƤ⡢ƥԤɾȽ褯ʤäꤷޤ ! :-) # Original revision: 1.2.2.2 $Id: network_device.hlp,v 220.11 1997/03/26 06:51:17 hosokawa Exp $ / (롼) ǥ쥯ȥ (ƤξϾ /tmp) ꤷƤˤϡΰե ξ̤ʾ (㤨 /usr/tmp) ꤷǤ礦 Use Defaults: ɸͤѤޤ ٤ƤΥץͤ򥹥ȥåץǥեȤͤ˥ꥻåȤޤ # Original revision: 1.6.2.1 $Id: options.hlp,v 220.11 1997/03/26 06:51:17 hosokawa Exp $ β̤ǤϰʲΥץǤޤڡǥץ ͤڤѤޤȤλ Q Υ򲡤Ƥ NFS Secure: NFS Фݾڤ줿ݡȤȤΤ̿ޤ Sun Υơ̿ˤ褯Ѥޤ øͿƤʤݡȤȤ NFS Ȥ̿ޤ. NFS Slow: 桼٤ PC 䥤ͥåȥɤѤƤȤꤷ ޤ ⤷ʤ٤ PC (386) "fed" ʤǽ㤤ͥåȥ ɤȹǽơ NFS ȤȤ˻Ѥޤ PC ˥ǡ󤻤Ƥޤʤ褦ͽɤ뤿ˡơ ֻʤޤ. Debugging: ղŪʥǥХåե饰ꤷޤ 2 ܤβ (ALT-F2 Ǹ뤳ȤǤALT-F1 ޤ) ¿̤ʻϤ褦ˤޤ⤷ͳǥ ȡ˼Ԥ顢꤬ȯˤΥե饰ꤷƤ ˤ꼺Ԥ˻ޤǤ¿̤ΥǥХå ΤǡȯԤˤȤäƤϤΤ褦褹뤿ͭפǤ Yes To All: ٤ƤŪ "YES" ꤷޤ Υե饰դƻѤƤˤ˥顼ʤΤ ¾򼨤ٹ𤫤ɤ˴ؤ桼ؤ䤤礻򤪤 ʤʤޤ䤤碌ϡդźʤ󥹡ȡ뤹 ȤκǤʤΤǤ FTP username: anonymous Υ桼̾ȥѥɤꤷޤ. ɸǤϡ󥹥ȡˤƿ̾ (anonymous) 桼ȤƤΥ ߤޤ⤷¾ïȤƤΥ˾ʤ顢Υץ ǤΥ桼̾ȥѥɤꤷƤ Editor: 󥹥ȡ˻Ѥ륹꡼󥨥ǥꤷޤ 󥹥ȡǤĤΥƥȥեɬפ ⤢ޤΤȤ˥桼ϥ꡼󥨥ǥѤޤ ޥɤ꡼ɽƤŪñʥǥɸ Ǥ򤷤ƤޤUNIXŪ˻ѤƤͤϡ /usr/bin/vi Ѥ뤳ȤǤޤ. Tape Blocksize: 512 Хñ̤ǤΥơץǥΥ֥å ޤ ɸǤ 20 ֥åˤʤäƤơơץɥ饤֤ tar ȤȤ߹ ¿ξϤפǤ⤷ʤΤĥɥ饤֤ԡ ɤ夲뤿ǤդΥ쥳ɤǧƤʤС礭ʥ ŪꤷƤߤ뤳ȤǤޤ Extract Detail: Ÿ˥ǥХå̤˥ե̾ܤɽ뤫 ꤷޤ ۥեŸˡɸǤϾܺ٥٥뤬 "high" Ǥ٤ƤΥե ̾Ÿɽޤ⤷ʷɽ˾ʤ顢 "medium" 򤷤Ƥ⤷Ÿ˥ǥХå̤ˤʤˤɽ ʤȤ˾ʤ "low" 򤷤Ƥ. Release Name: ɤΥ꡼򥤥󥹥ȡǥɤ뤫ꤷ ޤ ⤷ʤѤȤ뤳Ȥ򤷤ƤˤΤߡΥ ѹƤǤդƤäƤȤ sysinstall ˤäƻȤƤ꡼̾ѹ뤳Ȥˤʤޤ ơϸŤ꡼ (㤨 CDROMˤ) 򥤥󥹥ȡ 뤿˺ǿΥ󥹥ȥ졼֡ȥեåԡǥ ȤǤ Browser Package: HTML ֥饦ȤƤɤΥѥåɤ뤫ꤷ ޤ ɸǤ lynx ꤵƤޤѥå¸ߤƤǤ դΥƥȥ١ HTML ֥饦ꤹ뤳ȤǤޤ⤷ X ١Υ֥饦ꤹȡƥȥ⡼ɤưƤ֤ϻȤ ȤǤʤʤäƤޤޤ! :) Browser Exec: HTML ֥饦ȤƤɤΥХʥ꡼¹Ԥ뤫ꤷޤ ֥饦ѥåΥᥤȤʤ¹ԥեΥեѥ̾ꤷ ޤ Media Type: ɤΥǥפѤ뤫ꤷޤ ϡ֥ǥץ˥塼ǺǸ򤵤줿ǥפ򼨤 ƤޤϤޤ֥ǥץ˥塼Ȥ򥷥硼ȥåȤ뤿 ˤѤǤޤ Package Temp: ѥåŸݤ˻Ѥƥݥ꡼եΰ ֤ꤷޤ ĤΥѥå (㤨 emacs) ϡȤƤ礭 (20 30MB ˤڤ) ֤Ѥޤ⤷ FreeBSD ǥ٥륨ǥǤ : ȤΤˤΥǥ̤򳫤ƤˤϡC = פˡM = ޥȡץޥɤȤäơ¸Υѡƥ åޥȤƤ ٥륨ǥ̤ñ 'A' ϤȡưŪ˥ѡƥ ꤷޤˤäơ٥륨ǥ˰ʲκȤΤۤȤɤưŪ ʤ碌뤳ȤǤޤ ưǥѡƥڤϡȤäƲ̤κǾɽ Ƥ FreeBSD ѡƥʬ˥ϥ饤ʬ碌Ƥ ˡΰ褬ѡƥ򤷤֤ǡC = פ ϤСΰΰޤϤ٤Ƥ򡢿 BSDѡƥ ƳƤ뤳ȤǤޤ Ǥ¸ߤѡƥΥȥ(̤ɽƤޤ) 򤷤֤ǡM = ޥȡפϤȡΥѡƥΥޥ ȥݥȤǤޤξ礽ΥѡƥϽޤ ѡƥν򤹤ˤϡT = Newfs ȥפϤ Newfs Υե饰ȿžƤNewfs Υե饰 "Y"ξϡ ե륷ƥϤ٤ƽ졢ǽ餫ľޤ ΥǥȤäơʤȤʲΥե륷ƥäƤ ̾ Ū Ǿ ץ ---- ------- --------- --------- / 롼ȥե륷ƥ 20MB ɬ swap å ¥2 ɬ /usr ƥ & 桼ե 80MB ʾ ץ : /usr ե륷ƥʤϡ/ ե륷ƥ Ǥ 100MB ʾ礭ˤƤϥ桼ե ФǥϤˤäǥ顼ˤäơפʥ ƥեޤե륷ƥ˰۾򤭤ǽޤΤǡ ޤ깥ޤޤ󡣰Ū / ĤΩե륷ƥ ˤƤΤϤΤ褦ͳǡ̤ߤ / ϴŪ " ߹" ˤƤ褤ȤƤޤ åפζ֤ˤĤϤϾ𤵤줬Ǥּ¥ 2 ܡ ȤϡñʤۤܺŬ˶ᤤΤǤºݤˤΥƥǤ åפȤ뤫ȤȤΤĴ٤ɬפϤޤ ΥƥबФȤƻȤ줿ꡢޤʣΥ桼ץꥱ ưʤɡإӡʻȤ򤹤Ĥʤ餳Υ䤷 Ȥ褤Ǥ礦ʤ®ǥʣäƤʤ顢å׶ ֤򤽤ʣΥǥ˺뤳ȤˤäơפΥåΰ 뤳ȤǤޤ뤳Ȥʬθ̤ˤäΤ ϤθΨ褯뤳ȤǽǤ /usr ե륷ƥ˴ؤƤϡɤۥåȤäƤơɤ Υѥå /usr/local ʤɤξ˥󥹥ȡ뤹뤫ˤäƥ ɬפޤְ㤤ʤɤ /usr 줵ʤ С/usr/local Ωե륷ƥȤƿ˺뤳ȤǤ ¾ /var ե륷ƥäƤǤˤϥ᡼˥塼 ץ󥿤ʤɤΥסե䡢¾ΰեѤ /var ΩѡƥˤΤϤʤŪǤΰ 礭ϡ᡼̡˥塼̤ץ󥿤Υ֤ǥס뤵 ̤ʤɤ˰¸ޤ ٹ: /var Ωե륷ƥȤƺʤϡ嵭Υե Τΰ롼 (/) ե륷ƥ˳ݤɬפޤ äơ᡼˥塼򤿤Ѥˤؤ餺/var ѤΥѡƥˤʤäƤʤˤϡ/ ѡƥΥ ɬפޤ Υ󥹥ȡ뤬ϤƤϡʲɤǡ֥饤 (slice)פȤ FreeBSD οǰ򤷤Ƥ FreeBSD οƥǤϡǥΥǥХ̾ϻĤʬ鹽 ƤޤŵŪʡ/dev/sd0s1aפˤȤȡ ǽ 3 ʸϥǥɥ饤֤̾ɽƤޤSCSI Υǥ Ĥ륷ƥǤ /dev/sd0 /dev/sd1 Υǥɥ饤 ֤Τɽޤ ϡ֥饤 (slice)(ޤ FDISK ѡƥ) ֹɽ ޤϥѡƥ󥨥ǥǤǤƤֹƱΤǤ 㤨 sd0 FreeBSD 饤ȡDOS 饤ĤΥ饤 ȤȡΥ饤Τ򼨤ǥХȥ /dev/sd0s1 /dev/sd0s2 ˤʤޤ 饤 FreeBSD 饤ξ硢Ϥ (ʶ路Ǥ) ʣΡ֥ѡƥפĤȤǤޤ Υѡƥϡޤޤʥե륷ƥ䥹åΰ ʤɤ˳ƤޤĤ SCSI ǥĥޥ ͤȡ㤨 sd0 ˤϼΤ褦ʳƤ򤪤ʤȤͤ ޤ ̾ ޥȥݥ ---- ---------------- sd0s1a / sd0s1b <åΰ> sd0s1e /usr Ūʻˤꡢά뤤ϡָߴ饤פȤɽˡ ȤäơǥˤֺǽΡFreeBSD 饤ñ˥ 뤳ȤǤޤˡˤäơ饤ι򰷤 Ǥʤ桼ƥƥؤθߴݤäƤޤ ҤΥե륷ƥθߴ饤̾ϼ̤Ǥ ̾ ޥȥݥ ---- ---------------- sd0a / sd0b <åΰ> sd0e /usr ֤դƤޤFreeBSD Ϻǽ˸դä FreeBSD 饤 (Ǥ sd0s1) ˸ߴ饤ưŪ˳Ƥޤ ĤΥǥɥ饤֤ʣ FreeBSD 饤ĤȤǤޤ ξϺǽ FreeBSD 饤ߴ饤бŤ ޤ ߴ饤ϤʳŪˤʤʤޤŤƥȤ 뤤ϥåץ졼ɤˤդɬפǤ ޤǤΤȤǼǤƤС٥륨ǥŪ򤹤뤳Ȥ ưפǤ礦ʤϲ̤κǾ̤ɽƤ FreeBSD 饤 ʬ䤷 (줬ɽޤ)FreeBSD Υե륷ƥ ̾ (ޥȰ) 򤽤˳ƤƤޤ ޤ DOS FAT ФƤ褯ʤ褦ˡ¸ߤѡƥ 䥹饤򤢤ʤΥե륷ƥ˥ޥȤ뤿ˤ⡢٥륨ǥ ѤǤޤFreeBSD Υѡƥ newfs ξ֤Yפˤơ ǽ餫ѡƥ (ľ) ȤǤޤޤnewfs Nפˤơѡƥǧ塢Ƥ¸ޤޥȤ뤳 ȤǤޤ ٤ƽäQפϤƽλƤ ǥФºݤѹϡ󥹥ȡ˥塼ǡ֥ߥåȡפ 뤫β̤ľܡW = 񤭹ߡפ򤷤ʤ¤ꤪʤޤ ΥǥǤ⡢뤤 FDISK ѡƥ󥨥ǥǤ⡢Ū Ȥϥǥ٥ΥԡФƤʤޤΤǡŪ ʤ¤ꡢѹϼºݤΥǥФƱƶޤ # Original revision: 1.3.2.2 $Id: partition.hlp,v 220.11 1997/03/26 06:51:17 hosokawa Exp $ β̤Ǥϡ⡼Ȥ HTML ꥽˥ 뤳ȤǤFreeBSD ϥɥ֥å & FreeBSD FAQ (褯 Ȥ) ʸʤɤϡdoc ۥե򥤥󥹥ȡ ƤмΤȤˤޤ: file:/usr/share/doc/ ǥեȤǻѤ֥饦 package lynx (ƥ ١Υ֥饦) ǤꡢѲǽǤϥ󥹥ȡ ǥ鼫ưŪɤ߹ޤǤ礦ץ󥨥ǥ ươưɤ߹ߤ֥饦 & ֥饦 package ѹǤޤ ⡼Ȥ URL 򻲾ȤˤϡΤȤʤ鲿餫μ 󥿡ͥå³ɬפȤʤޤޤͥåȥ 󥿥եꤵƤʤϡhttp://.. URL 򻲾ȤƤߤˡץ˥塼Ρ֥ͥåȥפ ܤ򤷤򤪤ʤäƤ # Original revision: 1.1 $Id: html.hlp,v 220.10 1997/03/26 06:52:55 hosokawa Exp $ /stand/sysinstall ϡpkg_manage Τ褦˻Ѥʤʤäޥɤ ֤뤿˥ޥɥ饤Ρ֥硼ȥåȡפȤ褦ˤʤޤ ʣΥޥɤ硹˼¹Ԥ뤳ȤǤƤޤޤŪǥ ȡץο񤤤򥫥ޥ뤿ˡѿͤ쵤 Ǥޤ : /stand/sysinstall [var=value ..] [command ..] "var" ϰʲİʾǤޤ: blanktime ꡼֥󥯤ޤǤλ() bootManager ֡ȥޥ͡: booteasy, standard, none browserBinary ɤΥɥȥ֥饦Ȥ (ɸ: lynx) browserPackage ֥饦 package ̾ (ɸ: lynx) cpioVerbose cpioνϤΥ٥: high, medium, low debug ǥХåΤղŪʽϤ򤹤뤫ɤ disk ɤΥǥ뤫 (wd0, sd0, etc). domainname ɥᥤ̾ editor ɤΥ꡼󥨥ǥȤ ifconfig_ ɤΥͥåȥǥХȤƤɤȤ ftpDirectory FTPо FreeBSDۥĥ꡼Υ롼 ftpOnError 顼ΤȤˤɤ뤫: retry, abort ftpPass FTPФ˥󤹤Ȥ˻Ȥѥ ftp Ѥ FTP/ǥ쥯ȥ(URL ftp://site/dir/..) ftpPort ɤ FTPݡֹȤ (default: 21) ftpRetryCount 򲿲ȥ饤뤫 ftpUser FTPФ˥󤹤Ȥ˻Ȥ桼̾ ftpHost ɤFTPۥȤȤ (ftpѿ񤭤ޤ) gated routed gated Ȥɤ defaultrouter ǥեȥ롼Ȥ IPɥ쥹 geometry 򤷤ǥΥȥ ("cyl/hd/sec") hostname ʥɥᥤ̾դۥ̾ network_interfaces ɤΥͥåȥ󥿥եꤹ뤫 ipaddr ΥۥȤμ礿륤󥿥ե IPɥ쥹 nameserver ͡ॵФ IPɥ쥹 netmask ΥۥȤμ礿륤󥿥եΥͥåȥޥ nfs NFSǥε host:/path/ nfsHost NFSѥΥۥʬ nfsSecure NFS secure ޥȤ (-P flag) nfs_server Υޥ NFSФȤꤹ noConfirm ̿ŪǤʤ顼˴ؤǧ򤷤ʤ ntpDate ɤ ntpƱФȤ pcnfsd PCNFSD package 򥤥󥹥ȡ뤹뤫 ports ports 쥯Υѥ̾ releaseName ɤ FreeBSD Υ꡼򥤥󥹥ȡ뤹뤫 rootSize ưǺ /(롼)ѡƥΥ routedflags rutedͭˤ˰Ϥե饰 serialSpeed SLIP/PPP ³Υԡ slowEthernetCard PCΥɤ٤Ȥ swapSize ưǺ swapѡƥΥ tapeBlocksize ơץǥΥ֥å ufs UFSǥǥ쥯ȥΥեѥ usrSize ưǺ /usr ѡƥΥ varSize ưǺ /var ѡƥΥ "command" ϰʲİʾǤޤ: addUser ƥ˿桼ɲ addGroup ƥ˿롼פɲ configAnonFTP anonymous FTP ΤΥƥ configApache Apache WEBФΥ󥹥ȡ configGated gated Υ󥹥ȡ configNFSServer NFSФȤƤΥۥȤ configSamba Samba Υ󥹥ȡ configPackages ֥饦ޤϥ󥹥ȡ뤹ѥå diskPartitionEditor ޤϴ¸ΥǥΥѡƥ diskPartitionWrite ǤդΥѡƥѹ񤭽Ф diskLabelEditor ޤϴ¸Υǥ Label/Newfs/Mount diskLabelCommit ǤդΥ٥ѹ񤭽Ф distReset ۾ꥻåȤ distSetDeveloper ȯѤۤ򤹤 distSetXDeveloper X-ȯѤۤ򤹤 distSetKernDeveloper ͥ볫ȯFDISK 饤ǥ (PC Υѡƥ󥨥ǥ) ̲ˤϻѤǤ륳ޥɤˤ MBR (ޥ֡ȥ쥳) ƤɽƤޤ饤ˤϡ륭Ȥ ƥϥ饤ȥС "unused" ˤʤäƤ륹饤˻äƤ `C' 򥿥פƤ β̤ȴˤϡʤȤĤΥ饤 FreeBSD ˥ޡƤ Linux Ȥϰäơåפե륷ƥ ̡ FDISK ѡƥɬפϤޤ̤λȤ Ǥϡɥ饤 FreeBSD 饤 (FDISK ѡƥ) ĺꡢ ٥륨ǥȤäơ򥹥åפե륷ƥΤΰ ʬ䤷ޤ 󥹥ȡ˥塼ǥߥåȤ뤫 `W' ץȤޤǡ ǥˤϰڤѹϲäޤ󡣤β̤ȥ٥륨ǥǤ ϡǥ٥κѥԡФƤʤޤ ǥΤ FreeBSD ǻȤˤϡ`A' ȥפƤ ȡǥ¾ OS Ǥǧǽˤ뤫ɤĤޤ FDISK ơ ֥ͭˤ뤫ɤ򤿤ͤޤǥեȤ `Yes' ֤ȡ 饤ۥ鳫Ϥơ֡ȥޥ͡ΰͽ 󤷤ޤ FreeBSD ѤˤǥǤϡߴץץȤ `No' ֻǤ ξ BIOS ΥȥϤޤäȤޤ󤫤顢˷ٹ åָФ줿ȥ꤬Ǥפ򸫤ˤʤ뤫⤷ޤ 󤬡̵뤷ƹޤ󡣤ޤ饤֡Ȳǽˤ MBR ֡ȥޥ͡򥤥󥹥ȡ뤹ɬפϤޤ (̣ʤ Ǥޤ) FreeBSD 饤ϡǥХ 0 Ϥޤ (FreeBSD Υǥ ٥̾ MBR ֤֤ޤ)ǥǥκǽ ޤ³ޤΥǥˤϥ֡ȥޥ͡ǥ ͡Ρ BIOS ɬפȤץϰ֤ޤ󡣤Υץ ϡSCSI ǥ¿ IDE ǥ˴ؤƤΤ߰ȸ PC ǤϤʤơFreeBSD ѤΥФơΩ夲 λͤѰդƤޤ ե饰ϼΤ褦ʰ̣Ǥ '=' -- 饤 (ȥå) 󤵤Ƥޤ '>' -- 饤ν꤬ 1024 ۤƤޤ 'R' -- 饤 롼 (/) ե륷ƥޤǤޤ 'B' -- 饤 BAD144 (ɥ֥åĴ) 򥵥ݡȤޤ 'C' -- FreeBSD 2.0 ߴΥ饤Ǥ (ǥե) 'A' -- ֡Ȳǽ饤Ǥ BAD144 򤷤饤Ǥϡե륷ƥ򿷤 ɥ֥åõޤ β̤ȴޤǤˡɤ줫ĤΥ饤֡Ȳǽˤ ɬפޤɤ֡Ȳǽˤʤˤϥ֡ȥޥ͡򥤥 ȡ뤷Ƥ 饤ǥȴˤ `Q' ȥפޤ # Original revision: 1.3.2.3 $Id: slice.hlp,v 220.11 1997/03/26 06:51:17 hosokawa Exp $ . ..8x16.bin jiskan16.bin kon.jpn.cfg .R .. protocolsrc.confservicesβ̤Ǥϡ򤵤줿ͥåȥ󥿥եˤĤƤȡ (ۥ̾ɥᥤ̾DNS С) ͥåȥѥ᥿ 򤪤ʤޤ PLIP/SLIP 桼 - ʸκǸޤǰ̤ɤǤ! եɤ TABBACK-TAB ȥ󥿡ǰưǤޤեɤ Խˤ DELETE BACKSPACE ѤƤʤ^C (control-A) ǹƬء^E (control-E) ǹء^F (control-F) 1 ʸء^B (control-B) 1 ʸؿʤߡ^D (control-D) ǥ 1 ʸ^K (control-K) ǹޤǤκǽǤ EMACS ɸŪǤ ifconfig ؤΤ¾ΥץפΥեɤϾüǤ SLIP PLIP ¹ԤƤϡ⡼ȤΥɥ쥹 Τ˻Ѥɬפ⤢ޤ (ñ˳ IP ɥ쥹򥿥 ޤ) ۥȤ FreeBSD Ǥʤ Linux ˤ PLIP ¹ԤƤüʥ Ǥϡɥ쥹θ "-link0" ե饰ɲäɬפޤ ʣΥǥͥ (AUI, 10Base-T, 10Base-2 ʤ) ĥ ͥåȥץѤƤϡɤΥͥѤ뤫򤳤 եɤǻǤޤʤʲʸդޤ "media 10base5/AUI" - AUI ݡȤ "media 10baseT/UTP" - ĥȥڥ ݡȤ "media 10base2/BNC" - BNC ͥ "media 100baseTX" - 100/10Base ǥ奢륢ץ 100BaseT ٤Ϥ OK 򤷤Ƥ # Original revision: 1.1.4.8 $Id: tcp.hlp,v 225.1 1997/11/02 02:20:29 hosokawa Exp $ # # Internet (IP) protocols # # $Id: protocols,v 1.4.2.3 1998/02/13 20:25:42 julian Exp $ # from: @(#)protocols 5.1 (Berkeley) 4/17/89 # # See also http://www.iana.org/in-notes/iana/assignments/protocol-numbers # ip 0 IP # internet protocol, pseudo protocol number #hopopt 0 HOPOPT # hop-by-hop options for ipv6 icmp 1 ICMP # internet control message protocol igmp 2 IGMP # Internet Group Management ggp 3 GGP # gateway-gateway protocol ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'') st 5 ST # ST datagram mode tcp 6 TCP # transmission control protocol egp 8 EGP # exterior gateway protocol pup 12 PUP # PARC universal packet protocol udp 17 UDP # user datagram protocol hmp 20 HMP # host monitoring protocol xns-idp 22 XNS-IDP # Xerox NS IDP rdp 27 RDP # "reliable datagram" protocol iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4 xtp 36 XTP # Xpress Tranfer Protocol idpr-cmtp 39 IDPR-CMTP # IDPR Control Message Transport ipv6 41 IPV6 # ipv6 ipv6-route 43 IPV6-ROUTE # routing header for ipv6 ipv6-frag 44 IPV6-FRAG # fragment header for ipv6 rsvp 46 RSVP # Resource ReSerVation Protocol gre 47 GRE # Generic Routing Encapsulation (RFC 1702) esp 50 ESP # encapsulating security payload ah 51 AH # authentication header skip 57 SKIP # SKIP ipv6-icmp 58 IPV6-ICMP # ICMP for IPv6 ipv6-nonxt 59 IPV6-NONXT # no next header for ipv6 ipv6-opts 60 IPV6-OPTS # destination options for ipv6 vmtp 81 VMTP # Versatile Message Transport ospf 89 OSPFIGP # Open Shortest Path First IGP ipip 94 IPIP # Yet Another IP encapsulation encap 98 ENCAP # Yet Another IP encapsulation divert 254 DIVERT # Divert pseudo-protocol ܥƥλȤ ================== [β̤ɤ߽顢PageDown Ǽβ̤˥뤷ޤ] 󥹥ȡ桢ۤȤɤΥǤϰʲΥȤޤ ư ---- ---- SPACE() ߤιܤޤȿžޤ ENTER() 򤵤줿˥塼Υܥ˿ʤߤޤ UP ARROW() ľιܤ˰ưޤ (ƥȤǤϾ˰ư) DOWN ARROW() ιܤ˰ưޤ (ƥȤǤϲ˰ư) TAB ιܤ˰ưޤ RIGHT ARROW() ιܤ˰ưޤ (TAB Ʊ) SHIFT-TAB ľιܤ˰ưޤ LEFT-ARROW() ľιܤ˰ưޤ (TAB Ʊ) PAGE UP ƥȲ̤1ڡ륢åפޤ PAGE DOWN ƥȲ̤1ڡ󤷤ޤ ^(-)פޤϡv(+)פȤܥ뤬˥塼üɽƤ ˤϡξ塢뤤ϲˡ̤ڤ餺ɽʤäܤ ޤ塢ޤϲȤäơ˥塼򥹥뤵Ƥ ƥΰǤϡƥΤߤߤξѡɽ ɽޤPageUp PageDown ȤȲ̰ե 뤳ȤǤޤ ƥΰǤϡƥΤߤߤξѡɽDZ ɽޤ줬 100% ξˤϡƥȤνãƤ뤳 ɽƤޤ ˥塼ɽƤưƤǧ OK 򤷤Ƥ Cancel ǽߤľΥ˥塼뤳ȤǤޤ ޤ֥åܥåץ˥塼ǹܤ򤹤ˤ SPACE Ȥ ȤդƤENTER ǤϤޤ! ENTER 򲡤ȡ̺Dz ǤɤΥܥ򤵤Ƥ뤫ˤä OK ޤ Cancel Υơ Dz̤λƤޤޤץ򤷤ƤǤϡη ̤¿ʬꤿȤȤϰ㤦ΤǤ礦ڡС˺ʤ! ʤȤ ================ ˥塼̤ǤϡƹܤƬʸʣƤʤСʸ 뤳ȤǤ⼡Υ˥塼Ǥޤ̾Ϥ줬ֹȤʤޤ 󥽡ɥ饤Фϡ뤷Ʋ̤äƤޤäԤɽ 뤿ΥХåХåեäƤޤХåȤ ˤϡScroll Lockץá塢ޤ Page UP/Page Down Ȥä¸줿ƥȲ̤ưޤ١Scroll Lock áȥХå⡼ɤȴޤεǽȤȵư åäƸ뤳ȤǤޤ(ƤߤƤ!) ޤεǽ ֥ưꡢ뤤ϥ˥塼ʤ֥ɥ⡼ɡפȤ ơϤ̤ؾääƤޤäȤˤͭǤ (ܸ쥤󥹥ȡ˴ؤ: εǽϸߤ PC Ǥܸ쥤 ȡܸ쥳󥽡Ǥϼ¹ԤǤޤ󡣥ǥХå꡼ʤɤα ⡼ɤΥ꡼Ǥϼ¹ԤǤޤ) FreeBSD Ʊ˥å夲뤳ȤǤʣΡֲۥ󥽡 ⥵ݡȤƤޤALT-F (F ϥե󥯥󥭡ɽ)Ȥ ȡn ܤβۥ󥽡򤹤뤳ȤǤޤǥեȤǤϻ βüͭˤʤäƤޤ/etc/ttys Ⱥ12ޤDzü 䤹ȤǤޤ # Original revision: 1.4.2.7 $Id: usage.hlp,v 225.1 1997/11/02 02:20:29 hosokawa Exp $ .R ..messagesfontsβ̤Ǥϡʤ FreeBSD ץȤΥ桼󥿤 ץǡ١Ͽޤ ** ϿԤ˽פǤ! ** Ƥ伫Ȥ¾οãƱ褦ˡͤʹܤƹԤ ȤϷʤǤޤ¿οͤϿե򸫤ȡ֤ʤ ? ˤߥ᡼Ĥꡢȥ֥˴ޤ櫓? ̵ 㤨!פȻפȤǤ礦 ϿϤΤ褦ʪǤϤޤ󡣤ҤȤ⡢֤䤤Ƥ ɤǤϿ˴ñǡġʤ FreeBSD ˤȤ ƽˤʤ뤳Ȥ狼Ǥ礦 1. ʤ FreeBSD 桼ȤϿ桼ȤƥȤ뤳 Ȥǡ¿Υեȥ٥ʤ FreeBSD ڥ졼ƥ ƥˤĤƿ˹θ褦ˤʤǤ礦ˤϡ¿ FreeBSD 桼ߤ褦(ץåɥȤɥץå 饲ޤǡ)ץꥱFreeBSD ˰ܿ ͤ뤫ɤƤƤ ISV(Independent Software Vender: Ωϥեȥ٥)¿¸ߤƤޤΤ褦 ISV ˡ FreeBSD ˰ܿͤȻפ碌ͣˡϡFreeBSD 桼 ɤΤ餤뤫Τ餻뤳ȤǤꡢΤˤϤʤϿɬ ʤΤǤ! Ǥϡ桹 FreeBSD Υ桼ϤɤΤ餤 ΤΤޤ󡣤äơ륽եȥ FreeBSD ˰ܿ 뤳Ȥ˺ˤʤäƤޤ 2. 桹ϡʤ׵ᤷʤΤ**ޤFreeBSD Ѥο ʤΰߤäƤͤ⤤Сƥ䤽¾ν ʥʥ󥹤ɬפȤͤ⤤ޤΤ褦ʿͤˤϡϿΥץ ȤợΤˤĤƤξꤿǤ 褦ˤޤ ŪˡϿŪ˾ʤ¤ꡢ桼̤ʥ᡼ ꥹȤϿꡢ(Ť򤵤줿) FreeBSD ʶȼԤ̾ 뤳Ȥ*ޤ* ϿեΤۤȤɤιܤɬפϤʤǤ礦Ͽνʣ ɤˡ¤ʤ̾Żҥ᡼륢ɥ쥹Ƥ餦ɬ ޤ줫ΥӥϿʤ¤ꡢŻҥ᡼륢 쥹˲뤳Ȥ*ޤ*Żҥ᡼륢ɥ쥹ϡ㤨С "John Smith " "John Smith " ̤뤿ˤѤޤŻҥ᡼륢ɥ쥹ʤϡ Ū˻Ѥޤ Walnut Creek CDROM Ǥ졢̵ۤƤ FreeBSD ˥塼쥿ΰʪդ˾ʤ顢ɬפ ƱͤˡŻҥ᡼Ǥ˾ʤ顢ͭŻҥ᡼륢ɥ쥹 ʤФʤޤFreeBSD ˥塼쥿ΥХåʥСϡ http://ftp.freebsd.org/pub/FreeBSD/newsletter/ Ǥޤ FreeBSD ˥塼쥿ιɤߤꡢϿäʤäϡ register-request@freebsd.org إ᡼äƤޤʥ ѥ᡼󥰥ꥹȤɤ(ɤ򤪴ᤷޤ)ϡ majordomo@freebsd.org إ᡼뤳ȤǡĤǤɤѹ򤹤뤳 ȤǤޤ Ͽӥؤθ涨Ϥ򿴤鴶դޤʤۤ 5 ʬ ֤䤤Ʋ桹ΥǡäƤ뤳Ȥ㤷 UN*X 졼ƥ󥰥ƥ֤ζǡFreeBSD θǤϰ̤ۤ ʤǤ礦 Regards, Jordan Hubbard, FreeBSD PR Officer # Original revision: 1.1.2.5 $Id$ . ..messages.ja_JP# # These messages are extracted from source of FreeBSD sysinstall # for I18N support # # If you want to translate sysinstall into your languages, you need # not to care about the conflicts between coding system and C escape # characters (especially, ", ', \, etc.) as long as your coding system # has no "two backslash" sequence. If your coding system has this # sequence, please tell me about it. # # This file has been translated into Japanese. We need Chinese and # Korean volunteers who can translate this file and /stand/help/*.hlp # files into your language. # # Tatsumi Hosokawa # # package.c MES#14000 ѥåŸΤΥǥǤޤ\\ MES#14001 %s%s %s ɲäޤ\\ MES#14002 %10d ХȤѥå %s ɤ߹ߤޤ (%4.1f KB/)\\ MES#14003 pkg_add ν񤭹ߥ顼! ѥåϲƤǤ礦\\ MES#14015 pkg_add(1) 餫˥ѥå %s 򹥤Ǥʤ褦Ǥ\\ MES#14016 ѥå %s ɤ߹ I/O 顼ȯޤ\\ MES#14004 ѥå %s ɤ߹ޤޤpkg_add(1) ԤäƤޤ\\ MES#14005 ѥå %s ɲäǤޤ (顼 %d) ǥХå꡼˾ܺ٤ʾɽƤޤ\\ MES#14007 ѥå %s ɲäǤޤ (顼 %d) ǥХå꡼˾ܺ٤ʾɽƤޤ\\ MES#14009 ѥå %s ɲäޤ\\ MES#14010 򤷤ǥѥå %s ɤळȤǤޤ ѥåɲäޤ\\ MES#14012 򤷤ǥѥå %s ɤळȤǤޤ ѥåɲäޤ\\ MES#14013 (¸ˤ)\\ # system.c MES#15000 ˥󥹥ȡǤƤ⹽ʤΤǤ?\\ MES#15001 ե %s Υեåԡ᡼ˤϴޤޤƤޤ\\ MES#15002 ߤޤ!\\ MES#15003 Ǥ VTY4 ˱޽֤ΤΥۥեå뤬ưƤ 褦ǤǤƿưޤ\\ MES#15004 VTY4 ˱޽ΤΥۥեåưޤ\\ MES#15005 Υ󥹥ȡλ顢exit [Enter]פȥפƥ λ뤫stty sane [Enter]פȥפüꥻå Ʋ Υ󥹥ȡˤϡλ˥פ̤ɽ ȤХޤΤᡢexitפstty saneפá ʸ⥹꡼ˤϸޤ󡣤ߤޤ󡣥λ뤫ü ꥻåȤСƤӥ饯ɽ褦ˤʤޤ\\ # tcpip.c MES#16000 ۥ̾:\\ MES#16001 qualified ʥۥ̾: foo.bar.com\\ MES#16002 ɥᥤ̾:\\ MES#16003 ʤΥޥ¸ߤɥᥤ̾: bar.com\\ MES#16004 ȥ:\\ MES#16005 Ǥʤͥåȥ˥ѥåȤžۥȤ IP ɥ쥹\\ MES#16006 ͡ॵ:\\ MES#16007 ʤΥ DNS \\ MES#16008 IP ɥ쥹:\\ MES#16009 Υ󥿡ե˳Ƥ IP ɥ쥹\\ MES#16010 ͥåȥޥ:\\ MES#16011 Υ󥿡ե˻ꤹͥåȥޥ 0xffffff00 (饹 C)\\ MES#16012 ifconfig ؤΤ¾Υץ:\\ MES#16013 ifconfig Ф륤󥿡եͭΥץǡѤΡ\\ MES#16015 ­ǤФ򤷤Ʋ\\ MES#16017 β̤򥭥󥻥뤷ΤǤ򤷤Ʋ\\ MES#16018 餫Υۥ̾ꤷƲ!\\ MES#16019 ʥȥ IP ɥ쥹ꤵƤޤ\\ MES#16020 ʥ͡ॵФ IP ɥ쥹ꤵƤޤ\\ MES#16021 ʥͥåȥޥͤǤ\\ MES#16022 IP ɥ쥹Ǥ\\ MES#16033 ٹ: hostname ѿꤵƤ餺Ĥ줬ɬܤΥѥ᡼ ȤʤäƤޤ󥹥ȡ륹ץȤˤɲä뤫뤤 netInteractive ѿꤷƤ (sysinstall man ڡ ȤƤ)\\ MES#16031 TCP/IP ɥ򥪡ץǤޤ\\ MES#16032 󥿡ե %s \\ MES#16023 ͥåȥǥХ 1 ĤѤǤޤ!\\ MES#16034 ޥ桼⡼ɤưƤޤͥåȥϴꤵƤ ΤȤưޤ\\ MES#16024 ǥ󥿡ե %s ͭޤ\\ MES#16025 ǥХ %s ν˼Ԥޤ\\ # dist.c MES#05000 DES Ź沽եȥ򥤥󥹥ȡ뤷ΤǤ? ⤷ No 򤹤СFreeBSD MD5 ١Υѥ ѤޤϺޤǰʾ˰ǤŵŪ UNIX DES ˤѥɤ¾ FreeBSD ʳΥƥȤϸߴޤ ⤷ʤǤΤꥫ罰Ǥ⥫ʥǤʤǡ ĥꥫ罰 FTP Ф饤󥹥ȡ뤷Ƥϡ μ Yes ȡʤDzסϹ罰͢¤ ХȤȥ֥˴फΤޤ󡣤Τ褦ʾ ϡ罰ΥФ DES ʳۥեꤷ। 󥹥ȡѤƥǥפѹ󥿡ʥʥ FTP ФؤơܤΥѥ DES ۥեꤷƲ\\ MES#05013 FreeBSD ports 쥯򥤥󥹥ȡ뤷ޤ 򥤥󥹥ȡ뤹뤳Ȥˤꡢ֥꡼ʡ׾֤Ǥ 1000 ʾ ΰܿեȥѥåΥФǽȤʤޤ (FreeBSD CDROM ۤ 2 ܤ CD /cdrom ˥ޥȤ ƤϤϤۤˤʤʤΤǤξ )֥꡼ʡ׾֤ 35MB¿ۥ֤ɤߤȤ뤴 ȤˤΥ֤ɤ졢礭ʤäƤޤ⤷ʤ /usr ѡƥ 100MB ʾζΤǤС򥤥 ȡ뤹뤳Ȥ»ˤϤʤʤǤ礦ports 쥯˴ؤ 뤵˾ܤǿ ports ˴ؤƤϡ http://www.freebsd.org/ports 򻲾ȤƲ\\ MES#05001 %s %s ŸƤޤ\\ MES#05003 ե %s ɤ߹ޤ! žߤޤ\\ MES#05004 %s %s žƤޤ\\ MES#05005 ʹԾ\\ MES#05006 %10d Х %s ɤ߹ߤޤ (%d/%d, %.1fKB/)\\ MES#05007 ž˽񤭹ߥ顼ȯޤ!(%dХ/%dХȽߺѤ)\\ MES#05008 ۥե %s Τ٤ƤΥݡͥȤž뤳ȤǤޤ ⤷ CDROM 󥹥ȡǤʤСDES ɤΥꥫ罰 ͢¤ˤΤǤ礦 FTP Ȥ餳 ꤷƲ\\ MES#05009 ۥե %s %s žǤޤ ⤦ٻƤߤޤ?\\ MES#05011 ꤵ줿ƤۥեŸޤ\\ MES#05012 ʲۥեŸǤޤǤϤ餯򤷤 󥹥ȡǥˤ餬¸ߤʤǤ礦 %s\\ # ftp.c MES#06015 Ŭڤ FTP ѥ뤳ȤǤޤǤ FTP ǥǤޤǤ\\ MES#06010 FTP ۥȤޤϥǥ쥯ȥλ꤬ޤ FTP ǥǤޤǤ\\ MES#06011 %s@%s Ȥƥ󤷤Ƥޤ\\ MES#06012 %s Ф FTP ͥ򳫤ޤ 顼 = %d\\ MES#06013 FTP Ф `%s' ۥǥ쥯ȥ˰ư뤳Ȥ Ǥޤ ꤷ꡼֤Ƥ̤ΥФˤ %s ˤǽʥ꡼̾Τ ץ󥨥ǥꤹ (뤤 "none" ꤹ) ɬפǤ礦 ¾ FTP Ф򤷤ޤ?\\ # anonFTP.c MES#17000 桼 ID\\ MES#17001 FTP Admin ˳Ƥ桼 ID\\ MES#17002 롼̾\\ MES#17003 FTP ץ°륰롼̾\\ MES#17004 ȡ\\ MES#17005 ѥɥե FTP Admin Υ\\ MES#17006 FTP Υ롼ȥǥ쥯ȥꡧ\\ MES#17007 Anonymous ftp chroot ȥåץǥ쥯ȥ\\ MES#17008 åץɤΥ֥ǥ쥯ȥꡧ\\ MES#17009 åץɤƤݻ륵֥ǥ쥯ȥ\\ MES#17010 OK\\ MES#17011 ɤ\\ MES#17012 CANCEL\\ MES#17013 β̤򥭥󥻥뤷\\ MES#17014 롼 %s ˳Ƥ gid ϤƲ\\ MES#17015 gid %d ˳Ƥ륰롼̾ϤƲ\\ MES#17016 FTP 桼ϤǤ̤ uid ϿƤޤ\\ MES#17017 ޥѥɥե򥪡ץǤޤ\\ MES#17018 ѥɥեǹ: %s\\ MES#17019 anonymous ftp ɥ򳫤ޤ!!"\\ MES#17020 Anonymous FTP \\ MES#17021 ѥ \\ MES#17022 Υ֥ȤϤޤݡȤƤޤ!\\ MES#17023 桼׵ˤ Anonymous FTP ϥ󥻥뤵ޤ\\ MES#17024 %s anonymous FTP Ѥ˹Ƥޤ\\ MES#17025 anon FTP Ѥ˥ѥɾ򥳥ԡƤޤ\\ MES#17026 FTP 桼Ǥޤ! Anonymous FTP˼Ԥޤ\\ MES#17027 륫åեanonymous FTP桼Ѥ˺ޤ\\ MES#17028 ʥǥ쥯ȥ %s Anonymous FTP ꤵޤǤ\\ # install.c MES#07001 ٹ: ʣΥ롼ȥǥХäƤޤ?! ǽ˸ĤäΤѤޤ\\ MES#07002 ٹ: ʣ /usr ե륷ƥब¸ߤޤ ǽ˸ĤäΤѤޤ\\ MES#07003 롼ȥǥХĤޤ󡣥٥륨ǥǤѡƥ / ˥٥뤷Ʋ\\ MES#07004 åץǥХĤޤ󡣾ʤȤ 1 Ĥϥåץѡƥ ɬפޤ\\ MES#07005 ٹ: /usr ե륷ƥबĤޤ󡣤ϵŪˤϡ롼 ȥե륷ƥबʬ礭 (뤤ϤȤ NFS /usr ե륷ƥޥȤ褦ȤƤ) ˤꤢޤ ǤϤʤꤷƤ֤İǤƤʤˤϡ ȥ֥뤬뤳ȤǤ礦!\\ MES#07110 ٹ: /var ե륷ƥबĤޤ󡣤ϵŪˤϡ롼 ե륷ƥबʬ礭 (뤤ϤȤ /var ɤ̤ξ ˥󥯤褦ȤƤ) ˤꤢޤ󤬡ǤϤʤ ꤷƤ֤İǤƤʤˤϡ¿Υ᡼Ȥä ꡢ礭ʥեԽ褦Ȥʤɤ˥롼ȥե륷ƥब ƤޤȤǤ礦!\\ MES#07006 󥹥ȡ³Ԥˤϡ˥ǥ٥Ƥɬ פޤ\\ MES#07007 줬ǸΥ󥹤Ǥ! ʤϡˡץ󥹥ȡ³ ΤǤ? ⤷Ǥ˲餫Υǡ¸ߤƤǥФ Ƥ¹ԤΤǤС֥󥹥ȡХåå äƤȤȤ桹϶ޤ! 桹ϥǥƤξü˴ؤƤϲǤȤ뤳ȤϤǤޤ!\\ MES#07008 ե륷ƥ˺ޤǤǤޤ\\ MES#07009 installInitial: ֡ȥեåԡƤ롼ȥե륷ƥ˥ ԡǤޤǤǤޤ\\ MES#07010 installInitial: %s chroot ǤޤǤ۾֤Ǥ!\\ MES#07085 FreeBSD 2 ܤ CDROM ơ꥿򲡤Ʋ\\ MES#07086 CDROM ޥȤǤޤǤƻԤޤ\\ MES#07087 /mnt2 CDROM ޥȥݥȤФ륷ܥå󥯤 ȤǤޤ󡣤ͽ̥顼ϡfreebsd-bugs@FreeBSD.org ˥ݡȤƲ\\ MES#07088 ٹ: ldconfig ld.so ҥȥե뤳ȤǤޤ CD-ROM Υʥߥå󥯤Ѥ¹ԥեϤ餯¹ ǤʤǤ礦\\ MES#07089 ٹ: ld.so Ф륷ܥå󥯤뤳ȤǤޤ CDROM Υʥߥå󥯤Ѥ¹ԥեϤ餯¹Ԥ ʤǤ礦\\ MES#07090 ǡFreeBSD CDROM ȴƲ\\ MES#07011 񤭹߲ǽ fixit եåԡƥ꥿򲡤Ʋ\\ MES#07120 Fixit եåԡΥޥȤ˼Ԥޤäեåԡ꡼ ǤϤʤե륷ƥǤ뤳ȤͤޤƻԤޤ\\ MES#07121 Fixit եåԡȴƤ\\ MES#07013 ٹ: /var/tmp/vi.recover ǥ쥯ȥ뤳ȤǤޤvi ʸ򤤤Ǥ礦ȤꤢȤϤǤ\\ MES#07111 /etc ǥ쥯ȥ뤳Ȥޤ Υեåԡˤϲ۾郎ޤ\\ MES#07014 /etc ǥ쥯ȥޤ ΥեåԡѤǤ\\ MES#07015 /etc/spwd.db ˥ܥå󥯤ĥޤ ǤʤΤǤ礦\\ MES#07095 Fixit νλޤǥ󥹥ȡߤޤALT-F4 򲡤 VTY4 ˰ưƤȤλ顢exitפá fixit λơäƲ\\ MES#07020 Υ˥塼ǤϡDOS ("fdisk") Υѡƥ˥󥰤ǥ ФƹԤʤޤ⤷ñƤΥǥڡ FreeBSD ФƳƤΤǤ (򤷤ǥ¸ߤƤ Ƥ񤭤Ƥޤޤ)A (ǥΤ) ޥɤ Ѥơǥեȥѡƥ˥ˡ򤷡Q (λ) ޥ ǽλƲ⤷ƤΰΤߤ FreeBSD ФƳ ƤΤǤС"unused" ȥޡ줿ѡƥ˰ươ C (ѡƥ) ޥɤѤƲ\\ MES#07021 ˡä fdisk ѡƥ BSD ѡƥ Фʤޤ󡣤⤷ʤʬʥǥڡ (200MB ޤ ʾ) äƤꡢ̤׵᤬ʤΤǤСñ A ( ƤǥեȤ) ޥɤѤƥǥưŪ˳ פǤ⤷ A ޥɤǤꤷڤʤü׵᤬ ˤϡưǥ쥤ȤԤʤäƲ\\ MES#07025 Ĥ顼ޤ󥹥ȡϴλޤVTY1 ΥǥХåå scroll-lock ǽѤƥǥХåå ɤDzޤΥץץȤ "No" 򤹤С ȡ˥塼äơټԤľȤǤޤ\\ MES#07026 ǤȤޤ! ʤΥƥˤ FreeBSD 󥹥ȡ ޤ줫Ǹ˴ؤ˰ܹԤޤ̤ 򤷤ʤꥪץ˴ؤƤϡñ No 򤷤Ʋ ƥबΩ夬äƤ餳Υ桼ƥƥ˺ꤿϡ /stand/sysinstall ǤäƲ\\ MES#07027 ͥåȡ뤤 SLIP/PPP ͥåȥǥХԤʤ ޤ\\ MES#07100 󥿡ե %s 򺣤ͭƤ褤Ƥ\\ MES#07101 ǥХ %s ν˼Ԥޤ\\ MES#07029 Υޥ IP ȥȤꤷޤ (Ĥޤꥤ󥿡ե ֤ǥѥåȤžޤ) ?\\ MES#07030 Υޥ˴ؤƿ̾ FTP ³Ĥޤ?\\ MES#07031 Υޥ NFS ФȤꤷޤ?\\ MES#07032 Υޥ NFS 饤ȤȤꤷޤ?\\ MES#07034 󥽡εǽ򥫥ޥޤ?\\ MES#07035 ॾ򺣹Ԥʤޤ?\\ MES#07036 Υޥˤϥޥ³Ƥޤ?\\ MES#07037 X Ф򺣹Ԥʤޤ?\\ MES#07039 FreeBSD ѥå쥯ϡƥȥǥ WEB ˻롢ɴĤˤ֡˻Ѥ뤳ȤΤǤ륢ץꥱ Υ쥯ǤΥ쥯ΰ򺣤ˤʤޤ\\ MES#07105 ƥ˺ǽΥ桼Ȥɲäޤ rootץ桼 ȤԤʤȤϴǤ (ϥƥԹʷ̤ڤܤ 򤷤䤹ʤäƤޤޤ) 顢ǺǤ⤢ʤȤΥ ȤɲäƤȤ򤪴ᤷޤ\\ MES#07106 ǡƥԤΥѥɤꤹɬפޤ ΥѥɤϡrootפȤƥ󤹤˻Ѥޤ\\ MES#07107 ǡʤ FreeBSD ƥϿԤʤޤ 󤳤 5 ʬ֤ϲ䤿Ĥ FreeBSD ѥեȥ νפʥ١ƥȤƤˤϡ䤿Υߥ˥ƥ礭 򼨤ȤǤɬפޤʤϿƤ뤳Ȥ äơκȤؤ礭ʽȤʤޤޤFreeBSD ˥塼 (̵Ǥ) Υ󥢥åפ⡢Ʊ˹ԤʤȤǤޤ\\ MES#07108 狼ޤ⤷ǿѤ줿ϡ󥹥ȡ ǤäƤ/stand/sysinstall registerפȥפ뤫ñ˻䤿 web Ȥ http://www.freebsd.org/register.html ǤϿ դƤޤ\\ MES#07040 ߥåȽ¹˥顼ȯޤ/etc ե򥢥åץǡ Ȥޤ\\ MES#07109 򤵤줿ǥǤޤ󡣤ΥǥĴ ⤦٤ľȤ˾ޤ\\ MES#07043 ̤ΥץΤˡ˥塼˰ưޤ?\\ MES#07045 root ե륷ƥ˥󥯤٤ͥ륤᡼ޤ Υƥϡɥǥ֡ȤǤ褦ˤΤϷ빽 Ǥ礦ۤǤ!\\ MES#07046 ǥХľƤޤĤФ餯Ԥ!\\ MES#07047 MAKEDEV Υơ֤ޤ\\ MES#07050 %s Υ饤ȥäƤޤ\\ MES#07051 %s Υ饤ȥ꤬ޤ!\\ MES#07052 ѡߥåľƤޤ\\ MES#07053 /dev %s ΥǥХΡɤޤ! ե륷ƥκǤǤ礦\\ MES#07054 %s åץǥХɲäޤ\\ MES#07055 ٹ! %s ˥åפǤޤ: %s ʤʬʥäƤʤΤǤСϥ󥹥ȡ ɤλǼԤǤ礦\\ MES#07056 /dev %s ΥǥХΡɤޤ! ե륷ƥκǤǤ礦\\ MES#07057 ٹ: %s ϥ롼ȥѡƥȵƤޤ %s ˥ޥȤƤޤ\\ MES#07058 %s ˿롼ȥե륷ƥäƤޤ\\ MES#07059 %s ˥롼ȥե륷ƥ뤳ȤǤޤ! ޥɤ %d Υơ֤Ƥޤ\\ MES#07060 ٹ: 롼ȥǥХ꡼ɥ꡼򤵤Ƥޤǡ /dev ˡǤŬڤʥǥХȥ꤬¸ߤƤȤ ꤷޤ\\ MES#07061 ¸ %s ե륷ƥΰåƤޤ\\ MES#07062 ٹ: fsck %d Υơ %s Ф֤ޤ ΥѡƥѤ뤳ȤϴǤ\\ MES#07063 롼ȥե륷ƥ %s ˥ޥȤǤޤ ޤ\\ MES#07064 %s Υ󥯥ꥹȤĤޤ!\\ MES#07065 %s ղååץǥХɲäޤ\\ MES#07066 %s 򥹥åץǥХȤɲäǤޤ: %s\\ MES#07067 ǥХե򥳥ԡƤޤ\\ MES#07068 /dev ե뷲ʣǤޤ!\\ MES#07069 ֡ȥեåԡ롼ȥե륷ƥ /stand ˥ԡƤޤ\\ MES#07070 ԡ %d Υ顼ơ֤ޤ!\\ MES#07071 /etc ե򥳥ԡǤޤ!\\ MES#07072 termcap եǤޤ󡣤ĤΥ꡼ظΥ桼 ƥƥϻѤǤޤ\\ MES#07073 /dev˥饤ȥ褵Ƥޤ\\ MES#07074 ٹʣ /var ե륷ƥब¸ߤޤ ǽ˸ĤäΤѤޤ\\ MES#07075 ٹ/var ե륷ƥबĤޤ󡣤ϥ롼ȥե ƥबʬ礭ΤǤ (뤤ϸ /var ɤ˥ 褦ȹͤƤΤǤ) Ūˤϥ顼ȤϤޤ󤬡 ǤʤС¿Υ᡼礭ʰեԽ Ȥʤɤ˥롼ȥե륷ƥबޤäƤޤȤǤ \\ MES#07078 %s ΤΥ󥯥ꥹȤĤޤ\\ MES#07079 ͥ boot -c ѹ񤭹Ǥޤ\\ MES#07080 Fixit եåԡΥޥȤ˼Ԥޤ餯ե륷ƥ ꡼ʾ֤ǤϤʤΤǤ礦ǸμʤȤƶޥȤ ԤʤäƤߤޤ\\ # installUpgrade.c MES#08003 /etc/%s ե뤬Ĥޤ! ˤäơ¿ʥåץ졼ɤԤʤ뤫Τޤ\\ MES#08004 %s 褵Ƥޤ..\\ MES#08005 /etc/%s Ǥޤ! \\ MES#08007 ʶʷٹ𤬤ƤϤǤǤ˥ ץ졼ɤΥꥹΤǤ?\\ MES#08008 ޤۥե륳ݡͥȤꤹɬפޤåץ 졼ϡΥ˥塼åȤˤƻꤵ줿ۥե ƤΤߤ򥢥åץ졼ɤޤ\\ MES#08009 ɤ߹եȤۥե bin 򤷤Ƥޤ󡣤 2.1 ˳μ¤˥åץ졼ɤΤ˽פʥեǤ bin ۥեʤ˥åץ졼ɤƤ⤤ΤǤ? ⤷ۥե ˥塼ϡNoפ򤷤Ʋ\\ MES#08010 åץ졼ɤΤΥ󥹥ȡǥ򤷤Ʋ\\ MES#08011 ϤǤϤޤǥ٥륨ǥ˰ưޤΥǥ ϡåץ졼ɤоݤȤʤƤΥѡƥΥޥȻ Ԥʤɬפޤ˳ολƤǤʤΤǤС Фˡ Newfs ե饰 Y ꤷʤDzξˤϡ٥ ǥñʤ륹꡼ظΥѡƥޥѥġȤ ƻȤȤˤʤޤ ٥륨ǥǤνä顢Q 򲡤ƤξꡢΥ ƥåפ˰ܤޤ礦\\ MES#08012 ǥ٥륨ǥ顼ơ֤ޤ åץ졼ɺȤǤޤ\\ MES#08013 Υե륷ƥ˥ޥȤǤޤǤ åץ졼ɤǤޤ\\ MES#08035 롼ȥե륷ƥ /stand 򹹿Ƥޤ\\ MES#08036 /mnt cdroot Ǥޤ󡣤θȤƤϡ롼ȥѡƥ ˰۾郎뤫뤤ϥޥȤˡ꤬Ȼפޤ\\ MES#08016 ɤΥǥ쥯ȥ˸ߤ /etc Ƥ¸ޤ?\\ MES#08017 ǥ쥯ȥ꤬ꤵƤʤ뤤Ǥ뤫󥻥뤬 򤵤ޤ/etc ΥХååפȤ餺˥åץ졼ɤ뤳 ȤǤޤ󡣤⤦¸ǥ쥯ȥ̤ ޤ?\\ MES#08018 /etc ǥ쥯ȥ¸ޤ\\ MES#08019 /etc Ƥ %s ˥ХååפǤޤ Ǥ³Ԥޤ?\\ MES#08040 ŤХʥ chflags ƤޤФ餯Ԥ\\ MES#08020 Υͥ /kernel.prev ˰ưƤޤ\\ MES#08021 ! ΤΥͥưǤޤ󡣤ϤʤˤȤä礭 Ǥ? ǤʤХåץ졼ɤǤޤ礦Υ ץ졼ɺȤλͤˤꡢǤˤϤ⤦ٺǽ餫Ƶư ɬפޤ⤷ƵưʤСYes 򤷤Ʋ\\ MES#08070 : Ťͥ /kernel.prev äƤޤ⤷Υåץ 졼ɤ餫ͳǼԤϡθŤͥǥ֡Ȥ 礦\\ MES#08022 ۥեŸ򳫻Ϥޤ\\ MES#08023 졣bin ۥեŸǤޤ󡣤Υåץ졼ɤϼ Ǥǽ餫ľɬפޤƥ֡Ȥޤ\\ MES#08024 ŸȤˤϤĤ꤬ޤλޤ פʥե˴ؤƤƤޤۤɽפǤϤʤե ˤĤƤϼԤƤȤǡΥåϷٹǤ ͤޤ\\ MES#08027 åץ졼ɤκǽʳ˽λޤ! ʳ /etc ǥ쥯ȥ˰ܤޤ\\ MES#08028 /etcΥХååפ¸Ƥǥ쥯ȥ %s ˰ܤޤ ꤬Ƥޤ /etc ǽ ⤤ȻפޤˤȤƤפʥޥ򤢤ʤԤʤä ʤȤȤ򵧤ޤ :( \\ MES#08029 åץ졼ɤϴλޤ! ٤ƤθŤ /etc ե뤬ꥹȥ ޤư /etc ե򥢥åץ졼ɤݤ˻Ȥ뤿 ˡ /etc ե /etc/upgrade/ äƤޤ (ɬ ⤳ɬפȤϸ¤ʤΤǤ)⤷ /etc/fstab ǡ롼 ѡƥ󤬸ŤָߴΤΡץ饤ȤƻꤵƤ (: /dev/wd0a, /dev/sd0a ʤ) ϡưηٹ޻ߤ뤿 ˡʥ饤̾ (: /dev/wd0s1a, /dev/wd0s2a, /dev/sd0s1a, /dev/sd0s2a ʤ) ˽񤭴ɬפޤƥư Ǥ顢Υ󥹥ȡñ˽λƤ\\ MES#08030 ǥĤޤ󡣵ưˡϡɥǥȥ餬 ǧƤ뤫ǧƲɥȥ˥塼Υϡ ɤμμ꤬Ȥʤޤ\\ MES#08050 ǥĤޤ󡣥֡Ȼ˥ǥȥ餬˸ ФƤ뤳ȤǧƤʸ˥塼Υϡɥ ɤμΥȥ֥ǤȤνȤʤǤ礦\\ MES#08052 ǥ٥륨ǥ顼ơ֤ޤåץ졼 ɺȤǤޤ\\ MES#08053 ˥ޥȤǤʤäե륷ƥबޤåץ졼 ɺȤǤޤ\\ MES#08054 ŤХʥ chflags ƤޤФ餯Ԥ\\ MES#08055 롼ȥե륷ƥ /stand 򹹿Ƥޤ\\ MES#08056 /mnt chroot Ǥޤ󡣸ȤƤϡ롼ȥѡƥ˲ 餫ΰ۾郎뤫ְäˡǥޥȤƤ뤫ʤɤͤ ޤ\\ MES#08057 åץ졼: ǥǤޤ\\ MES#08058 /etc ǥ쥯ȥ¸Ƥޤ\\ MES#08059 /etc %s ˥ХååפƤޤ\\ MES#08060 Ťͥ /kernel.prev ̾ѹƤޤ\\ MES#08061 ۥեŸϤޤġ\\ MES#08062 䡢bin ۥեŸǤޤǤΥåץ졼ɺ ȤϼԤȹͤ٤ǡǽ餫ľʤФʤޤ󡣤 ߤޤ󡣤ǥƥϥ֡Ȥޤ\\ MES#08063 ŸȤ˴Ĥ꤬ޤäȤפʬŸ Ǥޤåץ졼ɤ˼ԤΤϤäȤפʤʬǤ ʤȤ̣ǡϷٹȤưޤ\\ MES#08064 䡢bin ۥեŸǤޤǤΥåץ졼ɺ ȤϼԤȹͤޤޤ󤬡ǽ餫ľ ƥϥ֡Ȥޤ\\ MES#08067 åץ졼ɤʳޤ\\ MES#08068 Ť /etc Ǥޤ!\\ # index.c MES#22000 ѥå\\ MES#22001 ѥåޡˤϡս˰ưƥڡ Ʋ⤷ѥå˥ޡƤˤϡޡ ä (⤷˥󥹥ȡ뤵Ƥ) ƥफ ޤѥå̾Τ򤷤ˤ ESC 򲡤Ʋ : All ƥ򤹤ȡ礭ʥ֥˥塼 򤷤ϡĹˤԤ⤷CD 饤 ȡ뤷Ƥǡĥ󥹥ȡ뤷ѥåΥꥹ ¸ߤʤϡ󥹥ȡ뽪λ¾ CD åƲ ϡȤʤäѥåοˤäơϤ 1 CD ˼ޤڤʤʤäǤ\\ MES#22002 ѥåå\\ MES#22003 򤵤줿ѥåŸޤ ǧơOK򤷤Ʋ Cancelǥѥå˥塼ޤ\\ MES#22005 ƤΥƥˤƤΥѥå\\ MES#22007 桼ץꥱ󥽥եȥ\\ MES#22100 ŷʸشطΥץꥱ\\ MES#22011 ǥ桼ƥƥ (ؤɤ˥ɥɤɬ)\\ MES#22009 ӥ󥰡󥢡ӥ󥰤Υ桼ƥƥ\\ MES#22013 ƥǽ¬Υ桼ƥƥ\\ MES#22015 ƥǽ¬Υ桼ƥƥ\\ MES#22130 ʪؤ˴Ϣ륽եȥ\\ MES#22017 CAD桼ƥƥ\\ MES#22101 ܿեȥ\\ MES#22019 ̿桼ƥƥ\\ MES#22120 եޥåѴ桼ƥƥ\\ MES#22021 ǡ١եȥ\\ MES#22023 եȥȯ桼ƥƥڤӥ饤֥\\ MES#22025 եȥȯ桼ƥƥڤӥ饤֥\\ MES#22150 ޤޤʥǥȥåץ桼ƥƥ\\ MES#22027 ʸ桼ƥƥ\\ MES#22029 Ūʥƥȥǥ\\ MES#22031 ¾OSΥߥ졼Υ桼ƥƥ\\ MES#22033 ¾OSΥߥ졼Υ桼ƥƥ\\ MES#22035 ¿Υ\\ MES#22131 ɥĸΤΰܿեȥ\\ MES#22037 եå饤֥ȥ桼ƥƥ\\ MES#22039 ܸܿեȥ\\ MES#22132 K Desktop Environment ϢΥեȥ\\ MES#22110 ڹܿեȥ\\ MES#22041 ԥ塼\\ MES#22043 ԥ塼\\ MES#22045 եȥȯ饤֥\\ MES#22047 Żҥ᡼ѥåȥ桼ƥƥ\\ MES#22049 ͷ׻եȥ\\ MES#22102 mbone Υץꥱȥ桼ƥƥ\\ MES#22051 ʥ桼ƥƥ\\ MES#22053 ͥåȥ󥰥桼ƥƥ\\ MES#22055 ͥåȥ󥰥桼ƥƥ\\ MES#22057 USENET˥塼ݡȥեȥ\\ MES#22059 ͷ׻եȥ\\ MES#22151 եȥ᡼󥹥\\ MES#22061 ¾˹ԤΤʤѥå\\ MES#22121 Perl5 ΤΥ桼ƥƥ/⥸塼\\ MES#22133 USR Palm Pilot(tm) 򥵥ݡȤ륽եȥ\\ MES#22063 plan9ڥ졼ƥ󥰥ƥͳΥեȥ\\ MES#22065 Υ桼ƥƥ\\ MES#22067 Υ桼ƥƥ\\ MES#22069 եȥȯ桼ƥƥڤӥ饤֥\\ MES#22152 Pyson ˴Ϣ륽եȥ\\ MES#22071 ܿեȥ\\ MES#22073 ƥॻƥեȥ\\ MES#22075 Ƽ亮 (tcshbash)\\ MES#22077 Ƽ亮ƥ桼ƥƥ\\ MES#22122 ƥȽ/桼ƥƥ\\ MES#22123 TCL v7.5 Ȥ˰¸ѥå\\ MES#22124 TCL v7.6 Ȥ˰¸ѥå\\ MES#22134 TCL v8.0 Ȥ˰¸ѥå\\ MES#22135 TCL v8.1 Ȥ˰¸ѥå\\ MES#22125 Tk4.1 Ȥ˰¸ѥå\\ MES#22126 Tk4.2 Ȥ˰¸ѥå\\ MES#22127 Tk8.0 Ȥ˰¸ѥå\\ MES#22136 Tk v8.1 Ȥ˰¸ѥå\\ MES#22079 WEB桼ƥƥ (֥饦HTTP)\\ MES#22081 TROFFƥ桼ƥƥ\\ MES#22083 Ƽ桼桼ƥƥ\\ MES#22085 Ƽ桼桼ƥƥ\\ MES#22103 ٥ȥʥܿեȥ\\ MES#22087 X ɥƥ١Υ桼ƥƥ\\ MES#22153 X ɥƥ١λ\\ MES#22154 X ɥƥ١Υեޥ͡\\ MES#22155 X ɥƥ١Υե\\ MES#22156 X ɥƥ١γȯġ륭å\\ MES#22157 X ɥƥ١Υɥޥ͡\\ MES#22088 Ҥʤ\\ MES#22093 ꥹȤ %s ɲäޤ\\ MES#22105 %s 򥷥ƥफƤ褤ΤǤ\\ MES#22106 ٹ: %s ˴ؤ pkg_delete Ԥޤ ǥХåϤ򻲾ȤƲ\\ MES#22094 ꥹȤ %s ޤ\\ MES#22095 %s ˥塼϶Ǥ\\ MES#22096 ѥå̾ǸޤʸϤƲ:\\ MES#22097 ʸ: %s ˳ΤϤޤ\\ MES#22098 ¸ѥå %s Υɤ˼Ԥޤ\\ MES#22099 ¸ѥå %s Υɤ˼Ԥޤ\\ MES#22140 ٹ: Υѥåϥѥå %s ˰¸Ƥޤ ȯǤޤǤ\\ MES#22141 ٹ: Υѥåϥѥå %s ˰¸Ƥޤ ȯǤޤǤ\\ # nfs.c MES#23000 %s %s NFS ͳǥޥȤƤޤ\\ MES#23001 %s %s ؤΥޥ˥顼Ȥʤޤ: %s\\ MES#23002 %s ˥ޥȤƤNFSѡƥƤޤ\\ MES#23003 NFSѡƥޥȲǤޤǤ: %s\\ # tape.c MES#25002 ơפŸΤդƤޤ..\\ # cdrom.c # Chikara Kakinuma. (kakinuma@mars.dtinet.or.jp) MES#01013 Υɥ饤֤ˤ CD FreeBSD Υ꡼ CD ǤϤʤ ǥ CD Τ褦Ǥ\\ MES#01014 Ȥꤢ CDROM Ѥ褦ȤƤߤޤ\\ MES#01001 %s /cdrom ˥ޥȤǤޤ: %s (%u)\\ MES#01002 CD FreeBSD CDROM ǤʤCDROM ɥ饤Ф꤬뤫 ϡɥ꤬뤫Τ줫ξ֤ˤʤäƤޤ 褷 (VTY2 Υ󥽡򻲾ȤƲ) ⤦ĩ ƤߤƲ\\ MES#01003 ߥɥ饤ˤ FreeBSD CD ȤΥ֡ȥեåԡΥС פƤޤ󡣤⤷ΰդ˹ԤʤäƤΤǤС ȡǥ򤹤˥ץ󥨥ǥؤȰư֡ȥ åԡΥСʸ CD ΤΤȰפƲ\\ MES#01004 CDROM /cdrom 饢ޥȤǤޤ: %s\\ MES#01011 ٹ: ߥɥ饤ˤ CD FreeBSD CD ǤϤʤ뤤 (2.1.5 ) СֹεҤΤʤŤ FreeBSD CD Ǥ CD ˻ѤƤ⤤ΤǤ?\\ MES#01012 %s /cdrom 饢ޥȤƤޤ\\ # label.c # Chikara Kakinuma. (kakinuma@mars.dtinet.or.jp) MES#09001 ΥץϤǤϻѤǤޤ\\ MES#09002 ǥ 1 Ĥ⸫Ĥޤ󡣥ǥȥ餬ǧ Ƥ뤫ǧƲɥơ˥塼Υϡ ɥɤΥȥ֥Ǥ뤿ˤϻͤˤʤǤ 礦\\ MES#09040 󥹥ȡŬǥХĤ⸫Ĥޤ ǥȥ (ȡ³줿ǥХ) ˸ФƤ 뤫ɤǧƤѸ⡼ɤǤ [Scroll Lock] ơ岼륭Ѥ뤳Ȥǡ֡ȥå뤳 ȤǤޤ ܸɽƤȤϡɽ˻ѤƤ륷ƥब㤦 ΤǡκȤԤȤϤǤޤ󡣤󥹥ȡκǽ 򤹤˥塼ΤȤǤϤޤܸɽƥबưƤ ʤᡢѸǤƱͤ [Scroll Lock] Ѥ뤳ȤǤ \\ MES#09004 ץѤˤϡ˥ǥꤹɬפ \\ MES#09005 %s ؤΥޥȤϤǤ˻ꤵƤޤ!\\ MES#09006 ޥȰ֤ / 饯ǻϤޤɬפޤ\\ MES#09007 ǥĤޤ!\\ MES#09008 롼ȥѡƥǤޤ礭?\\ MES#09009 åץѡƥǤޤ礭?\\ MES#09010 /var %dMB ʲΰ褷ݤǤޤ󡣥। ȡǥǥѡƥưǹԤʤɬפޤ!\\ MES#09011 /usr %dMB ʲΰ褷ݤǤޤ󡣥। ȡǥǥѡƥưǹԤʤɬפޤ\\ MES#09012 /usr ѡƥǤޤ󡣶ΰ褬­ʤΤǤ? ।󥹥ȡǥѡƥưǹԤʤȤޤ!\\ MES#09013 ե륷ƥκǾ %dMB Ǥ\\ MES#09014 FreeBSD Υ֡ȥɤϡΰ֤˺줿ѡƥ󤫤֡ Ȥ뤳ȤϤǤʤΤǡΥѡƥ롼ȥѡƥ Ȥ뤳ȤϤǤޤ̤ξ˥롼ȥѡƥ뤫롼 ȥѡƥΥ򾮤ƺ٤\\ MES#09015 ٹ: Υѡƥϡ롼ȥѡƥ礭Ȥƿ侩 Ƥ륵⾮ʤäƤޤޤޤͳˤꡢ롼 ȥѡƥΥ̾ %dMB ʾ礭ɬפȤޤ\\ MES#09016 ѡƥޤ礭?\\ MES#09017 ΰϡ 1024 ܤΥʹߤˤ롢뤤ΰ褬 1024 ܤΥ٤äƤ뤿ˡΰ褫֡Ȥ뤳 ϤǤޤ̤ξ (뤤ϡ꾮ʥ) ΰ򤷡 롼ȥѡƥȤƲ!\\ MES#09018 %s ϡDOS ѡƥΥޥȰ֤ȤƤŬڤǤ!\\ MES#09019 ǥǥХĤޤ!\\ MES#09020 ե륷ƥ\\ MES#09021 åץѡƥ\\ MES#09022 ѡƥΥפ򤷤Ʋ\\ MES#09023 ⤷Υѡƥ򥹥å׶֤ȤƻѤϡ Swap 򤷤Ʋ⤷Υѡƥե륷 ƥȤƻѤϡFS 򤷤Ʋ\\ MES#09024 FreeBSD ǥ٥륨ǥ\\ MES#09025 \\ MES#09026 ޥȰ\\ MES#09027 \\ MES#09028 Newfs\\ MES#09029 ǥ: %s ̾: %s ΰ: %d ֥å (%dMB)\\ MES#09030 ǤϰʲΥޥɤѤǤޤ (ʸǤ⾮ʸǤ⹽ޤ):\\ MES#09031 C = D = M = ޥȰ \\ MES#09032 W = 񤭹\\ MES#09033 N = Newfs ץ T = Newfs ȥ U = Q = λ\\ MES#09034 A = ƤǥեȤ!\\ MES#09035 F1 ޤ ? ǥإס\\ MES#09101 Ƥ򸵤ᤷƹʤΤǤ?\\ MES#09102 ʤˤϡ򥤥󥹥ȡ˹Ԥʤ鷺󥹥ȡ뤬 ƤԤʤȤ褬󶡤ƤޤޤϿ 󥹥ȡκȤλǤϤʤǤ¸ߤƤĶѹ ˻ȤΤȤȤդƲ Ǥ⤳򺣹Ԥʤޤ?\\ MES#09103 ɥ⡼ɤѹƤ⤤ΤǤ? ϤɤˤΤʤǽǡȤƤǤʤΤޤ!\\ MES#09201 ƤΥե륷ƥ˽񤭹ޤޤ\\ MES#09401 ΥѡƥΥޥȰ֤ꤷƲ\\ MES#09402 Υե륷ƥ뤿˻Ѥ newfs ޥɤ ץϤƲ\\ MES#09403 ѡƥ礭򡢥֥åñ̡ޤϺǸ `M' ĤƥᥬХñ̡뤤ϡ`C' ǥñ̤ǻꤷ ߤζΰ %d ֥å (%dMB) Ǥ\\ MES#09501 (̤ΰ־) ǥ饤νǤΤߡϼ¹ԲǽǤ\\ MES#09502 Υ饤ˤϥѡƥκ˽ʬʶΰ褬ޤ\\ MES#09503 εǽϥޥѡƥ (̺Ǿ) ǤΤ߻ѲǽǤ\\ MES#09504 FreeBSD ѡƥˤ϶ΰ褬­ޤ\\ MES#09505 DOS ѡƥκˤϥѡƥ󥨥ǥѤƲ\\ MES#09506 åץѡƥˤϥޥȰ֤ꤹɬפϤޤ\\ MES#09507 Ǥ⿵Ť!\\ MES#09508 F1 ޤ ? ǥإ\\ MES#09601 ǤѹϽ񤭹ޤƤΤǡɥϤǤޤ\\ MES#09602 Ǥѹ񤭹ޤƤޤ⤷񤭤ϡ ǽ餫ľɬפޤ\\ MES#09603 ٹ𡧤ϡ֥󥹥ȡѤߡפΥƥ񤭴뤿 ΤǤ⤷줬ǽΥ󥹥ȡǤˤϡ꤬λ ñ Q ǤäƤȴСǸ˼ưŪѹϥߥ Ȥޤ ʤϤФγοĤȤǤޤ\\ MES#09604 %c ʥǤ (F1 ޤ ? ǥإ)\\ MES#09041 diskLable: ǥĤ򤵤Ƥޤ󡣼ưŪʥ٥ ԤȤϤǤޤ\\ MES#09042 diskLabel: ǥǥХ %s Ĥޤ!\\ MES#09043 饤ȥ %s Фơ ʥǥơ륨ȥޤ: %s\\ MES#09044 ѡƥΤɬפʶΰ褬ޤ: %s\\ MES#09045 ѡƥ󥹥ڥå %s 뤳ȤǤޤ 礭?\\ MES#09046 饤ȥ %s Фơ ʥǥơ륨ȥޤ: %s\\ # menus.c # MenuIndex MES#00001 ǽκ\\ MES#00002 Υ˥塼ϤΥץ (sysinstall) Υȥåץ٥εǽ ե٥åȽǺˤΤǤ[ENTER] ǥץưǤ ޤκڡȴϡ[TAB-ENTER] ǥ󥻥 򤹤뤳Ȥǽλ뤳ȤǤޤ\\ MES#00003 PageUp PageDown Ȥ᤯ư뤳ȤǤޤ!\\ MES#00006 A ƿ̾ FTP\\ MES#00007 Anonymous FTP ꤹ\\ MES#00008 C ߥå\\ MES#00009 ڥǥ󥰤Ƥ¹Ԥ (!)\\ MES#00010 C 󥽡\\ MES#00011 ƥॳ󥽡ư򥫥ޥ\\ MES#00012 C \\ MES#00013 ƥ˥塼\\ MES#32060 D ǥե,\\ MES#32061 ǥեɤ߹\\ MES#00014 D ǥХ,ޥ\\ MES#00015 ޥ˥塼\\ MES#32000 D ǥ٥\\ MES#32001 ǥ٥륨ǥ\\ MES#00016 D ۥե,\\ MES#00017 ۥեΥ롼\\ MES#00018 D ۥե,\\ MES#00019 FreeBSD ۥ˥塼\\ MES#00020 D ۥե,DES\\ MES#00021 DES ۥ˥塼\\ MES#00022 D ۥե,ȯ\\ MES#00023 ȯۥե\\ MES#00024 D ۥե,src\\ MES#00025 Src ۥեΥ˥塼\\ MES#00026 D ۥե,X ȯ\\ MES#00027 X ȯۥե\\ MES#00028 D ۥե,ͥ\\ MES#00029 ͥ볫ȯۥե\\ MES#00030 D ۥե,桼\\ MES#00031 ʿŪ桼ۥե\\ MES#00032 D ۥե,X 桼\\ MES#00033 X 桼ۥե\\ MES#32002 D ۥե,ɲ\\ MES#32003 ۥեɲå󥹥ȡ\\ MES#00034 D ۥե,XFree86\\ MES#00035 XFree86 ۥ˥塼\\ MES#00036 D ʸ\\ MES#00037 󥹥ȡβ⡢README¾\\ MES#00038 D ʸ,README\\ MES#00039 README ե\\ MES#00040 D ʸ,ϡɥ\\ MES#00041 ϡɥ\\ MES#00042 D ʸ,󥹥ȡ\\ MES#00043 󥹥ȡ륬\\ MES#00044 D ʸ,\\ MES#00045 ˴ؤ\\ MES#00046 D ʸ,꡼\\ MES#00047 ꡼Ρ\\ MES#00048 D ʸ,HTML\\ MES#00049 HTML ʸ˥塼\\ MES#32004 E ޥ\\ MES#32005 ޥۥեåεư\\ MES#32006 F Fdisk\\ MES#32007 ǥѡƥ󥨥ǥ\\ MES#00052 F Fixit\\ MES#00053 CDROM ޤϥեåԡν⡼\\ MES#00054 F FTP \\ MES#00055 FTP ߥ顼ȤΥꥹ\\ MES#00056 Gated\\ MES#00057 routed ǤϤʤ gated 򥤥󥹥ȡ롦\\ MES#00058 G ȥ\\ MES#00059 󥿡ե֤ΥѥåȤž\\ MES#00060 H ʸ,HTML\\ MES#00061 HTML ʸ˥塼\\ MES#00062 I 󥹥ȡ,鿴\\ MES#00063 鿴ѥƥ।󥹥ȡ\\ MES#00064 I 󥹥ȡ,®\\ MES#00065 ®󥹥ȡ\\ MES#00066 I 󥹥ȡ,\\ MES#00067 ।󥹥ȡ˥塼\\ MES#00068 L ٥\\ MES#00069 ǥ٥륨ǥ\\ MES#00070 M ǥ\\ MES#00071 ȥåץ٥ǥ˥塼\\ MES#00072 M ǥ,ơ\\ MES#00073 ơץ󥹥ȡǥ\\ MES#00074 M ǥ,NFS\\ MES#00075 NFS 󥹥ȡǥ\\ MES#00076 M ǥ,եåԡ\\ MES#00077 եåԡ󥹥ȡǥ\\ MES#00078 M ǥ,CDROM\\ MES#00079 CDROM 󥹥ȡǥ\\ MES#00080 M ǥ,DOS\\ MES#00081 DOS 󥹥ȡǥ\\ MES#00082 M ǥ,UFS\\ MES#00083 UFS 󥹥ȡǥ\\ MES#00084 M ǥ,FTP\\ MES#00085 FTP 󥹥ȡǥ\\ MES#00086 M ǥ,FTP Passive\\ MES#00087 Passive FTP 󥹥ȡǥ\\ MES#00088 N ͥåȥ󥿡\\ MES#00089 ͥåȥ󥿡ե\\ MES#00090 N ͥåȥӥ\\ MES#00091 ͥåȥӥ˥塼\\ MES#00092 N NFS,饤\\ MES#00093 NFS 饤ȥե饰\\ MES#00094 N NFS,\\ MES#00095 NFS Хե饰\\ MES#00096 N NTP ˥塼\\ MES#00097 NTP ˥塼\\ MES#00098 O ץ\\ MES#00099 ץ󥨥ǥ\\ MES#00100 P ѥå\\ MES#00101 Packages 쥯\\ MES#00102 P ѡƥ\\ MES#00103 ǥ饤(FDISK ѡƥ)Խ\\ MES#00104 P PCNFSD\\ MES#00105 PC-NFS ǧڥФư\\ MES#32008 R Ͽ\\ MES#32009 FreeBSD 桼ȤƤʤҤϿ\\ MES#00108 R Root ѥ\\ MES#00109 ƥѥѥɤ\\ MES#00110 R Routed\\ MES#00111 Routed ե饰 (ǥե: -q)\\ MES#00114 S Syscons\\ MES#00115 ƥॳ󥽡˥塼\\ MES#00960 S Syscons,ե\\ MES#00961 󥽡륹꡼ե\\ MES#00116 S Syscons,ޥå\\ MES#00117 󥽡륭ޥå˥塼\\ MES#00118 S Syscons,졼\\ MES#00119 󥽡륭졼˥塼\\ MES#00120 S Syscons,\\ MES#00121 󥽡륹꡼󥻡˥塼\\ MES#00962 S Syscons,ޥå\\ MES#00963 󥽡륹꡼ޥå˥塼\\ MES#00122 T ॾ\\ MES#00123 ƥΥॾ\\ MES#00124 U åץ졼\\ MES#00125 ¸ƥΥåץ졼\\ MES#00126 U ˡ\\ MES#00127 å-˥塼ƥλˡ\\ MES#00975 U 桼\\ MES#00976 桼ӥ롼׾ɲ\\ MES#00130 X XFree86,ե\\ MES#00131 XFree86 ե˥塼\\ MES#00132 X XFree86,\\ MES#00133 XFree86 ˥塼\\ MES#00964 X XFree86,PC98\\ MES#00965 XFree86 PC98 ˥塼\\ # MenuInitial # XXX --- RELEASENAME MES#00135 /stand/sysinstall ᥤ˥塼\\ MES#00136 FreeBSD Υ󥹥ȡ / ġˤ褦ʲΥץΤɤ줫 ץ̾κǽ 1 ʸǤĤȤŪΥץ 򤷤Ʋ[ENTER] 򲡤ȤǤΥץư뤳ȤǤ [TAB-ENTER] ǥ˥塼ȴ뤳ȤǤޤ\\ MES#00137 F1: 󥹥ȡ륬\\ MES#00138 S \\ MES#00139 E Ƴλ\\ MES#00140 1 ˡ\\ MES#00141 å - Υ˥塼ƥλˡ\\ MES#00142 2 ʸ\\ MES#00143 󥹥ȡ˴ؤREADME¾\\ MES#00955 3 ޥå\\ MES#00956 ܡɤΥפ򤹤\\ MES#00144 4 ץ\\ MES#00145 Ƽ磻󥹥ȡ륪ץǧꤹ\\ MES#00146 5 鿴\\ MES#00147 鿴ѥ󥹥ȡ򳫻Ϥ (ӥʡ)\\ MES#00148 6 ®\\ MES#00149 å󥹥ȡ򳫻Ϥ (äʿ)\\ MES#00150 7 \\ MES#00151 ।󥹥ȡ򳫻Ϥ ()\\ MES#00152 8 Fixit\\ MES#00153 CDROM ޤϥեåԡѤ⡼ɤ˰ܤ\\ MES#00154 9 åץ졼\\ MES#00155 ¸Υƥ򥢥åץ졼ɤ\\ MES#00156 c \\ MES#00157 󥹥ȡ FreeBSD Ԥʤ\\ MES#32062 l \\ MES#32063 ǥեȤΥ󥹥ȡɤ\\ MES#00158 0 \\ MES#00159 Ƶǽ˴ؤѸ콸\\ # MenuFixit MES#00161 fixit Υץ򤷤Ʋ\\ MES#00162 "fixit" ⡼ɤˤϡ2 ĤˡޤFreeBSD CDROM 2 ܤѤȡfixit եåԡѤǤ CDROM ѤϡFreeBSD Υޥɤ桼ƥƥΡ ƤδʥåȤؤΥ󶡤ޤCDROM ѤǤʤ ĶǤϡեåԡȤ虜ޤfixit եåԡϡ ƥǡäȤפǤȻפ륳ޥɤΤߤ Ƥޤ\\ MES#00163 F1: ˾ܤβ\\ MES#00164 1 CDROM\\ MES#00165 2 ܤ "live" CDROM Ѥ\\ MES#00166 2 եåԡ\\ MES#00167 fixit ᡼줿եåԡѤ\\ # MenuDocumentation MES#00171 FreeBSD ɥơ˥塼\\ MES#00172 ⤷ʤϡɥιˤĤơԴʾ䡢 FreeBSD Τ˥ƥۤ褦ȤƤϡϡɥ ɤɤ߲! ϤƤΥ桼ϡFreeBSD Υ󥹥ȡˡ ⤷塼ȥꥢǤ륤󥹥ȡɥȤ ɬפǤ礦Ūʾ˴ؤƤϡREADME ե ɤ߲\\ MES#00173 F1: إ\\ MES#00174 1 README\\ MES#00175 Ū FreeBSD ˴ؤ뵭ҡɤDz!\\ MES#00176 2 ϡɥ\\ MES#00177 PC ϡɥΤ FreeBSD ХХ륬\\ MES#00178 3 󥹥ȡ\\ MES#00179 FreeBSD Υ󥹥ȡ⤹륬\\ MES#00180 4 \\ MES#00181 FreeBSD \\ MES#00182 5 ꡼\\ MES#00183 FreeBSD ΤΥС˴ؤ꡼Ρ\\ MES#00184 6 硼ȥå\\ MES#00185 sysinstall Υ硼ȥåȤˤĤ\\ MES#00186 7 HTML ʸ\\ MES#00187 HTML ɥơɤ (󥹥ȡ)\\ MES#00188 I I18N \\ MES#00189 󥹥ȡιݲ (ܸ첽ʤ) β\\ MES#00858 9 PC \\ MES#00859 PC (PAO ѥå) 󥹥ȡ륬\\ MES#00190 0 λ\\ MES#00191 Υ˥塼λ (ξ)\\ # MenuMouseType MES#32141 ޥμ\\ MES#32142 ⤷ޤܤȤʬʤϡAutoפ򤷤Ƥ ϥХޥ PS/2 ޥ˴ؤƤϾưޤ ꥢޥPnP ɸ򥵥ݡȤʤޥ˴ؤƤϡޤư ޤ󡣤礷ǤϤޤ¿ 2 ܥ ޥϡMicrosoftפ뤤ϡMouseManפȸߴꡢޤ¿ 3 ܥޥϡMouseSystemsפ뤤ϡMouseManפȸߴ ޤ⤷ޥۥäƤϡIntelliMouse ȸߴ뤫Τޤ\\ MES#32143 ХޥPS/2PnPꥢޥư\\ MES#32144 ALPS GlidePoint ѥå (ꥢ)\\ MES#32145 Ω ֥å (ꥢ)\\ MES#32146 Microsoft IntelliMouse (ꥢ)\\ MES#32147 Logitech ץȥ (ǥ) (ꥢ)\\ MES#32148 Microsoft ץȥ (ꥢ)\\ MES#32149 MM ꡼ ץȥ (ꥢ)\\ MES#32150 Logitec MouseMan/TrackMan ǥ (ꥢ)\\ MES#32151 MouseSystems ץȥ (ꥢ)\\ MES#32152 Kensington ThinkingMouse (ꥢ)\\ # MenuMousePort MES#32160 ޥݡȤ˥塼򤷤Ƥ\\ MES#32161 åץȥåפΡȥѥ¢ݥƥ󥰥ǥХϡ̾ PS/2 ǥХǤ\\ MES#32162 COM1 Υꥢޥ (/dev/cuaa0)\\ MES#32163 COM2 Υꥢޥ (/dev/cuaa1)\\ MES#32164 COM3 Υꥢޥ (/dev/cuaa2)\\ MES#32165 COM4 Υꥢޥ (/dev/cuaa3)\\ MES#32166 Logitech, ATI, MS Хޥ (/dev/mse0)\\ MES#32167 PS/2 ޥ (/dev/psm0)\\ # MenuMouse MES#32170 ޥԤʤäƤ\\ MES#32252 ޥǡͭ뤳Ȥˤꡢ󥽡ΥƥȤ򥫥 ȥɥڡȤ뤳ȤǽǤޥΥݡȤȥץȥ ꤷƤ⤷εǽѤʤϡ4 򤷤ƥǡ ߤƲ ޥǡͭСX 桼ƥƥ "/dev/sysmouse" ǥХȤơ"SysMouse" 뤤 "MouseSystems" ޥץȥȤƻǤޤ (˥塼 򻲾) ⤷ޥХȥ󥹥ȡ (ܸ졢ϥ󥰥롢) ѤƤϡˤϥ󥽡ˤϥޥɽ ޤ󤬡ޥ֡Ȥɽޤ\\ MES#32171 1 \\ MES#32172 ޥץȥμ\\ MES#32173 2 ݡ\\ MES#32174 ޥݡȤ\\ MES#32175 3 ͭ\\ MES#32176 ޥǡΥƥȡ¹\\ MES#32177 4 ̵\\ MES#32178 ޥǡ̵\\ MES#32179 0 λ\\ MES#32180 Υ˥塼λ (ξ)\\ # MenuXF86Config MES#32010 Ѥ XFree86 ġ򤷤Ʋ\\ MES#32011 ǽΥġ XF86Setup ϡ˥եǤꡢ¹Ԥˤ VGA16 ФɬפȤޤ (ΥФϥǥեȤ򤵤Ƥ ϤǤ⤷Ƥޤäϡθɤɤ ġѤ뤳ȤϤǤޤ)2 ĤΥġ xf86config ϡ ñʥ륹ץȥ١Υġǡ桼ˤϤȤä ˤΤޤ󤬡ϸɤɤġ뤬ѤǤʤ ǤѤ뤳ȤǤ뤫⤷ޤ\\ MES#32012 F1: XFree86 FreeBSD ꡼ΡȤɤ\\ MES#32013 ˥ե XFree86 ġ\\ MES#32014 륹ץȥ١ XFree86 ġ\\ MES#32190 ˥ե XFree86 ġ (PC98)\\ # MenuMediaCDROM MES#00211 CDROM Υפ򤷤Ʋ\\ MES#00212 FreeBSD FreeBSD ۥեޤ CDROM ϡľ 󥹥ȡ뤹뤳ȤǤޤ⤷ʤʣ CDROM ɥ饤 äƤ뤿ˤΥ˥塼ɽƤΤʤСʲ CDROM ɥ饤֤Τɤ줫򥤥󥹥ȡѥɥ饤֤Ȥ򤷤 \\ MES#00213 F1: 󥹥ȡ륬ɤɤ\\ # MenuMediaFloppy MES#00215 եåԡɥ饤֤򤷤Ʋ\\ MES#00216 ʣΥɥ饤֤¸ߤƤޤ󥹥ȡ˻Ѥɥ饤֤ ꤷƲ\\ # MenuMediaDOS MES#00221 DOS ѡƥ򤷤Ʋ\\ MES#00222 FreeBSD DOS ѡƥ󤫤ľܥ󥹥ȡǤޤ Ŭڤʥե뷲򡢥󥹥ȡ DOS ѡƥ˥ԡ Ƥɬפޤ⤷νǤƤʤСDOS h p x ǥ֡ Ȥƥ󥹥ȡ뤷ۥե DOS ѡƥ "FREEBSD" ֥ǥ쥯ȥ˥ԡƲ줬ȺѤ СFreeBSD ۥե뷲Ƥ DOS ѡƥ 򤷤Ʋ\\ MES#00223 F1: 󥹥ȡ륬ɤɤ\\ # MenuMediaFTP MES#00225 FreeBSD FTP ۥȤ򤷤Ʋ\\ MES#00226 ʲΥꥹȤ顢äȤᤤȡ뤤ϡ֤¾פΥȤ 򤷤ƲʤΤ٤ƤΥȤۥåȰʾ ΤΤäƤȤϸ¤ʤȤȤ˵ĤƲ ۥȤΤߤۥեäƤ뤳ȤݾڤƤޤ\\ MES#00227 ǤᤤȤ򤷤Ʋ!\\ MES#00228 P 켡ۥ\\ MES#00230 O ¾\\ MES#00231 URL ǥꥹȤˤʤȤꤹ\\ MES#32080 3 3.0 SNAP \\ MES#32081 2 2.2 SNAP \\ MES#32082 2 2.1 SNAP \\ MES#00970 A 를\\ MES#00232 A ȥꥢ\\ MES#00234 A ȥꥢ #2\\ MES#00236 A ȥꥢ #3\\ MES#00238 A ȥꥢ #4\\ MES#32020 A ȥꥢ #5\\ MES#00240 B ֥饸\\ MES#00242 B ֥饸 #2\\ MES#00244 B ֥饸 #3\\ MES#00246 B ֥饸 #4\\ MES#00248 B ֥饸 #5\\ MES#32021 B ֥饸 #6\\ MES#32022 B ֥饸 #7\\ MES#00250 C ʥ\\ MES#00252 C \\ MES#32200 D ǥޡ\\ MES#32201 D ǥޡ #2\\ MES#00254 E ȥ˥\\ MES#00256 F ե\\ MES#00258 F ե\\ MES#32023 F ե #2\\ MES#00260 G ɥ\\ MES#00262 G ɥ #2\\ MES#00264 G ɥ #3\\ MES#00266 G ɥ #4\\ MES#00268 G ɥ #5\\ MES#00270 G ɥ #6\\ MES#00272 G ɥ #7\\ MES#00274 H \\ MES#00276 H \\ MES#32064 I \\ MES#00278 I \\ MES#00280 I 饨\\ MES#00282 I 饨 #2\\ MES#00284 J \\ MES#00286 J #2\\ MES#00288 J #3\\ MES#00290 J #4\\ MES#00292 J #5\\ MES#00294 J #6\\ MES#00296 K ڹ\\ MES#00298 K ڹ #2\\ MES#00302 P ݡ\\ MES#00304 P ݥȥ\\ MES#32024 P ݥȥ #2\\ MES#00306 R \\ MES#32025 R #2\\ MES#32026 R #3\\ MES#32096 R #4\\ MES#00308 S եꥫ\\ MES#00310 S եꥫ #2\\ MES#00312 S եꥫ #3\\ MES#32027 S եꥫ #4\\ MES#00314 S ǥ\\ MES#32028 S ǥ #2\\ MES#32029 S ǥ #3\\ MES#00316 T \\ MES#00318 T #2\\ MES#00320 T #3\\ MES#00322 T \\ MES#00324 U ꥹ\\ MES#00326 U ꥹ #2\\ MES#00328 U ꥹ #3\\ MES#32083 U ꥹ #4\\ MES#00330 U ꥫ罰\\ MES#00332 U ꥫ罰 #2\\ MES#00334 U ꥫ罰 #3\\ MES#00336 U ꥫ罰 #4\\ MES#00338 U ꥫ罰 #5\\ MES#00340 U ꥫ罰 #6\\ MES#00342 U ꥫ罰 #7\\ # MenuMediaTape MES#00345 ơץɥ饤֤Υפ򤷤Ʋ\\ MES#00346 FreeBSD ϥơץɥ饤֤饤󥹥ȡ뤹뤳ȤǤޤ Υ󥹥ȡˡϡ󥹥ȡɬפ̤˲äơʤ 礭ΰɬפȤޤ (ơץɥ饤֤ϥॢ ŬʤΤǡ1 ѥǥơƤƤŸޤ)⤷ ˽ʬʶ֤ˤϡʤΥƥǸФ줿ʲΥ ХΤΤɤ줫򤷤Ʋ\\ MES#00347 F1: 󥹥ȡ륬ɤɤ\\ # MenuNetworkDevice MES#00351 ͥåȥ󥿡եξɬפǤ\\ MES#00352 ⤷ʤͥåȤľ³ΤǤϤʤꥢǥХ ͳ PPP ѤˤϡޤŪΤ˲桹󶡤 Ƥ ppp 桼ƥƥѤơӥץХ˥ ʤФʤޤ󡣤⤷ꥢǥХ SLIP ѤƤ ϡŪʥꥢ³ꤷޤޤü "laplink" ֥ѤơѥݡȷͳǺǶ (2.0R뤤Ϥ ʹߤΥС) FreeBSD Υޥȷǥ󥹥ȡ뤹뤳 Ǥޤ\\ MES#00353 F1: ͥåȥե졼ޥ˥奢ɤ\\ # MenuMedia MES#00355 󥹥ȡǥ򤷤Ʋ\\ MES#00356 FreeBSD ϡեåԡ饤󥿡ͥåȾ FTP Ф˻ޤǡ ޤޤʰۤʤä󥹥ȡǥΥ󥹥ȡ뤬ǽǤ ⤷ʤݡȤƤ CDROM ɥ饤֤饤󥹥ȡ뤹 ΤǤСϰŪˤϺǹΥǥǤΤǡ줬Ѥ Ϥ¾Υǥ饤󥹥ȡ뤹뤳ȤͤɬפϤ ޤ\\ MES#00357 F1: ޤޤʥǥפ˴ؤ뤵˾ܺ٤ʾ\\ MES#00358 1 CDROM\\ MES#00359 FreeBSD CDROM 饤󥹥ȡ뤹\\ MES#00360 2 FTP\\ MES#00361 FTP Ф饤󥹥ȡ뤹\\ MES#00362 3 FTP passive\\ MES#00363 FTP Фɲɷͳǥ󥹥ȡ뤹\\ MES#00364 4 DOS\\ MES#00365 DOS ѡƥ󤫤饤󥹥ȡ뤹\\ MES#00366 5 NFS\\ MES#00367 NFS ͳǥ󥹥ȡ뤹\\ MES#00368 6 ե륷ƥ\\ MES#00369 ¸Υե륷ƥफ饤󥹥ȡ뤹\\ MES#00370 7 եåԡ\\ MES#00371 եåԡΥåȤ饤󥹥ȡ뤹\\ MES#00372 8 ơ\\ MES#00373 SCSI ޤ QIC ơפ饤󥹥ȡ뤹\\ MES#32084 9 ץ\\ MES#32085 ץ󥹥꡼˰ư\\ # MenuDistributions MES#00375 ۥե򤷤Ʋ\\ MES#00376 ñΤᡢĤΡֽ礤ΡۥեΥåȤ󶡤 ޤϡ桹ǤŬʥǥեȤǤȹͤ ΤǤ⤷ʬۥե򤷤ϡ֥פ 򤷤Ʋǽ˽礤Υѥåǡ夫饫 ĴԤʤȤǤޤ꤬λ顢λιܤ򤷤 Cancel 򤹤ȡȤǤǤޤ\\ MES#00377 F1: Υץ˴ؤܤ\\ MES#00378 1 ȯ\\ MES#00379 Хʥꡢʸ ()\\ MES#00380 2 X-ȯ\\ MES#00381 Ʊ͡ X Window System ޤ\\ MES#00382 3 ͥ볫ȯ\\ MES#00383 Хʥꡢʸ񡢥ͥΤߤΥ\\ MES#00384 4 桼\\ MES#00385 ʿŪ桼 - ХʥʸΤ\\ MES#00386 5 X-桼\\ MES#00387 Ʊ͡ X Windows System ޤ\\ MES#00388 6 Ǿ\\ MES#00389 ǽʸ¤Ǿι\\ MES#00392 7 \\ MES#00393 ʬȤۥեΥåȤ\\ MES#00390 8 \\ MES#00391 Хʥ (X Window System ޤ)\\ MES#00394 9 \\ MES#00395 򤵤줿ꥹȤꥻå\\ MES#00396 0 λ\\ MES#00397 Υ˥塼ȴ (ξ)\\ # MenuSubDistributions MES#00401 󥹥ȡ뤹ۥե\\ MES#00402 󥹥ȡ뤷ۥեåƲǤ "bin" ϤʤФޤ (ٹ) DES ۥե򥢥ꥫ罰񳰤˻ФʤDz ϥꥫ罰Υ桼ΤߤΤΤΤǤ\\ MES#00404 Хʥۥե (ɬ)\\ MES#00406 ѥեȡΥǥ\\ MES#00408 FreeBSD 1.x Хʥߴ\\ MES#00410 FreeBSD 2.0 Хʥߴ\\ MES#00412 FreeBSD 2.1 Хʥߴ\\ MES#00414 DES Ź沽 - ͢жػ!\\ MES#00416 ڥåե\\ MES#00418 Ƽ索饤ɥ\\ MES#00420 ()\\ MES#00422 GNU info ե\\ MES#00424 ƥޥ˥奢ڡ - 侩\\ MES#32030 եޥåȺѤߤΥƥޥ˥奢ڡ\\ MES#00426 ץեǤΥ饤֥\\ MES#00428 DES ƤΥ\\ MES#00430 XFree86 3.3.2.3 ۥե\\ MES#00432 ʹμ¸Ū!\\ MES#00433 A \\ MES#00434 ХʥꡢX Window System Хʥ\\ MES#00435 C \\ MES#00436 ʾƤꥻåȤ\\ MES#00437 E λ\\ MES#00438 Υ˥塼λ (ξ)\\ # MenuDESDistributions MES#00441 󥹥ȡ뤷Ź沽򤷤Ʋ\\ MES#00442 󥹥ȡ뤷 DES ١̤ʰŹ沽ۥե򤷤 ǡΥӥϥꥫ罰񳰤ؤΡ͢Ф϶ ߡפƤȤȤ˵ĤƲU.S. 񳰤ǤΥ եȥۤƤˤĤƤϡ꡼ΡȤ򻲾ȤƲ \\ MES#00443 des\\ MES#00444 DES Ź沽ӥ\\ MES#00445 krb\\ MES#00446 Kerberos Ź沽ӥ\\ MES#00447 sebones\\ MES#00448 Kerberos IV Υ\\ MES#00449 ssecure\\ MES#00450 DES Υ\\ MES#32210 ͢¤ΤŹ沽ϢΥ\\ MES#00451 E λ\\ MES#00452 Υ˥塼λ (ξ)\\ # MenuSrcDistributions MES#00455 󥹥ȡ뤹 src ֥ݡͥȤ򤷤Ʋ\\ MES#00456 󥹥ȡ뤷 FreeBSD ĥ꡼ΥݡͥȤå Ʋ\\ MES#00458 /usr/src Υȥåץ٥ե\\ MES#00880 /usr/src/contrib (ȥӥ塼ȥեȥ)\\ MES#00460 /usr/src/gnu (GNU ץȤΥեȥ)\\ MES#00462 /usr/src/etc (¿ʥƥե)\\ MES#00464 /usr/src/games (̤̾!)\\ MES#00466 /usr/src/include (إåե)\\ MES#00468 /usr/src/lib (ƥ饤֥)\\ MES#00470 /usr/src/libexec (ƥץ)\\ MES#00472 /usr/src/lkm (֥륫ͥ⥸塼)\\ MES#00474 /usr/src/release (꡼ġ)\\ MES#00476 /usr/src/bin (ƥХʥ)\\ MES#00478 /usr/src/sbin (ƥХʥ)\\ MES#00480 /usr/src/share (ɥȤȶͭե)\\ MES#00482 /usr/src/sys (FreeBSD ͥ)\\ MES#00484 /usr/src/usr.bin (桼Хʥ)\\ MES#00486 /usr/src/usr.sbin (ŪƥХʥ)\\ MES#00488 /usr/src/usr.sbin (sendmail ޥ) [341K]\\ MES#00489 A \\ MES#00490 ʾƤ򤹤 [120MB]\\ MES#00491 C \\ MES#00492 ʾƤꥻåȤ [0MB]\\ MES#00493 E λ\\ MES#00494 Υ˥塼λ (ξ)\\ # MenuXF86Select MES#00495 XFree86 3.3.2.3 ۥե\\ MES#00496 XFree86 3.3.2.3 ۥե륻åǡɬפȤ륳ݡͥȤ 򤷤Ʋ\\ MES#00497 F1: XFree86 FreeBSD ꡼Ρ\\ MES#00498 B \\ MES#00499 ܥݡͥȥ˥塼 (ɬ)\\ MES#00500 S \\ MES#00501 X Х˥塼\\ MES#00502 F ե\\ MES#00503 եȥåȥ˥塼\\ MES#00504 A \\ MES#00505 XFree86 ۥե륻åƤ򤹤\\ MES#00506 C \\ MES#00507 XFree86 ۥեꥻåȤ\\ MES#00508 E λ\\ MES#00509 Υ˥塼λ (ξ)\\ # MenuXF86SelectCore MES#00511 XFree86 3.3.2.3 ܥݡͥ\\ MES#00512 󥹥ȡ뤷 XFree86 ܥݡͥȤ򤷤Ʋ ʤȤ⡢bin, lib, set ϥ󥹥ȡ뤹뤳Ȥ򤪴ᤷޤ\\ MES#00513 F1: XFree86 FreeBSD ꡼ΡȤɤ\\ MES#00515 饤ȥץꥱȶͭ饤֥\\ MES#00885 ե\\ MES#00525 README ȥ꡼Ρ\\ MES#00886 HTML ʸե\\ MES#00517 ¹Իɬפʥǡե\\ MES#00887 PC98 ޥѥХ󥯥å\\ MES#00888 ¾ޥѥХ󥯥å\\ MES#00519 ޥǽ xinit μ¹Իե\\ MES#00521 ޥǽ xdm μ¹Իե\\ MES#00523 åȿѥ\\ MES#00527 ޥ˥奢ڡ\\ MES#00531 ץޤΤΥإåȥ饤֥\\ MES#00889 PostScript ʸ\\ MES#00890 XFree86 åȥåץ桼ƥƥ\\ MES#32220 PC98 ޥ XFree86 åȥåץ桼ƥƥ\\ MES#00891 XFree86 3.3.2.3 ɸॽ\\ MES#00892 XFree86 3.3.2.3 contrib \\ MES#00540 A \\ MES#00541 ʾƤ\\ MES#00542 C \\ MES#00543 ʾƤꥻåȤ\\ MES#00544 E λ\\ MES#00545 Υ˥塼λ (ξ)\\ # MenuXF86SelectFonts MES#00551 եȤξܺ٤\\ MES#00552 󥹥ȡ뤷ġΥեۥեåƲ Ф򥤥󥹥ȡ뤹¤ꡢǤ⡢75dpi misc ΥեȤ 󥹥ȡ뤹ɬפޤ (ϥǥեȤ򤵤Ƥ )\\ MES#00553 F1: XFree86 FreeBSD ꡼ΡȤɤ\\ MES#00555 ɸ 75 DPI Ȥ¾Υե\\ MES#00557 100 DPI ե\\ MES#00559 ʸե\\ MES#00561 Speedo, Type ֥ե\\ MES#00563 ܸ졢ʤɡѸΥե\\ MES#00565 եȥ\\ MES#00566 A \\ MES#00567 ƤΥե\\ MES#00568 C \\ MES#00569 եΥꥻå\\ MES#00570 E λ\\ MES#00571 Υ˥塼λ (ξ)\\ # XF86SelectServer MES#00575 X Ф\\ MES#00576 󥹥ȡ뤷 X ФΥפåƲ⤷ ΥեåɤǤɤΥФưΤ狼ʤϡ SVGA 뤤 VGA 16 ФѤǤ뤫Ȥ򤪴ᤷޤ PC98 ޥǤϡ9EGC 뤤 9840 ФƤߤƲ\\ MES#00577 F1: XFree86 FreeBSD ꡼ΡȤɤ\\ MES#00579 ɸ VGA ޤ Super VGA ǥץ쥤\\ MES#00581 ɸ 16 VGA ǥץ쥤\\ MES#00583 ɸΥǥץ쥤\\ MES#00585 8 ӥå (256 ) IBM 8514 ޤϸߴ\\ MES#00587 8 ӥåȥ顼 AGX \\ MES#00894 8, 16, 24 ӥåȥ顼 #9 Imagine I128 \\ MES#00589 8 ӥåȥ顼 ATI Mach8 \\ MES#00591 8 ޤ 16 ӥå (65K ) ATI Mach32 \\ MES#00593 8 ޤ 16 ӥå (65K ) ATI Mach64 \\ MES#00595 8, 16, 24 ӥåȥ顼 Weitek P9000 ١Υܡ\\ MES#00597 8, 16, 24 ӥåȥ顼 S3 ١Υܡ\\ MES#00895 8, 16, 24 ӥåȥ顼 S3 Virge ١Υ\\ MES#00599 8 ӥåȥ顼 ET4000/W32, /W32i ޤ /W32p \\ MES#00601 ƥѤΥͥȥ\\ MES#00896 ۥե졼Хåե\\ MES#00893 NEC PC98 X Ф [֥˥塼]\\ MES#00602 A \\ MES#00603 ʾƤ\\ MES#00604 C \\ MES#00605 ʾƤꥻå\\ MES#00606 E λ\\ MES#00607 Υ˥塼λ (ξ)\\ # MenuXF86SelectPC98Server MES#00900 PC98 X Ф\\ MES#00901 󥹥ȡ뤷 NEC PC98 X ФΥפ򤷤Ʋ⤷ ʤΥեåɾǤɤΥФư뤫狼ʤ ϡ9EGC 뤤 9480 ΥФ򤷤Ʋ\\ MES#00902 F1: XFree86 FreeBSD ꡼ΡȤɤ\\ MES#00903 PC98 8 ӥå (256 ) PEGC-480 \\ MES#00904 PC98 4 ӥå (16 ) EGC \\ MES#00905 PC98 GA-968V4/PCI (S3 968) \\ MES#00906 PC98 GANB-WAP (cirrus) \\ MES#00907 PC98 PowerWindowLB (S3) \\ MES#32230 PC98 MGA (Matrox) \\ MES#00908 PC98 NKV-NEC (cirrus) \\ MES#00909 PC98 NEC (S3) \\ MES#00910 PC98 SKB-PowerWindow (S3) \\ MES#32231 PC98 ͥå SVGA \\ MES#00911 PC98 Cyber9320 ڤ TGUI9680 \\ MES#00912 PC98 WAB-EP (cirrus) \\ MES#00913 PC98 WABS (cirrus) \\ MES#00914 PC98 WSN-A2F (cirrus) \\ MES#00915 E λ\\ MES#00916 Υ˥塼λ (ξ)\\ # MenuDiskDevices MES#00611 ɥ饤֤򤷤Ʋ\\ MES#00612 󥹥ȥ졼Ԥʤɥ饤 (ʣǤ褤) 򤷤Ʋ ⤷ʤ֡ȥѡƥǽΥɥ饤ְʳ֤ 䡢ʣΥڥ졼ƥ󥰥ƥΥޥ˥󥹥ȡ뤷 ˤϡ֡ȥޥ͡ǥ󥹥ȡ뤹Ȥץ ޤɥ饤֤򤹤ˤϡǥоݥǥ ξ˰ươ[SPACE] 򲡤ƲˤϤ⤦ [SPACE] 򲡤Ʋ\\ MES#00613 F1: ǥΥȥ˴ؤפʾ!\\ # MenuHTMLDoc MES#00615 HTML ɥơݥ󥿤\\ MES#00616 ɤߤʸϤ򤷤ƲߤμפʥɥȤ FAQ ȥ ɥ֥åǤ֤¾פ򤹤뤳ȤǡURL ꤷƥ֥饦 뤳ȤǤޤ\\ MES#00617 F1 ˾ܤإ\\ MES#00619 FreeBSD ϥɥ֥å\\ MES#00972 ܸ FreeBSD ϥɥ֥å\\ MES#00621 ˻˽ФƤ˴ؤ륬\\ MES#00623 FreeBSD ץȥۡڡ (ץͥåȥ)\\ MES#00625 URL Ϥ\\ # MenuInstallCustom MES#00631 ।󥹥ȥ졼󥪥ץ\\ MES#00632 ϥ।󥹥ȥ졼Υ˥塼Ǥ󥹥ȡ뤷 ۥեϲɤ˥󥹥ȡ뤹뤫ɤ饤󥹥ȡ 뤫FreeBSD ˤɤǥƤ뤫ʤɤ򤳤Υ˥塼 ꤹ뤳ȤǤޤ\\ MES#00633 F1: 󥹥ȡ륬\\ MES#00634 1 ץ\\ MES#00635 ޤޤʥ󥹥ȡ륪ץ\\ MES#00636 2 ѡƥ\\ MES#00637 FreeBSD ؤΥǥ֤γ\\ MES#00638 3 ٥\\ MES#00639 ƤѡƥؤΥ٥\\ MES#00640 4 ۥե\\ MES#00641 Ÿۥե\\ MES#00642 5 ǥ\\ MES#00643 󥹥ȡǥ\\ MES#00644 6 ߥå\\ MES#00645 ѡƥ󡢥٥󥰡Ÿºݤ˹Ԥʤ\\ MES#00646 7 Ÿ\\ MES#00647 ۥեŸΤߤԤʤ\\ MES#00648 0 λ\\ MES#00649 Υ˥塼λ (ξ)\\ # MenuMBRTYpe MES#00652 FreeBSD ˤϡ֡Ȼ FreeBSD ¾Υڥ졼ƥ󥰥ƥ Ǥ֡ȥ쥯°Ƥޤ⤷ʤʣΥǥ ͭƤơ2 ܤΥǥ֡ȤȤ⡢ ֡ȥ쥯ˤäƤεǽ¸뤳ȤǤޤ⤷֡ 쥯פʾ䡢촹ϡStandardפ Ʋ⤷ޥ֡ȥ쥳ɤ񤭴ʤϡ Noneפ򤷤Ʋ\\ MES#00653 F1: ɥ饤֥åȥåפˤĤ\\ MES#00654 BootMgr \\ MES#00655 FreeBSD ֡ȥޥ͡ ("Booteasy") 򥤥󥹥ȡ\\ MES#00656 Standard\\ MES#00657 ɸ MBR 򥤥󥹥ȡ뤹 (֡ȥޥ͡ʤ)\\ MES#00658 None\\ MES#00659 ޥ֡ȥ쥳ɤѹʤ\\ # passwdRoot MES#32065 rootץ桼 (ƥ) Τ ѥɤ򥿥פƲ:\\ MES#32066 ѥɤ⤦٥פʤƲ:\\ MES#32070 ٤ƾʸ뤤Ϥ٤ƿΥѥɤѤʤDz ̤Ǥʤʸˤ롢뤤ϥȥ륭饯 򺮤뤳Ȥ򤪴ᤷޤ\\ MES#32069 äĹѥɤĤƲ\\ MES#32067 פޤ󡣤⤦ϤƲ\\ MES#32068 Root Υѥɤѹޤ\\ # MenuCOnfigure MES#00661 FreeBSD ˥塼\\ MES#00662 ⤷Ǥ FreeBSD 򥤥󥹥ȡ뤷ƤСΥ˥塼Ѥ ƤʤΥե졼˹碌ޥԤʤ ǤޤΥ˥塼ΤäȤפʵǽȤƤϡۥե ˤϴޤޤʤ֥ɥѡƥץեȥɤ߹िΥѥ 桼ƥƥޤ\\ MES#00663 F1: Υץ˴ؤ뤵˾ܺ٤ʾ\\ MES#00664 1 桼\\ MES#00665 桼ӥ롼׾ɲ\\ MES#00666 2 󥽡\\ MES#00667 󥽡ưΥޥ\\ MES#00668 3 ॾ\\ MES#00669 ʤνǤ륿ॾ\\ MES#00670 4 ǥ\\ MES#00671 󥹥ȡǥΥפλ\\ MES#00672 5 ޥ\\ MES#00673 ޥ\\ MES#00674 6 ͥåȥ\\ MES#00675 ͥåȥ\\ MES#32086 7 ȥå\\ MES#32087 ƥॹȥåץץԤ\\ MES#00676 8 ץ\\ MES#00677 ޤޤʥ󥹥ȡ륪ץ\\ MES#32035 9 ۥե\\ MES#32036 ۥեɲå󥹥ȡ\\ MES#00678 P ѥå\\ MES#00679 FreeBSD Ѥ˥ѥå줿եȤΥ󥹥ȡ\\ MES#00682 R Root ѥ\\ MES#00683 ƥԤΥѥɤ\\ MES#00684 D HTML ʸ\\ MES#00685 HTML ʸ˥塼˰ư (󥹥ȡͭ)\\ MES#00686 X XFree86\\ MES#00687 XFree86 \\ MES#32045 C PC \\ MES#32046 PC бͥΥѥȥ󥹥ȡ\\ MES#32037 L ٥\\ MES#32038 ǥ٥륨ǥ\\ MES#32039 F Fdisk\\ MES#32040 ǥ饤(PC ѡƥ)Խ\\ MES#32041 U Ͽ\\ MES#32042 ʤҤ FreeBSD 桼ȤϿ\\ MES#00688 E λ\\ MES#00689 Υ˥塼λ (ξ)\\ # MenuStartup MES#32100 ȥåץӥ˥塼\\ MES#32101 Υ˥塼ˤäơʤΥƥεưԤȤ ޤܤ򤹤ˤϥڡѤȤȤ˺ ʤ褦ˡ꥿󥭡򲡤 (¾Υåܥå˥塼Ʊ ͤ) Υ˥塼Ͻλޤ\\ MES#32102 A APM\\ MES#32103 APM (Ÿ) ӥ (˥åץȥå)\\ MES#32104 P PC\\ MES#32105 PC (PCMCIA) ͭ (˥åץȥå)\\ MES#32106 P pccard mem\\ MES#32107 PC ɤΥꥢɥ쥹 (ͭ줿)\\ MES#32108 P pccard ifconfig\\ MES#32109 ꤹ PC ɥͥåȥǥХΥꥹ\\ MES#32110 S ץ\\ MES#32111 ץȤΤǥ쥯ȥΥꥹ\\ MES#32112 N named\\ MES#32113 ΥۥȾǥ͡ॵФư\\ MES#32114 N namedե饰\\ MES#32115 named ΥǥեȤΥե饰 (ͭ줿)\\ MES#32116 N NIS饤\\ MES#32117 ΥۥȤ NIS 饤ȤȤ\\ MES#32118 N NIS\\ MES#32119 ΥۥȤ NIS ФȤ\\ MES#32120 A ƥ\\ MES#32121 ΥۥȤǥץƥ󥰤Ԥ\\ MES#32122 L lpd\\ MES#32123 ΥۥȤ˥ץ󥿤 lpd ư\\ MES#32124 L Linux\\ MES#32125 ΥۥȤ Linux Хʥ¹Ԥ\\ MES#32126 Q quotas\\ MES#32127 ΥۥȤǵư quota åԤ\\ MES#32128 S SCO\\ MES#32129 ΥۥȤ iBCS2 Хʥ¹Ԥ\\ MES#32130 E λ\\ MES#32131 Υ˥塼λ (ξ)\\ # MenuNetworking MES#00695 ͥåȥӥ˥塼\\ MES#00696 ͥåȥǥХ (ڤӥۥ̾ȥ͡ॵ ФʤɤΤޤޤʥѥ᡼) FreeBSD Υ󥹥ȡβǤ ǤꤵƤǤ礦Υ˥塼ǤϡʤΥƥΥͥ ȥ˴ؤ뤽¾Ԥʤޤ\\ MES#00697 I 󥿡ե\\ MES#00698 ̤Υͥåȥ󥿡ե\\ MES#00699 N NFS 饤\\ MES#00700 NFS 饤ȤȤꤹ\\ MES#00701 N NFS \\ MES#00702 NFS ФȤꤹ\\ MES#32088 A AMD\\ MES#32089 Υޥǥȥޥ󥿥ӥ󶡤\\ MES#32090 A AMD ե饰\\ MES#32091 AMD ӥΥե饰 (ͭʾ)\\ MES#32092 T TCP Extentions\\ MES#32093 RFC 1323/1644 TCP extentions ͭ\\ MES#00703 G ȥ\\ MES#00704 󥿡ե֤ǥѥåȤž\\ MES#00705 G Gated\\ MES#00706 routed Τ gated ư\\ MES#00707 N Netcon\\ MES#00708 Novell client/server ǥѥå򥤥󥹥ȡ\\ MES#00709 N Ntpdate\\ MES#00710 ƱФ\\ MES#00711 R Router\\ MES#00712 롼ƥ󥰥ǡ(ǥե:routed)\\ MES#00713 R Rwhod\\ MES#00714 rwho ǡư\\ MES#00715 A ƿ̾ FTP\\ MES#00716 Υޥ anonymous FTP դ\\ MES#00721 P PCNFSD\\ MES#00722 PC-NFS 饤ѤǧڥФư\\ MES#00723 E λ\\ MES#00724 Υ˥塼λ (ξ)\\ # MenuNTP MES#00725 NTPDATE Ф\\ MES#00726 ¿λƱФ󥿡ͥåȤˤƥѥ֥åѤΤ ˳Ƥޤʤλפ٤ݤĤᡢǤ¤ᤤ Ф򤷤ޤ礦\\ MES#00727 餬ץ󥢥Ƥץ饤ޥ NTP ФǤ\\ MES#32094 N ʤ\\ MES#32095 NTP Фʤ\\ MES#00728 O ¾\\ MES#00729 ΥꥹˤʤȤ\\ MES#00730 A ȥꥢ\\ MES#00731 ntp.syd.dms.csiro.au (HP 5061 ӡ)\\ MES#00732 C ʥ\\ MES#00733 tick.usask.ca (GOES å)\\ MES#00734 F ե\\ MES#00735 canon.inria.fr (TDF å)\\ MES#00736 G ɥ\\ MES#00737 ntps1-{0,1,2}.uni-erlangen.de (GPS å)\\ MES#00738 G ɥ #2\\ MES#00739 ntps1-0.cs.tu-berlin.de (GPS å)\\ MES#00740 J \\ MES#00741 clock.nc.fukuoka-u.ac.jp (GPS å)\\ MES#00742 J #2\\ MES#00743 clock.tl.fukuoka-u.ac.jp (GPS å)\\ MES#00744 H \\ MES#00745 ntp0.nl.net (GPS å)\\ MES#00746 N Υ륦\\ MES#00747 timer.unik.no (NTP å)\\ MES#00748 S ǥ\\ MES#00749 Time1.Stupi.SE (/GPS)\\ MES#00750 S \\ MES#00751 swisstime.ethz.ch (DCF77 å)\\ MES#00752 U ꥫ쳤\\ MES#00753 bitsy.mit.edu (WWV å)\\ MES#00754 U ꥫ쳤 #2\\ MES#00755 otc1.psu.edu (WWV å)\\ MES#00756 U ꥫ\\ MES#00757 apple.com (WWV å)\\ MES#00758 U ꥫ #2\\ MES#00759 clepsydra.dec.com (GOES å)\\ MES#00760 U ꥫ #3\\ MES#00761 clock.llnl.gov (WWVB å)\\ MES#00762 U ꥫ\\ MES#00763 ncar.ucar.edu (WWVB å)\\ MES#00764 U ꥫʿ\\ MES#00765 chantry.hawaii.net (WWV/H å)\\ MES#00766 U ꥫ\\ MES#00767 shorty.chpc.utexas.edu (WWV å)\\ # MenuSyscons MES#00781 ƥॳ󥽡\\ MES#00782 FreeBSD Υǥեȥƥॳ󥽡ɥ饤Фϡޤޤꥪ ץäƤꡢߤ˱򤬤Ǥޤ꤬ä Cancel 򤷤Ʋ\\ MES#00783 ƥॳ󥽡\\ MES#00784 K ޥå\\ MES#00785 ܡɥޥåפ\\ MES#00786 R ԡ\\ MES#00787 ԡȤδֳ֤\\ MES#00788 S \\ MES#00789 ꡼󥻡Ф\\ MES#00790 E λ\\ MES#00791 Υ˥塼λ (ξ)\\ MES#00920 S ꡼ޥå\\ MES#00921 ꡼ޥåפ\\ MES#00922 F ե\\ MES#00923 եȤ\\ # MenuSysconsKeymap MES#00795 ƥॳ󥽡륭ޥå\\ MES#00796 FreeBSD Υǥեȥƥॳ󥽡ɥ饤 (syscons) ϡǥե ȤɸΡ֥ꥫפΥܡɥޥåפꤵƤޤ¾ Υ桼 (ޤ̤ΥܡɤѤƤ) ϡΥ ޥåפ򤹤뤳ȤǤޤ\\ MES#00797 ܡɥޥåפ\\ MES#00932 ٥륮 ISO ޥå\\ MES#00924 ֥饸 CP850 ޥå\\ MES#32240 ֥饸 ISO ޥå(ȥ)\\ MES#00925 ֥饸 ISO ޥå\\ MES#00799 ǥޡ ɥڡ 865 ޥå\\ MES#00801 ǥޡ ISO ޥå\\ MES#00803 ե ISO ޥå\\ MES#00805 ɥ ɥڡ 850 ޥå\\ MES#00807 ɥ ISO ޥå\\ MES#00809 ꥢ ISO ޥå\\ MES#32241 ISO ޥå (ȥ)\\ MES#32242 ISO ޥå\\ MES#00811 106 ޥå\\ MES#32243 ƥ󥢥ꥫ ISO ޥå\\ MES#00926 Υ륦 ISO ޥå\\ MES#00927 CP866 ޥå\\ MES#00928 KOI8-R ޥå\\ MES#32244 ٥˥ ISO ޥå\\ MES#32245 ڥ ISO ޥå (ȥ)\\ MES#00929 ڥ ISO ޥå\\ MES#00819 ǥ ɥڡ 850 ޥå\\ MES#00821 ǥ ISO ޥå\\ MES#00930 ISO ޥå\\ MES#00823 ꥹ ɥڡ 850 ޥå\\ MES#00825 ꥹ ISO ޥå\\ MES#00827 ꥫ ISO ޥå\\ MES#00931 ꥫ Dvorak ޥå\\ # MenuSysconsKeyrate MES#00831 ƥॳ󥽡륭ܡɥԡȥ졼\\ MES#00832 Υ˥塼ǡ³ΥԡȤ®٤Ǥޤ\\ MES#00833 ܡɥԡȥ졼Ȥ򤷤Ʋ\\ MES#00834 L ®\\ MES#00835 ®Υܡɥԡȥ졼\\ MES#00836 N ̾\\ MES#00837 ̾Ρץܡɥԡȥ졼\\ MES#00838 H ®\\ MES#00839 ®Υܡɥԡȥ졼\\ MES#00840 D ǥե\\ MES#00841 ǥեȤΥܡɥԡȥ졼\\ # MenuSysconsSaver MES#00845 ƥॳ󥽡륹꡼󥻡\\ MES#00846 ǥեȤǤϡ󥽡ɥ饤Фϥɥ֤ˤʤäǤ ʽԤʤޤ󡣤⤷ʤ˥Ÿξ֤ΤޤĹ ֤ƤΤǤСƤդɤˤΥ꡼󥻡 ФΤΤɤ줫ͭƤɬפ뤫Τޤ\\ MES#00847 ꡼󥻡Ф򤷤Ʋ\\ MES#00848 B ֥\\ MES#00849 ñ˥꡼֥󥯤ˤ\\ MES#32250 G ǡ\\ MES#32251 BSD ǡץ˥᡼󥹥꡼󥻡\\ MES#00850 G Green\\ MES#00851 "Green" ϥ⡼ (˥ݡȤƤ)\\ MES#00852 S ͡\\ MES#00853 FreeBSD ֥͡פ̤\\ MES#00854 S \\ MES#00855 ֥饭׸\\ MES#00856 T ॢ\\ MES#00857 ꡼󥻡ФΥॢȴֳ֤ꤹ\\ # MenuSysconsScrnmap MES#00935 ƥॳ󥽡륹꡼ޥå\\ MES#00936 ̤ʥեȤɤʤϡۤȤɤ PC ϡɥϥ եȤ IBM 437 ʸåȤɽޤ Unix Ǥϡ ʸåȤϤۤȤѤƤޤ㤨СۤȤɤ 衼åѽǤϡISO 8859-1 ѤƤޤʸ ȤβȾʬ ANSI Ǥ뤿ᡢꥫΥ桼Ϥΰ㤤ܤ ȤϵǤ礦 ⤷ʤΥϡɥɽեȤɤǤϡ Υץ򤹤뤳ȤǤޤΤ褦ʤ Բǽʾ (: ץ) ǤϡʤΥϡɥǤǤ ¤ǹκȤ뤳ȤˤʤǤ礦\\ MES#00937 ꡼ޥåפ򤷤Ʋ\\ MES#00939 ꡼ޥåפʤǥեȥեȤ\\ MES#00940 KOI8-R IBM866 ꡼ޥåפ\\ MES#00941 KOI8-R IBM866 ꡼ޥåפ\\ # MenuSysconsFont MES#00945 ƥॳ󥽡ե\\ MES#00946 ̤ʥեȤɤʤϡۤȤɤ PC ϡɥϥ եȤ IBM 437 ʸåȤɽޤ Unix Ǥϡ ʸåȤϤۤȤѤƤޤ㤨СۤȤɤ 衼åѽǤϡISO 8859-1 ѤƤޤʸ ȤβȾʬ ANSI Ǥ뤿ᡢꥫΥ桼Ϥΰ㤤ܤ ȤϵǤ礦Τ褦ʾǤäƤ⡢30 Ԥ 50 Ԥ ǥץ쥤ѤˤϡեȤɤɬפ 礦 ⤷ʤΥϡɥɽեȤɤǤϡ ΥեȤΤŬʤΤ򤹤뤳ȤǤޤ\\ MES#00947 եȤ򤷤Ʋ\\ MES#00948 ǥեȥեȤ\\ MES#00949 Ѹ\\ MES#00950 衼åѡIBM 󥳡ǥ\\ MES#00951 Υ륦IBM 󥳡ǥ\\ MES#00952 IBM 󥳡ǥ\\ MES#00953 KOI8-R 󥳡ǥ\\ MES#32050 Fixit ץ򤷤Ʋ\\ MES#32051 Fixitץ⡼ɤˤ 3 Ĥˡޤ - FreeBSD CDROM 2 ܤѤ뤳ȤǤޤˡǤϴ FreeBSD Υޥɤȥ桼ƥƥѤ뤳ȤǽǤ - Fixit եåԡѤ뤳ȤޤϤäȸꤵ줿 ɤѤ뤳Ȥޤ - ۥեåΤߤư뤳ȤǤޤϸ¸ߤ Ƥ˾ʤޥɤΤߤѤǤޤ\\ MES#32052 F1 ǽ˴ؤܤ\\ MES#32053 2 ܤΡLiveCDROM Ѥ\\ MES#32054 fixit ᡼줿եåԡѤ\\ MES#32055 ѥۥեåư\\ MES#00980 桼롼״\\ MES#00981 Υ֥˥塼Ǥϡ桼롼׵ڤӥ󥢥Ȥ ԤʤȤǤޤ \\ MES#00982 桼롼ס桼ԤʤäƲ\\ MES#00983 桼򥷥ƥɲä\\ MES#00984 桼롼פ򥷥ƥɲä\\ MES#00985 E λ\\ MES#00986 Υ˥塼λ (ξ)\\ # end of menus.c # main.c MES#10000 ե⡼ɤޤ\\ MES#10003 ʥ %d ȯޤǤ¤ΤΤ¸ƥåȥ 󤷤ޤƸСץ˥塼 Debug ͭơ μΥǥХåͭǤ;ʬʥǥХå󶡤Ƥ \\ MES#10001 ˽λƹޤ? ƥϥ֡Ȥޤ (եåԡɥ饤֤ȴƲ)\\ # media.c MES#11000 CDROM ǥХĤޤ󡣤ʤΥƥι ޤCDROM ɥ饤֤ݡȤƤ륿פɤǧƲ ܤϡʸץ˥塼Υϡɥɤ򻲾ȤƲ \\ MES#11002 եåԡǥХĤޤ󡣥ƥιɤ ǧƲܤϡʸץ˥塼Υϡɥɤ ȤƲ\\ MES#11004 DOS Υץ饤ޥѡƥ 1 Ĥ⸫Ĥޤ󡣤Υ ȡˡϻѤǤޤ\\ MES#11006 ơץɥ饤֤դޤ󡣤ʤΥƥι ǧƲܤϡʸץ˥塼Υϡɥɤ ȤƲ\\ MES#11008 ΥơפƤΤ˽ʬʶΤƥݥ꡼ǥ쥯 ̾ϤƲΥǥ쥯ȥƤϥ󥹥ȡν λˤϺޤΤǡƤäƤ褤ǥ쥯ȥꤷ \\ MES#11009 %s ꤵƤޤFTP󥹥ȥ졼ѥꤷʤƤ ΤǤ͡\\ MES#11010 FreeBSD ۥե뤬¸ߤ⡼Ȥ ftp Ȥ URL ƲΥȤ˴ؤƤϡƿ̾ (Anonymous) ftp դ 뤫ץ󥨥ǥβ̤ ftp ˻Ѥ桼̾ڤӥѥ ɤꤷƤɬפޤ URL Ϥϡ ftp://<ۥ̾>/<ѥ̾> ȤǤɬפޤǡ<ѥ̾> ϡƿ̾ ftp ǥ쥯ȥ꤫Хѥ뤤ϥ󤷤桼Υۡǥ 쥯ȥ꤫ХѥǤ\\ MES#11011 ߤޤ%s URL Ǥ\\ MES#11012 ۥ %s õƤޤ\\ MES#11013 ۥ̾ `%s' ꥾֤Ǥޤ! ͡ॵСȥ ͥåȥ󥿡եꤵƤޤ?\\ MES#11014 FreeBSD ۥե뤬֤Ƥǥ쥯ȥؤδʥѥ̾ ϤƲ\\ MES#11015 FreeBSD ۥեäƤǥ쥯ȥФ봰 NFS ե ԤʤäƲ ۥ̾:/FreeBSD/֤Ƥ/ǥ쥯ȥؤ/եѥ̾ ȤեޥåȤǤɬפޤ\\ MES#11016 NFS Υѥ꤬Ǥ ۥ̾:/FreeBSD/֤Ƥ/ǥ쥯ȥؤ/եѥ̾ ȤǤɬפޤ\\ MES#11025 Ǥ˥ͥåȥ꤬Ǥޤ ͥåȥФƤ褤Ǥ\\ MES#11017 ۥ %s õƤޤ\\ MES#11018 ۥ̾ `%s' ꥾֤Ǥޤ! ͡ॵСȥ ͥåȥ󥿡եꤵƤޤ?\\ MES#11020 󤹤뤿Υ桼̾ϤƲ:\\ MES#11021 CPIO Υå˴ؤϹԤʤޤǤ!\\ MES#11026 ǥɤ߹ߤ˼Ԥޤ桼γߤǤ\\ MES#11027 cpio ץؤΥǡž˥顼ޤ (%d ХȽ񤭹)\\ MES#11028 %10d Х %s ɤ߹ߤޤ (%.1fKB/)\\ MES#11022 FTP ȤѤޤ?\\ MES#11023 Ǥ˰˥ͥåȥԤʤäƤޤ κȤ򥹥åפޤ?\\ MES#11024 Υ桼ΥѥɤϤƲ:\\ # network.c MES#12020 ˵ưƤ PPP ץ %d ߤޤ\\ MES#12000 PPP 򳫻ϤǤޤ󡣤Υ󥹥ȡˡϻѤǤޤ!\\ MES#12001 ٹ: ǤΥ󥹥ȡ SLIP ؤΥݡȤϡʬǽ㤤 ΤȤʤäƤޤϥ󥰤ԤʤΥ桼ƥƥ 礱Ƥ뤳ȤǤ⤷ PPP ѤǤΤǤС Ѥޤ礦SLIP ľܥꥢ³줿˻Ѥ Ʋޤʲ˼ slattach ޥɤԽƲ ( ǤΥǥեȤϡVJ ̡ϡɥե桢ꥢ̵롢 9600 ܡž졼ȤǤ)Ǥ顢[ENTER]򲡤Ƽ¹Ԥ Ʋ\\ MES#12021 slattach ޥɤλ꤬Ƥޤ󡣤⤦ٻꤷƲ\\ MES#12002 slattach ơ֤ޤޥɤɤ ⤦ٳǧƺٻƤߤƲ\\ MES#12003 ǥХ %s ѲǽȤʤäƤޤ󡣤κȤԤʤ˥ͥå ˥塼ǥǥХνԤʤɬפޤ\\ MES#12004 ͥåȥǥХ %s Ƥޤ\\ MES#12005 󥿡ե %s Ǥޤ! Υ󥹥ȡˡϻѤǤޤ\\ MES#12006 ȥꤵƤޤ󡣥ͥåȥʳ˥ 뤳ȤϤǤޤ\\ MES#12007 %s ˥ǥեȷϩꤷޤ\\ MES#12009 ٹ: 󥿡ե %s ˽λǤޤ\\ MES#12010 ǥեȷϩޤ\\ MES#12022 ˵ưƤ PPP ץ %d ߤޤ\\ MES#12011 PPPץ %d λƤޤ\\ MES#12012 ǥؤΥܡ졼ȤꤷƲۤȤɤΥǥϡ ®٤̤®٤ǥԥ塼ȥǡžǽȤʤäƤΤǡ ͤϥǥब󶡤ºݤκǹ®٤⤯ꤹ뤳ȤǤ ޤ⤷ꤷɤΤ狼ʤϡǥեȤ Ʋ\\ MES#12013 ʤΥӥץХ IP ɥ쥹ϤƲ⤷ 狼ʤ硢뤤ưŪʥͥԤʤ ϡ0 ϤƲ\\ MES#12014 /etc/ppp/ppp.conf 򥪡ץǤޤ! εǽϻǽǤ\\ MES#12015 ٹ: ǥХ /dev/tun0 ޤPPP ưޤ\\ MES#12016 : VTY3 PPP ޥɤưޤ (ALT-F3 ǤĤȤΥ ޥɤԤʤȤǤޤALT-F1 Ǹޤ) ñ "term" ȥפǡüߥ졼ư ǥƥӥץХ˥ǤϤǤö ³Ω顢Υ꡼äƥ꥿ǤäƲ ˥ͥΩޤǡ[ENTER] ǤʤDz\\ # options.c MES#13000 512 Хȥ֥åñ̤˥ơץ֥åϤƲ:\\ MES#13001 ɤ߹ߤ꡼ꤷƲ:\\ MES#13002 HTML ֥饦Υѥå̾ꤷƲ:\\ MES#13003 HTML ֥饦ΥХʥؤΥեѥ̾ꤷƲ:\\ MES#13004 Ѥƥȥǥ̾ꤷƲ:\\ MES#13005 ζΤǥ쥯ȥꤷƲ:\\ MES#13006 /ʳ˥󥹥ȡ뤹硢롼ȥǥ쥯ȥꤷƲ:\\ MES#13030 ٤ǥФԤÿꤷƲ:\\ MES#13033 Gated ФΥѥå̾ꤷƲ:\\ MES#13034 PCNFSD ФΥѥå̾ꤷƲ:\\ MES#13045 ܸ FreeBSD ϥɥ֥åΥѥå̾ꤷƲ:\\ MES#13048 ܸ FreeBSD ϥɥ֥åؤΥեѥ̾ꤷƲ:\\ MES#13007 ʥݡȤǤ NFS Ф̿ʤ\\ MES#13008 ٤ PC ޤϥͥåȤΥ桼\\ MES#13009 ղŪǥХå VTY2 (ALT-F2) ˽\\ MES#13010 ƤδǤʤ "Yes" \\ MES#13011 anonymous ˻Ѥ桼̾ȥѥ\\ MES#13012 󥹥ȡ˻Ѥƥȥǥ\\ MES#13013 512 Хñ̤ǤΥơץǥΥ֥å\\ MES#13014 Ÿ˥ե̾ܤɽ뤫\\ MES#13015 󥹥ȡǥɤΥ꡼ɤ߹फ\\ MES#13016 ɤΥǥ쥯ȥۥեѥåŸ뤫\\ MES#13017 HTML ʸɤΤˤɤΥ֥饦ѥåѤ뤫\\ MES#13018 ֥饦ѥåΥᥤХʥؤΥѥ\\ MES#13019 ߤΥ󥹥ȡǥΥ\\ MES#13040 ٤ǥФ륿ॢȤÿ\\ MES#13020 ѥåŸΰե֤ǥ쥯ȥ\\ MES#13043 Gated 򥤥󥹥ȡ뤹Υѥå̾\\ MES#13044 PCNFSD 򥤥󥹥ȡ뤹Υѥå̾\\ MES#13046 ܸ FreeBSD Handbook 򥤥󥹥ȡ뤹Υѥå̾\\ MES#13047 ܸ FreeBSD Handbook ؤΥեѥ̾\\ MES#13021 Ƥͤ򥹥ȥåץǥեȤ˥ꥻå\\ MES#13022 ץ󥨥ǥ\\ MES#13023 ̾\\ MES#13024 \\ MES#13025 SPACE ǥץ򡢤뤤ϥȥ롣ǰư\\ MES#13026 ? ޤ F1 Ǥ˾ܤإס꤬λ Q ǽλ\\ # doc.c MES#19000 ߤޤ! ΥץϡƥΥ󥹥ȡ봰λΤ߻ Ǥޤ\\ MES#19001 %s HTML ֥饦ѥå򥤥󥹥ȡޤ ǥꤵƤ뤫ΤƤ顢ƻԤƤ\\ MES#19002 %s ѥå򥤥󥹥ȡ뤷ϤǤ %s ˥Хʥ꤬Ĥ ޤ! ѥåɤƤ (ǥ˥塼򻲾) Ѥ ƻơѲ뤫Ĵ٤Ʋ 󥹥ȡ뤬ǤƤʤ褦ʤΤǡǤŸƤС õ뤳Ȥ򤪴ᤷޤԤʤäƹޤ?\\ MES#19003 %s ˥֥饦Ĥޤ! ץ󥨥ǥåȤǧƤ\\ MES#19004 ɤߤ URL ϤƤ\\ MES#19006 %s ѥå򥤥󥹥ȡޤ ǥꤵƤ뤫ΤƤ顢ƻԤƤ\\ MES#19005 ʤʸ˥ޤ! bin ۥե ɤƤޤ? ͥåȥˤĤʤäƤޤ?\\ # dos.c MES#20002 %s /dist ˥ޥȤǤޤ: %s (%u)\\ MES#20001 DOS ѡƥ %s 򥢥ޥȽޤ: %s\\ # floppy.c MES#21001 롼ȥեåԡƤ\\ MES#21002 롼ȥեåԡ %s ơ[ENTER] 򲡤Ƥ\\ MES#21003 եåԡ򥪡ץǤޤǤ - ƻԤޤ?\\ MES#21004 ǥ쥯ȥޥȥݥ %s (ǥХ̾ %s) ޤǤ!\\ MES#21005 %s ˼ΥեåԡƤ\\ MES#21006 %s äƤեåԡ %s Ƥ\\ MES#21007 顼 %s (%s) եåԡ %s ˥ޥȤǤޤ : %s\\ MES#21008 GetFloppy: ƻԤޤ%s ޤǤ ޤ\\ MES#21009 %s եåԡƤ\\ # command_execute MES#02003 %s ¹ԤƤޤ\\ # config.c # configFstab MES#03001 ʤ /etc/fstab եƹۤƤޤ ٹ: ⤷ʤ sysinstall μ¹ CD ǥХѤƤ ȤƤ⡢μ¹Ԥˤäȯ뤳ȤϤޤ\\ MES#03002 ǥĤޤ!\\ MES#03070 /etc/fstab ե뤳ȤǤޤ ư󥹥ȡȤɬפȤʤǤ礦\\ MES#03004 /etc/fstab ե뤬Ĥޤ󡣼ưǤĴɬפ ʤޤ\\ MES#03007 %s ΥޥȥݥȤ뤳ȤǤޤ\\ # configSysconfig MES#03009 %s ե򥪡ץǤޤ󡣤η̤Ȥ ΤϤ餯۾ʷ̤Ǥ礦\\ MES#03010 %s ѹ񤭹ߤޤ\\ # configSaverTimeout MES#03014 ñ̤ǥ꡼󥻡ФΥॢȤꤷƲ\\ # configNTP MES#03015 NTP Ф̾ϤƲ\\ # configXEnvironment MES#03068 X Ф̤ˡǥޥ˥ޤĤľܥ Ǥꡢ⤦ĤϥޥǡͳܥǤޤ ǡϹԤʤƤޤ󡣺ˤꤷޤ ⤷ľܥǥޥѤΤǤСǡNo 򤷤Ƥ\\ MES#03069 ޥǡꤵƤꡢߥޥǡ󤬵ưƤޤ X 桼ƥƥ顢ޥݡȤȤơ/dev/sysmouseפ ޥץȥȤơSysmouseפޤϡMouseSystemsפ򤷤 \\ MES#03071 XFree86 ϼԤ褦Ǥ ⤦٤κȤԤޤ\\ MES#03016 ʤ򤷤 XFree86 åȥåץ桼ƥƥϥ󥹥ȡ Ƥʤ褦ǤXFree86 Ԥʤˡ򥤥󥹥ȡ 뤷ƤƲ\\ # configResolv MES#03017 ٹ: ͡ॵФͤꤵƤޤäƥ͡ॵФ ꤹ뤫٤ƤΥͥåȥˤơۥ̾ IP ɥ쥹ǹԤʤäƲ\\ MES#03018 /etc ǥ쥯ȥ뤳ȤǤޤ󡣥ͥåȥΥե Ͻ񤭹ޤޤ\\ # configPackages MES#03023 򤵤줿ǥ packages/INDEX եɤ⤦ȤƤޤ\\ MES#03024 򤷤ǥ packages/INDEX ե뤬Ĥޤ Ϥ餯򤷤ǥ˥ѥåۥե뷲¸ ƤʤΤǤ礦 (㤨Хѥå쥯󤬥ߥ顼Ƥ ʤ FTP )ǥ (뤤ϥǥؤΥѥ) ǧƺ ٻƤߤƲ⤷ʤΥ륵Ȥѥå쥯 äƤʤΤǤСCD ˤۤ ftp.freebsd.org ΰ켡 ۥȤ򤪻\\ MES#03025 INDEX ǧޤѥåΥǡɤ߹Ǥޤ\\ MES#03026 packages/INDEX ե˴ؤ I/O 뤤ϥեޥåȥ顼Ǥ ǥ (뤤ϥǥؤΥѥ) ǧƺ٤\\ MES#03027 ŸѥåĤ򤵤Ƥޤ\\ # configNFSServer MES#03039 NFS ФȤưˤϡޤ /etc/exports եˡʤ Υե륷ƥबɤΥۥȤФƤɤΤ褦 ƤΤȤԤʤɬפޤ [ENTER] 򲡤ȡ/etc/exports Ф륨ǥư \\ # configRouter MES#03050 Ѥ롼ꤷƲRouted ɸǥƥä ꡢgated Ϥ⤷ geted ꤷ礳Υ󥹥ȡ餬 ץΥѥå饤󥹥ȡ뤹褦ˤʤäƤޤ¾ Υ롼ƥ󥰥ǡ򤹤ϡΥǡ󼫿Ȥ֡ ˥󥹥ȡ뤹ɬפޤ⤷롼ƥ󥰥ǡ ɬפǤʤΤǤСNO 򤷤Ʋ\\ MES#03051 Gated ΥѥåɤǤޤ󡣥롼ʤᤷޤ\\ MES#03052 롼ƥ󥰥ǡΥե饰ꤷƲRouted Ѥ ϡΡɤˤޥξ -qȥˤޥ ξˤ -s ŬڤǤ礦\\ # disks.c # print_chunks MES#04002 ٹ: ȥ %d/%d/%d (%s) Ǥ ˡŬȻפͤѤޤ⤷Υȥ꤬ ʤ硢ޤϤ줬ΤʤΤ狼ʤϡ ʸ񥵥֥˥塼ΥϡɥɤƤ뤫G (ȥ) ޥɤǺͤꤷƲ : ʤΥޥ BIOS ͤƤ̤ΥȥϤ ɬפޤIDE ˴ؤƤϡBIOS setup β̤Ǥξ ȤǤޤSCSI ξϡȥ餬ѤƤȥ 졼⡼ɤˤäƷꤵƤޤ褷ơʪȥ ѤʤǤ\\ MES#04004 ǥ̾: \\ MES#04005 FDISK ѡƥ󥨥ǥ\\ MES#04006 ȥ: %lu /%lu إå/%lu ( %lu )\\ MES#04007 ϰ\\ MES#04008 礭\\ MES#04009 λ\\ MES#04010 ̾\\ MES#04011 \\ MES#04012 \\ MES#04013 \\ MES#04014 ե饰\\ # print_command_summary MES#04015 ʲΥޥɤݡȤƤޤ (ʸʸ䤤ޤ):\\ MES#04016 A = ǥΤ B = ɥ֥åĴ C = 饤\\ MES#04017 D = 饤 G = ȥ S = ֡Ȳǽ\\ MES#04018 T = פѹ U = Ƥѹ Q = λ\\ MES#04019 W = ѹν񤭹\\ MES#04020 F1 ޤ ? Ǥ˾ܤإס\\ # getBootMgr MES#04021 ɥ饤 %s ˥֡ȥޥ͡򥤥󥹥ȡ뤷ޤ?\\ # diskPartition MES#04022 ѡƥ󥨥ȥݻơΥɥ饤֤ˤϾŪ¾ Υڥ졼ƥ󥰥ƥƱ蘆;ϤĤޤ? (FreeBSD FAQ Ρdangerously dedicatedפʥǥ˴ؤϤ⻲ ȤƤ)\\ MES#04024 FreeBSD 饤ˤɥ֥åΤߤĴǤޤ\\ MES#04025 ϰ̤ˡESDIIDE ޤ MFM ɥ饤֤Τߤ˰̣Τ ˤ SCSI ǥФƼ¹ԤΤǤ\\ MES#04026 饤ϻǤޤ뤫 ̤ΰ򤷤Ʋ\\ MES#04027 FreeBSD Υ饤礭֥åñ̡뤤 Ǹ `M' ĤƥᥬХñ̤ǻꤷƲ (: 20M)\\ MES#04028 ѡƥΥפꤷƲEnter ñ˲С ͥƥ֤ FreeBSD ѡƥ ( 165) ꤵޤ ¾ˤ DOS ѡƥǤ 6 Linux ѡƥ 131 ꤷƲ : FreeBSD ʳΰ򤷤ϡΰñ˶֤ ǤꡢեޥåȤʤɤϰڹԤʤޤ󡣸 DOS FORMAT ʤɤΥġǤΰѲǽȤƲ\\ MES#04029 饤ϤǤ̤Ѿ֤Ǥ!\\ MES#04030 ȥ֥/إå/פηǻꤷƲ κݡ2 ĤΥå (/) Ƕڤ뤳Ȥ˺ʤ褦ˤƲ 줬ʤȤ줾Υեɤ᤹뤳ȤǤޤ\\ MES#04031 ƤäƤɤǤ?\\ MES#04032 %s ƥץǤޤ! 餯֤۾ˤʤäƤޤ\\ MES#04033 ٹ: ϡָ¸ߤƤץ󥹥ȡѤߤΥɥ饤֤ ѹԤʤˤΤ߻ѤƲĤޤꡢǽ FreeBSD 򥤥󥹥ȡ뤹ˤñ Q 򲡤ƤΥǥλ Ǹ˼ưŪѹϥߥåȤޤ⤷ǥɲú ȤԤäƤϡβ̤񤭹ߤ򤪤ʤäƤϡ֤ޤ 񤭹ϥ٥륨ǥԤɬפޤ Ǥˤ򺣹ԤʤäƤ⹽ʤΤǤ?\\ MES#04034 ǥѡƥν񤭹ߤ顼Ȥʤޤ!\\ MES#04035 FDISK ѡƥ˽񤭹ޤޤ\\ MES#04036 ˡץɥ⡼ɤѹƤ⤤ΤǤ? ȥ٥ȤϤޤ衣\\ MES#04037 Ǥ!\\ MES#04038 F1 ޤ ? ǥإ\\ MES#04039 F1 ǥǥ饤˴ؤ뤵˾ܤ\\ MES#04040 ǥ饤󥰤˴ؤٹ:\\ # partitionHook MES#04041 ǥ %s ȯǤޤ!\\ # diskPartitionEditor MES#04042 ǥ 1 Ĥ⸫Ĥޤ󡣥ǥȥ餬֡Ȼ ǧƤ뤫ɤǧƲɥơ ˥塼Υϡɥɤ⤳ΥפΥȥ֥λͤȤʤ 礦\\ MES#04043 󥹥ȡǽʥǥХĤޤ ǥȥ (³Ƥɥ饤) ǧ Ƥ뤫ɤǧƲ [Scroll Lock] 򲡤 򲡤Ȥǥ֡ȥåɤळȤǤΤǡ εǽdzǧǤޤ⤦ [Scroll Lock] 򲡤ȸβ̤ ޤ (ߡܸǥ֡ȥեåԡǤϤεǽѤǤޤVT1 ˥󥹥ȡˤäƸФ줿ǥХϤƤޤΤ ͤˤƲޤfixit եåԡѤ뤳Ȥ dmesg ޥɤˤ֡ȥåγǧǽǤ)\\ MES#04044 ΥץȤ, ǥѡƥ󥷥ʬ䤷ʤ ʤޤ. \\ MES#04045 񤭹ߤԤʤ٤ǥĤޤ??\\ MES#04046 ɥ饤 %s ˥ѡƥ񤭹Ǥޤ\\ MES#04047 顼: ǥ %s ˥ǡν񤭹ߤǤޤ!\\ MES#04048 饤 %s ɥ֥åθ򤷤Ƥޤ\\ MES#04049 %s Ф bad144 νϡơ %d ֤ޤ!\\ MES#04050 %s Ф bad144 Υϡơ %d ֤ޤ!\\ MES#04051 Ǥˤξ񤭹ޤƤޤäΤǡɥϤǤޤ\\ # dispatch.c MES#36001 dispatchCommand ˥̥롢뤤ĹʸϤޤ\\ MES#36002 ٹ: %sפȤޥɤ¸ߤޤ\\ MES#36003 ޥɡ%sפԤޤץȤλĤκȤǤޤ \\ MES#36004 %s 򥪡ץǤޤ: %s\\ MES#36005 MSDOS 뤤 UFS ΥեåԡˤեΥե̾ ꤷƤ\\ MES#36006 ǥǥХեåԡǤޤ\\ MES#36007 եåԡե륷ƥޥȤǤޤ\\ MES#36008 ե%sפĤޤ\\ # attr.c MES#28001 ե `%s' 򳫤ޤ: %s (%d)\\ #misc.c MES#30001 ǥ쥯ȥ %s stat Ǥޤ: %s\\ MES#30002 ǥ쥯ȥ %s Ǥޤ: %s\\ MES#30003 %s ΤΥޥȥݥȤǤޤ!\\ MES#30004 %s %s ˥ޥȤǤޤǤ: %s\\ #user.c MES#31001 롼̾:\\ MES#31002 롼פ̾ (ե٥åȤӿɬ)\\ MES#31003 GID:\\ MES#31004 Υ롼פοˤ ID (ưŪ˳Ƥ϶Τޤޤˤ)\\ MES#31005 롼ץ:\\ MES#31006 ïΥ롼פ˽°뤫 (ʤïĤ)\\ MES#31007 ɤΤǤ򤷤Ʋ\\ MES#31008 β̤򥭥󥻥뤷򤷤Ʋ\\ MES#31010 ID:\\ MES#31011 桼Υ̾ (ɬ)\\ MES#31012 UID:\\ MES#31013 Υ桼οˤ ID (ưŪ˳Ƥ϶Τޤޤˤ)\\ MES#31014 롼:\\ MES#31015 Υ桼Υ󥰥롼̾ (ưŪ˳Ƥ϶Τޤޤˤ)\\ MES#31016 ѥ:\\ MES#31017 Υ桼Υѥ (ĤϤƲ)\\ MES#31018 ե͡:\\ MES#31019 Υ桼Υե͡ ()\\ MES#31020 Х롼:\\ MES#31021 Υ桼°뤽¾롼̾ (饰롼פФ륢)\\ MES#31022 ۡǥ쥯ȥ:\\ MES#31023 Υ桼Υۡǥ쥯ȥ (ǥեȤξ϶Τޤޤˤ)\\ MES#31024 󥷥:\\ MES#31025 Υ桼Υ󥷥 (ǥեȤξ϶Τޤޤˤ)\\ MES#31026 ɤΤǤ򤷤Ʋ\\ MES#31027 β̤򥭥󥻥뤷򤷤Ʋ\\ MES#31030 롼̾եɤ϶ǤϤޤ!\\ MES#31031 Υ롼̾ϤǤ˻ѤƤޤ\\ MES#31032 GID 1 65535 ޤǤοǤɬפޤ\\ MES#31033 롼ץХꥹȤ϶ޤǤƤϤޤ 줾̾δ֤ϥޤǶڤäƲ\\ MES#31034 ߤޤ󡢥롼ץХꥹȤεǽ ޤƤޤ\\ MES#31040 롼 \"%s\" ɲäƤޤ...\\ MES#31041 `pw' ޥɤ۾ェλޤ 顼åϰʲ̤Ǥ %s\\ MES#31050 ΥץϥƥΥ󥹥ȡ뤬λƤΤ ѲǽǤߤޤ\\ MES#31060 桼̾եɤ϶ǤϤޤ!\\ MES#31061 Υ桼̾ϤǤ˻ѤƤޤ\\ MES#31062 UID 1 65535 ǤʤФʤޤ\\ MES#31063 ٹ: ꤵ줿 "%s" ϡͭʥ󥷥ǤϤޤ 򤽤Τޤ޻Ѥޤ? \\ MES#31064 Х롼ץꥹȤ϶ޤǤƤϤޤ 줾̾ڤˤϡޤѤƲ\\ MES#31070 桼 "%s" ɲäƤޤ...\\ MES#31071 `pw' ޥɤϥʥ %d ǽλޤ\\ MES#31072 `pw' ޥɤ۾ェλޤ 顼åϰʲ̤Ǥ %s\\ MES#31073 `pw' ޥɤͽʤơ %d ǽλޤ\\ MES#31074 Υ桼ФơȤǥ뤫 passwd(1) ޥɤǥѥ ɤꤹɬפޤ `%s' Ф륢Ȥϸߤޤ̵Ƥޤ\\ MES#31080 ΥץϥƥΥ󥹥ȡ뤬λƤΤ ѲǽǤߤޤ\\ # register.c MES#33000 饹ȥ͡\\ MES#33001 ʤ̾뤤ϲ̾򤳤ϤƲ\\ MES#33002 եȥ͡\\ MES#33003 ʤ̾뤤ϲҤξϢ̾\\ MES#33004 Żҥ᡼륢ɥ쥹(:bsdmail@someplace.co.jp)\\ MES#33005 ʥ󥹤˴ؤ᡼\\ MES#33006 (Ի̾ܤʬ,:3-14-1,Hiyoshi,Kohoku-ku)\\ MES#33007 ʤν 1 Ԥǽ񤤤Ʋ (ɬܤǤϤޤ)\\ MES#33008 Ի̾(:Yokohama)\\ MES#33009 ʤνǤԻԤ̾ (ɬܤǤϤޤ)\\ MES#33010 /(:Kanagawa)\\ MES#33011 ʤνǤ뽣ޤ̾(ɬܤǤϤޤ)\\ MES#33012 ZIP/(ܤJapan)\\ MES#33013 U.S. Zip ɡ뤤Ϲ񥳡 (ɬܤǤϤޤ)\\ MES#33014 ϿƤ꤬ʤФ򤷤Ʋ\\ MES#33015 ϿƤ򥭥󥻥뤷Ϥ򤷤Ʋ\\ MES#33016 FreeBSD Ϣ(Τ!)Υޡʻ͹˾ޤ? (Y/N)\\ MES#33017 FreeBSD Ϣ(Τ!)ΥޡŻҥ᡼˾ޤ? (Y/N)\\ MES#33018 ʥ󥹥᡼褦(majordomo@FreeBSD.org)Ͽޤ? (Y/N)\\ MES#33019 FreeBSD ˥塼쥿Ͽ򤷤ޤ? (P = ͹,E = Żҥ᡼)\\ MES#33020 饹ȥ͡ࡿ̾եɤΤޤޤǤ\\ MES#33021 䡢Żҥ᡼륢ɥ쥹ˤϡ@פޤޤƤޤ %s ʤŻҥ᡼륢ɥ쥹ǤϤޤ󤫡\\ MES#33022 Ի̾եɤΤޤޤǤ\\ MES#33023 Żҥ᡼ǤΥޡʻޤŻҥ᡼ˤ˥塼 쥿Ͽ뤳Ȥ򤵤ƤޤŻҥ᡼륢ɥ쥹 ҤƤޤ\\ MES#33024 ޡʻ͹뤤ϥ˥塼쥿͹򤵤 ޤ꤬ҤƤޤ\\ MES#33025 ϿȤΤ %s 򥪡ץǤޤ ˺ä֤Ǥ褷ϿȤľƲ \\ MES#33026 λǡΥޥϳΥͥåȥ˥᡼Ǥ褦 ꤵƤޤ Ͽդ뤿ˤϡfreebsd.org ˥᡼Ǥ뤳ȤɬפǤ\\ MES#33027 ꤬ȤޤʤϿƤ̵ޤ\\ MES#33028 䡢᡼ץब顼𤷤ƤƤޤ 餯꤫ĶԴǡ%s Ǥʤ֤ˤȻפޤ ʤΥޥ˥᡼뤬Ǥ褦˥ͥåȥ ³줿顢 mail %s < %s ȥפƲ\\ MES#33029 Żҥ᡼ɤ᡼륢ɥ쥹ꤷƲ 1 5 ̤Ȥʬ˥ȥեåξʤ᡼󥰥ꥹȤǡ ʤ̾Υ᡼륢ɥ쥹ǼȤ뤳ȤΤǤΤǤ礦\\ MES#33030 狼ޤǤϥʥ󥹤Υ᡼ɤʤΤǤ͡ 򤢤ȤϿϡ%s Ф ᡼äƲ\\ MES#33031 ʤΥʥ󥹥᡼󥰥ꥹȤι׵ޤ ΤȤϿǧΥ᡼뤬 24 ְϤȤǤ礦⤷ 줬Ϥʤϡ %s Ф subscribe freebsd-announce %s ȤԤޤ᡼äƲ\\ MES#33032 䡢᡼ץब顼𤷤ƤƤޤ꤫Ķ ְäƤȻפޤΥ顼ơ %s Ф subscribe freebsd-announce %s\ ȤԤޤ᡼äƲ\\ MES#33033 ʤϿƤ %s Ȥե ¸ޤͥåȥ³Ǥ褦ˤʤä顢 mail %s < %s ȥפäƲ\\ MES#33034 FreeBSD Ͽե (F1: إפӤΥեˤĤƤξ)\\ MES#33035 Ͽɥ򥪡ץǤޤǤ\\ MES#33036 [ ] ͹\\ MES#33037 [ ] E ᡼\\ MES#33038 [ ] annonce@FreeBSD.ORG ᡼󥰥ꥹ\\ MES#33039 [ ] FreeBSD ˥塼쥿\\ # pccard.c # MES#34000 /etc ե֤Ƥޤ\\ MES#34001 ͥΥ /usr/src/sys.2.2.8-RELEASE ХååפȤäƤޤ\\ MES#34002 ͥΥѥȥ󥹥ȡԤʤäƤޤ ˤĹ֤ޤ (486/Pentium ޥ 10100 ʬޤ)\\ MES#34003 åץȥåѤΥƥХʥ򥤥󥹥ȡ뤷Ƥޤ\\ MES#34004 PC ɥȥ餬Ѥե꡼ʥɥ쥹ꤷƲ\\ MES#34005 PC ɥȥϥɾ뤿˥ΰѤ ¾ΥǥХˤäƻѤƤʤɥ쥹ꤷƲ ⤷ʤΥϡɥФƾܤͤ狼ʤϡ ޤޤˤƤƤ (ǥե == 0xd0000)\\ MES#34006 F1 Ǥ˾ܤإ\\ MES#34007 PC ɤѡ֤ǤʤIRQ ꤷƲ\\ MES#34057 PC ɤѡ֤ǤʤIRQ ꤷƲȤС⤷ Υ󥹥ȡեåԡˤäƸФǤʤɥɤꡢ 줬 IRQ 5 ѤƤʤСΥ˥塼 IRQ 5 ɬפޤ⤷ CardBus ޥѤƤʤС Option 3פ뤤ϡOption 4פ򤹤ɬפ뤫Τޤ\\ MES#34009 F1 Ǥ˾ܤإ\\ MES#34058 IRQ 1 Ĥͽ󤵤Ƥޤ\\ MES#34059 IRQ 5 (: IRQ 5 ˥ɥ)\\ MES#34060 IRQ 10 (: IRQ 10 ˥ɥ)\\ MES#34061 IRQ 1-9 (: CardBus ޥ)\\ MES#34062 IRQ 1-10 (: CardBus ޥ)\\ MES#34012 PC ɤΤο /etc ե򥤥󥹥ȡ뤷ޤ\\ MES#34013 FreeBSD PC ɤѤˤϡĤ /etc ե С촹ɬפޤκȤưŪ˹Ԥʤ ƤǤ礦 ⤷κȤԤʤʤϡ[Cancel] 򤷤Ʋ ٹ /etc/rc.conf ФƹԤʤä (: ۥ̾ IP ɥ쥹ܡɥե졼ʤ) 򤹤٤̵ Ƥޤޤꥸʥ /etc/rc.conf /etc/rc.conf.orig Хååפޤߤޤ\\ MES#34014 PC ɤΤο /etc ե򥤥󥹥ȡ뤷ޤ\\ MES#34015 R ִ\\ MES#34016 /etc ե֤\\ MES#34017 ͥ륽Хååפޤ\\ MES#34018 PC ɥݡȤͭˤϡͥ륽Фƥѥå Ƥơƥѥ뤷ʤФʤޤ󡣤⤷ѥåƤ ꥸʥΥͥ륽ΥХååפȤäƤϡ B Хååספ򤷤Ʋ⤷˾ޤʤ (㤨 ǥʤʤ) [Cancel] ܥ򤷤Ʋ\\ MES#34020 B Хåå\\ MES#34021 ͥ륽/usr/src/sys-2.2.8-RELEASE˥Хåå\\ MES#34022 ͥΥѥȥ󥹥ȡԤʤޤ\\ MES#34023 Υ󥹥ȡϡͥ륽ФƥѥåơΥͥ 촹ꤹȤưŪ˹ԤʤȤޤ⤷κȤư Ū˹Ԥʤʤϡ[Cancel] ܥ򤷤ƲǤʤ С³ԡפ򤹤뤳ȤǺȤ³ԤǤޤΤΥͥϡ /kernel.old Ȥ̾¸ޤ⤷ͥDz餫 ϡboot ץץȤ kernel.old ȥפ뤳ȤǡΤ ͥǥ֡Ȥ뤳Ȥޤ\\ MES#34024 F1 Ǥ˾ܤإ\\ MES#34025 P ³\\ MES#34026 ͥؤΥѥåŬѡѥ롢󥹥ȡԤʤ\\ MES#34027 åץȥåѤΥƥХʥ򥤥󥹥ȡ뤷ޤ\\ MES#34028 Υ󥹥ȡ 2 ĤΥƥХʥ (apm shutdown) ֤ 1 ĤοƥХʥ򥤥󥹥ȡ뤷ޤ⤷κȤԤʤ ʤϡ[Cancel] ܥ򤷤ƲǤʤϡ³ ԡפ򤷤ƺȤ³ԤƲ\\ MES#34029 F1 Ǥ˾ܤإ\\ MES#34030 P ³\\ MES#34031 ƥХʥ򥤥󥹥ȡ뤹\\ MES#34032 PC ɤ\\ MES#34033 APM PC ɤΥݡȤͭ/̵ޤ⤷ͥåȥ μưʤɤεǽѤϡPAO-FAQ (http://www.jp.FreeBSD.org/PAO/#faq) 򻲾ȤƲʤAPM μˤϼΰΤ¸ߤƤȤȤդƲ Τ褦ʥޥ APM ͭ뤳Ȥϡƥ९å Ǥ礦⤷Τ褦ʥޥ APM ͭƤޤ ϡUserConfig [Boot: -c] Υ꡼󤫤 APM ɥ饤Ф̵ Ʋ\\ MES#34034 F1 Ǥ˾ܤإ\\ MES#34035 A APM ͭ\\ MES#34036 APM (٤Ÿ) BIOS ͭ\\ MES#34037 P PC ͭ\\ MES#34038 PC (PCMCIA) ͭ\\ MES#34039 å %s: å\\ MES#34040 å %s: "%s(%s)" ݡȤƤʤɤǤ\\ MES#34041 å %s: "%s(%s)" ɥ饤 %s Ƥޤ\\ MES#34042 줫 PC ɥȥȥɤνԤʤޤ⤷ Υ󥹥ȡ PC ɥեåԡ鵯ưƤϡ줬 󥹥ȡѥǥ (PC ɥͥåȡSCSI ) ȸ򴹤 󥹤Ǥ󥹥ȡѥǥ [Enter] 򲡤Ʋ ⤷ޤ PC ɥ󥹥ȡǥ³Ƥʤϡ ³ [Enter] 򲡤Ʋ Ǥʤϡñ [Enter] 򲡤ƺȤ³ԤƲ\\ MES#34043 PC ɥȥƤޤ\\ MES#34051 PC ɥȥ %s Ǥޤ\\ MES#34044 %d Ĥ PC ɥåȤȯޤ PC ɤƤޤ ( 20 )\\ MES#34045 å %d: ʥɾǤ\\ MES#34046 ɤ 1 ޤǤ餯ʤΥɤ ݡоݳΥɤǤ뤫ʤꤷϡɥλͤ ʤΤǤ礦⤷ PC ɥǥХ饤󥹥ȡ뤷 ΤǤСޥ֡ȤƥϡɥιåƲ ܤϡ[ENTER] áơʸ˥塼 PC ɤξϤ ȤƲ\\ MES#34047 Υץϥƥब󥹥ȡ뤵줿ˤΤ߻ѤǤޤ ߤޤ\\ MES#34048 Υ˥塼ƥϡ2.2.8-RELEASE ƥब󥹥ȡ뤵줿 ľ˻ѤǤޤ⤷˲餫Υѥå򥫡ͥΥ Ƥ硢ϼԤ뤫Τޤ󡣤⤷ưŪ ˹Ԥʤʤϡ٤Ƥμ [Cancel] 򤷡 /stand/PAO/bin, /stand/PAO/etc, /stand/PAO/sys ˤ륹ץȤ ưǼ¹ԤƲ⤷ 2.2.8-RELEASE ʳ FreeBSD ΥС 򥤥󥹥ȡ뤷Ƥϡ褷Ƽ¹ԤʤDz ܤϡʸ˥塼 PC ɤξϤɤ߲\\ MES#34049 FreeBSD PC ɥݡȤϥѥ롢󥹥ȡ뤵ޤ ΤΥͥ /kernel.old Ȥ¸졢ޤ GENERIC Υͥ Ϥޤ /kernel.GENERIC ȤƻĤƤޤ⤷ͥ 餫Թ礬ϡŤͥǥ֡ȤƲȥ ֥褹ˤ PAO-FAQ (http://www.jp.FreeBSD.org/PAO/#faq) ŵŪʥȥ֥褹Τ˽ȤʤǤ礦󥹥ȡ λrebootפȥפơƥ֡ȤƲ\\ # tzsetup.c # MES#35010 եꥫ\\ MES#35011 ꥫ -- ̤Ȥ\\ MES#35012 \\ MES#35013 ̶˳\\ MES#35014 \\ MES#35015 \\ MES#35016 ȥꥢ\\ MES#35017 衼å\\ MES#35018 \\ MES#35019 ʿ\\ MES#35020 %s ˤ\\ MES#35021 %s ˤ硢\\ MES#35022 硢򤷤Ʋ\\ MES#35023 򤷤Ʋ\\ MES#35024 ʤξƱӤˤϰ򤷤Ʋ\\ MES#35025 ά%sפŬǤ礦\\ MES#35027 Υޥ CMOS å UTC () ˹碌֤ǻ ޤ ⤷ǤϤʤϰλˤƤϡǡNO 򤷤Ʋ (Windows ʤɤƱޥǶ¸Ϥ ꤬Ǥ)\\ MES#35028 ॾ\\ MES#35029 ϰ򤷤Ʋ\\ # devices.c MES#37000 ǥХθΤԤʤäƤޤ Ԥ (Ĺ֤礬ޤ)ġ\\ # dmenu.c MES#38000 ŬڤʥܡɥޥåפĤޤ󡣤ߤޤ\\ MES#38001 ܡɥޥåפ򥤥󥹥ȡ˥顼 %d ȯޤ\\ MES#38002 %sפФǡեɤְäƤޤ!\\ MES#38003 %sפФǡեɤְäƤޤ!\\ # mouse.c MES#39000 ޤǽˡޥץȥȥݡȤ򤷤Ʋ\\ MES#39001 ޥǡưޤġ\\ MES#39002 ޥươưƤ뤫ɤǧƲ (ܥϸ߸̤ʤȤȤ˵ĤƲ) ޥϤưƤޤ?\\ # Summary # anonFTP.c: 17000 - 17028 ( 26 messages) # attr.c: 28001 - 28001 ( 1 messages) # cdrom.c: 01001 - 01014 ( 7 messages) # command.c: 02003 - 02003 ( 1 messages) # config.c: 03001 - 03067 ( 27 messages) # disks.c: 04002 - 04052 ( 50 messages) # dispatch.c: 36001 - 36008 ( 8 messages) # dist.c: 05000 - 05013 ( 11 messages) # doc.c: 19000 - 19006 ( 7 messages) # dos.c: 20000 - 20001 ( 2 messages) # floppy.c: 21000 - 21009 ( 10 messages) # ftp.c: 06010 - 06013 ( 4 messages) # index.c: 22000 - 22127 ( 71 messages) # install.c: 07001 - 07111 ( 77 messages) # installUpgrade.c: 08003 - 08068 ( 46 messages) # label.c: 09001 - 09604 ( 63 messages) # main.c: 10000 - 10003 ( 3 messages) # media.c: 11000 - 11028 ( 20 messages) # menus.c: 00001 - 32096 ( 747 messages) # misc.c: 30001 - 30004 ( 4 messages) # network.c: 12000 - 12016 ( 14 messages) # nfs.c: 23000 - 23003 ( 4 messages) # options.c: 13000 - 13048 ( 39 messages) # package.c: 14000 - 14016 ( 13 messages) # pccard.c: 34000 - 34051 ( 52 messages) # register.c: 33000 - 33039 ( 40 messages) # system.c: 15000 - 15005 ( 6 messages) # tape.c: 25002 - 25002 ( 1 messages) # tcpip.c: 16000 - 16034 ( 28 messages) # tzsetup.c: 35010 - 35029 ( 19 messages) # user.c: 31001 - 31080 ( 45 messages) 88||||88DDDDDD>> < pp<""<($"> < 8DDD8Ĥ >PP > 00 ``$$$$D @ |B{@@@xDBBBBBDx:FB<

8DB<|;DDD8@x|@@@\bBBBBBBx>D8@@@BDHXdDBBxlbBBBBBB8DD8DBBBBDx@@>DD<2" :FB@<¼ ""BBBBBBF9ƂDDD((DDDD((((DB"$@~D"B   ` <<~~<<TTTTTTTT8888888 $HH$ B{ B{$BB{2LB{$$B{$B{l>Pl:FB< 08DB< 8DB<8D8DB<DD8DD80x x$Bx$$xd$ | 4dDL 88 BC AA@@@0`DF BB@@@0`??@ 0??@ 00`  `05e  `0  `G@@@@@P`0 `% % ` G@ @ @ @ @ P `` @ 0 0` 0` 0 pPP p @@ @ @@ @`%       0 e |0 `@~  |0 `@~0 80p 8p 8`8`8 8  8    0 ` 8l1 ""+1 79)mGB:GDMN8;y  8:hDN;0!aCBFL8p ` G@ @ @ @ @ CD8T,df# % ` G@ @ @ @ @ CD8T,df#~ 0    00 ~ 0    00   @@XCpA  0``0 (( 0``0  '` @ @ G@ @ @ CD8T,df# '` @ @ G@ @ @ CD8T,df#?? !2f DLX00` 8HHHH8 @@ @ @78-eGBO9p?? ` 3` <@ @#fLLFHBPBPB`F&L#@0 !` 0 8  0``  0  y  8h`  0 py  8h 8>p1@@ @  @@0@ B F`L@8 0  0 80 0x0`?     0`?@@@@@@ @8@@@@@@@@@@ @@0@`@@? 0x? 0x8y<@@` 8y<@@`  0 ` 0 `  0 ` `@  0 ` `@????0 `0 ` 0 0`< 0 0`<?0 ``0  p?0 ``0  p0 0  0 0` 00 ` P0` 1`80`Fb#1 0`??p  p 0` 8?0`0q0`@ 8 0  0` 0  0`Ii&00 `  i#> 0? 0`0 `8))f@p 0``0 PP 0``0 0H H0``0    1a     1a  01 a 0 `` 0`0 p 0` p?< 9@@  @@@@@@@@ ? 0`0`@@@@@@ACFLX0p`` p ?    0`0 0`<  0`@HP`@H0@@?$D$D?@@$$Kf #""""" "D:"&$,a? @ @ @ @/ @ @ @`@@@@ '!!!#"":Lh"8&$8$lm@P|1D#DzDDL @A0c>HLD@@~BBfB$B,~89`pp @08x  8   &#!   .68b   0 a!  '    0@ @`⡦#,'8-!!!l!' $d2"b B8"2?`K"B?!!?!!?   8 >b084R3P 8@c00h ( $ $' '$$$'8c-c 1 b& 4$dDx@@@@~@@@@@~? ? ? ?p@AA_ACBFbL2X@@@@@< 8hbb2222bbA A00AI 0c 1@A@ ` 01  ?!!!@` 08 0  00 HHHH|Q]QSP7pb  xHh(88n '"Bf!$# '8!# & p!ga1 l 2"bB? `!0!%%%-iI #"""""#"""""":" ` @~@@@@TTIHHH8T(T(@l@D~ @ @'!"#"# @%"% ( 0 `0@@ @BF\0pp@@@@AACb> 2#b""X"p& $p,!#0#bDD"D"D"D#    0 g$$$$$$' >"""""""1"!"#"b"B>8@@ qq?!!?!!? 01  1!c` 00   @9&4TPS8\` HA_AAOHHO@     #bHH"H#   8b2|DDD%% % %$dP@LxFB@@Bf,89m;OIIIOIIIO@ `080` p8 p >b"D"bII(I(I~HAAA@@@GD"D"D"D"G@@@ ' ""# '8a @@@XDTDTDD TYU$$$DDD8@@@D~A@(@8@B8b(>la3a$!$$D2D"Dc@8?!!?!!? 080 @ F>| @ A C>~~~BB~~BB~~@OBBBB_BBBBFBLB@}EMIYQKD EEEYAAA    1 !0a8, &#  0 ` @A?? '$$$$wld$$'U,% C| |`l|2f|DD4Df|<0``8 #" " " :`D"D"F"&$m@@X804x0SPP!#V  3R 0p !e0H =fd$$$<"3 @_ !83|DTU|DTlT(|88l{HIIQPKJRJKJZB"B"B&"3 @@0a7   4,g@ `98AAA`<3 g  2"bB""">">"TT1W!`#@bB  H$1?!$!?c$B? ?@ 0,' RRR"P@@   !038(l|ED||DD}HD@@_d@,_8Q_9̀$$Kf #""'""#"#"#!&!!#'"R"R"R:""' P !g  A~S~8(T(RlD1  ?aS$(8~(H(~lHDg0"b"#  7 P`A"# '#"# a8,#  H ~B@B~>H?$D$D$D  ?H@O @>H~~BB~~BB~~@GD"GD"G@0<#&X3 @K@|DXU8lp~~BB~~BB~~@GD"D"GD"D"G@@~~BB~~BB~~D"BBOAA_BBFbL2@$$}DD|DD|HH8-gA|DD|@@|~DBDBDB|~ p8 @ ?? ' @ @? @`@@@@@!!!?(D_>Q"Q"_>Q"Q"_>D"U"> c` 00 @ '$$$$8dD~~BBBBBB~~ ~~BBBBBB~~/@A?@ 08 ' بp p 88z @@(BBBBN@0d(>b? @8d,(d1@~BHBH~HBHBH@@DD8^(ri"">"""">>"""">"">"""&bcB? 8!""$&""%"gp"k #"&$',PQPQPWT!T!"2"""b& ? o?H  0G 0|ֈl8l 8@41RT8,HfH@||||DDD|~p~~@H@O@HAHch>X@@ ' #!9 p p !gx x {xHKHyxxxxHHHx0 |  `0!c  0@??$$Kf0!1  ` 0q DBLB@p~ p08`(ll0d|TV҂CBBBBBCBBBBBBC? p?  ? @ @? @ @/(hH$$<'$,)%$%$7$%"%'C%,h?"3  08?@|@@}}|DDD|1!'aa!!/ !# &,BB$$~~BBBB~~$($(eiFI0  @ @# D # "/"I"I"I&Y$- '!' #"#";  > x CB"B"z"  ""w!!!h!(9 $$Fd F  DD~,($88(l9c2b#0!aC S R"&$)$( OP vhHKxKJRz^KHH8` h p x    ( 0 8 @ H P X ` h p x #)S"*I#( "D2LH ? 09?  ? ? '$dG ' ! 7>m"e*$j Q! / """II1!#bB!!#&!   28 8(T,Tjɓ?1  @ @~H > """>""""">""bbB `810h `00!1   0`BBBB@@LFC0A@AC0F\@p@DB@ @~p?}E"M"YQ"Q"IH KJ!J)Z=BBB|0D`D|l1)e)QXTTA~c"~>  ~"""><1#ab / A"H"L&F,C @"""""""""b?" ""0"" ""0""bB Bp!!!!!! 9.1#""!`  `  1 1`ll80leTT1Ia**m1e**UIU||||DDD|$ $~,zJ,}? ?Bf|,T8Tl}TT|@`3"""""""& 0 hDDIDIDIc?     !03? @ '$$'$$' @bHFLG`0d%T\H5$l5Hgc2‚b"2&TdM0"#"#""#8}EMIYQIE!E3EE]A AG4$B$BedBB$$$$$$' <"&$$ @AA_AAGD"D"D"G@?? 0@@@L|hD8DD8D(Dl||ED(DDE||Q\ P@PP\p?  @1cɰd0g!#& p!'2#dĉ7 `$$$', y |DDD}|DDD||||}DDDD}H{H{yxKHHx{0 h 0`p80(+hh+ ( /(P(X(!#  0 2b 0 p@@@@BBBBp"c"61!#6bbB@@GD"D"D"D"G@@@@ ""&dDL2bp? 0 ? #"!# 8 '`?!!?!!?  8HHHH38 5Q"Q"a7a" #"bC0`lD1dDDl8TV8l? 8 x0`0p8?pHxHKHHyHHKH yI"II"{)m@|@DMKHX0PSHIHH[@@@ !!!!!!!9? 01 @OHHO@@ p8""0"b""l""3"f1?!a@OAAAOAA"AA_@?!!?!!??$Dff#c0  pP0h `070 `@AA_EBEbM"I2YAA@c2b#3"bC@@0@`@@@ ?0?@ `01? "H"H"H%T%T( @o@@@ ""1! c & +" " #" " #?!!?!!     ">"B>f",">< ` 7pa'1!cB0`Ēl0dTVҒ$&"  2IIbyK"NITPQNHHKX A$C&F#@   3P    884(2hPHPȑ8 #Pة$$$1 # f > > ɢI"""A"A""A"A""AAAAG  ?hPĈ?!!# `98BDB 9@@DD_TTTTԂ $ ,($%HgH~HHH8~4HRHH?  09`8<8?AAAAAAAAA$ $ $?$dD~(B(~8B~8B(BlBFF0 ? $@'(@ @g@@@ @ @~I   0 $ "!< %d Et 280c@@@@0@/`@@ @ @ @ @ @ @'    3""b""# ! @ !'AAAA3 8xDBDBDBDBLBHbX>p@@  `DF$$%dLH4`?0`?!!!!!!?!!?!!!?$$Cd q? 0` p8!#<$$$%$dDD~ 0   8`4DRDPF|DED|EDD|lD8DD8Dlƍ  ? ? 0|HHI x xxxHKHx`9"tsp?!???@@0`    Dp Da1FD@@0!aC ?1 a?   ?   ?   ?DD}DDDD|$&"  0 > x (yH{)*{J$J%Kx?!a@` 00 >| @?$Hdp@A@`8 0|? @8qB_sBRsJBwQBRBTBp0 ` !!!!!!!T08TP?""B"B>F"d","(>8""8"(>lF@@   ? =%$u\TTT1` 8  "95"QP   } ."*Q$]&QS3P!p x" ? 0``8KHHHHHHHXHpH xpX ?  ' / '$$$g@TVRҊ0 `2(hp/(`)(8)( x# ? 09 <  p8  ""&$, 8p4PTPPؐ@0@`ĄmX00dxpTV8 ?$D$D@1oX`01a @?? ? ? 09` 0 ` # '   ?L@@@ @@A0c>1 ` 0 ! a> ! ! #"&8,?0@p 09??!?!?? CR` I>+"!">""!"!> ~B$~$~d4U8$Dff#!!!!?AAAA@1n! a1%DeDD%D-d)$!! $`&0"  $$&"# 0 ha3 k 2 b 0`l0dTVETTTTTTTTTTD | D>D"D"DfDTDDD6c"" """6"|bBBp@>@""D"D>D D D `ADBDB????? ? ? |"$$|(| ~|BD~DBDB|~ | D D E|"D"D"D"|bDBDBD~ |pDPHISVH H KH I$Y$C&F#@ DBDBH~pGD"D"G@@Ih!) 8d @`8<CfS$0qD1 !aA1 !a0`x A"2 A1Ap # B B !#8!!!!!a3C8@4@T@PĐ b"3&$ b"3"bB a 1>  ` !$&#$0l `0@ǀTTUЂ9(H,HdA}D"DbD}DDDD|$Dff#? o @ @b@|"@"@b@B@@ 10@@@08T4TTPp 7!o5_'eD!'!!/ yxxxHHKx|D||}DDD| 0@!!? r q | ELHH[PQIIIIX C@ @   p88? 01 !!!!! '!!:Id3b!1 @OH?!!!!   UP    v 09 $H&h"(    8phPX ?!?!?~B9B5~5BQBQ~BB~0# Z(1H'H&*".$%#  0@!!!!? 0 >bDIIIIIIIIIAA A q 0!`! #"""#@O  ? @$ $$d D  ' !!! ' !# #""""#:HI"K"J&L$D,vaxB@f@$DDDD(D,DjHɄg4f 0!c&F# AAAAAAp|8(l}0d|1|DD D8|  hx8a1     0h8,f@Pp@` 00 `1 L``0 a1e 1`@CYLD@2Cb@AbG2\@ D !%!!9!!!!!ac 1BF0h&#0hzKIH>P"PbK>I"I"I>I"Y"C&FL I k *D(.$k,(8"&8|,f9-g$$DRDRDBDBD%%$lHH4a    US      HLD? @ @>B"f"$","8"&9dkL ?dII,*4kf?1a?!a?  Q 95UQ(?"H"""IIKD h08@@@DBDBLBXbp>@@@94HTHPH     84TPD?p | D GDHDH|HJQJ_KRIPHP\q8 # B B&B??     ?@_?!?!!? p  `@ٖIIIII5g a7b$Q2#bB0 `Ăl0dZT\TԖ0O`/ '!!/"lP(8$, e@   2Ppw 0 >"D"D>D"D"D>D"D""& ? (,$ 3j((,lD0$DdFFb# p8 # ' 8!!!!!aQ!!Q11Q7# !"xHH!I I>I {?քT84TP?` 90`Ąl0dTTԄ84R$$Kf  <# ' #"":"""""# ` #"R"R; ' !#&&#` `0??842PPD0D`ţl d0Dd~T(Tԣ    H o(  8  h0x?9-ga0  pP3h! #"!!#"!"!# 9  $? /)/(\/)o@g|DEE}EEE}DDD|(l a 1   1h 2"c ! !>! # "&p,~"B"B"~"B"B"B"~"B"B"B~$f~~BBBB~BBBBBBB~B@BBBBBO^y@@@g4RRRdR$R$R$R$RgBFn9-g ` 7 """&#0 h? ? ' @'$D' @/hRHz0al0eIHTHVHɐ 0p       #"" #";#"#!#f   .2:"c""""&" " ""#!0v` x~Xp>@` 00 ?# 1 0 |p8@@@0@/!PaPX#H"L"D&F- @ @ @f4d43aAA?!!!! 0 #`  7 `!!    0&b< !~B~&B<~ B!F$d??$?$?`~(2L` ,&"0 '` 0        ?     ?@` 00  @ @~AA 9~B~~BBBB~~BB~HBOBH~h$B@@2A? !!!!!!9!!# "&la1a!1# bFDxDDDx x@@yBHBHBHBx~~~BBBBBBBBBBBBBBBBBBBB~N@@@ ` 3    0 hD|LH}||DDD|"3 ?!!?!!? '$$#& 8 !#&&#`  !~P8,&bD@HIHX QIIqIIIK@@"@"_@"D"F"B"@"@"@@DUxU@U@D@_DDNDMDUDDDDD@Dp@@yC@y@@@HxX0@Cx(xlxyI(HlHy   1%e%%%%%%$' ~HBBBBBBBB6B"~c ! ! !&!:b!'"!"!"!&9 aDBHOHOHO@ ?ddDD^,(88(lpg4   0 h @ @~I ~ 8 ??AAAAA?!!!!?%$dEF ``0  `  0 ` G?`8 yAAGy" 6   w5H%He_20 'a '!!!'  $&" 8. !!#fy}y}y}EyEI}IIz~""bBH~NBHBHBHBh~`0p qHHOHHOHHO@ p!#&# `#  q#8p `@33hg0P""""""2&h '$$ @ !F&l 90h&c2"c"""#. /   1!a'$% @@9-g@@? >$(/"**dD  !!!!!9!!' '` !!!!! '8 !>! #&l?;4 T Q  0aDll(1eTVҖxDlx(yxHHHx|EEGD|bD"DDD| 8 ` 7""2h@@@?$D$D$D?$D$D$D8@` 00 ?  ?""/""?$DdhD0ǜ `x7a# , $dLH~BB~BBB~BBB~$f>IIII2"/y?    ?$Dff# 0 g !! !!>#&AAAAAAAAAAA}=|?!?!? ` 7DdD$|4,lh8XÇ?fc,60  0 `p0  $&#0h # " &"!?!!!!?!!'! ? ? !/!! /"#a@ø"" !!!#& ;! p !g ' p !'w8!!!!a?!?!!?@ `01VT8(,dF8!1  ???@@?h? p@@>h p8 0 c@l1dKHHHTHV҉ "!"a"O""""8|||d$|DDD| `83 $#6h~|BDBD~DB|B~DBlB(~>$f?!oi)))/! /!#.2 f|II1!c8@@O@@GD"D"D"G@@@@o0@3h8a?@3h@BOBA_BGJBC@1a1` '!!  8@0@/`@4$g !f%#%-( P QP sD P #""R"""2"3P $$>1xxyIHxHHHHIHyDBDB @~p@` 08?  ? @ @/(B(B(B/hBHBBAACBFbL2X@@@@@D"BBOAA_AAAA@@@Aӓ8((lD"$"(HIIH~HHHH6HcH?@` 00 < 0 ` # y"xFx 0xRICIEKDz<|"Kt$u$Dff#0` p80 $$Kf0`m19e))mEYU 2&"< !3AA A&A< A!A3CAzcK"I&IxIIMIiy9II9ImIE #"""""""""#:"""#!``<3pbB"FlpP2X&LdFLC@ !!!yIBIFIdI,Kz<f@|@D@D|EDDDl|(D8DD8|((llŃ0 8h4l4QS#     UU>U g A A  A!A3@@3 !a #""""#DDD|$D$D$|dMHTT4a?@DB@ @A0c>?    ?     ?PFb,4?'   !03 @ @ @'@ @ 8!H#x&0 x cɢI"""""""!1 ? ?$& "#0!`A08HHHHH~@@xHHHII6c >*,R6 c Bq ||DDDTUDDBTFTdT,T8Dlƍ|DD|DDD|DDD|)m6c?  09  0 c!"2 c""L&x$0,x # @ @ @ @ F>\ p @ @ @ @ @ @.A8c> "D !pGd$/,4$$gP   ?   |>  < ?  0 q1!a 1!'d%"%%"%"%%")"!&?  ? 8' / ?`@~ ? 0 / 8!o@0$$$f$BdE ?    ?    ?HII;41PS $&#@DBDB?1 ?@ B8f,0 x||TT}|DDD| ' #:""""#""""""c  # 8"4&TP 0`~~BBBBBBBBBB~~Q^PPTV4 D0@` 01 7 `!      8@` 00 @_?!?!!? @@8BhBBBBN@@ 0  $$4,( p@p|DMIYSU$I4IIIYAAA HHHH>bHH 8?A#c""&"$!!!A!A'A A  ?  /!/)()(/!!!,c^?!!?HHHH1#f1!a!#& p!' 4x@l8l@@@@>vQQQIIII1!c  00 ` ppH0H`Hl3d$$$TdTD̑8 0 `` 08~~BB~~BB~~@_D"GD"GD"G\"@.!1   ":"6r2RRR?!!"? Q?"A"A"A"""""""1#b $$d&#  0v`x@@@@0 `1`l0dUUҪ`7BBBBB0hc2X0x3h 2"""c"""# "`!@ !' p      0 `  1!` ' !!$#&&#  1 0`< 4xԒ @ @~ѐ"g0 "c"" 7a|Dl(|@@@D,(82"8&(dlD̓ 0 ` 0  ` '@@0 aA$F$ f|D | D | D?xKHKxKJ&KxJ!KcIBHˌ | D OH@X@P@H~DBDBDBD\@AC@@@F\p@@@@@@tAc> ` D|"D"D"D"D>\@@ @p?!!!?@@ @A0c>D"D"GD"D"GD"D"D""2"""fbB B0a 8?  ? ? !a`C0~~BB~~BB~~@@GD"D"D"G@@@D(p1a@@` 00 1a6`!! p !'@0@`@l0db2TV||||DDE} p!wRRR"R"B"B"DxIKMIIIIIy 7d?!!!!?!!!!?DD8 l4xԂ|$$$$p~BI~III q @ p81 a `@@Hs p8  8 70 S#Q8#a0 ` !   7 ` @ ? ? ? `@@?$D$D$D?0`x| @!'>$""$"$"$"<""$"',. ` $ $ f A8,f8~(B(B,BdBF~  @` 01 84RPD 0 `~m00dlTV҂   `9Xpq1a  x        A A A!A3 '$Q$Q't!m$$$!$q$$# H?@A>H!#""""""")"h""""#"""# #8 $lHȓHH~HHH~HHH 3 "`""0"#` # ' dL2H7` 0  `@@@@ بpܯx@@D1D#~b?!!?!!?B_BOHOHOF 1 0`AAIIIIO@@@@d4Td8$4RP<X`p?9,f8$$$$,D ! p<?!?!!? B 9T~B8BT~BB~BB8~,$ff 1 ! #bIbII- !!#&,?A]zAx88?BB_BGZB@@D@~@@?9m 80al0dTTTVҒ ` 7 """" 0 h @|@D|DE|h8lQ\PPP\p?!A#A"&A$A"!@!B!B!O!y' 8,d@֔TT8P\qp xpxyRRyIRIRIRyV|}||DDD| ` 7ĉa 2#`@################################################## # # Configuration file for KON # ################################################## ################################################## # REQUIRED ENTRIES # # 1) Normal and Startup entries must be present. # 2) For VGA and VGAFM type displays, Pels entry # must be defined *after* Normal entry. # ################################################## # Display definition # Entry named `Normal' is used as default. J3100SX:J31:J3100 J3100SX Stealth: VGA 800 864 1016 1064 600 606 608 632 2 99 36 PCI805: VGA 800 864 1016 1064 600 606 608 632 2 99 36 VGA11: VGAFM 3777 640 680 776 808 480 491 493 524 1 79 42 VGA12: VGAFM 3BF7 640 680 776 808 480 491 493 524 1 79 39 VGA13: VGAFM 3FF7 640 680 776 808 480 491 493 524 1 79 35 VGA14: VGAFM 7FF7 640 680 776 808 480 491 493 524 1 79 33 #VGA:Normal # VGA # 640 680 776 808 480 491 493 524 # 1 # 79 23 #VGA:Normal # VGA # 640 664 760 800 480 491 493 525 # 1 # 79 23 VGA:Normal VGA 640 680 768 800 480 491 493 525 1 79 24 # Pels: Pallette value definition for VGA, VGAFM drivers REVPEL: # Values for reverse color 63 63 63 63 63 21 63 21 63 63 21 21 21 63 63 21 63 21 21 21 63 21 21 21 42 42 42 42 21 0 42 0 42 42 0 0 0 42 42 0 42 0 0 0 42 0 0 0 STDPEL: # Standard color 0 0 0 0 0 42 0 42 0 0 42 42 42 0 0 42 0 42 42 21 0 42 42 42 21 21 21 21 21 63 21 63 21 21 63 63 63 21 21 63 21 63 63 63 21 63 63 63 HIPEL: Pels # Hi color 0 0 0 0 0 40 0 40 0 0 40 40 40 0 0 40 0 40 40 23 0 40 40 40 23 23 23 23 23 63 23 63 23 23 63 63 63 23 23 63 23 63 63 63 23 63 63 63 # Startup command definition (usually font loading commands are specified) minix: /usr/bin/fld.minix -n /usr/share/fonts/publicfont.ank /usr/bin/fld.minix -n /usr/share/fonts/publicfont.k14 fontx: /usr/bin/fld.fontx -n /dos/lib/font/new/jpnhn16x.fnt /usr/bin/fld.fontx -n /dos/lib/font/new/jpnzn16x.fnt minix-zcat: zcat /usr/share/fonts/publicfont.a.gz | /usr/bin/fld.minix -n zcat /usr/share/fonts/publicfont.k.gz | /usr/bin/fld.minix -n fontx-zcat: zcat /dos/lib/font/jpnhn16x.Z | /usr/bin/fld.fontx -n zcat /dos/lib/font/jpnzn16x.Z | /usr/bin/fld.fontx -n minix-gzip:Startup gzip -cd /usr/share/fonts/pubfont.k.gz | /usr/local/bin/fld -t minix -n gzip -cd /usr/share/fonts/pubfont.a.gz | /usr/local/bin/fld -t minix -n # gzip -d < /usr/share/fonts/pubfont.a.gz | /usr/bin/fld.minix -n fontx-gzip: gzip -d < /dos/lib/font/jpnhn16x.z | /usr/bin/fld.fontx -n gzip -d < /dos/lib/font/jpnzn16x.z | /usr/bin/fld.fontx -n ################################# # OPTIONAL SETUP ENTRIES ################################# # Mouse type definition. Choose one of: Microsoft, # MouseSystems, BusMouse, MMSeries, Logitech, or None. Mouse: MouseSystems # Mouse baud rate MouseBaud: 1200 # Mouse device file name MouseDev: /dev/mouse # Use hard scroll HardScroll: Off # Length of beep sound (1/100 sec). BeepCounter: 5 # Cursor blink interval (1/10 sec). CursorInterval: 4 # Screen blank time (minutes). SaveTime: 10000 # Use double width cursor on kanji character KanjiCursor: On # Cursor top raster line (0..15) CursorTop: 14 # Cursor bottom raster line (CursorTop..15) CursorBottom: 15 # Vga Font Offset VgaFontOffset: 0 # Save font data in plane 3 (required for Trident TVGA series) SavePlane3: Off Mouse3Buttons: On # Coding # SingleByte DoubleByte 8bitCode # ISO8895-[123456789], JISX0201.1976-0 # BIG5.HKU-0, GB2312.1980-1, JISX0208.1983-0, KSC5601.1987-0 # EUC, SJIS ja_JP.ujis:Coding JISX0201.1976-0 JISX0208.1983-0 EUC ja_JP.sjis: JISX0201.1976-0 JISX0208.1983-0 SJIS zh_TW.big5: ISO8859-1 BIG5.HKU-0 zh_CN.ugb: ISO8859-1 GB2312.1980-0 ko_KR.euc: ISO8859-1 KSC5601.1987-0 # Show `No warranty' message StartupMessage: On  UVS]KS{t u9wp9t!8t8/u p5@8u5pQ3fPYU1UU1Service unavailableU帟boot_crunch%s: %s not compiled in UWVS} ?t8u-j/7 tp7=t(3Vit;u;t WuCVhhhde[^_UVS]j/Sd ޅtp=t"3V iu  ;u1e[^UVSu] OSNVe[^usage: %s ..., where is one of: %sUWVShhhd61 =tO;0׍7Oh)hd3h+hd ;uh)hdjnWpccardcpccarddmount_nfsrouteifconfigfsckbad144cpiozcatgunzipgzipnewfssysinstallpwdfind-shshUuu u$Id: alias.c,v 1.4.2.2 1998/11/03 15:57:34 cracauer Exp $UWVS]SE0tPvSgu8t@ttvJu ĉFtHtt~6ut@ttj;S臉F0} ЍX@PFSu PU F FDU2tHtt ust e[^_UWVS}WƋt~sWfudC t CQt@ttsIs|ISvItHtt ustM 1ދue[^_UVSt@tt1ttt#sHsH؋PH uF&~tHttust e[^UWVSu} Vt'sVdutC u u1e[^_alias %s=%s alias: %s not found UWVS} E}1tt C8tsPh uF&~1qj=FPduBjVÃuVh 5謥E "sVh覥 @PV7uEe[^_aUhFtau1Ð1ɡoƒ8t 2Yoo:uUSU :t B:uȻ'1t]$Id: cd.c,v 1.6.2.2 1998/11/03 15:57:35 cracauer Exp $HOMEHOME not set.CDPATHcan't cd to %sUdWVS1hs?o0u"jhƃu h> >u>-u)~u#5nu 5t >/tjh&EuEsVEPZ#ÃtUEPS|fEf%f=@u΅u ;.u{/u {tVSaǃWS'| Vhm 1e[^_..%s UlWVSE0}P葄euP`5uPu u>/u) Pux u/Fu视E/EeEÅ;t;.u{t}u% Puxu/FuOE/EE߀?t! Puy+EuCFu;u߉n=Puu EuEP5误|fEf%f=*Et@ttu },tHttustc1}uEPtHttustj} t"==t=t5hN1e[^_Ueu1Ðe:/t :t B:/u:u eBegetcwd() failed: %sPWDOLDPWDUWVS&}t ==nt5nBt@ttnu5p%Phte j 5hj 5nhtHtt0}PieuP]Pu u>/tD5u>t% PuyËuFuCu>u݋u~/uPuKSEEu9sPuK;/tu>tEt Puy/Cu>t PuyӂËuFuCu>u`9u Puy裂/C=Puu菂t@tt=nt5n@n5j Phj 5nhtHttust=e[^_ULu5pU#Pht" 5ܡHyPEܡ 1US=t hP/ ulhAÃtU;/uPPht7@PSΪt"9@u9DuS1Pl~<-n-eUWVSEEu u}tuu6u,EPuEuSEE\}uFuFj$ 8!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!g!d!d!d!d!d! !!d!d!$!d!d!d!d!d!d!d!(!d!d!d!,!d!0!d!4!C ? ; 7 3 /0۹uЃwЈFuIxMܡHy PAܡuFu:u>tܡHy P ܡ u6uEu}uܡHyP՘ܡ 1e[^_$Id: error.c,v 1.5.2.4 1998/11/03 15:57:35 cracauer Exp $UE=nu?tj5n[ Utt=mus@ssÐsEjEPjE =mt==t jrjj CjDPD%s: US] st@tttQ=mt5mh"h- uShؙ Hy Pe 1u]UE PujgUEPu uRh% V%L%?%)%%?%)%%%$$E$$$$ $Fv$<v$>c$L$argument list too longsymbolic link loopremote access failednot enough memorytext busyread-only file systemno such device or addressdisk quota exceededfile system fullfile table overflowis a directorynot founddirectory nonexistentno such fileI/O errorpermission deniedinterruptederror %dUSM] #f=#t 9u BtB f:uQht%j hee]$Id: eval.c,v 1.7.2.5 1998/11/03 15:57:35 cracauer Exp $UVSEM Y~|Puq PuyyŠCB;ut Pux y Puyy+PuP!wÃSTne[^U S]EPwjS-U ]je=ttjP/Sw UEPw]Node type = %d UVS]u uTnm;$p''L)@)X((('(((((((X))X)X)X)X)X)X)X)X))jsZ= u =Tnu. =Tnt#jvTn=u4nTnSjV TnEPI } h5-jV1WjVWYuPtstu+7}tj7juu 7jV:u6E{ EPne[^_PATH=%s: not found _UWVSEP_nMM}}Dž|Tn4nTnMq^|t|<vt;_t'v R~ tbD4%tHC<v+;_tv RI tbD4%ù;=ujEPVjEPVDž| vTEE}w gE]t EuE@PVlE]tUCEuEE==t=\nu}~ E@EM)E=] y h+]t5 y h薈 s%ű]t5 y hZ su y h& h}uEE5n]t"jh!0s]F usuVjEPE0u }p}u-}u'E0E4u EMu݋}u,}uE t E }u}t }ju>SƋMYE t"EP } h5-SuVT ZE tEtstpu2}tj2juu2M }j}w 8Ejh8uP5 uE}u?.w }tjuh60 EPep[^_US];u2{t,CpDtnPjEPCpW]U5XnTnUS] }~su9s}s~8cu %t F>t>:u+U0} )ʉU9}bU9|=9ut+]SuWb- /Gu W=t>%uF5t>t >:t F>u>:uFU2 Uu`e[^_rvUWVS1h<V|trujސvuGԡo8e(ftWSu(fr}jV`Ãtf{tf{u=|7nPjEPVt}tjVWS<}oo0u1e[^_builtin %sfunction %sUWVSMfyuEY nMM M}uWV;` KyV|Mfyuȃ Ph=~Mfyȃ Ph=}} tpt@ttMqQƃܡHy P{ܡ Vl{VtHttustYMy tܡHy P{ܡ*ܡHyPu{ܡ e[^_builtinfunc%s not defined in %s%s: %s UhWVSj/u;tU Bjuǃt  [=}>ufÃ|-t@ttjufG_Etfu M WUEuEPÃS ^F=ttm5thW?mt;uÃ|t@ttju fG_5th_?`mg;/u9u| W4EPSƈ}+=p4=p' pME fEf%f==ttR0Pd\SYjuHǃtftSuhd? S\t@ttjufGwtHttuHst?r8t}tjusPuhy?5;zU G WM GAe[^_UVSu<1=<1t&8uVRY8uC;uܸe[^U庬e(fs4t#fxtfxu =|@ u߃(frUWVS5n]E'1E8t}u;:t >:u;uEހ;t.;%u}}CPhW?jt};:uGCF뭐=}}| U=| }}EuUe[^_UWVS}t@tte(fsIt4fzu9z}fzu9=|RwӋũ(frtHttust7e[^_UWVSt@tte(fs<t(f{usSދu؃(frštHttuste[^_UWVSu>tB:uȿe}etVC P5t ]u} tuuqt@tt0Ѓ PW}fCC VC P4tHtt ust}=n؍e[^_U塈t@ttn QtHttustZUVSu t@ttjuÃf{u sffCFCtHttuste[^US]t@ttEu ;EEPSZtHtt ust]UjutfxupY1ø is a shell keyword is an alias for %s a tracked alias for is%s %s is a shell function is a shell builtin not found UWVSE9}mUUU 4r=t8 U 48uVQ2t;u܃;thGIrjU 4tph$GGtjU 4EtPUUBE nPjEPU 4 Eto t stSiunUU 4uBSU NySNG}t9GPhOGs ,hYGZqhoGNqhGBqMG9}Ee[^_$Id: expand.c,v 1.11.2.6 1998/11/03 15:57:35 cracauer Exp $UVSu] 9u1((f,fh,fh(f u)؍e[^US] jjuxn+P5Sx]UWVSU} uB nxnPun|nVr8% Pux xn Uxnxn+PuP`Soot1hoSoooV5o5xt SNjS‰ZooIt@ttnPcntHttust4=nuo=otGooGe[^_UWVSu} UE>~ut WVƃF"vtiDd<u ~@u~=tt Puxn}t$ Pux xn SxnxnF PuxnWV W؃Pnp8nn W Puxxn _Sxnxn>~=}E Puxxn Sxnxnie[^_HOMEUWVSE }ƒUt5 /t:uu EUu΋Uuh@M謵ƃGPL txp>tpU[}t1À: u% Pux xn #Rxnxn Pux xn QxnxnFuE Ue[^_UVSu=|n%95n=ntJt@ttnPntHttust95n~|n|nn5n|nn=ntv|n9p} |n8u|nƒ8tSt@ttP|ntHttust|n:u|n9p~pe[^missing CTLARI (shouldn't happen)%dUWVSUU=Pu  Pxn Puxnxn5xn;t9rK;u;t hOO9v{u;t;uCC;u1{"uG)UR}t CPCPPhOj S"lCuujF)‰PuMxn)@)xnPue[^_UWVS=xn+XDžT8} t DžT9ULt@ttn`ndnhnl|nn\P+PuPILƍEPukWVO`ndnhnln|n\nPu0ۃpHhHu } =pt݅~]pHEFt=Lt"ËT< u PuyMG PuyMLjGMy}pN uPuON> t}| uQ}t u }tu8Tn} uj+PX =xntHttustL<[^_%s null or %.*s: parameter %snot setUWVS} 1E5 nMju=Puu Lxnxn5M nu5u }=EH$S,TS|TTTTjVW+xnxn)Pu}WM MM9tVh#Shhj)sMt'SPWE)HPh0S19s MVWM C9rȐ_9r MVWuuM K9s뜐_9rSWu:K9s{G9nwSWYuC9rS+ +xnxn)Pu8M )@)+xnxn)PuG9t WCF9ue[^_U WVSuM MMFMuE<v,>_t.v Rb tbD4%uEj=V%p}tEPu.E1ۃ3u<Ãt Mt;u1E E1 xn+ M}}}tFE PE%PuZ } =xn+=+})=xn=PuE8}}E9} ur;trGC;uh}t1M< u% Pux xn Ixnxn Pux xnH‰xnCxn;u}u}%E1Ҁ}}M9@u=8utEH K$WWXXXXXXXXW5xnW(xn E%Pxn+Pu}u VU} Pux xn Gxnxnxnuuu+PjVuxn)@)xnPuuJ}u2uuujuVt+eu0 s}tJFuFB|w}tnn؃u$F<tCǐuKue[^_USU] :!u=%:@t:*u.@u8tbtd@u:tS8uQ:uAЃ w9R"98u|#u Lu @uDtt8u1]UWVSU$ ZZ ^ZZ ^ ^ ^ ^ ^$\ ^ ^Z ^ ^D] ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^Z[4u4n8u5xnR: xn11۾ |t/ PuxxnD;E‰xnDxnC~} } =@u}8} t9;<0 u" Puxxn Dxnxn Pux xnD‰xnCxn;u. Puxxn _D‰xnCxn;uӃ?t% Pux xn +DxnxnHt uLt@EE =@u}8} t9;<0 u" Puxxn Cxnxn Pux xnsC‰xnCxn;u. Puxxn CC‰xnCxn;uӃ?t+}t% Puxxn CxnMxnLu}t|8} t9;<0 u" Puxxn Bxnxn Pux xnB‰xnCxn;u'; Puxxn ?B‰xnCxn;uЃ R/ƒ98u@u\}8} t9;<0 u" Puxxn Axnxn Pux xnA‰xnCxn;u. Puxxn SA‰xnCxn;uӍe[^_UWVS]u }=|nunj)>¡|n|nZrz e[^_ UWVS}=|n]En]MYI Mu%Ht u LtMEI_ EsEހ;uCPu}uPhI_%E9u}t {j=‰zM AQC}uVGހ;uCPu(t%PhI_u}t CECEMA9rCEMA9M M?u }u9}sj=‰zM AQe[^_UWVS]=-SB<*t u EEuFuEU:uB:t:uB:.u}Exu Ãtn{.u}tYsuVu`tC}tVW 5oU &CK ABuB/uRstu] }uuF/|[^_UWS]0P69SWj&9‰zooe[_UM1҉ȅt BuRQUWVS1} ~ju ]F| ߋHyVuNjE )PSÍuws}ދu> >>u։Ee[^_Uu uU WVS]u Cg ttF8uVSaFu؀;!t;^u@8t8p8u@@8]uE;!t;^uEC1MFCɉMtYuC;-uB{]tu1e[^_UU:t:t Bt(:uр9t:uB :uBBA:uU S]EPA7C nxnPu|njs Pux xn w8xnxn+PuP5u PÍEP6؋]U WVSEM ]EK 0utK- Puy7CA;uȍe[^_$Id: histedit.c,v 1.6.2.2 1998/11/03 15:57:35 cracauer Exp $sh: can't initialize history rwsh: can't initialize editing viemacsU===tudt@ttttHttust7=ttto P8 hhQ=uu =m=njt@tt=0fuhhj0f=4fuhhj4f=0ftc=4ftZ54f50f5Lu蟴n t7=tt5th j P裵hj5n莵 hhPtHttX=uu`=muW=nt@tt5n蚴ntHttust蛷=n=mthhj5n״Ð=ut{hhࡈt@tt=nt5n n=tt5tttHttustUE=tt)t8t P}dPj5thistory not activemissing history argument:e:lnrsoption -%c expects argumentunknown option: -%ccalled recursively too many timesFCEDITEDITORed-16-1too many args/tmp/%s/_shXXXXXXcan't create temporary file %scan't allocate stdio buffer for temp%5d %s %sU\WVSDžDžDžDžDžDž=tu hkU}u hkB[dIdIE 4+hku u茦 |9U$mnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnTuDžDžDžDžy5Yhk萴5Yhl}M dI)M dIE tu DžƅEP t3РtP<EأnjP nE؍M܉ nР=Р~!Рmhl誳ujut Puy,ÊFC>u}}}  Puy+Ë}G}C}?u=Puu++PuPU)Íe[^_UEu1Ð8-u@P:%history number %s not found (internal error)history pattern not found: %sUWVS]1j5t蘑ƃU<+t <-uCSv9tSÃt(t Ktj5tMƃuurj(Sj 5t.ƃ uW} tP5t ƃu2uht#uj 5tƃ u uht薭e[^_$Id: input.c,v 1.6.2.2 1998/11/03 15:57:35 cracauer Exp $UWVS}] : (nx$n$n[u 9u1ЈF tKe[^_U (ny Ð$n$nsh: turning off NDELAY mode U@$nxu>=nt5EP5nu E4P5$n!h5$npxE }c}Z=ptxuF=p#u=jjj4 |+t'$Pjj4 |hvB9EEUWVSxtg (n|=(ntNxtChChC=0n/0nu (n0n)$n1< t t< t)"< t!B + $n (n1BC 0n=0n+$nH(nV1u Mxug=tt^tZt@tt5$n=ouP5t蠍tHtt ust3=et5$nA5dBM $n$ne[^_U(n $nUWVSu} ]t@ttxtj#BJЃ B$nA(nA0nA YtK 5$n=(ntHttust;e[^_UHt@ttA$nA(nA 0nytA` P 9t QtHttust诧Can't open %sOut of file descriptorsUVSut@ttjVNÃ}Vhz` &j SzS } hz7u S-tHttuste[^UVSu] jjV0 th!¡Px~ p5pxuhn!¡P(n0ne[^UW}t@tt} t^=$n0H(n0n@tHttustۥ}U(nB 0nB$nBBj4 ¡BBB USt@tt{| s{tsG{uS(B (nB0nB$nBtHttust٤]U=TttC=TtuUx~p)@$Id: jobs.c,v 1.8.2.7 1998/11/03 15:57:35 cracauer Exp $sh: can't access tty; job control turned off US]9o=mj=,n|atPl 9,ntj5,ni j`{jY{jR{54ujk 54ujQl ,nh~r;E65,njsk 5,njjzjzjzo]job not created under job controlUSE pÃ{u h2C 0j St@ttS átHttust蚢؋]UWVS}u 6^Ã{u h2uSO1e[^_US]{tit@ttjC 0{g K SJxAu AC Jy䡈tHttustҡ]Uj61[%d] %d %d Exit %dSignal %d (core dumped)UPWVSjj E |oMM9 tMMMyfy}t MyMIMMY M9Y u3uhj@u8;3hj@u;u80}ЍpE{CuCPhj@u:rCu CCƒ >>>&<<&<<...???UVSu>$L88ȑHxВ\dp|vthvdhvTh2vB^ s(;t huhvhvhĐvhȐvhАhԐhېvhmv}hHhNv Fh)h2Fp'h vh^t$S{t h [u݋^ h S[uv ' 19FtV0UffUEPVSMwV 0UEEPv <hhe[^}-+?=UVS1=jSLmjCBTne[^US] Xu-}~sTn 4nTn5Tng`1]$Id: memalloc.c,v 1.4.2.3 1998/11/03 15:57:36 cracauer Exp $Out of spaceUSu(Ãu h= ؋]USu uÃu h=ޅ؋]UWS]0PSWa e[_UVS]9}kށt@ttFP>¡J 5tHttust)e[^stunalloc UUuj hij)UUBBUS]t@ttPm9uCCtHttust+]UWVSEg Mǡ9uy=ktmt@ttCPR¡tHttu/st&SWuV5e[^_UE$)US=|)~!S55{"KPu)HPu]US+Pu)ډPu]UE)M )ȋ ) Pu$Id: miscbltin.c,v 1.8.2.4 1998/11/03 15:57:36 cracauer Exp $ep:t:timeout valuetimeout unitarg countIFSUWVSDžp1Dž|Eh.ptetݐttՐTuDžpjEP5Tu | E9Tuu h4yE[tPu PuySÊ{C=Puu2j5 jhst2Z tt:u׋h\[^_Su=%s,g=%s,o=%s %.4o Illegal number: %sU WVS1hFt衈t@ttjC PC tHttust|o1u Er|D(w@@uD(x@D(1 u EruD(w@uD(x@D(1u EruD(w@uD(x@D(EPEPEPhHVhX=wUV1t21<vU rh^||tC;u9Sv ǃuSh^J|f%PW f%P B 1e[^_tf}vdkvs\cLvm>vl+u nopen filesmax user processeslocked memorymax memory sizecore file sizestack sizekbytesdata seg size512-blocksfile sizesecondscpu timeHSatfdsmcnululimit: internal error (%c)ulimit: too many argumentsunlimitedulimit: bad numberulimit: can't get limit: %s(%s, -%c) (-%c) %-18s %18s unlimited %qd ulimit: bad limit: %sUtWVSEEEEfhtASt  Ht /at%EːE뿐E볐EX=XtE@9t EU:u}?uShFy o9҉UE}uyt hڨyu uEEEEEEE/~f}9_EUEUEUEUĉÉ]uċUЉЙEU؉EUEUă}|UUE/}t hKx} EUEeÉ֋UU֋}}]uă}EEX=XF]ȐEPUr? }5p Phw Et}}}}Et EEEEċUztzWrh.j(SXE@Ph9j(S;SU2h@H }u}uhL,K} EUuuuuI EUUUUUuuhW E}?EPUr> }5p͔ Phv }ta}t EEEĉEUt }}}ĉ}EPUr;= 5pg Ph\4v}tEEEEUt }}}}ă}u}u hL2E@ EUuuuuH SQhW1e[^_$Id: mystring.c,v 1.4.2.2 1998/11/03 15:57:36 cracauer Exp $US]M U CAtJ]USM] 9tCA8t1]Illegal number: %sUS]S#uShbtS ]UUЃ w B:u1$Id: options.c,v 1.8.2.3 1998/11/03 15:57:36 cracauer Exp $privilegednounsetnotifyallexportnoclobberemacsviverbosextracestdinnoexecmonitorinteractiveignoreeofnogloberrexitUVSu 5o}~o1 D@~E I 9u  Y 9tE]jao8u=suU==u,=Uu#jtjt==Eu =E1 |uD@~Lu=Uu,=su#oLumojP&=ot!=sto8tLuoo@u=u8t8uoo8ue[^U=PK蟷EPBad -c optionUWVS}=s.oF-u\>t>-~}>ue]o8Ph+to1cu7}t1oot =st hHDqs^ou#Wo0o8t>o5pu&u"=t] P7 r P 8 WSJF[o0e[^_Current option settings onoff%-16s%s Illegal option -o %sUWVSuuGh91ۃ ز|tղP4 hܲ- C~w1ې4 Vg uL} u3=t* uK P6 ` P6 u $P.C~Vhoe[^_Illegal option -%cUWVSu E1ҿ  8Du'\t1tG<uPE]6">uh8u)9ujShF1jh*hF +E@1ۋMPh+j ]Sj@Sh.F ƊMMEjSu uF ƃ(tMxjiEe[^_No arg for -%c optionUWVS5mt>u,o0t>-uF>to>-u ~u1oUF]8t$;uWhͳiC;:uCU8u߀{:u.>u!o0ouEPh2i5Tu15mEe[^_$Id: output.c,v 1.4.2.2 1998/11/03 15:57:36 cracauer Exp $U5ܡuU5uUVS]u ;tNy V)C;u95uVe[^UVSuf~uDnFN~u:t@ttv NFF FtHttUf~ua^ t@ttV UF Pv$FV )ډV^tHttustfV&Ne[^UhhUS]{t29Ct+f{|$+CPsCP}KCC C]U塈t@tt=t"5ItHttust fUEPu uUE Pu5ܡUE Pu5{5 UWVS}u E}ufEfEPu]S; MySEEEtD7e[^_0123456789ABCDEFUDWVS%t/}OyW}pu_EEEE11} ?-uEu >#uEE } ?*uEuvuG} 1} уЃ w u܍TʉUE } QЃ vu >.uTFu >*uE}}Fu 8Eu уЃ w!}؍TʉUE u QЃ v} ?luCG} u >qu@Fu } ¨҃ $||dppd|tEuVN t E}W EuVEUȉM̃}}ڃىUȉMEE UE E EEtE}wuȋwuE}W1uȉ}̍}}EIMԋu1u}uuuu1 Š}Ԉuuuu,4 EȉŨ}u}uUU}}E}tu >ou }9}G}1ۃ}tGUu9}UUЋ])Ӄ}u,Kx)}OyW:  u Ky׃}t'}OyW - u-})}Mx.uNyV0 }0MyՋuԀ>t/}Oy W}uԊFu}Ԁ?uKyuNyVj  } KyHEuvu1ۃ}t`0}JU}| }9~}]+]}u/Kx,uNyV  } Ky׋u؉u؅t@}Ԁ?t7uNyVG}}uԊFuMuK}OyWr  u KySE}_uNyV</}#uNy Vu} E u Fu ^e[^_UWVS} u1ېVWuj ~)ƅE#܅t=ptӸ C ~ƋE)e[^_UWVS}u ]SVW蔣 u =pte[^_$Id: parser.c,v 1.16.2.2 1998/11/03 15:57:36 cracauer Exp $~wpid\TNIB>:3,("!""esac""case""}""{""done""do""for""until""while""fi""elif""else""then""if"wordredirection"`"";;"")""(""|""||""&&""&"";"newlineend of fileJE@;82,(% !esaccase}{donedoforuntilwhilefielifelsethenif@=}-+?=UEotjjYoS utÃttj1UWVS@n}u t11 ƃu=Hw C,;u j X@Ãuj xXǃt tI_Wv ƃu }t Qt@n; >+=ntz 軲}tjCte[^_UWVSUǐ Ãut t%"j xpǃ뺐e[^_UWVSE uutr uSj ^GjHƉw^j3lF3' tt}tjXÉ؍e[^_Bad for loop variableinexpecting "in"UWVS@nEEMM umM]ސtq $xh,jEjMAt jjMA]u?jC j^Ct jj=C봃=ouj(C  C t>jZj E =ou MjMAt j jMA<j- u=8nu5ou h)jkE oMA Z =8nuy5oubu# u*joC nC s͐EMAoHvLj@jCMC CMYoHvt@nÃuu jj#MAH9Scj E  t j 4jËMYoC nC Ct=o u5ot hL]@n~jmlj; wjUEEoP nP @n+uu뵐E@=otj jG @nÃt- tj @n_=o@nj aEj)MAAGtjd벐jE!tj>댐}u j+tuurj  umM]ސtM}t)M9tj MK]EMAEe[^_UWVSu1ۃ} uu E}uC u*j/oC nC {͐=o umsC뱐=ou3E9u)9uu$t jC4tjCECE C ؍e[^_UjjBoB nB Bad fd numberUS]U MuCЃ w zuC .:-uzu C t hkC]IllegalH P X ` h p x    ( 0 8 @ H P X ` h p x  (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx eof marker for << redirectionUWS=m t j? n=8nu{ t oo8 t5ot0=oHtO~ h5oVoC=nu n?n8t 8u%wj5oW CG e[_US=nnn=otjwos sC98u:RP2jCBoB nB CP =nv]UtUWVS5@nǃ=@n=@nu#@nuǃt @n =8n=t& o8uRQ_ tP;u܃=uRj5o&Ct>PP0HPRϦ5@n %-x =o@ne[^_US=ttStoFo/oo =otjtom (nx$n$n'à t܃ t׃& 4  t{ t#t>i;(,)7F\t/|1sà tuCBS u.m=otjjm oooo1ס&R譤o賡|B艤o[菡;2eo7o&ojjh8Si]Missing '))'Unterminated quoted stringMissing '}'Bad substitutionEOF in backquote substitutionUWVS]mE} 9uEEDž\EEEEPu=PuREE  $P<\d,} 8 PuEE=otjjşb}t } PuEE蓟Áu PuE\- u=otjj }t)\t$`t$t"u}t PuE\E: u PuE}u PuEE PuEEE]}u PuEEE :;}u PuEEE 9E}t}u}}t E ;}yE 8Ef}M PuEE}~ PuEEM)uFMu1 PuEEEE =9u EPEG PuE)3藠 PuE)E}t6 PuEE (nx$n$n 菞} ;u hTE } 8t=nu}u ha }tmh|  PuEEu+5E}uK>t u":uoosjU0HPR諞 KEXjƃ>u8F耛Ã>u &u ~FHÃUEo=nu j!PsU塠ot t +t!Ð<uE u >6E8-tE u xu u u xluxu u 6h*u 6Ãu6h*t@tt}tu蛤EjtjPEeu4jt StHttust)E u >U1e[^_USj8kwyte8t^t@ttPdjt-jP6tHttusti(8kv]UWVS}Eju ;tG$`,=mt"==t=mt=EtssuAEPW}u#=EttGw ;ta9tZt  t *t EE EuWXjt ujW e[^_U S] EPjujtE1]US]s<vjSiƃs]UUujuG&Ðu =ku  PATH=/bin:/usr/binMAILPATH=MAIL=IFS= HISTSIZE=PS1=PS1=$ PS1=# UVSt4Cu%v& ‹FCFCF C u8tu?h ‹4t4t tLu^hFP) t DjhFPw u(0=0t3V u;u1e[^%.*s: is read onlyUWVSuVq NjsV Ctj=Vy )VPh|!t@tt{ tE @uj=VYy @PC Ѓ Cu s1\cNjU SsdntouQhn tHj豒<RjϚËU SsC t@ttCt"VltV hj tHttustre[^_USt@tt]tjs~P}u䡈tHttust]UVSuVt+VstC uj=sw @ u1e[^UWVSu} Xnt Vstj=s>uVDt9Vskt C u uCtj=s^w @ u1e[^_UVS1n\os tBt@u\orP_Ɖn\os)tBtBu\ore[^UWVSn\os`tLCu&Cu sxYCu%SiYCts莘Ccދu\ore[^_%s UVSn\os1tC ush<u\or1e[^U WVSE E8ruE5XnD}oEo},j=uu ÃtC`u(E0tJuvMt2} ~Ft;vt,v hjk 6uuSu oEo}`En}\ost}7t^}~tM^;=t&ܡHy PܡC;=uڡܡHy Pγܡ 6uE}\or1e[^_Not in a functionU=\nuh6Poou1UWVSut@ttjɕE>-u2~u,h讕UB Ǿ  1ۃVbNjtVsuuuJj=Vs tjV蛕PjjV UB B 8CUB CBK j=V%s tjV>P=UZtntntHttuste[^_UWVSjtnsu s s U6C$ u v)Fu vbUCFC FSMUtnue[^_List assignment not implementedUEU  RP+Ðujrrj h0 1vfUWVSE11h 蚯tfu Eᐿِ}u uo;t,}t 3< ƃt 3 ƃ;u։e[^_UWVSuVNjVsCt@ttj=sq xtjhsVZ Ct$stV hj cK CuCu sSSStHttust_1ߋ$e[^_USU :t:=t B:uȻ'1n]UUM B<=tA8t:=u yu1@(#)yaccpar 1.9 (Berkeley) 02/21/93!!!!}mu=IUa!/   !"#$%&'()*+,-./012                                                                                     $Id: arith.y,v 1.3.2.3 1998/11/03 15:57:35 cracauer Exp $USEomt@tt>;tHttust ؋]arithmetic expression: %s: "%s"US]nn5oSh]%d UVSEM YPuq PuyŠCB;ut Pux ߊ Puyˊ+PuPYÃSShئ%e[^UVSku 'ہ'~'5o+5tP5tItMtpoP5tHt)tsktm1e[^syntax errordivision by zeroyacc stack overflowUWVS tnn=tu tots1fu, =n}8 n} nu ny]9nuio9mw KGoo4]f f0ssnn=n? n4u t0nx( ]9nu]f =nuh\ t=nnoE tcx[Sf<]uG9mw FBoo4]f f0ssnLo9t osd=nn <] )soS$p| 8Ph<psJs@sr2s1z~2wsH  osH3 osH# osP9%sP9%lsP9%TsP9%<sP9%$sP9% s@s@sH osH+ osH os8u hisPЋ s9Ɖ5ols8u hiTsPЋ s9o:s8%!ssso? o) o1})=s<] udu`oofsso=n}0n} n=n}b t$x ]9u 4]f  4} o9mw *u*oof0sso2&5oh"85dj5`n5n# 1+nKkPz$uBk`B$P@k9TwKnT^S=n}tT5T5T St tpcRkt%nT\JP=k 5`nTË5T=n}P@kTdË5T=n}Ih #"e[^_fatal flex scanner internal error--end of buffer missedfatal error - scanner input buffer overflowUWVSPrnk@9Tv h8(}Px u'T+nu k`=T+=nO19} CFB9|Px$k@P5T+s{t3S  C c C PsC C{u hp(s5TP@ )H~PPmmЉkPP=ku+u5`P@$1ۉkkP@Pk@DP@n؍e[^_UVS \5n95T>tEEf $6(787T7(7(7(7(7(7d7(7(7t7(7d77777777777v\v LC vACFrv|CFav C 뷐v C 말v LC v!vCF v C FCvC؍e[^UVS]ut*nns‹P6uEe[^USMnASt ABun؋]UEtP&            Uuu uUVS11!UR$tuÉƋE8u؃=|uu(u3:SS}S Íe[^ftsopen%s: %s \'"%s: illegal pathfts_readUWVSj5duu pu uh$>j 15pu% ƃF4H wz$>>$?$?>$?>>$?$?>=`uu==`ut1h4dRv Pvh,>, g=lut;h3>vF9 t'h4dvh:>  #]VSCЃ␐=pthK>j e[^_%s: %s: illegal numeric value%s: %s: illegal trailing characterU WVSM}+t-tFAFA Aj URV EU }u}u9uuWu h?j U:t }t ]8tWu h?j }t U]EUe[^_USMU At> ttSyB<xu+XQQ9A%XB<xu+XQQ9A%0B<xu+XQQ9A%]-atimeUVS]%duh@j}jShaAVaF~ u ~uFe[^USMU At> ttSyB<xu+X(QQ9A%XB<xu+X(QQ9A%0B<xu+X(QQ9A%]-ctimeUVS]%duhAjjSh]BVeF~ u ~uFe[^UU`uhBj/forkchdir%sUWVSu 1ۋ}G8t;}G<t4vGPG48C}G<uȋ}uwu1h4d ƒttUhBj 5tuI thB j&}GP0 G0hB j&jEPRX 1ɃtEu Euȍe[^_-ok-exec%s: no terminating ";"UWVS] |uhBjEt@M MM9uDtCPhDj M8;tɐuM+1S:MAS.MAS"MAM91 9}vnMQ;t=;{u+{}u%h‹MAAC;uʀ;uMAAF9}wMQAM9Ee[^_U%du duhBjsUWVS} =ȢuW0tVhHj? XhdHj  Xe[^UMU At' t Ft+=B<@9A%ÐB<@9A%ÐB<@9A%Ð-inumUVS]%duhHj } jSh`IVaFe[^UMU At+ t Rt3IB ttSyB<xu+X QQ9A%XB<xu+X QQ9A%0B<xu+X QQ9A%]-mtimeUVS]%duhJjjShAKVF~ u ~uFe[^UEjU @Rp9 %US]hKj9X]UUE @<@ 9B%U`S]%duEPS} tShBjE hKj‹EBЋ]UE j@t'519Su59Ku0)19Ku9Sv19K|u9Ss Ge[^_-sizeUVS]%duhhNjEcURShOVFV}cu ̢e[^UUE @0tVhdRj_ XhHRj5Xe[^U du@hBjUVSEu XtVSCЉƒtuЍe[^UjjUjjUVSEu XtVSCЉƒtu%e[^UhDSjqUWVS}u _tVSCЃtut_tVSCЃtue[^_UhSjUVS]u jn u jj> X p@e[^%6lu %4qd %s %3u %-*s %-*s %3d, %3d %8qd %sUVSuV %sUS]hPS u ShmT^ Ƅ(PhW% HLPXdf:x.UWVS]  hWj hxuo ]E1du hWSu& j9w$WWWWWWWWWWXWWWXWWWYWWWWWWWYWWWWWWWWWWW(YW8YWWWWWWWWWWWWWWWWWHYEE1E1lu`u du@|dIÅt du}t3%du du#8-t!8!t8(uxt;u9}ujjhWo tu }hWj~ uSP^P4usage: find [-H | -L | -P] [-Xdx] [-f file] [file ...] [expression] UhYhd* jUWVSu0}ЍxU ^<{uTUz}uK%VU 2oU u jj ؋U +9WuS9 E CEUue[^_"%s %s"? UVS]3hZ 3hZhdW ;uhZhd= hd cyhc' cc1ۃ tRt/ cyhc' cc uѻuh[hd蹑 hd y%e[^Uuu jja UMtÐ1(: missing closing ')'(): empty inner expressionUWVSuǃu1k ub11ېuu h0\j x u&uhG\jZ wG GRu뤉e[^_): no beginning '('UVS11URGt,x uh\j uƉĉe[^!: no following expression!: nothing between ! and -oUWVSEEUR_ƃ~ uvF~ UR&Ãt{ uGUR ÃuuhY]j { uht]j { usNC$)ljt^}uuU2uU"Ee[^_-o: no expression before -o-o: no expression after -oUWVS11UR/Ã{ usC{ usC{ u8u h^j suCuh^j˿ uމie[^_QbSOb$SMb4SJbEb>bhA7bdB/b R(bB"b DbpEb G b Hb hIa Ja pJaHKaKaKaXLaLaSa DaSaLaDMaMaNaTNaOaOa|RaR-xdev-user-type-size-prune-print0-print-perm-path-or-ok-o-nouser-nogroup-newer-name-mtime-ls-links-inum-group-fstype-follow-exec-depth-delete-ctime-atime-and-a)(!%s: unknown option%s: requires additional argumentsUS]E0ƒuE0hSbj` EEB t8uE0hfbj8 B t tOtt&@1DBЉ;E0EBЉ&z%PEPBЉ EЋ]UEEh|cjj!h_EP) UUE 02: Uuu u@(#) Copyright (c) 1991, 1993, 1994 The Regents of the University of California. All rights reserved. @(#)pwd.c 8.3 (Berkeley) 4/1/94P%s UVS]u T h9dVS訯 t?tPtMې9dIt;jjV u jj¹ Ph;d j~usage: pwd Uhdhd讈 jWUuu u跦%%17013 Select this if you wish to cancel this screen%%17012 CANCEL%%17011 Select this if you are happy with these settings%%17010 OK%%17009 Designated sub-directory that holds uploads%%17008 Upload Subdirectory:%%17007 The top directory to chroot to when doing anonymous ftp%%17006 FTP Root Directory:%%17005 Password file comment for FTP Admin%%17004 Comment:%%17003 Group name that ftp process belongs to%%17002 Group:%%17001 What user ID to assign to FTP Admin%%17000 UID:%%17014 What group ID to use for group %s ?14a/etc/groupftp%s:*:%d:%s %%17015 What group name to use for gid %d ?%%17016 FTP user already exists with a different uid.%s:*:%s:%d::0:0:%s:%s:/nonexistent /etc/master.passwd%%17017 Could not open master password file.%%17018 Remaking password file: %spwd_mkdb -p %sUVShu  ƃNhuN huhfhg襰 t8tP ƃVVN uvVh6ghgc t_8tZjPhu芛hu,N tp7hghg Ãth&gVhuh*gSj S h&go1 txtwhbg`khuhuVhuh&ghgVV hghg Ã$t2VS S hghgvhghhk1hg[^ Anonymous FTP Configuration anonftp%%17019 Cannot open anonymous ftp dialog window!! Path Configuration operatorincomingAnonymous FTP Admin/var/ftp%dU`VSEEEjj5|n5\"^ \P|nPjjhihi5Ã(ua hiŬ<55|nP\PjjS% Ch%juV $jjSE\ t jVSh hhu膂 jh:jhujhCjh(v j?hLjhuؘj?h`jhuǘjhijhu $EPjjhSEHvLvuVhLvuEPEPhSuS? r( j }u1e[^%%17023 Configuration of Anonymous FTP cancelled per user request.mkdir -p %s%%17024 Configuring %s for use by anon FTP.chmod 555 %s && chown root.%s %smkdir %s/bin && chmod 555 %s/bincp /bin/ls %s/bin && chmod 111 %s/bin/lscp /bin/date %s/bin && chmod 111 %s/bin/datemkdir %s/etc && chmod 555 %s/etcmkdir -p %s/pubmkdir -p %s/%schmod 1777 %s/%s%%17025 Copying password information for anon FTP.cp /etc/pwd.db %s/etc && chmod 444 %s/etc/pwd.dbcp /etc/passwd %s/etc && chmod 444 %s/etc/passwdcp /etc/group %s/etc && chmod 444 %s/etc/groupchown -R root.%s %s/pub%%17026 Unable to create FTP user! Anonymous FTP setup failed.%%17027 Create a welcome message file for anonymous FTP users?ftpmotdecho Your welcome message here. > %s/etc/%seditor%s %s/etc/%s%%17028 Invalid Directory: %s Anonymous FTP will not be set up.YESanon_ftpUWS$ fth(lhu jhijhu =uujh:jhuu =(vujhCjh(vX 0ҿuщ~u/uuщƁ~u=uuj?h`jhu huDuhuhklhu!huhwlkhuhuhuhlVhuhuhlB$huhuhl+huhuhmhuhuh;m$huh\mh(vhuhlmh(vhuh{m fudhm讦huhuhmhuhuhmhuhuh!nv(huhuhPn_ hhn֥hnut" hnhuhnhnhuhoDQPh"oS Su1huh/oQfuhoohsoP [_US= t0spP Cs_Pq C${uҋ]r%%28001 Cannot open the information file `%s': %s (%d)UVSu hrVq ÃtSuS #pPPP PVhrEe[^Read %d characters from attributes file on state FILL Attribute name overflow at character %d, ignoring entry.. Parse config: Invalid character '%c (%0x)' Value length overflow at character %d Attribute limit overflow at %d; encountered a bad attributes file! Unknown state in attr_parse??Finished parsing %d attributes. UXWVS1DžDžDž1Dž1ېt,9u )A>$0uuvvwwwLuu hjPN  19thgs5Džv Vw  tbD4%@#t;u v V:  tbD4%u_uS?~*hs袣Dž0򋍰T)AVVhs\  1 tuD*ƅ%v Vr  tbD4%@=u#D)Dž1s򋍰T)AYu(v V  tbD4%@-{u  tttp~'Wht\Dž1/G~$Wht1Dž}uƄ/Dž1/Gyj?EP]SGhP@S21Dž1~$h,toIhptrUD@%tht!1[^_Trying to match attribute `%s' Returning `%s' UWVS}u ÙtVhxĠ1ۀ?t%VP= t C<uݍ<7t'rtD>@PhxoD8@1e[^_/dist%%01013 The CD in your drive looks more like an Audio CD than a FreeBSD release.%%01001 Error mounting %s on %s: %s (%u)/cdrom.inf%%01011 Warning: The CD currently in the drive is either not a FreeBSD CD or it is an older (pre 2.1.5) FreeBSD CD which does not have a version number on it. Do you wish to use this CD anyway?CD_VERSIONreleaseNamenone%%01002 Unable to find a %s/cdrom.inf file. Either this is not a FreeBSD CDROM, there is a problem with the CDROM driver or something is wrong with your hardware. Please fix this problem (check the console logs on VTY2) and try again.%%01003 Warning: The version of the FreeBSD CD currently in the drive (%s) does not match the version of the boot floppy (%s). If this is intentional, to avoid this message in the future please visit the Options editor to set the boot floppy version string to match that of the CD before selecting it as your installation media.%%01014 Would you like to try and use this CDROM anyway?Mounted FreeBSD CDROM from device %s UtWVS=Pvjp]S.p UBDEEEhySjhyjl uS=puhy褙1=pt/pPP PhyUrDhyn1fPvhzhyۅP蕅 u*=0u!h z'10hzhy荅PWbftahzW*EtRhzDPu hzdDzǹ1t FO)ȃtv}uhyhzw\=0uQhzDPuh{Oh}Athhyi Pv1 0UrDhX}2e[^_Request for %s from CDROM /dist/%sr/dist/dists/%s/dist/%s/%s/dist/%s/dists/%sUVSu 譒tVh讙VhhS, S貃t hSVhhS+ S胃thShVhzBPhhS+ SIu*VhzBPhhS+ hShP [^Unmounting %s from %s %%01004 Could not unmount the CDROM from %s: %sUnmount of CDROM successful UE=PvtYhypDhShhyg t5p Phyh h:PvUVS195~M1ۋTv9x~0[uX CTv9xF954Tv0 e[^More than %d commands stacked up behind %s??More than %d commands accumulated??UWVSu} 19V4Tv u|Tvx u Vj hITvx@Tvx@MTvx@MTvxC9c=uhhvh|ׂ¡TvVR TvǀxTvTvMTvMe[^_UWVSu] hZǍEPShW贒 jWjVe[^_Uuu juiUUE uu1ÐutÐt uÐPRQ UVSTv195~U19~A4Xv4Tv}~TvXvTvXvC9F95e[^%%02003 Doing %sCommand `%s' returns status %d %x: Execute(%s, %s)Function @ %x returns status %d UWVSE<1MTv9x4uXh[MTvI SMTvhMTvE虌t"MTvPuh(膓MTv4PMщKtSMTvh<8 GMTv9xEM9 e[^_UUE uu1ÐutÐt uÐz4u x4t̓z4t x4tЃz4ux4uԋ@4PB4P UVS195D{~U19D{~A4z4z]~zzzzC9D{F95D{e[^odUWVSu} H{19}8x u(@(t"jh@0V u H{C9|ȍe[^_UE@none/bogusUEx ux$u Ðx tx u@4ø msdosufsswapbogusUEx u_Ðx ux$teÐiÐnrw,noautorwswro,noautorobogUEx uj h)Y u$ PsP tPh)1B C9N[^_/etc/rc.confUh=1%s="%s"%s%s="%s" %%03010 Writing configuration changes to %s file..cp %s %s.previousnetwork_interfacesppptunifconfig_%s%sUd"WVShPu w x!Dž:#j=R Ã@0ҍrڋ+R ƒ n؋+9W1j#M ƒtoj"S< ƒuj'S+ ƒtMPBP ƒt7Z0t#҉Ѓ$)ĉSV  x0ҋx0ӉTtӉT  R ‹tVqqh]R &pphg 9 k~tuhpj=\tho5 )uuh|hou Dž9X jh/ ƒjj+P,1 9jhȑ4 ƒ jh̑4 ƒ 4hБhڑh -ÃthShghi 19~" t&G9޸tPW F9 9{=\u R [^_blanktime300UEpj+h,uhh:,1%%03014 Enter time-out period in seconds for screen saverUh֖Phm-uUh% %%03015 Enter the name of an NTP serverntpdate_flagsntpdate_enable=YES,ntpdate_flags=%sUVSuhTFPh|, ؅u&h|n+PhhhtyU Fty e[^Udjh@/var/run/ld.so.hints/sbin/ldconfig -m /usr/lib /usr/X11R6/lib /usr/local/lib /usr/lib/compat/sbin/ldconfig /usr/lib /usr/X11R6/lib /usr/local/lib /usr/lib/compatxf86config/usr/X11R6/bin/moused_enableYES%%03068 The X server may access the mouse in two ways: direct access or indirect access via the mouse daemon. You have not configured the mouse daemon. Would you like to configure it now? If you intend to let the X server access the mouse directly, choose "No" at this time.%%03069 You have configured and are now running the mouse daemon. Choose "/dev/sysmouse" as the mouse port and "SysMouse" or "MouseSystems" as the mouse protocol in the X configuration utility.%%03061 Currently this operation is not supported on Japanese mode and Chinese mode due to the bugs. Execute %s command directly from root's command prompt. Sorry./etc/XF86Config%%03071 The XFree86 configuration process seems to have failed. Would you like to try again?%%03016 The XFree86 setup utility you chose does not appear to be installed! Please install this before attempting to configure XFree86.UWVSjhuҀZh0Igt hEhVhԘ&EuhߘFgEPg yhG&Ã1h~{u7jht3h&à tˉ޿ut ޿u h#z?Hv =uuhٚyOu`h.fuhzhye[^_/etc/etc/resolv.confdomain %s nameserver %s Wrote out /etc/resolv.conf ipaddrhostname/etc/hosts127.0.0.1 localhost.%s localhost 127.0.0.1 localhost %s %s %s %s %s. Wrote out /etc/hosts UWVSh)n$ǃ?t{hihoh  ƃ h;,$th;$PhV;N Wh%V,N V ]st h4\zh;#hP#hW#hoh` ƃu tShkVM hVM ?0t|tsj. u ƅ(hS)dj.S PWhV&M WhVM $V Brt hAy1[^_%%03050 Please specify the router you wish to use. Routed is provided with the stock system and gated is provided as an optional package which this installation system will attempt to load if you select gated. Any other choice of routing daemon will be assumed to be something the user intends to install themselves before rebooting the system. If you don't want any routing daemon, choose NOrouterNOrouter_enablegatedgated_pkg%%03051 Unable to load gated package. Falling back to no router.routerflags%%03052 Please Specify the routing daemon flags; if you're running routed then -q is the right choice for nodes and -s for gateway hosts. UWVShwPh$R! %Eh$Ã޿+hh.q޿<1t FO)ȃuIhBPqt2hLsh$hh+h. 1ۃtShvPhw  %Et*hh+h.h7h$-E e[^_%%03023 Attempting to fetch packages/INDEX file from selected media.packages/INDEX.ja_JP.EUCpackages/INDEX%%03024 Unable to get packages/INDEX file from selected media. This may be because the packages collection is not available at on the distribution media you've chosen (most likely an FTP site without the packages collection mirrored). Please verify media (or path to media) and try again. If your local site does not carry the packages collection, then we recommend either a CD distribution or the master distribution on ftp.freebsd.org.%%03025 Located INDEX, now reading package data from it...%%03026 I/O or format error on packages/INDEX file. Please verify media (or path to media) and try again.%%03027 No packages were selected for extraction.UVSϣt8P@PЃu =@hoap=u8jhP@TЉÃ uB8jhͤP@TЉÃ u'hܤo8P@Xи)hohzhtz胧htzSXthϦOoS S htzT@u]EEVShzhtzͭ=ztQzxtFEEVSjhz蚭u2fthzhtz58A sh9nztP\؃uhzj{e[^pcnfsdpcnfsd_pkg-nmountd_flagsUS1hIt hI9hPP蠙ÃfuhhISh[h^D؋]/etc/exports%%03039 Operating as an NFS server means that you must first configure an /etc/exports file to indicate which hosts are allowed certain kinds of access to your local file systems. Press [ENTER] now to invoke an editor on /etc/exports echo '#The following examples export /usr to 3 machines named after ducks,' > /etc/exportsecho '#/home and all directories under it to machines named after dead rock stars' >> /etc/exportsecho '#and, finally, /a to 2 privileged machines allowed to write on it as root.' >> /etc/exportsecho '#/usr huey louie dewie' >> /etc/exportsecho '#/home -alldirs janice jimmy frank' >> /etc/exportsecho '#/a -maproot=0 bill albert' >> /etc/exportsecho '#' >> /etc/exportsecho '# You should replace these lines with your actual exported filesystems.' >> /etc/exportsecho >> /etc/exportseditor%s /etc/exportsnfs_serverUVShϩVahܩjhǪh"hxhnh$dhcZhP hCh9h(kPh/SŲ SV a hh?%h?*thϩ h?G1[^Loop-back (local) network interfaceloParallel Port IP (PLIP) peer connectionlp%s on device %s (COM%d)cuaa%d3Com Etherlink III PCMCIA ethernet cardzpIBM/National Semiconductor PCMCIA ethernet cardze3COM 3c90x / 3c90xB PCI ethernet cardxl3COM 3c590 / 3c595 ethernet cardvxSMC 9432TX ethernet cardtxMegahertz PCMCIA/X-jack EthernetsnLance/PCnet (Isolan/Novell NE2100/NE32-VL) ethernetlncDEC EtherWorks 2 or 3 ethernet cardleIntel Etherexpress ethernet cardixAT&T StarLAN 10 and EN100; 3Com 3C507; NI5210ieFujitsu MB86960A/MB86965A ethernet cardfeIntel EtherExpress Pro/10 ethernet cardex3Com 3C501 ethernet cardel3Com 3C509 ethernet cardepWD/SMC 80xx; Novell NE1000/2000; 3Com 3C503 cardedIntel EtherExpress Pro/100B PCI Fast Ethernet cardfxpDEC DE435 PCI NIC or other DC21040-AA based carddeEfficient Networks ATM PCI cardenSDL HSSI sync serial PCI cardcc3iSDL T1/E1 sync serial PCI cardsrDEC DEFPA PCI FDDI cardfpaSCSI optical disk / CDRworm%dATAPI floppy drive unit Afloppy drive unit Afd%drwfd%dATAPI floppy devicewfd%drod%dSCSI optical disk deviceod%drwd%dIDE/ESDI/MFM/ST506 disk devicewd%drsd%dSCSI disk devicesd%dWangtek tape driverwt%dFloppy tape drive (QIC-02)rft%dSCSI tape driverst%dATAPI IDE CDROMwcd%dcMatsushita CDROM ('sound blaster' type)matcd%daSony CDROM drive - CDU31/33A typescd%daMitsumi (old model) CDROM drivemcd%daSCSI CDROM drivecd%dcUVSujdERjdS9 t j?VS3P؍e[^UU1U/dev/%s/mnt/dev/%sUPWVSu(},Wu jP]S ShMhV jV  }l}$cu!`EUU PPV4 jV })u VF EPhUhVG jV e[^_Too many devices found!UWVSu }1ۃ=du haruÉs@{DUSHUSLEu4CPE u@CTE$uHCXU(S\l~l~؍e[^_%%37000 Probing devices, please wait (this can take a while)...ifconfig: socketifconfig (SIOCGIFCONF)sltunpppFound a network device named %s Found a CDROM device for %s Found a TAPE device for %s /dev/%ss%dFound a floppy device for %s SLIP interfacesl0Add mapping for %s to sl0 PPP interfaceppp0Add mapping for %s to ppp0 Unable to open disk %sFound a disk device named %s Found a DOS partition %s on drive %s UWVShӵZ`Dž@jjj }h$Ph$i Ѯ }h$_9{rjhS Zjh;S Bjh>S *jhBS DžDž=TtdT0щOt;tWS@ Tuu DžFjh"jhjjSʈ PS$ShgX` y jjjN }%h]$Xr{tC\ 9gDž=TDž9h;PK$THGlD狵P(}=p9 PthSh jhXhh}jj VPtS S4h狵P(Ps PthS jhhh<jjU VPtS: SC8h;狵P6(=P親 PtjPhS VShjPW PL LLȋ ‰$P|cu !`PW+ jW | PЩ u W F狵P(Po PthS jhx/h,.h,,jjQ VPtS6 S?8h̶7狵P2(P诨 P\0։'PGNjFVhSW1 jh"jhjjt PWhs@hZ0у1QiGVhSW jh"jhjj SWh&$h+Z9hTx[ 184 ƃu4hGVVhHh@h4jj6RR1$4h^YF Xto{ t{ u[shMjP jh*h4)h'jj跁 PCPPX\46sh|@Y uG< 距 [^_UWVS} 1195~H}tu4l~߹ u t l~9xHul~L{FC9L{1tL{e[^_UWVS}1195~g}tu4l~c u?} tu l~p@D u t l~9xHul~|FC9|1t|e[^_UUu1Ð1:t@<uUWVSu jW u 1@PDjSuY 1Ƀ?tsD19~+u9l~u @@uD B99u Dut utA<uD؍e[^_No chunk list found for %s!UWVS}11 u 7h=SG @t%x u9pv p@Cu9@|K@e[^_%%04002 WARNING: A geometry of %d/%d/%d for %s is incorrect. Using a more likely geometry. If this geometry is incorrect or you are unsure as to whether or not it's correct, please consult the Hardware Guide in the Documentation submenu or use the (G)eometry command to change it now. Remember: you need to enter whatever your BIOS thinks the geometry is! For IDE, it's what you were told in the BIOS setup. For SCSI, it's the translation mode your controller is using. Do NOT use a ``physical geometry''.%%04004 Disk name: %%04005 FDISK Partition Editor%%04006 DISK Geometry: %lu cyls/%lu heads/%lu sectors = %lu sectors%%04014 Flags%%04013 Subtype%%04012 Desc%%04011 PType%%04010 Name%%04009 End%%04008 Size%%04007 Offset%10s %10s %10s %8s %6s %10s %8s %8s%10ld %10lu %10lu %8s %6d %10s %8d %-6sUVSuD1ۃ=t@DC<u~w~ w~?v#t6vv vh|PV SP5EP<ƒjjRc à ~xuDžlDžlu Džl@B(PSlVr p> hh/ p!5t W5贈tPwhV'/ wh菈tPwh/ ?uE]U<hhC1e[^_geometrySetting geometry from script to: %s freeUnable to find any free space on this disk!allWarning: Devoting all of disk %s to FreeBSD. exclusiveUnable to find %d free blocks on this disk!existingUnable to find any existing FreeBSD partitions on this disk!`%s' is an invalid value for %s - is config file valid?U WVSEE@\EPhEtLPhr/j]Suh MAjSE@PU MA jjE@P> MA hmE`ƿ1ۃ=t2z u zPw.C<u߃<踩h,B(Pjjrr u hh 밐u2uM1h6].j-ue u(M1h65.Eju 8jEPu ƃ E8tYv:RO ;B(PjjVr u hh >tb4Mu 1ۃ=t,z u9rsC<u<\Vho-+u u@1ۃ=t#x t C<u<u.h*Hhmuh*.}uM1Pu hhe[^_tcpMenuSelectdumpVariablessystemshutdownaddUseraddGrouppackageAddregisteroptionsEditormsgConfirmmediaGetTypemediaSetCPIOVerbositymediaSetFTPUserPassmediaSetNFSmediaSetUFSmediaSetFTPPassivemediaSetFTPActivemediaSetFTPmediaSetTapemediaSetDOSmediaSetFloppymediaSetCDROMloadFloppyConfigloadConfiginstallVarDefaultsinstallFilesystemsinstallFixitFloppyinstallFixitCDROMinstallFixitHoloShellinstallFixupXFreeinstallFixupBininstallUpgradeinstallNoviceinstallExpressinstallCommitdocShowDocumentdocBrowserdistExtractAlldistSetXF86distSetSrcdistSetDESdistSetEverythingdistSetMinimumdistSetXUserdistSetUserdistSetKernDeveloperdistSetXDeveloperdistSetDeveloperdistSetCustomdistResetdiskLabelCommitdiskLabelEditordiskPartitionWritediskPartitionEditorconfigXEnvironmentconfigUsersconfigRegisterconfigPackagesconfigPCNFSDconfigNTPconfigNFSServerconfigRouterconfigAnonFTPUS]CCBsm Sm ]US]9t39u]UVSuj ql Ãt u Q CFCZ1e[^Ujwcommand_systemExecute: No command passed in `command' variable. UhUuh](ÐPRx%_msgConfirm: No message passed in `command' variable. UhU;uh'ÐPf%1UWVS11ۃ=Ъt@4Ъu_ uu ԪЋU C<Ъue[^_%%36001 Null or zero-length string passed to dispatchCommanddispatch: setting variable `%s' dispatch: calling resword `%s' %%36002 Warning: No such command ``%s''US]t;uh?$j S谿 tj=S螿 t'*tSh+&SrEOj/S tXtSh%EPjSW uSh$EE]UWVS}j^i ÃtR[WhV܈ t9j V% ttҀ#tVSu1؍[^_nonInteractiveyesnoError%%36003 Command `%s' failed - rest of script aborted. UWVSuEu%sh"Msh*ǃt WL ǃhh96t=sfthth S.96uVIuhWhUWh Ee[^_/tmp/install.cfg/stand/install.cfginstall.cfgconfigFiler%%36004 Unable to open %s: %sUWVS1hǃu51ۃ=Ьt:h4Ь3 ƃuFC<ЬuhW ƃu$}u5pK PWh VZVv S$e[^_UjR%%36005 Specify the name of a configuration file residing on a MSDOS or UFS floppy.installConfig%%36006 Unable to set media device to floppy.%%36007 Unable to mount floppy filesystem.%%36008 Configuration file '%s' not found.UWVS5諜h-#Ph(ǃ t?uh(=j78fuh6x8P@PЃuhdX_8jWP@TЉÃ tSS迌 5Wh 1huWhh(4e[^_XF86333/usrportscompat21compat20compat1xdessrcinfodictproflibscatpagesmanpagesgamesdoc/binskerberoscrypto/usr/srcssecurekrbssmailcfsusbinsubinssysssharessbinsbinsreleaseslkmslibexecslibsincludesgamessetcsgnuscontribsbaseX9setXsetXpsXprogXmanXlkitXlk98XlibXhtmlXdocXcfgXbinXsrcctrb/usr/X11R6/srcXsrc1/usr/X11R6XnestServers/XW32Servers/XVG16Servers/XSVGAServers/XS3VServers/XS3Servers/XP9KServers/XMonoServers/XMa64Servers/XMa32Servers/XMa8Servers/XI128Servers/XAGXServers/X8514PC98-Servers/X9WSNPC98-Servers/X9WSPC98-Servers/X9WEPPC98-Servers/X9TGUPC98-Servers/X9SVGPC98-Servers/X9SPWPC98-Servers/X9NS3PC98-Servers/X9NKVPC98-Servers/X9MGAPC98-Servers/X9LPWPC98-Servers/X9GANPC98-Servers/X9GA9PC98-Servers/X9EGCPC98-Servers/X9480XfsrvXfnonXfsclXfcyrXf100XfntsDist Masks: Dists: %0x, DES: %0x, Srcs: %0x XServer: %0x, XFonts: %0x, XDists: %0x U=t  =tt  t X=Xt =t =u=Xu =t t.555X555hUXdistMaindistDESdistSRCdistX11distXserverdistXfontsUjvhztP{~ hmtP\~ hNtP=~ h/tP~ htP} XhtP} UVS]jSS ؍e[^USuÁ XHv =u j :؋]UVS]jSkSG ؍e[^UVSujU=tuVV ؍e[^USuÁ =t  XHv =u j ؋]UjUVS]X?SS ؍e[^USjh1ۅuu ]%%05000 Do wish to install DES cryptographic software? If you choose No, FreeBSD will use an MD5 based password scheme which, while perhaps more secure, is not interoperable with the traditional UNIX DES passwords on other non-FreeBSD systems. Please do NOT choose Yes at this point if you are outside the United States and Canada yet are installing from a U.S. FTP server. This will violate U.S. export restrictions and possibly get the server site into trouble! In such cases, install everything but the DES distribution from the U.S. server then switch your media type to point to an international FTP server, using the Custom installation option to select and extract the DES distribution in a second pass.US1詐hujhtuc ]%%05013 Would you like to install the FreeBSD ports collection? This will give you ready access to over 1000 ported software packages, though at a cost of around 35MB of disk space when "clean" and possibly much more than that if a lot of the distribution tarballs are loaded (unless you have the 2nd CD from a FreeBSD CDROM distribution available and can mount it on /cdrom, in which case this is far less of a problem). The ports collection is a very valuable resource and, if you have at least 100MB to spare in your /usr partition, well worth having around. For more information on the ports collection & the latest ports, visit: http://www.freebsd.org/ports Uȍh u @ %UWVS}E1?tg|tJu 4s uD\ E|tu ttEF<uEe[^_distsdistSetCustom() called without %s variable set. Couldn't alloca() %d bytes! distSetCustom: Warning, no such release "%s" UWVShuLƒuhuh{k0Ѓ$)ĉRVq ty…tE 0UuU Rh\ g  Dž DžDžQVjW Džp E 83Pp4E XM\u\p4E T L |u\ ӉD!pE |t>tXlM T\ ӉD!Dž`X\h} hP襜 8jPP@TЉl@ ttZ @u RPh  u8P@XС8P@PЃuDžl{tXh w V4@/ u4Dt1P +<@uhJt P 1e[^UWVSu} jѺÃtV 1C{؍e[^_UM1Ҁ9t <w B< uUWVSu} jqÃt V. 1t W 1C}t u 1C}t u 1C }t u 1PLC}tu 1C} t u 1C؍e[^_UWVS} 1UZt!Ws. uuu!jWWF UBr jU2mËUB C SF^e[^_UWVS}u uV?. ÃtVW, F)É1e[^_UWVS} u1ېujjEP$ u} t9}E;CՐ9};e[^_UVSu(hPu  j|Su 'j|Suj|Su Ã$j|Suj|Suj|Su Ã$j|Su$j|SPj|Sd t j|SVhSVD* 1[^U WVS|xtpl|xtplWV]Su$|tplWVSxP* ƃ$j V, ÃtWVu " sڐWVu WhGu 81`[^_UVS]u tJChJ*t P5 1CCsC CtIFhHt P 1FFvF Fe[^placepackagename [%s]: %s desc: %s UWVSu} 19}> jPu uxƃft`h}ZXgt ShZ?ShZ2Su-h}Z%gtShZӻ Sh"[Q1ۅt_t fLfuuMquƉ[^_US@=@t3]Po ;u]Scanning disk %s for root filesystem No chunk list found for %s!/%%07001 WARNING: You have more than one root device set?! Using the first one found.Found rootdev at %s! /usr%%07002 WARNING: You have more than one /usr filesystem. Using the first one found.Found usrdev at %s! /var%%07074 WARNING: You have more than one /var filesystem. Using the first one found.Found vardev at %s! Scanning disk %s for swap partitions %%7078 No chunk list found for %s!Found swapdev at %s! %%07003 No root device found - you must label a partition as / in the label editor.%%07004 No swap devices found - you must create at least one swap partition.noUsr%%07005 WARNING: No /usr filesystem found. This is not technically an error if your root filesystem is big enough (or you later intend to mount your /usr filesystem over NFS), but it may otherwise cause you trouble if you're not exactly sure what you are doing!upgrade_systemState%%07110 WARNING: No /var filesystem found. This is not technically an error if your root filesystem is big enough (or you later intend to link /var to someplace else), but it may otherwise cause your root filesystem to fill up if you receive lots of mail or edit large temporary files.U WVSEEEEEUMUM =u /jj^EE8UMxLoX\3h\肷{ u3h\ C @E7Uz Z{ {${4s4]u;}t}h]]دshj]s4]u-}t}tqh]B]茯t\sh]Js4]u9}t}t-h]3]@tshI^?M MEUM<kEU:MUxLX\3h^^ڵ{ u3h^aC @EtSMy u=Yt6{ u*{$u$}u]ztsh^yuʋUUuEMU<SUM UMUMUM}u}th^E}u}th_ͲE}u$}th^_a^u hd_蜲}u&}t hl`ht`B^t h`mEe[^__diskLabelled%%07006 You need to assign disk labels before you can proceed with the installation._diskPartitionedyesnoWarn%%07007 Last Chance! Are you SURE you want continue the installation? If you're running this on a disk with data you wish to save then WE STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding! We can take no responsibility for lost disk contents!%%07008 Couldn't make filesystems properly. Aborting.%%07009 installInitial: Couldn't clone the boot floppy onto the root file system. Aborting./mnt%%07010 installInitial: Unable to chroot to %s - this is bad!_runningOnRootUS1ۃ=t 1h>e[uhLezher[uhehe[|,heJ[uhe聰t j1fft hf6uhfI~hUg莃 uhUghZgTh] hehgkZj(6fuj #ful ؋]UP 1fixit/mnt2%%07085 Please insert the second FreeBSD CDROM and press return%%07086 Unable to mount the CDROM - do you want to try again?/dist%%07087 Unable to symlink /mnt2 to the CDROM mount point. Please report this unexpected failure to freebsd-bugs@FreeBSD.org./tmp/var/run/ld.so.hints/var/run/mnt2/sbin/ldconfig -s /mnt2/usr/lib%%07088 Warning: ldconfig could not create the ld.so hints file. Dynamic executables from the CDROM likely won't work./usr/libexec/ld.so/usr/libexec/mnt2/usr/libexec/ld.so%%07089 Warning: could not create the symlink for ld.so. Dynamic executables from the CDROM likely won't work.%%07090 Please remove the FreeBSD CDROM now.U`=u1Ðhhht`UWhhw@ hh~ hhƫjfu=8t38P@PЃu<=8t8P@X8h h|u Vh|u V(h(}uh|hh};>hz}蹓u-jh$gS) qh}臓ujS?h}UuɉjhtSʼn h.~l c h;~-thF~u Vh~u V!hIŒu V,hF誑!jDS"mh胒u jKhPe9 e[^%%07040 The commit operation completed with errors. Not updating /etc files.USuÃfthTܐ؋]installCommit: System state is `%s' %%07109 Unable to initialize selected media. Would you like to adjust your media configuration and try again?error-installfull-installUS=u/jv=ujh,贕u =t{trht`;tShԆ=t fts8P@PЃu-h{u8uʸ6u耐qufugPht`: ]%%07043 Visit the general configuration menu for a chance to set any last options?US h}蹏u-jhgS) h.~c` ]/kernel/kernel.GENERICcp -p /kernel.GENERIC /kernelUnable to copy /kernel into place!%%07045 Can't find a kernel image to link to on the root file system! You're going to have a hard time getting this system to boot from the hard disk, I'm afraid!%%07046 Remaking all devices.. Please wait!cd /dev; sh MAKEDEV all%%07047 MAKEDEV returned non-zero status%%07073 Resurrecting /dev entries for slices..Couldn't get a disk device list!%%07050 Making slice entries for %scd /dev; sh MAKEDEV %sh%%07051 Unable to make slice entries for %s!/var/db/var/db/mountdtab/usr/compatln -s /usr/compat /compatnewaliasestouch /kernel.configtouch /boot.config/stand/boot.help/boot.helpmv /stand/boot.help /mtree -deU -f /etc/mtree/BSD.root.dist -p /mtree -deU -f /etc/mtree/BSD.var.dist -p /varmtree -deU -f /etc/mtree/BSD.usr.dist -p /usrUWVS=hgwuDh"Vwt+h2mt hP;h" hs!h6hB0t-hZ觊Ysh菊Ahjj3ǃ u h&1?tdX\xLtQ{ u3h\C Xt2{ u%shӊ艊shauF<uhhoy^ h< {hhDZ hVzhb,h|" hh hu thuu hˋhh h;1e[^_Fixing permissions in XFree86 tree..chmod -R a+r /usr/X11R6find /usr/X11R6 -type d | xargs chmod a+x/usr/X11R6/lib/X11/pkgreg.tar.gzInstalling package metainfo..tar xpzf /usr/X11R6/lib/X11/pkgreg.tar.gz -C / && rm /usr/X11R6/lib/X11/pkgreg.tar.gzUh;~CvtChd薈hhhˎTtthgh a1written/dev/%s/dev%%07053 Unable to make device node for %s in /dev! The creation of filesystems will be aborted.%%07054 Added %s as initial swap device%%07055 WARNING! Unable to swap to %s: %s This may cause the installation to fail at some point if you don't have a lot of memory./dev/r%s%%07056 Unable to make device node for %s in /dev! The creation of filesystems will be aborted.%%07057 Warning: %s is marked as a root partition but is mounted on %sYou are upgrading - are you SURE you want to newfs the root partition?%%07058 Making a new root filesystem on %s%s %s%%07059 Unable to make new root filesystem on %s! Command returned status %d%%07060 Warning: Using existing root partition. It will be assumed that you have the appropriate device entries already in /dev.%%07061 Checking integrity of existing %s filesystem.fsck -y %s%%07062 Warning: fsck returned status of %d for %s. This partition may be unsafe to use.%%07063 Unable to mount the root file system on %s! Giving up.%%07064 No chunk list found for %s!/mnt/devYou are upgrading - are you SURE you want to newfs /dev/%s?%s %s/dev/r%sfsck -y %s/dev/r%s%s/dev/%s%%07065 Added %s as an additional swap device%%07066 Unable to add %s as a swap device: %s%s/%s%%07067 Copying initial device files..find -x /dev | cpio %s -pdum /mnt%%07068 Couldn't clone the /dev files!UWVShh>e1.hl`ht`.%@EPEPEPEPj-u }tE@4D DžD%}=EphÏ]S =\u{hˏu), t SmuEPhЏ=\u@]SS uSh0܁ 5pQ PEPhXF}y=lEphܐ]S8 =\u0hˏuw+ t SBmuEPhPDƿ]tPEphE诀 D:t]@th芁uC]ShӑSDPhtgPShO@u hQ1]ShԒ蔀Sh LtSLh EphÏ]S ShUgrtShn6jj(HDžL8PtQ@tshۓu4s=tUgPPhFP+s=tUgPh&FPwshx FP { {$9]s=tUgPh9< 1=\uUE?jjEPh\h7 uFËEƀ\\releaseNamehighcpioVerbose20tapeBlocksizeinstallRootEDITOR/usr/bin/eeeditorftpftpUserlynxbrowserPackage/usr/local/bin/lynxbrowserBinarypassiveftpStatenfsSecure/usr/tmpPKG_TMPDIRgatedgated_pkgpcnfsdpcnfsd_pkgMEDIA_TIMEOUTupdateinitUPhe&hhV&hhG&h]h8& h˛ uқPhޛ&hh&hh%hh% h'h/%h|h8%hBhK%hVh\% hfhm%h,hPhx%( thhht`]%1/etc/resolv.confUh.~ft h.~Zhft hHcp /boot.help /mnt%%07069 Copying the boot floppy to /stand on root filesystemfind -x /stand | cpio %s -pdum /mnt%%07070 Copy returned error status of %d!cd /mnt/stand; find etc | cpio %s -pdum /mnt%%07071 Couldn't copy up the /etc files!Uhdt hh{P{PhRtPhvUx1ÐˍPhu Ðh͞&x(iCy"%/usr/share/miscw%%07072 Unable to initialize termcap file. Some screen-oriented utilities may not work.%s U(WVS}ؾ hpcuXhhhhp1 ƃ u h.w*]؃}t3hVL ;uV e[^_save_userconf: PC-card mode. -incoresave_userconf: Can't read in-core information for kernel. save_userconf: Can't read device information for kernel image %s %%07079 Saving any boot -c changes to new kernel...-isasave_userconf: got %d ISA device entries from core, %d from boot. save_userconf: ISA device loop, c_isa->av[%d] = %s npx0save_userconf: c_dev: %x b_dev: %x save_userconf: ISA device %s: %d config parameters (core), %d (boot) save_userconf: c_dev->av[%d] = %s, b_dev->av[%d] = %s save_userconf: %s (boot) -> %s (core) skipping npx0 Closing kernels UWVS]=thv)hĠ;Euh̠vS;EuShvhIth}uQAEh}uAAE=otU2M1h2v EUM9YotUBM4Qhšu UBM4U4u@ƋMAU4u@ǃtuWVhu wnt76MAU4h"iu19GntG4SF4Shh;uG4F4# t. ntG4F4hu Vu0C9mt hƢtEMU9 mt hբtju>ju>e[^_weeklyuucpttystermcapsyslog.confsupfilespwd.dbskeykeysshellsservicessendmail.cfsecurityrmtresolv.confremoterc.confrc.networkrc.localrc.i386rc.firewallrcpwd.dbprotocolsprofileprintcappppphonespasswdnewsyslog.confnetworksnamedbmotdmonthlymodemsmib.txtmaster.passwdmanpath.configmake.confmail.rclogin.accesslocaltimekerberosIVinetd.confhosts.lpdhosts.equivhostshost.confgroupgnatsgettytabftpusersfstabfbtabexportsdm.confdisktabdailycsh.logoutcsh.logincsh.cshrccrontabamd.mapaliases.dbaliasesadduser.confXaccel.inirm -rf /etc/upgrade/etc/upgrade%%08003 Unable to find an old /etc/%s file! That is decidedly non-standard and your upgraded system may function a little strangely as a result.mv /etc/%s /etc/upgrade/%s%%08004 Resurrecting %s..tar cf - %s | tar xpf - -C /etc%%08005 Unable to resurrect your old /etc/%s! Hmmmm.US]h?b h_{tzs[u{u\sh>;uCCPPh3shNnshhtshZn SC Ѓ{u]nonInteractiveupgrade_systemStateUPGRADE%%08007 Given all that scary stuff you just read, are you sure you want to risk it all and proceed with this upgrade?%%08008 First, you must select some distribution components. The upgrade procedure will only upgrade the distributions you select in the next set of menus.%%08009 You didn't select the bin distribution as one of the distributons to load. This one is pretty vital to a successful upgrade. Are you SURE you don't want to select the bin distribution? Chose No to bring up the Distributions menu again.disk%%08030 No disks found! Please verify that your disk controller is being properly probed at boot time. See the Hardware Guide on the Documentation menu for clues on diagnosing this type of problem.%%08011 OK. First, we're going to go to the disk label editor. In this editor you will be expected to Mount any partitions you're interested in upgrading. DO NOT set the Newfs flag to Y on anything in the label editor unless you're absolutely sure you know what you're doing! In this instance, you'll be using the label editor as little more than a fancy screen-oriented partition mounting tool. Once you're done in the label editor, press Q to return here for the next step.%%08012 The disk label editor returned an error status. Upgrade operation aborted.written_diskPartitioned%%08013 Not all file systems were properly mounted. Upgrade operation aborted.%%08035 Updating /stand on root filesystemfind -x /stand | cpio %s -pdum /mnt/mnt%%08036 Unable to chroot to /mnt - something is wrong with the root partition or the way it's mounted if this doesn't work./%%08016 Under which directory do you wish to save your current /etc?/usr/tmp/etc%%08017 Directory was not specified, was invalid or user selected Cancel. Doing an upgrade without first backing up your /etc directory is a very bad idea! Do you want to go back and specify the save directory again?%%08018 Preserving /etc directory..tar -cBpf - -C /etc . | tar --unlink -xBpf - -C %s%%08019 Unable to backup your /etc into %s. Do you want to continue anyway?%%08040 'chflags'ing old binaries - please wait.chflags -R noschg /bin /sbin /usr/sbin /usr/bin /usr/lib /kernel*/kernel%%08020 Moving old kernel to /kernel.prevmv /kernel /kernel.prev%%08021 Hmmm! I couldn't move the old kernel over! Do you want to treat this as a big problem and abort the upgrade? Due to the way that this upgrade process works, you will have to reboot and start over from the beginning. Select Yes to reboot now%%08070 NOTICE: Your old kernel is in /kernel.prev should this upgrade fail for any reason and you need to boot your old kernel%%08022 Beginning extraction of distributions..%%08023 Hmmmm. We couldn't even extract the bin distribution. This upgrade should be considered a failure and started from the beginning, sorry! The system will reboot now.%%08024 The extraction process seems to have had some problems, but we got most of the essentials. We'll treat this as a warning since it may have been only non-essential distributions which failed to load.%%08027 First stage of upgrade completed successfully! Next comes stage 2, where we attempt to resurrect your /etc directory!%%08028 Unable to go to your saved /etc directory in %s?! Argh! Something went seriously wrong! It's quite possible that your former /etc is toast. I hope you didn't have any important customizations you wanted to keep in there.. :(%%08029 Upgrade completed! All of your old /etc files have been restored. For your reference, the new /etc files are in /etc/upgrade/ in case you wish to upgrade these files by hand (though that should not be strictly necessary). If your root partition is specified in /etc/fstab using the old "compatibility" slice, you may also wish to update it to use a fully qualified slice name in order to avoid warnings on startup. When you're ready to reboot into the new system, simply exit the installation.UWVS}hcB t W xhrhz h˱:hP_=u0h6^jh,c =1u8h^tjh,cu1=hl jPSuh]19}@LB9|heg]WmfuhFN]@hhW fu h5h]rPh.zhRP1 fuhW\h닐hӯ1 `ƅ hկh^Ãt;t SMth'x]u#hSPI tt8h\Sh&覵 tShY]h{\hֱuhCH tEh V\hJHO thb\ujM h_[h߳\W\ft&=t6t uh[h^[}jh[S0 tSh '[h6h [[^_%%08050 No disks found! Please verify that your disk controller is being properly probed at boot time. See the Hardware Guide on the Documentation menu for clues on diagnosing this type of problem.%%8051 OK. First, we're going to go to the disk label editor. In this editor you will be expected to Mount any partitions you're interested in upgrading. DO NOT set the Newfs flag to Y on anything in the label editor unless you're absolutely sure you know what you're doing! In this instance, you'll be using the label editor as little more than a fancy screen-oriented partition mounting tool. Once you're done in the label editor, press Q to return here for the next step.%%08052 The disk label editor returned an error status. Upgrade operation aborted.%%08053 Not all file systems were properly mounted. Upgrade operation aborted.%%08054 chflags'ing old binaries - please wait.chflags -R noschg /mnt/%%08055 Updating /stand on root filesystem%%08056 Unable to chroot to /mnt - something is wrong with the root partition or the way it's mounted if this doesn't work.%%08057 Upgrade: Couldn't initialize media.%%08058 Preserving /etc directory..tar -cpBf - -C /etc . | tar -xpBf - -C %s%%08059 Unable to backup your /etc into %s.%%08060 Moving old kernel to /kernel.prevchflags noschg /kernel && mv /kernel /kernel.prevcp /kernel.prev /kernel%%08061 Beginning extraction of distributions..%%08062 Hmmmm. We couldn't even extract the bin distribution. This upgrade should be considered a failure and started from the beginning, sorry! The system will reboot now.%%08063 The extraction process seems to have had some problems, but we got most of the essentials. We'll treat this as a warning since it may have been only non-essential distributions which failed to upgrade.%%08064 Hmmmm. We couldn't even extract the bin distribution. This upgrade should be considered a failure and started from the beginning, sorry! The system will reboot now.%%08067 First stage of upgrade completed successfully.tar -cpBf - -C %s . | tar --unlink -xpBf - -C /etc%%08068 Unable to resurrect your old /etc!UWVSuhrhz =&h"jPSuhKR$19}@LB9|hoRV%fuhORhh]V fuhQhth.Rh#(h;RgPh. hR% fuhfvQhXEhӯ2& t8P@PЃu hhVBhQhh2聪thh\gQh2=t(hEQh7D u h&D hQVQfu h,,=t4uhPhbPjh]Phh販 uhPe[^_us.isous.dvorakuk.isoswissgerman.isoswedish.isospanish.isosi.isoru.koi8-rnorwegian.isojp.106icelandic.isoit.isogerman.isofr.isodanish.isobr275.isobe.isoABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/dev/consoleCan't open /dev/consoleKeymap ioctl failedUWVSu[y Eu| 1~h9u4 ËU0}ЍXd=dSu7! Hv =uRjhxV Ã} hMwhkSb ǃ } hLSf whkj1 ǃ u贔 1u4=pt+$?DFu~ e[^_Unable to find disk %s!US]j3u3heM(zLuBL0" @L]UEj0=txLu1Ð%%09002 No disks found! Please verify that your disk controller is being properly probed at boot time. See the Hardware Guide on the Documentation menu for clues on diagnosing this type of problem.nonInteractive%%09040 No devices suitable for installation found! Please verify that your disk controller (and attached drives) were detected properly. This can be done by pressing the [Scroll Lock] key and using the Arrow keys to move back to the boot messages. Press [Scroll Lock] again to return._diskLabelledwrittenyesUWVSEPuhJt h_jt j1LjAuu@E@Lh_.tE0Q1 E02ÃUhphjhǃuhn'JjWOWϐ ft3htƿthh1؍e[^_%%09004 You must assign disk labels before this option can be used.%%09201 All filesystem information written successfully.UWVS]htƿuLuhI9S"fuS\fuh)Dhh/1e[^_UVSu1ۃ=tHw'x4tV@4P螫 u C<u1e[^Partitions are larger than actual chunk??USEX@tx t+Xu} hLF؋]No chunk list found for %s!UWVS11M9} t M ]9 u[]xLtO@\Ex u0hKFMA Pt'z uǀFuG]<u1;MxLt|@\E@ Ptlz uBBtYx u)x$uFuz uǀFuG]<j954|t N54 4e[^_/change_menewfs -b 8192 -f 1024UWVSuu6h4hVCP2AfU ؍e[^_%%09401 Please specify a mount point for the partition%%09005 You already have a mount point for %s assigned!%%09006 Mount point must start with a / character/UWVSE}tUz4tJ4M}u\ \h1}tEPxF \\t;u"}tUr4葋 MA41}tSEPͧ tSt ShDŀ;/thuD봐޿Ju}tUJ(}tMa(u2jjSE}t UB4B,Ee[^_%%09021 A swap partition.Swap%%09020 A file systemFS%%09023 If you want to use this partition for swap space, select Swap. If you want to put a filesystem on it, choose FS.%%09022 Please choose a partition typeUWVS\ \16egFeW tWdm eF~jj]ShejjjjhFPhEFPV \\u9޿u !u쿮u1e[^_%%09402 Please enter the newfs command and options you'd like to use in creating this file system.USh^]S@Ct hPSm.]%%09024 FreeBSD Disklabel Editor%%09025 Part%%09026 Mount%%09027 Size%%09028 Newfs ***MORE***%%09029 Disk: %s Partition name: %s Free: %d blocks (%dMB)swapDOSUFS YUFS NSWAP*%4ldMB UWVS|' =T N QU W ==t|=t1 =JI=  =htu =4t 4 4@< 4A<u 4@<t 4 4 4@<r 4A<uZ h{.4t h 4à h EPEPEPEPjq}hJjjjtW4  P4PpBÃu h[sjhJC4C,u|I}hSǃtW觋 FEEEjjEPEPjEP` E}jjjP4PpnÃu h\C4C,u|}hǃtWފ 5ht4jjjS4PpÃu't Wi Ph%Y sjh EC4C,u|}hhǃtW 4Ãt}jPh$ jjjS4PpÃu hsjh eC4C,u|h<ǃ4t h 4à hVDžpShEP+m \ \؅} PShEPT% \\WjEPQۋ x :E8v QG  tb4Mu x [EvQhG tb4Cu,4@P Pxxxjh%"Et}uNjwÃuusJu pp1ۋpt>4@(u hQkxjh8<"p}uPjx4Pptuh!ptAtB(t5h !t4pVI}t6tr3CP*tB4SetZ4tB,hEtƿthhpu|e1=t t9e@<u=eHe4u hE4u h-%4PphE tƿthhvu|%%4t$w thhls4p4P8Ãu4uhCƿJt&ƿ tƿ u,CPhCffCC hEtƿthh-u|ehn4x4t@48t Ph!E4X4pt;%P1tCP4H4Sa 4@,hyEtƿhhhK5Et$ƿuhch-Nhhj hz2Mjjluh 1ۋl:t0lx\txLt p\Cl<uhAEtƿthhulrph)E^ESGv SO  tbD4%u ShHLPhc E 4<u e 4e}`[^_disk%%09041 diskLabel: No disk selected - can't label automatically.%%09042 diskLabel: No disk device %s found!%s-%d%s %d %s%%09043 For slice entry %s, got an invalid detail entry of: %s%%09044 Not enough free space to create partition: %s%%09045 Unable to create from partition spec: %s. Too big?%s %s%%09046 For slice entry %s, got an invalid detail entry of: %sUlWVS]DžDžhuhjuhWt S\ @\SQDž=tDžrhhS觬 SPPh t,rhDž 7u!2Ju  u9~"hDž}uPj腻Ãhj5C4C,Dž Dž)Br#ƅPhB% t1rhHDž v Q9 tb4Yȋz4tB4Pw #jQB4B, Ju,J(*hDž b(<uhh8[^_UWVSu uw uT];t6j/SXx Ãt%{/u{sWVv {/tC;uu uow %e[^_../%s: Cannot opendir Can't stat: %s RCSSCCSCVSCVS.adm%s: Unable to make or stat: %s %s: is a link instead of a directory Unable to chdir to: %s ..Unable to get back to .. %s: %s Unable to create symlink: %s UWVSu M9uF9Au }tkƅuS6w S; 4 u+Sho _h I000ЍD0/0v ,(8$ 4I Ãs0Ѐ|~tV0t ,P($ }(hQff%f=@,{.u{ ]C%=.JCƿ0ƿƿƿ=8(8L 1Ʌt( <5 t(h1$sV }<=pu3hV |$V }CPh=h sV4` | VhsV[ } Vh=8=</%P$P(h K=8=<h sV_ |=Ƅ(( (q Vh$ XsV( >Vh,+4 1[^_.Destination directory doesn't exist: %s %s: Not a directory Unable to chdir to %s From directory doesn't exist: %s UVSu] u4@PS } Sh6tfHf%f=@tSYSv } ShtIEPV } Vh-fEf%f=@uj@PEPVVh_m8[^Signal %d caught! That's bad! US]Shp &Shs Error: This utility should only be run as root. -fakelanguagejapanesechinesekoreanons2TERMYESdebug%%10000 I'll be just faking it from here on out, OK?sysinstall%%10003 A signal %d was caught - I'm saving what I can and shutting If you can reproduce the problem, please turn Debug on in the Options menu for the extra information it provides in debugging problems like this.%%10001 Are you sure you wish to exit? The system will reboot (be sure to remove any floppies from the drives).UWVS1[ uh j Z h j Z 6 th hd }~!U r u \u u:Yjhe&h  t^ƿ  u?ƿ u ƿ u Hv =ujG袒t0=u"jh h S @PFl u$j=u螐}~3U r uh h 躵h D  =t8E \E[?1;3;4;5l\E[?7;8h\E[1;24r\E[24;1H:if=/usr/share/tabset/vt100:nw=2\EE:ho=\E[H:as=2\E(0:ae=2\E(B:ac=llmmkkjjuuttvvwwqqxxnnpprr``aa:rs=\E>\E[?1;3;4;5l\E[?7;8h:ks=\E[?1h\E=:ke=\E[?1l\E>:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=\177:k0=\EOy:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOt:k6=\EOu:k7=\EOv:k8=\EOl:k9=\EOw:k;=\EOx:@8=\EOM:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:K5=\EOn:pt:sr=2*\EM:vt#3:xn:sc=2\E7:rc=2\E8:cs=5\E[%i%d;%dr:UP=2\E[%dA:DO=2\E[%dB:RI=2\E[%dC:LE=2\E[%dD:ct=2\E[3g:st=2\EH:ta=^I:ms:bl=^G:cr=^M:eo:it#8:ut:RA=\E[?7l:SA=\E[?7h:User generated interrupt. Uh+eU=eu1eUEu 0`…t8tUjuMEDIA_TIMEOUTUSh,誖u,PO Ãud=eu'6 nne]cpioVerbosehigh-vmedium-VUWVh-%t=ƿ -u -(tƿ-u --e^_U=8t 8P@X8%%11000 No CDROM devices found! Please check that your system's configuration is correct and that the CDROM drive is of a supported type. For more information, consult the hardware guide in the Doc menu.Unable to create CDROM menu! Something is seriously wrong.UVSjjS u}t h-i~Gjh|,jh@v Ãu hm.UjSFSB/ u8=8t e[^Uju%%11002 No floppy devices found! Please check that your system's configuration is correct. For more information, consult the hardware guide in the Doc menu.Unable to create Floppy menu! Something is seriously wrong./distUVS&jj]Sm uhg/(|~GjhX/jhtvtÃu h0jSS- u28=8t 8@\C0=8t e[^Uju;%%11004 No DOS primary partitions found! This installation method is unavailableUnable to create DOS menu! Something is seriously wrong.UVSjj S uh1g~Gjh1jhv Ãu he1ijSZSV, u8=8t e[^Uju%%11006 No tape drive devices found! Please check that your system's configuration is correct. For more information, consult the hardware guide in the Doc menu.Unable to create tape drive menu! Something is seriously wrong.%%11008 Please enter the name of a temporary directory containing sufficient space for holding the contents of this tape (or tapes). The contents of this directory will be removed after installation, so be sure to specify a directory that can be erased afterwards! /usr/tmpUVS&jj]Sm uhS2(~GjhD2jhppÃu h2jSS) uW8=8t4h73hB4-u8P ¡8P\=8t e[^ftpnonInteractive%%11022 Re-use old FTP site selection values?otherftp://%%11010 Please specify the URL of a FreeBSD distribution on a remote ftp site. This site must accept either anonymous ftp or you should have set an ftp username and password in the Options screen. A URL looks like this: ftp:/// Where is relative to the anonymous ftp directory or the home directory of the user being logged in as.%%11011 Sorry, %s is an invalid URL!%%11023 You've already done the network configuration once, would you like to skip over it now?mediaSetFTP: Net device init failed. hostname = `%s' /dir = `%s' port # = `%d' nameserverLooking up host %s.Starting DNS. Looking up hostname, %s, using inet_addr(). Looking up hostname, %s, using gethostbyname(). %%11013 Cannot resolve hostname `%s'! Are you sure that your name server, gateway and network interface are correctly configured?Found DNS entry for %s successfully.. ftpHostftpDirectoryftpPortUWVSDžQh.5h25u =etthA5=t1ۅu@ [jhvth.5ƉÃDžu L޿o5uPhu5h.5>Zh|5h.5越ÃT;K޿u54jShu5,? tSh6rj?Sh@hCPP!Z=et(h7+t)=eteP@XЃ_eeP@PЃu!hf7qj:PBx ÃtCjjSD  j/؅uPx ƃtFt=Ph7u7Ph7j5h7Zh7ՇPh7yt h7tPh7S.1 urtSh8S( uHShF8=eteP@XЃeh.5? Ph8_Ph8苆u7Ph8r5Ph9\3l7 9e8@ [^_activeftpStateUS]h=h =S]passiveUS]h5=h =超S]%%11014 Enter a fully qualified pathname for the directory containing the FreeBSD distribution files:ufsUVha=h=谆ƒtO=4HR 8Ð%%11015 Please enter the full NFS file specification for the remote host and directory containing the FreeBSD distribution files. This should be in the format: hostname:/some/freebsd/dirnfs%%11016 Invalid NFS path specification. Must be of the form: host:/full/pathname/to/FreeBSD/distdir%%11025 You've already done the network configuration once, would you like to skip over it now?mediaSetNFS: Net device init failed %%11018 Cannot resolve hostname `%s'! Are you sure that your name server, gateway and network interface are correctly configured?Found DNS entry for %s successfully..nfsHostUVSShG>h?Ѓƃt-hVSyj:S9r Ãuh?\j?PhA =et(hl?ht%=eteP@XЃYeteP@PЃuEth?Gth7軁trS_+ uKS# u>Sh?=eteP@XЃeh?荁Vht@Ph@P XD.\/`0ed8[^/stand/gunzip/usr/bin/gunzip/dev/null%s command returns %d status /stand/cpio/usr/bin/cpio--block-size-idumUWVS]} uu7SSm EP贩 EP諩  |B=tnBju u# ju u# =tj5ن jm# jhB uV# uN# jWWՖ tSWhB SZ& Eu# > ‹EB=tBju? u" u" u" =tj5 j5 j" jhB9 jj 0҉ψt'jCPhByPhBVVԕ ÃjaCPhBhBVV賕 ÃtSVhB S8% u! u! e[^_wait for gunzip returned status of %d! cpio returned error status of %d! USjEPu à }9tBShE5jEPu à |Et!tEPh=E1]%%11026 Failure to read from media: User interrupt.o%%11027 Write error on transfer to cpio process, try of %d bytes.%%11028 %10d bytes read from %s dist @ %.1f KB/sec..A@UPWVS]u7SS輥 P P O |B=tnBu+>  j;   j  =tj5 j jhB) jWW * tSWhB' S" s AB=tB jj    u= =tj5( j5jjhB^ P jj 0҉ψt'j?PhBPhBVV Ãj}?PhBhBVVϑ ÃtSVhB ST! hEShFm   1jP Dž ,DžDžPPj uhjV, Ã>SV 9:jQd )+}@BFڽڅٽ ٭$Z٭u߉љFS<$$u WhRFjPj m jP葻 Ã}tPShECjP` à | t$tPh=E1[^_US1jh؀:t =8u ]U=8tÐjf%%%11020 Please enter the username you wish to login as:ftpUser%%11024 Please enter the password for this user:ftpPassUHhpKhKxt&mH mhKhKsxƒ%m1Ҹu%%11021 CPIO Verbosity is not set to anything!lowUWVh-vuhBLJƿqLu h-#ƿ-u h -hqLh-%v1e^_U  U%UX? UX%U ? U%=Xu=u %U XU%XU ?U%U1ҡ%=t%=uf=uU1ҡ%=t%=uf=uU1ҡ%=t%=utU1ҡUUt%U=UuU1ҡ%U=Ut%U=UuU=%U1ҁ=u;f=u0%=uX%=u??uBUUU%Ulanguage=japaneseJapanese (EUC-JP)Japaneselanguage=englishEnglish (US-ASCII)EnglishlanguagesPress F1 for more HELPPlease choose a language you want to use in FreeBSD installation. Select it from this list by using the arrow keys and [Enter] key.FreeBSD sysinstall - I18N Menu%%00965 XFree86 PC98 Server selection menu.%%00964 XFree86, PC98 Server%%00133 XFree86 Server selection menu.%%00132 XFree86, Server%%00131 XFree86 Font selection menu.%%00130 XFree86, Fonts%%00976 Add user and group information.%%00975 User Managementusage%%00127 Quick start - How to use this menu system.%%00126 Usage%%00125 Upgrade an existing system.%%00124 Upgradetzsetup%%00123 Set the system's time zone.%%00122 Time Zone%%00963 The console screenmap configuration menu.%%00962 Syscons, Screenmap%%00121 The console screen saver configuration menu.%%00120 Syscons, Saver%%00119 The console key rate configuration menu.%%00118 Syscons, Keyrate%%00117 The console keymap configuration menu.%%00116 Syscons, Keymap%%00961 The console screen font.%%00960 Syscons, Font%%00115 The system console configuration menu.%%00114 Sysconsrouter%%00111 Select routing daemon (default: routed)%%00110 Routerpasswdroot%%00109 Set the system manager's password.%%00108 Root Passwordregistered%%32009 Register yourself or company as a FreeBSD user.%%32008 Registerpcnfsd%%00105 Run authentication server for PC-NFS.%%00104 PCNFSD%%00103 The disk Slice (PC-style partition) Editor%%00102 Partition%%00101 The packages collection%%00100 Packages%%00099 The options editor.%%00098 Options%%00097 The NTP configuration menu.%%00096 NTP Menunfs_server_enable%%00095 Set NFS server flag.%%00094 NFS, servernfs_client_enable=YES%%00093 Set NFS client flag.%%00092 NFS, client%%00091 The network services menu.%%00090 Networking Services%%00089 Configure network interfaces%%00088 Network Interfaces%%00087 Select passive FTP installation media.%%00086 Media, FTP Passive%%00085 Select FTP installation media.%%00084 Media, FTP%%00083 Select UFS installation media.%%00082 Media, UFS%%00081 Select DOS installation media.%%00080 Media, DOS%%00079 Select CDROM installation media.%%00078 Media, CDROM%%00077 Select floppy installation media.%%00076 Media, Floppy%%00075 Select NFS installation media.%%00074 Media, NFS%%00073 Select tape installation media.%%00072 Media, Tape%%00071 Top level media selection menu.%%00070 Media%%00069 The disk Label editor%%00068 Label%%00067 The custom installation menu%%00066 Install, Custom%%00065 An express system installation.%%00064 Install, Express%%00063 A novice system installation.%%00062 Install, Novice%%00061 The HTML documentation menu%%00060 HTML Docsgateway=YES%%00059 Set flag to route packets between interfaces.%%00058 Gateway%%00055 The FTP mirror site listing.%%00054 FTP sites%%00053 Repair mode with CDROM or fixit floppy.%%00052 Fixit%%32007 The disk Partition Editor%%32006 Fdisk%%32005 Start an Emergency Holographic shell.%%32004 Emergency shell%%00049 The HTML documentation menu.%%00048 Doc, HTMLRELNOTES%%00047 The distribution release notes.%%00046 Doc, ReleaseCOPYRIGHT%%00045 The distribution copyright notices.%%00044 Doc, CopyrightINSTALL%%00043 The distribution installation guide.%%00042 Doc, InstallHARDWARE%%00041 The distribution hardware guide.%%00040 Doc, HardwareREADME%%00039 The distribution README file.%%00038 Doc, README%%00037 Installation instructions, README, etc.%%00036 Documentation%%00035 XFree86 distribution menu.%%00034 Distributions, XFree86%%32003 Installing additional distribution sets%%32002 Distributions, Adding%%00033 Select average X user distribution.%%00032 Dists, X User%%00031 Select average user distribution.%%00030 Dists, User%%00029 Select kernel developer's distribution.%%00028 Dists, Kern Developer%%00027 Select X developer's distribution.%%00026 Dists, X Developer%%00025 Src distribution menu.%%00024 Dists, Src%%00023 Select developer's distribution.%%00022 Dists, Developer%%00021 DES distribution menu.%%00020 Dists, DES%%00019 Basic FreeBSD distribution menu.%%00018 Dists, Basic%%00017 Root of the distribution tree.%%00016 Dists, All%%32001 The disk Label editor%%32000 Disklabel%%00015 The mouse configuration menu.%%00014 Device, Mouse%%32061 Load default settings.%%32060 Defaults, Load%%00013 The system configuration menu.%%00012 Configure%%00011 Customize system console behavior.%%00010 Console settings%%00009 Commit any pending actions (dangerous!)%%00008 Commitanon_ftp%%00007 Configure anonymous FTP logins.%%00006 Anon FTP%%00003 Use PageUp or PageDown to move through this menu faster!%%00002 This menu contains an alphabetized index of the top level functions in this program (sysinstall). Invoke an option by pressing [ENTER]. Leave the index page by selecting Cancel [TAB-ENTER].%%00001 Glossary of functions%%00159 Glossary of functions%%00158 0 Index%%32063 Load default install configuration%%32062 l Load Config%%00157 Do post-install configuration of FreeBSD%%00156 c Configure%%00155 Upgrade an existing system%%00154 9 Upgrade%%00153 Enter repair mode with CDROM/floppy, or start a shell.%%00152 8 Fixit%%00151 Begin a custom installation (for experts)%%00150 7 Custom%%00149 Begin a quick installation (for the impatient)%%00148 6 Express%%00147 Begin a novice installation (for beginners)%%00146 5 Novice%%00145 View/Set various installation options%%00144 4 Options%%00956 Select keyboard type%%00955 3 Keymap%%00143 Installation instructions, README, etc.%%00142 2 Doc%%00141 Quick start - How to use this menu system%%00140 1 Usage%%00139 Exit Install%%00138 Selectinstall%%00137 Press F1 for Installation Guide%%00136 Welcome to the FreeBSD installation and configuration tool. Please select one of the options below by using the arrow keys or typing the first character of the option name you're interested in. Invoke an option by pressing [ENTER] or [TAB-ENTER] to exit the installation.%%00135 /stand/sysinstall Main Menu%%00191 Exit this menu (returning to previous)%%00190 0 Exiti18n%%00189 Sysinstall internationalization.%%00188 I I18Npccard%%00859 PC-card (PAO package) installation guide.%%00858 P PC-card%%00187 Go to the HTML documentation menu (post-install).%%00186 7 HTML Docsshortcuts%%00185 Creating shortcuts to sysinstall.%%00184 6 Shortcuts%%00183 The release notes for this version of FreeBSD.%%00182 5 Release%%00181 The FreeBSD Copyright notices.%%00180 4 Copyright%%00179 A step-by-step guide to installing FreeBSD.%%00178 3 Install%%00177 The FreeBSD survival guide for PC hardware.%%00176 2 Hardware%%00175 A general description of FreeBSD. Read this!%%00174 1 README%%00173 Confused? Press F1 for help.%%00172 If you are at all unsure about the configuration of your hardware or are looking to build a system specifically for FreeBSD, read the Hardware guide! New users should also read the Install document for a step-by-step tutorial on installing FreeBSD. For general information, consult the README file.%%00171 FreeBSD Documentation Menumoused_type=thinkingmouse%%32152 Kensington ThinkingMouse (serial)ThinkingMousemoused_type=mousesystems%%32151 MouseSystems protocol (serial)MouseSystemsmoused_type=mouseman%%32150 Logitech MouseMan/TrackMan models (serial)MouseManmoused_type=mmseries%%32149 MM Series protocol (serial)MM Seriesmoused_type=microsoft%%32148 Microsoft protocol (serial)Microsoftmoused_type=logitech%%32147 Logitech protocol (old models) (serial)Logitechmoused_type=intellimouse%%32146 Microsoft IntelliMouse (serial)IntelliMousemoused_type=mmhittab%%32145 Hitachi tablet (serial)Hitachimoused_type=glidepoint%%32144 ALPS GlidePoint pad (serial)GlidePointmoused_type=auto%%32143 Bus mouse, PS/2 style mouse or PnP serial mouseAuto%%32142 If you are not sure, choose "Auto". It should always work for bus and PS/2 style mice. It may not work for the serial mouse if the mouse does not support the PnP standard. But, it won't hurt. Many 2-button serial mice are compatible with "Microsoft" or "MouseMan". 3-button serial mice may be compatible with "MouseSystems" or "MouseMan". If the mouse has a wheel, it may be compatible with "IntelliMouse".%%32141 Select a protocol type for your mousemoused_port=/dev/psm0%%32167 PS/2 style mouse (/dev/psm0)PS/2moused_port=/dev/mse0%%32166 Logitech, ATI or MS bus mouse (/dev/mse0)BusMousemoused_port=/dev/cuaa3%%32165 Serial mouse on COM4 (/dev/cuaa3)COM4moused_port=/dev/cuaa2%%32164 Serial mouse on COM3 (/dev/cuaa2)COM3moused_port=/dev/cuaa1%%32163 Serial mouse on COM2 (/dev/cuaa1)COM2moused_port=/dev/cuaa0%%32162 Serial mouse on COM1 (/dev/cuaa0)COM1%%32161 The built-in pointing device of laptop/notebook computers is usually a PS/2 style device.%%32160 Select your mouse port from the following menu%%32180 Exit this menu (returning to previous)%%32179 0 Exit%%32178 Disable the mouse daemon%%32177 4 Disable%%32176 Test and run the mouse daemon%%32175 3 Enable%%32174 Select mouse port%%32173 2 Port%%32172 Select mouse protocol type%%32171 1 Type%%32252 You can cut and paste text in the text console by running the mouse daemon. Specify a port and a protocol type of your mouse and enable the mouse daemon. If you don't want this feature, select 4 to disable the daemon. Once you've enabled the mouse daemon, you can specify "/dev/sysmouse" as your mouse device and "SysMouse" or "MouseSystems" as mouse protocol when running the X configuration utility (see Configuration menu). Please note that if you're using multibyte installer (Japanese, Korean,and Chinese), mouse cursor won't be displayed on the console at once,but it'll be displayed after you reboot the machine.%%32170 Please configure your mousexf86config=XF98Setup%%32190 Fully graphical XFree86 configuration tool (PC98).XF98Setupxf86config=xf86config%%32014 Shell-script based XFree86 configuration tool.xf86configxf86config=XF86Setup%%32013 Fully graphical XFree86 configuration tool.XF86SetupXF86%%32012 Press F1 to read the XFree86 release notes for FreeBSD%%32011 The first tool, XF86Setup, is fully graphical and requires the VGA16 server in order to work (should have been selected by default, but if you de-selected it then you won't be able to use this fancy setup tool). The second tool, xf86config, is a more simplistic shell-script based tool and less friendly to new users, but it may work in situations where the fancier one does not.%%32010 Please select the XFree86 configuration tool you want to use.Press F1 to read the installation guide%%00212 FreeBSD can be installed directly from a CDROM containing a valid %%00213 FreeBSD distribution. If you are seeing this menu it is because more than one CDROM drive was found on your system. Please select one of the following CDROM drives as your installation drive.%%00211 Choose a CDROM type%%00216 You have more than one floppy drive. Please chose which drive you would like to use.%%00215 Choose a Floppy drive%%00223 Press F1 to read the installation guide%%00222 FreeBSD can be installed directly from a DOS partition assuming, of course, that you have copied the relevant distributions into your DOS partition before starting this installation. If this is not the case then you should reboot DOS at this time and copy the distributions you wish to install into a "FREEBSD" subdirectory on one of your DOS partitions. Otherwise, please select the DOS partition containing the FreeBSD distribution files.%%00221 Choose a DOS partitionftp=ftp://ftp6.freebsd.org/pub/FreeBSD/ftp6.freebsd.org%%00340 USA #6ftp=ftp://ftp5.freebsd.org/pub/FreeBSD/ftp5.freebsd.org%%00338 USA #5ftp=ftp://ftp4.freebsd.org/pub/FreeBSD/ftp4.freebsd.org%%00336 USA #4ftp=ftp://ftp3.freebsd.org/pub/FreeBSD/ftp3.freebsd.org%%00334 USA #3ftp=ftp://ftp2.freebsd.org/pub/FreeBSD/ftp2.freebsd.org%%00332 USA #2%%00330 USAftp=ftp://ftp4.uk.freebsd.org/pub/FreeBSD/ftp4.uk.freebsd.org%%32083 UK #4ftp=ftp://ftp3.uk.freebsd.org/pub/FreeBSD/ftp3.uk.freebsd.org%%00328 UK #3ftp=ftp://ftp2.uk.freebsd.org/pub/FreeBSD/ftp2.uk.freebsd.org%%00326 UK #2ftp=ftp://ftp.uk.freebsd.org/pub/FreeBSD/ftp.uk.freebsd.org%%00324 UKftp=ftp://ftp.nectec.or.th/pub/mirrors/FreeBSD/ftp.nectec.or.th%%00322 Thailandftp=ftp://ftp3.tw.freebsd.org/pub/FreeBSD/ftp3.tw.freebsd.org%%00320 Taiwan #3ftp=ftp://ftp2.tw.freebsd.org/pub/FreeBSDftp2.tw.freebsd.org%%00318 Taiwan #2ftp=ftp://ftp.tw.freebsd.org/pub/FreeBSDftp.tw.freebsd.org%%00316 Taiwanftp=ftp://ftp3.se.freebsd.org/pub/FreeBSD/ftp3.se.freebsd.org%%32029 Sweden #3ftp=ftp://ftp2.se.freebsd.org/pub/FreeBSD/ftp2.se.freebsd.org%%32028 Sweden #2ftp=ftp://ftp.se.freebsd.org/pub/FreeBSD/ftp.se.freebsd.org%%00314 Swedenftp=ftp://ftp4.za.freebsd.org/pub/FreeBSD/ftp4.za.freebsd.org%%32027 South Africa #4ftp=ftp://ftp3.za.freebsd.org/pub/FreeBSD/ftp3.za.freebsd.org%%00312 South Africa #3ftp=ftp://ftp2.za.freebsd.org/pub/FreeBSD/ftp2.za.freebsd.org%%00310 South Africa #2ftp=ftp://ftp.za.freebsd.org/pub/FreeBSD/ftp.za.freebsd.org%%00308 South Africaftp=ftp://ftp4.ru.freebsd.org/pub/FreeBSD/ftp4.ru.freebsd.orgRussia #4ftp=ftp://ftp3.ru.freebsd.org/pub/FreeBSD/ftp3.ru.freebsd.org%%32026 Russia #3ftp=ftp://ftp2.ru.freebsd.org/pub/FreeBSD/ftp2.ru.freebsd.org%%32025 Russia #2ftp=ftp://ftp.ru.freebsd.org/pub/FreeBSD/ftp.ru.freebsd.org%%00306 Russiaftp=ftp://ftp2.pt.freebsd.org/pub/FreeBSD/ftp2.pt.freebsd.org%%32024 Portugal #2ftp=ftp://ftp.pt.freebsd.org/pub/misc/FreeBSD/ftp.pt.freebsd.org%%00304 Portugalftp=ftp://ftp.pl.freebsd.org/pub/FreeBSD/ftp.pl.freebsd.org%%00302 Polandftp=ftp://ftp2.kr.freebsd.org/pub/FreeBSD/ftp2.kr.freebsd.org%%00298 Korea #2ftp=ftp://ftp.kr.freebsd.org/pub/FreeBSD/ftp.kr.freebsd.org%%00296 Koreaftp=ftp://ftp6.jp.freebsd.org/pub/FreeBSD/ftp6.jp.freebsd.org%%00294 Japan #6ftp=ftp://ftp5.jp.freebsd.org/pub/FreeBSD/ftp5.jp.freebsd.org%%00292 Japan #5ftp=ftp://ftp4.jp.freebsd.org/pub/FreeBSD/ftp4.jp.freebsd.org%%00290 Japan #4ftp=ftp://ftp3.jp.freebsd.org/pub/FreeBSD/ftp3.jp.freebsd.org%%00288 Japan #3ftp=ftp://ftp2.jp.freebsd.org/pub/FreeBSD/ftp2.jp.freebsd.org%%00286 Japan #2ftp=ftp://ftp.jp.freebsd.org/pub/FreeBSD/ftp.jp.freebsd.org%%00284 Japanftp=ftp://ftp2.il.freebsd.org/pub/FreeBSD/ftp2.il.freebsd.org%%00282 Israel #2ftp=ftp://ftp.il.freebsd.org/pub/FreeBSD/ftp.il.freebsd.org%%00280 Israelftp=ftp://ftp.ie.freebsd.org/pub/FreeBSD/ftp.ie.freebsd.org%%00278 Irelandftp=ftp://ftp.is.freebsd.org/pub/FreeBSD/ftp.is.freebsd.org%%32064 Icelandftp=ftp://ftp.hk.super.net/pub/FreeBSD/ftp.hk.super.net%%00276 Hong Kongftp=ftp://ftp.nl.freebsd.org/pub/FreeBSD/ftp.nl.freebsd.org%%00274 Hollandftp=ftp://ftp7.de.freebsd.org/pub/FreeBSD/ftp7.de.freebsd.org%%00272 Germany #7ftp=ftp://ftp6.de.freebsd.org/pub/FreeBSD/ftp6.de.freebsd.org%%00270 Germany #6ftp=ftp://ftp5.de.freebsd.org/pub/FreeBSD/ftp5.de.freebsd.org%%00268 Germany #5ftp=ftp://ftp4.de.freebsd.org/pub/FreeBSD/ftp4.de.freebsd.org%%00266 Germany #4ftp=ftp://ftp3.de.freebsd.org/pub/FreeBSD/ftp3.de.freebsd.org%%00264 Germany #3ftp=ftp://ftp2.de.freebsd.org/pub/FreeBSD/ftp2.de.freebsd.org%%00262 Germany #2ftp=ftp://ftp.de.freebsd.org/pub/FreeBSD/ftp.de.freebsd.org%%00260 Germanyftp=ftp://ftp2.fr.freebsd.org/pub/FreeBSD/ftp2.fr.freebsd.org%%32023 France #2ftp=ftp://ftp.fr.freebsd.org/pub/FreeBSD/ftp.fr.freebsd.org%%00258 Franceftp=ftp://ftp.fi.freebsd.org/pub/FreeBSD/ftp.fi.freebsd.org%%00256 Finlandftp=ftp://ftp.ee.freebsd.org/pub/FreeBSD/ftp.ee.freebsd.org%%00254 Estoniaftp=ftp://ftp2.dk.freebsd.org/pub/FreeBSD/ftp2.dk.freebsd.org%%32201 Denmark #2ftp=ftp://ftp.dk.freebsd.org/pub/FreeBSD/ftp.dk.freebsd.org%%32200 Denmarkftp=ftp://ftp.cz.freebsd.org/pub/FreeBSD/ftp.cz.freebsd.org%%00252 Czech Republicftp=ftp://ftp.ca.freebsd.org/pub/FreeBSD/ftp.ca.freebsd.org%%00250 Canadaftp=ftp://ftp7.br.freebsd.org/pub/FreeBSD/ftp7.br.freebsd.org%%32022 Brazil #7ftp=ftp://ftp6.br.freebsd.org/pub/FreeBSD/ftp6.br.freebsd.org%%32021 Brazil #6ftp=ftp://ftp5.br.freebsd.org/pub/FreeBSD/ftp5.br.freebsd.org%%00248 Brazil #5ftp=ftp://ftp4.br.freebsd.org/pub/FreeBSD/ftp4.br.freebsd.org%%00246 Brazil #4ftp=ftp://ftp3.br.freebsd.org/pub/FreeBSD/ftp3.br.freebsd.org%%00244 Brazil #3ftp=ftp://ftp2.br.freebsd.org/pub/FreeBSD/ftp2.br.freebsd.org%%00242 Brazil #2ftp=ftp://ftp.br.freebsd.org/pub/FreeBSD/ftp.br.freebsd.org%%00240 Brazilftp=ftp://ftp5.au.freebsd.org/pub/FreeBSD/ftp5.au.freebsd.org%%32020 Australia #5ftp=ftp://ftp4.au.freebsd.org/pub/FreeBSD/ftp4.au.freebsd.org%%00238 Australia #4ftp=ftp://ftp3.au.freebsd.org/pub/FreeBSD/ftp3.au.freebsd.org%%00236 Australia #3ftp=ftp://ftp2.au.freebsd.org/pub/FreeBSD/ftp2.au.freebsd.org%%00234 Australia #2ftp=ftp://ftp.au.freebsd.org/pub/FreeBSD/ftp.au.freebsd.org%%00232 Australiaftp=ftp://ftp.ar.freebsd.org/pub/FreeBSD/ftp.ar.freebsd.org%%00970 Argentinaftp=ftp://releng210.freebsd.org/pub/FreeBSD/releng210.freebsd.org%%32082 2.1 SNAP Serverftp=ftp://releng22.freebsd.org/pub/FreeBSD/releng22.freebsd.org%%32081 2.2 SNAP Serverftp=ftp://current.freebsd.org/pub/FreeBSD/current.freebsd.org%%32080 3.0 SNAP Serverftp=other%%00231 Specify some other ftp site by URL%%00230 URLftp=ftp://ftp.freebsd.org/pub/FreeBSD/ftp.freebsd.org%%00228 Primary Site%%00227 Select a site that's close!%%00226 Please select the site closest to you or "other" if you'd like to specify a different choice. Also note that not every site listed here carries more than the base distribution kits. Only the Primary site is guaranteed to carry the full range of possible distributions.%%00225 Please select a FreeBSD FTP distribution site%%00347 Press F1 to read the installation guide%%00346 FreeBSD can be installed from tape drive, though this installation method requires a certain amount of temporary storage in addition to the space required by the distribution itself (tape drives make poor random-access devices, so we extract _everything_ on the tape in one pass). If you have sufficient space for this, then you should select one of the following tape devices detected on your system.%%00345 Choose a tape drive typenetwork_device%%00353 Press F1 to read network configuration manual%%00352 If you are using PPP over a serial device, as opposed to a direct ethernet connection, then you may first need to dial your Internet Service Provider using the ppp utility we provide for that purpose. If you're using SLIP over a serial device then the expectation is that you have a HARDWIRED connection. You can also install over a parallel port using a special "laplink" cable to another machine running a fairly recent (2.0R or later) version of FreeBSD.%%00351 Network interface information required%%32085 Go to the Options screen%%32084 9 Options%%00373 Install from SCSI or QIC tape%%00372 8 Tape%%00371 Install from a floppy disk set%%00370 7 Floppy%%00369 Install from an existing filesystem%%00368 6 File System%%00367 Install over NFS%%00366 5 NFS%%00365 Install from a DOS partition%%00364 4 DOS%%00363 Install from an FTP server through a firewall%%00362 3 FTP Passive%%00361 Install from an FTP server%%00360 2 FTP%%00359 Install from a FreeBSD CDROM%%00358 1 CDROMmedia%%00357 Press F1 for more information on the various media types%%00356 FreeBSD can be installed from a variety of different installation media, ranging from floppies to an Internet FTP server. If you're installing FreeBSD from a supported CDROM drive then this is generally the best media to use if you have no overriding reason for using other media.%%00355 Choose Installation Media%%00397 Exit this menu (returning to previous)%%00396 0 Exit%%00395 Reset selected distribution list to nothing%%00394 9 Clear%%00391 All sources and binaries (incl X Window System)%%00390 8 All%%00393 Specify your own distribution set%%00392 7 Custom%%00389 The smallest configuration possible%%00388 6 Minimal%%00387 Same as above, but includes X Window System%%00386 5 X-User%%00385 Average user - binaries and doc only%%00384 4 User%%00383 Full binaries and doc, kernel sources only%%00382 3 Kern-Developer%%00381 Same as above, but includes X Window System%%00380 2 X-Developer%%00379 Full sources, binaries and doc but no games%%00378 1 Developerdistributions%%00377 Press F1 for more information on these options.%%00376 As a convenience, we provide several "canned" distribution sets. These select what we consider to be the most reasonable defaults for the type of system in question. If you would prefer to pick and choose the list of distributions yourself, simply select "Custom". You can also pick a canned distribution set and then fine-tune it with the Custom item. Choose an item by pressing [SPACE]. When you are finished, chose the Exit item or press [ENTER].%%00375 Choose Distributions%%00438 Exit this menu (returning to previous)%%00437 Exit%%00436 Reset all of the above%%00435 Clear%%00434 All sources, binaries and X Window System binaries%%00433 All%%00430 The XFree86 3.3.2.3 distributionXFree86The FreeBSD Ports collectionports%%00428 Sources for everything but DESsrc%%00426 Profiled versions of the librariesproflibs%%32030 Preformatted system manual pagescatman%%00424 System manual pages - recommendedman%%00422 GNU info filesinfo%%00420 Games (non-commercial)games%%00418 Miscellaneous online docsdoc%%00416 Spelling checker dictionary filesdict%%00414 DES encryption code - NOT FOR EXPORT!DES%%00412 FreeBSD 2.1 binary compatibilitycompat21%%00410 FreeBSD 2.0 binary compatibilitycompat20%%00408 FreeBSD 1.x binary compatibilitycompat1x%%00404 Binary base distribution (required)bin%%00402 Please check off the distributions you wish to install. At the very minimum, this should be "bin". WARNING: Do not export the DES distribution out of the U.S.! It is for U.S. customers only.%%00401 Select the distributions you wish to install.%%00452 Exit this menu (returning to previous)%%00451 Exit%%32210 Export controlled crypto sourcesscrypto%%00450 Sources for DESssecure%%00448 Sources for Kerberos IVskerbero%%00446 Kerberos encryption serviceskrb%%00444 Basic DES encryption servicesdes%%00442 Please check off any special DES-based encryption distributions you would like to install. Please note that these services are NOT FOR EXPORT from the United States. For information on non-U.S. FTP distributions of this software, please consult the release notes.%%00440 Select the encryption facilities you wish to install.%%00494 Exit this menu (returning to previous)%%00493 Exit%%00492 Reset all of the above%%00491 Clear%%00490 Select all of the above%%00489 All%%00488 /usr/src/usr.sbin (sendmail config macros)smailcf%%00486 /usr/src/usr.sbin (aux system binaries)usbin%%00484 /usr/src/usr.bin (user binaries)ubin%%00482 /usr/src/sys (FreeBSD kernel)sys%%00480 /usr/src/share (documents and shared files)share%%00478 /usr/src/sbin (system binaries)sbin%%00476 /usr/src/bin (system binaries)%%00474 /usr/src/release (release-generation tools)release%%00472 /usr/src/lkm (Loadable Kernel Modules)lkm%%00470 /usr/src/libexec (system programs)libexec%%00468 /usr/src/lib (system libraries)lib%%00466 /usr/src/include (header files)include%%00464 /usr/src/games (the obvious!)%%00462 /usr/src/etc (miscellaneous system files)etc%%00460 /usr/src/gnu (software from the GNU Project)gnu%%00880 /usr/src/contrib (contributed software)contrib%%00458 top-level files in /usr/srcbase%%00456 Please check off those portions of the FreeBSD source tree you wish to install.%%00455 Select the sub-components of src you wish to install.%%00509 Exit this menu (returning to previous)%%00508 Exit%%00507 Reset XFree86 distribution list%%00506 Clear%%00505 Select all XFree86 distribution sets%%00504 All%%00503 Font set menu%%00502 Fonts%%00501 X server menu%%00500 Server%%00499 Basic component menu (required)%%00498 Basic%%00497 Press F1 to read the XFree86 release notes for FreeBSD%%00496 Please select the components you need from the XFree86 3.3.2.3 distribution sets.%%00495 XFree86 3.3.2.3 Distribution%%00545 Exit this menu (returning to previous)%%00544 Exit%%00543 Reset all of the above%%00542 Clear%%00541 Select all of the above%%00540 All%%00892 XFree86 3.3.2.3 contrib sourcescsources%%00891 XFree86 3.3.2.3 standard sourcessources%%32220 XFree86 Setup Utility for PC98 machines9set%%00890 XFree86 Setup Utilityset%%00531 Programmer's header and library filesprog%%00527 Manual pages%%00888 Server link kit for all other machineslkit%%00887 Server link kit for PC98 machineslk98%%00517 Data files needed at runtime%%00886 HTML documentation fileshtml%%00525 READMEs and release notes%%00885 Configuration filescfg%%00515 Client applications and shared libs%%00513 Press F1 to read the XFree86 release notes for FreeBSD%%00512 Please check off the basic XFree86 components you wish to install. Bin, lib, and set are recommended for a minimum installaion.%%00511 XFree86 3.3.2.3 base distribution types%%00571 Exit this menu (returning to previous)%%00570 Exit%%00569 Reset font selections%%00568 Clear%%00567 All fonts%%00566 All%%00565 Font serverserver%%00563 Japanese, Chinese and other non-english fontsnon%%00561 Speedo and Type scalable fontsfscl%%00559 Cyrillic Fontsfcyr%%00557 100 DPI fontsf100%%00555 Standard 75 DPI and miscellaneous fontsfnts%%00553 Press F1 to read the XFree86 release notes for FreeBSD%%00552 Please check off the individual font distributions you wish to install. At the minimum, you should install the standard 75 DPI and misc fonts if you're also installing a server (these are selected by default).%%00551 Font distribution selection.%%00607 Exit this menu (returning to previous)%%00606 Exit%%00605 Reset all of the above%%00604 Clear%%00603 Select all of the above%%00602 All%%00893 Select an X server for a NEC PC98 [Submenu]PC98%%00601 A nested server for testing purposesnest%%00599 8-bit ET4000/W32, /W32i and /W32p cardsW32%%00895 8, 16 and 24-bit color S3 Virge based boardsS3V%%00597 8, 16 and 24-bit color S3 based boardsS3%%00595 8, 16, and 24-bit color Weitek P9000 based boardsP9K%%00593 8 and 16-bit (65K color) ATI Mach64 cardMa64%%00591 8 and 16-bit (65K color) ATI Mach32 cardMa32%%00589 8-bit ATI Mach8 cardMa8%%00894 8, 16 and 24-bit #9 Imagine I128 cardI128%%00587 8-bit AGX cardAGX%%00585 8-bit (256 color) IBM 8514 or compatible card8514%%00583 Standard Monochrome cardMono%%00581 Standard 16 color VGA cardVGA16%%00579 Standard VGA or Super VGA cardSVGA%%00577 Press F1 to read the XFree86 release notes for FreeBSD%%00576 Please check off the types of X servers you wish to install. If you are unsure as to which server will work for your graphics card, it is recommended that try the SVGA or VGA16 servers or, for PC98 machines, the 9EGC or 9840 servers.%%00575 X Server selection.%%00916 Exit this menu (returning to previous)%%00915 Exit%%00914 PC98 WSN-A2F (cirrus) card9WSN%%00913 PC98 WABS (cirrus) card9WS%%00912 PC98 WAB-EP (cirrus) card9WEP%%00911 PC98 Cyber9320 and TGUI9680 cards9TGU%%32231 PC98 generic SVGA card9SVG%%00910 PC98 SKB-PowerWindow (S3) card9SPW%%00909 PC98 NEC (S3) card9NS3%%00908 PC98 NKV-NEC (cirrus) card9NKV%%32230 PC98 MGA (Matrox) card9MGA%%00907 PC98 PowerWindowLB (S3) card9LPW%%00906 PC98 GANB-WAP (cirrus) card9GAN%%00905 PC98 GA-968V4/PCI (S3 968) card9GA9%%00904 PC98 4-bit (16 color) EGC card9EGC%%00903 PC98 8-bit (256 color) PEGC-480 card9480%%00902 Press F1 to read the XFree86 release notes for FreeBSD%%00901 Please check off the types of NEC PC98 X servers you wish to install. If you are unsure as to which server will work for your graphics card, it is recommended that try the 9EGC or 9480 servers.%%00900 PC98 X Server selection.drives%%00613 Press F1 for important information regarding disk geometry!%%00612 Please select the drive, or drives, on which you wish to perform this operation. If you are attempting to install a boot partition on a drive other than the first one or have multiple operating systems on your machine, you will have the option to install a boot manager later. To select a drive, use the arrow keys to move to it and press [SPACE]. To de-select it, press [SPACE] again. Select OK or Cancel to leave this menu.%%00611 Select Drive(s)%%00625 Enter a URL.Other%%00623 The Home Pages for the FreeBSD Project (requires net)Home%%00621 The Frequently Asked Questions guide.FAQ%%00619 The FreeBSD Handbook.Handbook%%00617 Press F1 for more help on what you see here.%%00616 Please select the body of documentation you're interested in, the main ones right now being the FAQ and the Handbook. You can also chose "other" to enter an arbitrary URL for browsing.%%00615 Select HTML Documentation pointer%%00649 Exit this menu (returning to previous)%%00648 0 Exit%%00647 Just do distribution extract step%%00646 7 Extract%%00645 Perform any pending Partition/Label/Extract actions%%00644 6 Commit%%00643 Choose the installation media type%%00642 5 Media%%00641 Select distribution(s) to extract%%00640 4 Distributions%%00639 Label allocated disk partitions%%00638 3 Label%%00637 Allocate disk space for FreeBSD%%00636 2 Partition%%00635 View/Set various installation options%%00634 1 Options%%00633 Press F1 to read the installation guide%%00632 This is the custom installation menu. You may use this menu to specify details on the type of distribution you wish to have, where you wish to install it from and how you wish to allocate disk storage to FreeBSD.%%00631 Choose Custom Installation Options%%00659 Leave the Master Boot Record untouched%%00658 None%%00657 Install a standard MBR (no boot manager)%%00656 Standard%%00655 Install the FreeBSD Boot Manager ("Booteasy")%%00654 BootMgr%%00653 Press F1 to read drive setup%%00652 FreeBSD comes with a boot selector that allows you to easily select between FreeBSD and any other operating systems on your machine at boot time. If you have more than one drive and want to boot from the second one, the boot selector will also make it possible to do so (limitations in the PC BIOS usually prevent this otherwise). If you do not want a boot selector, or wish to replace an existing one, select "standard". If you would prefer your Master Boot Record to remain untouched then select "None". NOTE: PC-DOS users will almost certainly require "None"!overwrite meUS]M UJxȃ?pCJy]passwd rootYESroot_password_rootpassa_rootpassb%%32065 Please type the password for "root" user (system manager):%%32066 Please retype the password for "root" user (system manager) again:%%32069 Please enter a longer password.%%32070 Please don't use an all-lower case or all-digit password. Unusual capitalization, control characters or digits are suggested.%%32067 Mismatch. Try Again.$1$chpass -p '%s' root%%32068 Root password changed.U WVS=u+hMohh'[hhhh mfhhsRh]h_%m hhPG 0ЍpDž h19}k vRL  tbD4%u1 =wUV1u DžC9|u t hh hV9K}jP j PAjhsV2 jEPP (jPƅSF VSOPhwSœ (ShKhhhhhh jK 1[^_%%00689 Exit this menu (returning to previous)%%00688 E Exit%%32042 Register yourself or company as a FreeBSD user.%%32041 U Register%%32040 The disk Slice (PC-style partition) Editor%%32039 F Fdisk%%32038 The disk Label editor%%32037 L Label%%32046 Compile and Install PC-card kernel%%32045 C PC-card%%00687 Configure XFree86%%00686 X XFree86%%00685 Go to the HTML documentation menu (post-install)%%00684 D HTML Docs%%00683 Set the system manager's password%%00682 R Root Password%%00679 Install pre-packaged software for FreeBSD%%00678 P Packages%%32036 Install additional distribution sets%%32035 9 Distributions%%00677 View/Set various installation options%%00676 8 Options%%32087 Configure system startup options%%32086 7 Startup%%00675 Configure additional network services%%00674 6 Networking%%00673 Configure your mouse%%00672 5 Mouse%%00671 Change the installation media type%%00670 4 Media%%00669 Set which time zone you're in%%00668 3 Time Zone%%00667 Customize system console behavior%%00666 2 Console%%00665 Add user and group information%%00664 1 User Managementconfigure%%00663 Press F1 for more information on these options%%00662 If you've already installed FreeBSD, you may use this menu to customize it somewhat to suit your particular configuration. Most importantly, you can use the Packages utility to load extra "3rd party" software not provided in the base distributions.%%00661 FreeBSD Configuration Menu%%32131 Exit this menu (returning to previous)%%32130 Exitibcs2_enable=YES%%32129 This host wants to be able to run IBCS2 binaries.%%32128 SCOcheck_quotas=YES%%32127 This host wishes to check quotas on startup.%%32126 quotaslinux_enable=YES%%32125 This host wants to be able to run linux binaries.%%32124 linuxlpd_enable=YES%%32123 This host has a printer and wants to run lpd.%%32122 lpdaccounting_enable=YES%%32121 This host wishes to run process accounting.%%32120 accountingnis_server_enable=YES%%32119 This host wishes to be an NIS server.%%32118 nis servernis_client_enable=YES%%32117 This host wishes to be an NIS client.%%32116 nis clientnamed_flags%%32115 Set default flags to named (if enabled)%%32114 named flagsnamed_enable=YES%%32113 Run a local name server on this host%%32112 namedlocal_startup%%32111 Set the list of dirs to look for startup scripts%%32110 startup dirs -- pccard_ifconfig%%32109 List of PCCARD ethernet devices to configure%%32108 pccard ifconfigpccard_mem%%32107 Set PCCARD memory address (if enabled)%%32106 pccard mempccard_enable=YES%%32105 Enable PCCARD (AKA PCMCIA) services (also laptops)%%32104 pccardapm_enable=YES%%32103 Auto-power management services (typically laptops)%%32102 APM%%32101 This menu allows you to configure various aspects of your system's startup configuration. Remember to use SPACE to select items! The RETURN key will leave this menu (as with all checkbox menus).%%32100 Startup Services Menu%%00724 Exit this menu (returning to previous)%%00723 Exit%%00722 Run authentication server for clients with PC-NFS.%%00721 PCNFSD%%00716 This machine wishes to allow anonymous FTP.%%00715 Anon FTPrwhod=YES%%00714 This machine wants to run the rwho daemon%%00713 Rwhod%%00712 Select routing daemon (default: routed)%%00711 routerntpdate_enable=YES%%00710 Select a clock-synchronization server%%00709 Ntpdate%%00704 This machine will route packets between interfaces%%00703 Gatewaytcp_extensions=YES%%32093 Allow RFC1323 and RFC1644 TCP extensions?%%32092 TCP Extensionsamd_flags%%32091 Set flags to AMD service (if enabled)%%32090 AMD Flagsamd_enable=YES%%32089 This machine wants to run the auto-mounter service%%32088 AMDnfs_server_enable=YES%%00702 This machine will be an NFS server%%00701 NFS servernfs_client=YES%%00700 This machine will be an NFS client%%00699 NFS client%%00698 Configure additional network interfaces%%00697 Interfaces%%00696 You may have already configured one network device (and the other various hostname/gateway/name server parameters) in the process of installing FreeBSD. This menu allows you to configure other aspects of your system's network configuration.%%00695 Network Services Menuntpdate_enable=YES,ntpdate_flags=shorty.chpc.utexas.edu%%00767 shorty.chpc.utexas.edu (WWV clock)%%00766 U.S. Southwestntpdate_enable=YES,ntpdate_flags=chantry.hawaii.net%%00765 chantry.hawaii.net (WWV/H clock)%%00764 U.S. Pacificntpdate_enable=YES,ntpdate_flags=ncar.ucar.edu%%00763 ncar.ucar.edu (WWVB clock)%%00762 U.S. Midwestntpdate_enable=YES,ntpdate_flags=clock.llnl.gov%%00761 clock.llnl.gov (WWVB clock)%%00760 U.S. West Coast #3ntpdate_enable=YES,ntpdate_flags=clepsydra.dec.com%%00759 clepsydra.dec.com (GOES clock)%%00758 U.S. West Coast #2ntpdate_enable=YES,ntpdate_flags=apple.com%%00757 apple.com (WWV clock)%%00756 U.S. West Coastntpdate_enable=YES,ntpdate_flags=otc1.psu.edu%%00755 otc1.psu.edu (WWV clock)%%00754 U.S. East Coast #2ntpdate_enable=YES,ntpdate_flags=bitsy.mit.edu%%00753 bitsy.mit.edu (WWV clock)%%00752 U.S. East Coastntpdate_enable=YES,ntpdate_flags=swisstime.ethz.ch%%00751 swisstime.ethz.ch (DCF77 clock)%%00750 Switzerlandntpdate_enable=YES,ntpdate_flags=Time1.Stupi.SE%%00749 Time1.Stupi.SE (Cesium/GPS)%%00748 Swedenntpdate_enable=YES,ntpdate_flags=timer.unik.no%%00747 timer.unik.no (NTP clock)%%00746 Norwayntpdate_enable=YES,ntpdate_flags=ntp0.nl.net%%00745 ntp0.nl.net (GPS clock)%%00744 Netherlandsntpdate_enable=YES,ntpdate_flags=clock.tl.fukuoka-u.ac.jp%%00743 clock.tl.fukuoka-u.ac.jp (GPS clock)%%00742 Japan #2ntpdate_enable=YES,ntpdate_flags=clock.nc.fukuoka-u.ac.jp%%00741 clock.nc.fukuoka-u.ac.jp (GPS clock)%%00740 Japanntpdate_enable=YES,ntpdate_flags=ntps1-0.cs.tu-berlin.de%%00739 ntps1-0.cs.tu-berlin.de (GPS)%%00738 Germany #2ntpdate_enable=YES,ntpdate_flags=ntps1-0.uni-erlangen.de%%00737 ntps1-{0,1,2}.uni-erlangen.de (GPS)%%00736 Germanyntpdate_enable=YES,ntpdate_flags=canon.inria.fr%%00735 canon.inria.fr (TDF clock)%%00734 Francentpdate_enable=YES,ntpdate_flags=tick.usask.ca%%00733 tick.usask.ca (GOES clock)%%00732 Canadantpdate_enable=YES,ntpdate_flags=ntp.syd.dms.csiro.au%%00731 ntp.syd.dms.csiro.au (HP 5061 Cesium Beam)%%00730 Australia%%00729 Select a site not on this list%%00728 Otherntpdate_enable=NO,ntpdate_flags=none%%32095 No ntp server%%32094 None%%00727 These are the primary open-access NTP servers%%00726 There are a number of time synchronization servers available for public use around the Internet. Please select one reasonably close to you to have your system time synchronized accordingly.%%00725 NTPDATE Server Selection%%00791 Exit this menu (returning to previous)%%00790 Exit%%00921 Choose an alternate screenmap%%00920 Screenmap%%00789 Configure the screen saver%%00788 Saver%%00787 Set the rate at which keys repeat%%00786 Repeat%%00785 Choose an alternate keyboard map%%00784 Keymap%%00923 Choose an alternate screen font%%00922 Font%%00783 Configure your system console settings%%00782 The default system console driver for FreeBSD (syscons) has a number of configuration options which may be set according to your preference. When you are done setting configuration options, select Cancel.%%00781 System Console Configurationkeymap=us.iso%%00827 United States ISO keymapU.S. ISOkeymap=us.dvorak%%00931 United States Dvorak keymapU.S. Dvorakkeymap=uk.iso%%00825 United Kingdom ISO keymapU.K. ISOkeymap=uk.cp850%%00823 United Kingdom Code Page 850 keymapU.K. CP850keymap=swissgerman.iso.kbd%%00930 Swiss German ISO keymapSwiss Germankeymap=swedish.iso%%00821 Swedish ISO keymapSwedish ISOkeymap=swedish.cp850%%00819 Swedish Code Page 850 keymapSwedish CP850keymap=spanish.iso%%00929 Spanish ISO keymapSpanishkeymap=spanish.iso.acc%%32245 Spanish ISO keymap (accent keys)Spanish (accent)keymap=si.iso.acc%%32244 Slovenian ISO keymapSloveniankeymap=ru.koi8-r%%00928 Russian KOI8-R keymapRussia KOI8-Rkeymap=ru.cp866%%00927 Russian CP866 keymapRussia CP866keymap=norwegian.iso%%00926 Norwegian ISO keymapNorway ISOkeymap=lat-amer%%32243 Latin American ISO keymapLatin Americankeymap=jp.106%%00811 Japanese 106 keymapJapanese 106keymap=it.iso%%00809 Italian ISO keymapItaliankeymap=icelandic.iso%%32242 Icelandic ISO keymapIcelandickeymap=icelandic.iso.acc%%32241 Icelandic ISO keymap (accent keys)Icelandic (accent)keymap=german.iso%%00807 German ISO keymapGerman ISOkeymap=german.cp850%%00805 German Code Page 850 keymapGerman CP850keymap=fr.iso%%00803 French ISO keymapFrench ISOkeymap=danish.iso%%00801 Danish ISO keymapDanish ISOkeymap=danish.cp865%%00799 Danish Code Page 865 keymapDanish CP865keymap=br275.iso%%00925 Brazil ISO keymapBrazil ISOkeymap=br275.iso.acc%%32240 Brazil ISO keymap (accent keys)Brazil ISO (accent)keymap=br275.cp850%%00924 Brazil CP850 keymapBrazil CP850keymap=be.iso%%00932 Belgian ISO keymapBelgian%%00797 Choose a keyboard map%%00796 The default system console driver for FreeBSD (syscons) defaults to a standard "American" keyboard map. Users in other countries (or with different keyboard preferences) may wish to choose one of the other keymaps below. Note that sysinstall itself only uses the part of the keyboard map which is required to generate the ANSI character subset, but your choice of keymap will also be saved for later (fuller) use.%%00795 System Console Keymapkeyrate=NO%%00841 Use default keyboard repeat rate%%00840 Defaultkeyrate=fast%%00839 Fast keyboard repeat rate%%00838 Fastkeyrate=normal%%00837 "Normal" keyboard repeat rate%%00836 Normalkeyrate=slow%%00835 Slow keyboard repeat rate%%00834 Slow%%00833 Choose a keyboard repeat rate%%00832 This menu allows you to set the speed at which keys repeat when held down.%%00831 System Console Keyboard Repeat Rate%%00857 Set the screen saver timeout interval%%00856 Timeoutsaver=star%%00855 A "twinkling stars" effect%%00854 Starsaver=snake%%00853 Draw a FreeBSD "snake" on your screen%%00852 Snakesaver=green%%00851 "Green" power saving mode (if supported by monitor)%%00850 Greensaver=daemon%%32251 "BSD Daemon" animated screen saver%%32250 Daemonsaver=blank%%00849 Simply blank the screen%%00848 blank%%00847 Choose a nifty-looking screen saver%%00846 By default, the console driver will not attempt to do anything special with your screen when it's idle. If you expect to leave your monitor switched on and idle for long periods of time then you should probably enable one of these screen savers to prevent phosphor burn-in.%%00845 System Console Screen Saverscrnmap=iso-8859-1_to_cp437%%00941 W-Europe ISO 8859-1 to IBM 437 screenmapISO 8859-1 to IBM437scrnmap=koi8-r2cp866%%00940 Russian KOI8-R to IBM 866 screenmapKOI8-R to IBM866scrnmap=NO%%00939 No screenmap, use default fontNone%%00937 Choose a screen map%%00936 Unless you load a specific font, most PC hardware defaults to displaying characters in the IBM 437 character set. However, in the Unix world, this character set is very rarely used. Most Western European countries, for example, prefer ISO 8859-1. American users won't notice the difference since the bottom half of all these character sets is ANSI anyway. If your hardware is capable of downloading a new display font, you should probably choose that option. However, for hardware where this is not possible (e.g. monochrome adapters), a screen map will give you the best approximation that your hardware can display at all.%%00935 System Console Screenmapfont8x8=koi8-r-8x8,font8x14=koi8-r-8x14,font8x16=koi8-r-8x16%%00953 Russian, KOI8-R encodingKOI8-Rfont8x8=iso-8x8,font8x14=iso-8x14,font8x16=iso-8x16%%00952 Western Europe, ISO encodingISO 8859-1font8x8=cp866-8x8,font8x14=cp866-8x14,font8x16=cp866-8x16%%00951 Russian, IBM encodingIBM 866font8x8=cp865-8x8,font8x14=cp865-8x14,font8x16=cp865-8x16%%00950 Norwegian, IBM encodingIBM 865font8x8=cp850-8x8,font8x14=cp850-8x14,font8x16=cp850-8x16%%00949 Western Europe, IBM encodingIBM 850font8x8=cp437-8x8,font8x14=cp437-8x14,font8x16=cp437-8x16%%00948 EnglishIBM 437font8x8=NO,font8x14=NO,font8x16=NO%%00947 Use default fontChoose a font%%00946 Most PC hardware defaults to displaying characters in the IBM 437 character set. However, in the Unix world, this character set is very rarely used. Most Western European countries, for example, prefer ISO 8859-1. American users won't notice the difference since the bottom half of all these charactersets is ANSI anyway. However, they might want to load a font anyway to use the 30- or 50-line displays. If your hardware is capable of downloading a new display font, you can select the appropriate font below.%%00945 System Console Font%%32055 Start an Emergency Holographic Shell3 Shell%%32054 Use a floppy generated from the fixit image2 Floppy%%32053 Use the 2nd "live" CDROM from the distribution1 CDROMfixit%%32052 Press F1 for more detailed repair instructions%%32051 There are three ways of going into "fixit" mode: - you can use the 2nd FreeBSD CDROM, in which case there will be full access to the complete set of FreeBSD commands and utilities, - you can use the more limited (but perhaps customized) fixit floppy, - or you can start an Emergency Holographic Shell now, which is limited to the subset of commands that is already available right now.%%32050 Please choose a fixit option%%00986 Exit this menu (returning to previous)%%00985 Exit%%00984 Add a new user group to the system.Add group%%00983 Add a new user to the system.Add user%%00982 Configure your user groups and users%%00981 The submenus here allow to manipulate user groups and login accounts. %%00980 User and group managementUS];t39tP> ]UWVS1=$tX$CPCPC Ps {tVFP >uG<$ue[^_Ujukt t1ÐUjuKt t1ÐUS] uhlu Shlw l]UUEPu R]t UVS] uuhlu Shl=w Vhl2w le[^UWVSut0ЍX311Tv RAG  tbD4%@t K3uωe[^_US];t.v RF  tbD4%@tC;u҉؋]US]E u1u PSt ؋]%dUuhj hl試 lUWS]t00҉߈tSk: ƒtR 1e[_US]j/StX؋]UEtP@X Invalid malloc size of %d!Out of memory!UVSuujh*V W Ãu hEVSB ؍e[^Invalid realloc size of %d!US] ujhSu5X Ãu hEz؋]installRoot/UWVS]h=ƿ1t FO)ȃt)hPh|r Sh|}t |؍e[^_UWVS}u(U,9uPWzW ǃ8j S' } tu b:  }tuD: C CMKMK MKM KM$Ke[^_UWVS}1?t%4tF<uWUU e[^_mkdir(%s) %%30001 Couldn't stat directory %s: %smkdir(%s..) %%30002 Couldn't create directory %s: %sU`WVS]S =\t>5p8 PWht5p}8 PWhu0Ѓ$)ĉSPp ] tWhi[;/uC1;t ;/ud{u;/uQEPW t:=pBtWhhW )/Ct1e[^_/mnt%s/dev/%s%s%s%%30003 Unable to make directory mountpoint for %s!mount %s %s %%30004 Error mounting %s on %s : %sUS]E =\8/tRP =t Ph HPV S =t Ph HPU PHP/o SHP"o jhjEPB^ HStSh l {tHPHPhF o HUEP1=t@PHPjLt1)5p5 PHPHPhS  DPress F1 for more information on this screen.UWVS}ujj5|n5\觼Ãth oh|WuaPl55uuVuS蘄C0} H|n)‰PuS׺ t ju S؍e[^_Don't support this object yet!UWVS} E1DEttCut tEDPEPttuQD \XAEDPEPttu_D h t uEPLF |BNU2Ex t @ x ue[^_UTWVSu ]0ҋ|I1Ґ9}DD*D* BN~D*EPm|nHP\HPumuu NƒtT&tzt@ ttwt$|tJt&YE 1VE9}C:}tE8u΋E ̐;t E k½e[^_U5p覕US]jC@PjSSS聜]moused_typemoused_portNO%%39000 Please select a mouse protocol and a port first.%%39001 Trying to start the mouse daemon.../var/run/moused.pidkill `cat /var/run/moused.pid`vidcontrol -m onmoused -t %s -p %s%%39002 Now move the mouse and see if it works. (Note that buttons don't have any effect for now.) Is the mouse cursor moving? vidcontrol -m offmoused_enableYESln -fs /dev/sysmouse /dev/mouseUWVSh`9hl-Et8t40t#}t޿xuh{-hh\t hs_hfXuSh$X_h7hBXt/h t h _hxhhhh^1e[^_The mouse daemon is disabled.Uht h^hxh茰hxh`}hlh/1debugnoUWVS1h膰tƿt؍e[^_UVSuƒE PRhSU=88xH wq@H$2d2,242<2d2D2L2T2,2\2d21Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1%%13021 Reset all values to startup defaultsUse Defaultspcnfsd_pkg%%13034 Please specify the package name for the PCNFSD server:%%13044 The name of the PCNFSD package to install if requestedPCNFSD packagegated_pkg%%13033 Please specify the package name for the gated software:%%13043 The name of the gated package to install if requestedGated packagePKG_TMPDIR%%13005 Please specify a temporary directory with lots of free space:%%13020 The directory where package temporary files should goPackage TempMEDIA_TIMEOUT%%13030 Please specify the number of seconds to wait for slow media:%%13040 Timeout value in seconds for slow media.Media TimeoutmediaType%%13019 The current installation media type.Media TypebrowserBinary%%13003 Please specify a full pathname to the HTML browser binary:%%13018 This is the path to the main binary of the browser packageBrowser ExecbrowserPackage%%13002 Please specify the name of the HTML browser package:%%13017 This is the browser package that will be used for viewing HTML docsBrowser packageinstallRoot%%13006 Please specify a root directory if installing somewhere other than /%%13016 Which directory to unpack distributions or packages relative toInstall RootreleaseName%%13001 Please specify the release you wish to load or "none" for a generic release install:%%13015 Which release to attempt to load from installation mediaRelease NamecpioVerbose%%13014 How verbosely to display file name information during extractionsExtract DetailtapeBlocksize%%13000 Please enter the tape block size in 512 byte blocks:%%13013 Tape media block size in 512 byte blocksTape Blocksizeeditor%%13004 Please specify the name of the text editor you wish to use:%%13012 Which text editor to use during installationEditorftpUser%%13011 Username and password to use instead of anonymousFTP usernamenoConfirm%%13010 Assume "Yes" answers to all non-critical dialogsYes to Alldebug%%13009 Emit extra debugging output on VTY2 (ALT-F2)DebuggingslowEthernetCard%%13008 User is using a slow PC or ethernet cardNFS SlownfsSecure%%13007 NFS server talks only on a secure portNFS Secure%d<*>UWVEtr wP&ELuh:h% 0}tuE:1e^_YESUWVS1ۃ}uEjЃ tUN}uF}tuu+u訇t uчhX;u?}tuEЃ5ue[^_UUtju58@ÐpackagepackageAdd: No package name passed in package variable UhgCtP~hoC/var/db/pkg/%sfailuresuccesspackage check for %s returns %s. UVSuVhChSh jS#4 ptCtCPVhC_%[^/var/run/ld.so.hintsldconfig /usr/lib /usr/local/lib /usr/X11R6/lib%%14000 Unable to initialize media type for package extract.PKG_TMPDIR/usr/tmpchmod 1777 %s.tgzpackages/All/%s%s%s%s%%14013 (as a dependency)%%14001 Adding %s%s from %s-/usr/sbin/pkg_addpkg_add returns %d status %%14002 %10d bytes read from package %s @ %4.1f KBytes/second%%14003 Write failure to pkg_add! Package may be corrupt.%%14015 pkg_add(1) apparently did not like the %s package.%%14016 I/O error while reading in the %s package.%%14004 Package %s read successfully - waiting for pkg_add(1)noConfirm%%14005 Add of package %s aborted, error code %d - Please check the debug screen for more info.%%14007 Add of package %s aborted, error code %d - Please check the debug screen for more info.%%14009 Package %s was added successfullypkg_extract: get returned NULL %%14010 Unable to fetch package %s from selected media. No package add will be done.%%14012 Unable to fetch package %s from selected media. No package add will be done..A@U8WVS]} DžWZt1hDu hD1(SCPЃuhDDžhE4zuhEhEyhEzP苿hEzPhE'j/Wi u'h%EWi %Et*ERWh+E%h%EWh %Et*ERWh=EP jPSCTЉ ^1h0Cj  S}thBE*EPPh]EP虢uoj  j5 j  jhyEh{Eh{Eƃ,$VhE!g2 DžjPJ =DhjP ƃjP )+}@BHڽڅٽ ٭$Z٭u9tW؉љHP<$$WShE/PhSb` ƅ0Sq =uVP> 9hE= 8 =tWh!Fu Wh\F WhF5 %s %s %s
%s
%s %s %s postalemailnoyes releaseName%s %%33026 Do you have a working network connection and outgoing email enabled at this time? I need to be able to reach freebsd.org in order to submit your registration.register@freebsd.orgmail %s < %s%%33027 Thank you! Your registration has been sent in successfully. %%33028 Argh! The mail program returned a bad status - there must be something still not quite configured correctly. leaving the registration in: %s When you're connected to the net and ready to send it, simply type: mail %s < %s %%33029 What email address would you like to subscribe under? This is a fairly low-traffic mailing list and only generates around 5 messages a month, so it's also safe to receive at your standard email address.majordomo@freebsd.org%%33030 OK, I won't subscribe to announce at this time. To do it manually yourself, simply send mail to %s.echo subscribe freebsd-announce %s | mail %s%%33031 Your request to join the announce mailing list has been sent. you should receive notification back in 24 hours or less, otherwise something has gone wrong and you should try this again by sending a message to %s which contains the line: subscribe freebsd-announce %s %%33032 Argh! The mail program returned a bad status - there must be something still not quite configured correctly. Please fix this then try again by sending a message to to %s which contains the line: subscribe freebsd-announce %s %%33033 OK, your registration has been left in the file %s When you're connected to the net and ready to send it, simply type: mail %s < %s UVSj8hSuP hShS à uhShS趻6hxTS腑 hhTSu hȔhTSe hhTSR h(hTSB hȕhTS2 $hܕhTS hhTS =lt U=luUUPU=XtUPU=0tUPU=DtUPhUS蟐 hpUifPh|US艐 (hUS{ S%( l7hU肻hShEVhZV uhgVVhSN hShShEVhV+=X6hWh胻uhiXhXq6hiXhhXK uhhiXhYhhiXh.Z褹 $s6hShEVhSh[~Ve[^%%33036 [ ] Postal Adverts%%33037 [ ] Email Adverts%%33038 [ ] The announce@FreeBSD.ORG mailing list.%%33039 [ ] The FreeBSD Newsletter.UXWVSMIM,HP5(uh tjh2^ PuIt @HP5<uQh tjhM^ջPut THP5Puh tjhg^蝻Pus hHP5dug tjh^ePus 1ۋM uN<,(Vg t.0t08@NPuuCvMuNV~1ۃ44ɺE0}Ѝx1҃9} u2D*D* BN~D*EP?|nHP\HPu,(ufuG~ 5N|=8t8P@XЃhiQ(=tD+!^h$iB =tjhv j j肓SN ]%ssystemExecute: Faked execution of `%s' U,VSu**]Sj tESjj =\u)VhiSG cS茠!e1Vhi/؍[^%%15001 The %s file is not provided on this particular floppy image.%%15002 Sorry!UWVS}DžSWƃuMWhjƯPhS@ j jejjShj蚯PDž"ju j25|n5\VW[^_/stand/help.ja_JP/%s.hlp/stand/texts.ja_JP/%s.TXT/usr/src/release/sysinstall/help.ja_JP/%s.hlp/usr/src/release/texts.ja_JP/%s.TXT/stand/help.zh_TW/%s.hlp/stand/texts.zh_TW/%s.TXT/usr/src/release/sysinstall/help.zh_TW/%s.hlp/usr/src/release/texts.zh_TW/%s.TXT/stand/help.ko_KR/%s.hlp/stand/texts.ko_KR/%s.TXT/usr/src/release/sysinstall/help.ko_KR/%s.hlp/usr/src/release/texts.ko_KR/%s.TXT/stand/help/%s.hlp/stand/texts/%s.TXT/usr/src/release/sysinstall/help/%s.hlp/usr/src/release/texts/%s.TXTUVSu] =VhkhSk> SVhkhSI> SVhkhS'> SVhlhS> S蟕{=uwVh;lhS= SlMVhTlhS= SJ+VhnlhS= VhlhS}= Sp=usVhlhSR= SVhlhS0= SʔVhlhS= S訔Vh!mVhEmhS< Syu^VhXmhS< S[u@VhlmhS< S=u"VhmhS< Su1؍e[^TERMTERMCAPUVSu]=tq=t+jVho~ju ho~NjjV)jShog~juhoX~#jjS)$衟]3_5jQ ]PacificIndianEuropeAustraliaAtlanticAsiaArcticAntarcticaAmericaAfrica%%35019 Pacific Ocean0%%35018 Indian Ocean9%%35017 Europe8%%35016 Australia7%%35015 Atlantic Ocean6%%35014 Asia5%%35013 Arctic Ocean4%%35012 Antarctica3%%35011 America -- North and South2%%35010 Africa1%%35020 Countries in %s%%35021 Islands and groups in the %s%%35022 Select an island or group%%35023 Select a countryUVSUZ1-Ьt tw{u3c u rhw rh5w PhP>4 S~C PCPj3CPRjjthZwh|w躢PP6t [^UWVS1ۿ4u' uD7 C v1e[^_r/usr/share/misc/iso3166/usr/share/misc/iso3166:%d: invalid format /usr/share/misc/iso3166:%d: invalid code `%s'/usr/share/misc/iso3166:%d: country code `%s' multiply defined: %sUWVShxhx Eu 1EEE쐐EPu$‰UhEE| tuhxzUEDU:#thyRa‹EH9thyuÃt0tuhx<w C<vSuh y hyuǃt0tuhxhyuiǃt0tuhx茛}DSЉtSuh8yHW S F|u e[^_/usr/share/zoneinfo/zone.tab:%d: country code `%s' invalid/usr/share/zoneinfo/zone.tab:%d: country code `%s' unknown/usr/share/zoneinfo/zone.tab:%d: conflicting zone definitionmalloc(%lu)/usr/share/zoneinfo/zone.tab:%d: zone must have description/usr/share/zoneinfo/zone.tab:%d: zone multiply definedUWVS}] <w C<vSWhQ{軙 DSuSWh{脙 }t{~}Wh{jjx Ãujh|K~u FNNu Cu C MKFCF^F@~~Wh|~}WhL|ۘFu F MNe[^_UUE :u8u1Ð:u8tÐ8t 02 øUh}j hhr/usr/share/zoneinfo/zone.tab/usr/share/zoneinfo/zone.tab:%d: invalid format/usr/share/zoneinfo/zone.tab:%d: invalid country code `%s'/usr/share/zoneinfo/zone.tab:%d: invalid zone name `%s'/usr/share/zoneinfo/zone.tab:%d: invalid region `%s'U(WVShxh~t Eu h~81MM܍MMؐEPu蘹‰UFE| tVh,~EUDE8#thyuE0}tuVh\~詖 hyuQhyuDj/S ǃuSVh~m E)PSunudǃuuVh~9 1҃}t E8tWSRuV4u e[^_malloc for continent menu%dmalloc for submenuUWVSE=tVMyt>} A@4Myt)wMA9pt 9pu9uG@?uكE M9u1D@PY ‹DD8u hh#D@F vE=tMyT}YQBj jS MA@phS蓖MCCC hCKMAP MAu hjMAywMAYj jS% MAqhSGCCC C{MA9pt9pu9uHFj jS FvhS蜕MCCC <CK?GE M9e[^_%s Time Zones%%35024 Select a zone which observes the same time as your locality.USEX3hhP( S~jjjsCPRjjhvPPu /etc/localtimecp %s /etc/localtimeln -s %s /etc/localtimeUdS]EPhE |fEf%f=u1҅tSh̃ShEP =\u uu ]TZ%%35025 Does the abbreviation `%s' look reasonable?US]jB EjShtiF EP p(hw贓%]/usr/share/zoneinfo%s/%sUSEXs t,s hh EPuu ]USEXs /t,s hh EP覒uZu ]Can't find /usr/share/misc/iso3166.%%35027 Is this machine's CMOS clock set to UTC (Greenwich Mean Time)? If it is set to local time, please choose NO here! (If you use Windows on the same machine, NO is the appropriate setting)rm -f /etc/wall_cmos_clocktouch /etc/wall_cmos_clock%%35029 Select a region%%35028 Time Zone SelectorU=t1_uhu1ÐY. hޅDu hh jjjhЬjj jjhֆqPhcP1UWVS1Ь2PD tP* DF ve[^_tapeBlocksize20Uh#;uUTape init routine called for %s (private dir is %s) Unable to CD to %s before extracting tape! Tape media is not selected and thus cannot be installed from.First extracting distributions from %s...rft0ft | cpio -idum %s --block-size %scpio -idum %s --block-size %s -I %sTape initialized successfully. Tape extract command failed with status %d! Unable to use tape media.%s/%sRequest for %s from tape (looking in %s) r%s/dists/%sUWVS=(Ur\RhF袏Ur\~Ur\8bt Ur\h{yUr@h谍u1t FO)ȃuP茢Phy UrDuPkPh6XtPhzΌ(hZ܎u Ur\hS 誇tSu hƉ襎 SxthSH Ã+u Ur\hSV hS Ãt P ؍[^_Shutdown of tape device - %s will be cleaned %%25002 Cleaning up results of tape extract..rm -rf %sUS]=(t=s\h词s\w thŋދs\h(]%%16017 Select this if you wish to cancel this screenCANCEL%%16015 Select this if you are happy with these settingsOK%%16013 Any interface-specific options to ifconfig you would like to add%%16012 Extra options to ifconfig:%%16011 The netmask for this interface, e.g. 0xffffff00 for a class C network%%16010 Netmask:%%16009 The IP address to be used for this interface%%16008 IP Address:%%16007 IP address of your local DNS server%%16006 Name server:%%16005 IP address of host forwarding packets to non-local destinations%%16004 Gateway:%%16003 The name of the domain that your machine is in, e.g. bar.com%%16002 Domain:%%16001 Your fully-qualified hostname, e.g. foo.bar.com%%16000 Host:US]=Sj]%d.%d.%d.%dUUtOEPEPEPEPh;RXju/}w&}w}w}w t Ð1%%16018 Must specify a host name of some sort!NO%%16019 Invalid gateway IP address specified%%16020 Invalid name server IP address specified%%16021 Invalid netmask value%%16022 Invalid IP addressUWV=,uh=,t7,׏t!h,uhڏV=<th<auh,Z=dt=d/=d3~ h81=TthTuhV 1e^_ipaddr_netmaskifconfig_hostnamedomainnamedefaultrouternameservernonInteractivenetInteractive%%16033 WARNING: hostname variable not set and is a non-optional parameter. Please add this to your installation script or set the netInteractive variable (see sysinstall man page) Network Configuration tcp%%16031 Cannot open TCP/IP dialog window!!%%16032 Configuration for Interface %s 255.255.255.0.inet %s %s netmask %s%s%snetwork_interfaceslo0%s %sUdWVSEEEUz\t:Z\jShTpjCPhdpj Shtp$=Tu@h]/uh]hdupP/tjPhT~p =du@hf`/uhfhdukpPA/tjPhd5p =tu@hn/uhnhdu"pP.tjPhto hx.tjPh,o hh,-Y h.tjPho hhX hh.tjPh,\o jh,X h3.tjPh<'o jh<X yh-t+h-u=,'hÑ\P|nPjjhyhhp tPm h tPN =} Ghp ShQy =t,jh\S tjhaS Hv =jhfhp@N jhy"h$N |u{t(jh\S tjhaS uVHv =uBjhohpM |jh%hM }%=t1]U=t"j5hpLM } Ð=tj5h!M|1Request for %s from UFS %s/%sr%s/dists/%sreleaseName%s/%s/%s%s/%s/dists/%sUWVS}u ptVhwVw\hhS Sat hSVw\hhS Sat hSmVh͡ Pw\h١hS SBau+Vh͡ Pw\hhSy hS hP [^_%%31008 Select this if you wish to cancel this screenCANCEL%%31007 Select this if you are happy with these settingsOK%%31006 Who belongs to this group (i.e., gets access rights for it)%%31005 Group members:%%31004 The numerical ID for this group (leave blank for automatic choice)%%31003 GID:%%31002 The alphanumeric name of the new group (mandatory)%%31001 Group name:%%31027 Select this if you wish to cancel this screen%%31026 Select this if you are happy with these settings%%31025 The user's login shell (leave blank for default)%%31024 Login shell:%%31023 The user's home directory (leave blank for default)%%31022 Home directory:%%31021 The groups this user belongs to (i.e. gets access rights for)%%31020 Member groups:%%31019 The user's full name (comment)%%31018 Full name:%%31017 The password for this user (enter this field with care!)%%31016 Password:%%31015 The login group name for this user (leave blank for automatic choice)%%31014 Group:%%31013 The numerical ID for this user (leave blank for automatic choice)%%31012 UID:%%31011 The login name of the new user (mandatory)%%31010 Login ID:US]T%SsP ]%%31030 The group name field must not be empty!pw group show -q -n %s > /dev/null%%31031 This group name is already in use.%%31032 The GID must be a number between 1 and 65535. %%31033 The group member list must not contain any whitespace; use commas to separate the names.%%31034 Sorry, the group member list feature is currently not yet implemented.UWS0u hhhhS Su h0tXj PhU =w38t0v R菢  tbD4%@uh :0$t0hAh$ t hDhr1[_pwgroupnext/usr/sbin/pwCannot execv() /usr/sbin/pw. UVSDžDžDžDžP=BBƃuoj j С ~% ㍅Ph!v0h.njci DžSPw ~)u虻 苻 Ƅ(jPVZtu6u+j P tj Ph [^add-n-g߫%%31040 Adding group "%s"...pw(8) exited with signal %d. pw: %%31041 The `pw' command exited with an error status. Its error message was: %sU,WVShh FkP?I@ƃ j_ jR } ~ ѹ Dž0t Dž DžPh!-h.Cljc ] DžSP ~)u  Ƅ(jPVXtt Ph)kTtIDžjhGP u DžEPhLi[^_install_systemState%%31050 This option may only be used after the system is installed, sorry! User and Group Management usermgmtCannot open addgroup dialog window!! Add a new group UWVSEEE=t(hhP u hGs_E\P|nPjjhh"\Ãuhg755|nP\PjjSCjjS; tjh=S# j jh j jh j@jh$ $EPjjhSK\Et551uVhuEPEPhS\u݃}u tS{j}uS1ۃu]؍e[^_%%31060 The user name field must not be empty!pw user show -q -n %s > /dev/null%%31061 This user name is already in use.%%31062 The UID must be a number between 1 and 65535.%%31063 Warning: The requested shell "%s" is not a valid user shell. Use it anyway? %%31064 The member groups list must not contain any whitespace; use commas to separate the names.UWS0du h7JhdhfhSe S'u h0t\j Ph =w38t4v Rߘ  tbD4%@u h0lt`thlP& uu1`[hlhdSW[u'+t1=0t$hAhu th?T1[_user-N/߫4U(WVS8󥍅PI88ƃu{j j ܗ ~1 DždPh!x&h.djck DžSPw ~)u虱 英 Ƅ(jPVPt j P ƃtj:P ƃj:FV ƃFj:Vr ÃCj Vh j:SL ÃCj:S3 Ãtqj:CS! Ãt_j:CS ÉރtKj:CS Ãt9CFj@Vh8 j:S ÃtC;t j0Shl [^_-m/߫ʶ%%31070 Adding user "%s"...-u-c-d-s-G-h0%%31071 The `pw' command exited with signal %d. %%31072 The `pw' command exited with an error status. Its error message was: %s%%31073 The `pw' command exited with unexpected status %d. Command stdout and stderr was: %s%%31074 You will need to enter a password for this user later, using the passwd(1) command from the shell. The account for `%s' is currently still disabled.UhWVжhdh$_P3P3 4ƃuj  j j 1 ~ 腭 DžDždDž0t)DŽDžDžDž0t/DŽ@@DŽ0t/DŽC@DŽ0<t/DŽF@DŽ<0lt/DŽI@DŽl0t/DŽL@DŽ=pt/DŽO@DŽRDŽPh!h.4^jcѮ M B =pt(0pHPhpq  DžWP藪 ~)u蹪 諪 Ƅ(jPVIt t ƿTetyDžjhGP蘼 u DžEAt CtFuPh7ַVW\Ph\VW=puhdh5|Z^_%%31080 This option may only be used after the system is installed, sorry!Cannot open adduser dialog window!! Add a new user UWVSEEE=t(hhiPu h.GQEk\P|nPjjhhMÃuhyRY55|nP\Pj jS|CjjS tjhS j jhd蝪 j jh菪 j jh聪 $j@jhp j jhpb j@jhT $j0jh<C j0jhl5 EPjjhSME,tL5̰茞5聞58v5\k5`5U1uVhuEPEPhSNu݃}uS^Sj}uS1ۃuO؍e[^_U VSEEEu}t@{t.sZP CsZP豁 C${u҃>ue[^variable %s was %s, now %s Setting variable %s to %s UWVS} uCP9Dƃ>jWV-x tGVs賹 u0QtWsshXs' Wـ CJuj DV迀 CW趀 Cxx=Q tssh6Xe[^_NULL variable name & value passed.Warning: Zero length name & value passed to variable_set() Invalid variable format: %sUVSuuh0T>u hWhVSAj=SÃuVhSCSBPP2[^Null name or value passed to set_variable2!Warning: Zero length name or value passed to variable_set2() UVSu] tu h?S>t;u hVSV~e[^Uua Uuu Ðu P? UVS]j=St)PhSP@ Sc,=xx8umSpԶ u]xpBxpB5xH xRvAvACFCFSA(5xtSvW t6uꍥ[^nonInteractiveUVSuVÃthuu SSTÃt SV31ۉ؍e[^USEu1hPSJ?j=S ÃtUC;"uCj"j,StPn t;u )PSY P< %Writing sysinstall variables to file..w/etc/sysinstall.varsUnable to write to /etc/sysinstall.vars: %s%s="%s" UVSLt hShhZ ƃu5pR{ PhKQ.xtsshV' uV訾 1e[^lseekUS]jU QRS6 uu hj}WhRSŸ =u1/dev/ropen(%s) failed%c: %lu..%lu B: %lu..%lu G: %lu.UDWVSUEffEĊE2]SZ jS" E}ShLo1Vuǃ9tLuVGtBPh(u VFPh1 VFPh>y h4dO~ F럐e[^_%s> --==##==-- %s quitexitqxdeletedelete = %d allfreebsddedicatebioslistDisks: %screateCreate=%d readscanwriteWrite=%d helpERROR CMDS: allfreebsd dedicate bios cyl hd sect collapse [pointer] create offset size enum subtype flags subtype(part): swap=1, ffs=7 delete pointer list quit read [disk] scan write ENUM: %d = %s%s U$ WVS}7hP h讲 WlW tPh%芲 w Pp h4dF| hchP _h(S՛t 8t␐)Gh,w h1w h6w h8w h:sw u0u+jjȴ PWQPhAV hN,w ujhYw ujW)Qhbv uIuDjj= Pjj- Pjj PWhgv uMhl耰 1ۃ>t!4hsg 4W C<uVG hw$v u}uxjjy Pjji PjjV PjjC Pjj0 PWbPh~軯 ,hu u9~ 7ǃtSh@u uWhu u9=\u WV1Ph W!7"ǃ0ht t hǮ h躮 h谮 h覮 h蜮 h蒮 h舮 h~ h<t hLg hS] hYS hgI hm? hu5 1ۃ=Ht3u}P4HSh C<Huh *[^_%s?UWVSUBxPu x\j貎 ƉuMy AxP`j(pPQEU XSu EtjM4uj 0u PhVHhFPHGE@9rSu蔏 EtjVI MUJMAx\p\QEtMj(Vu-Nj]CPu' EU4WVuw$ W` ]uMPu EU4jV UMQMA UBe[^_UVS] Ƌ[;t3V ;ue[^UVS]{ 3V sV e[^%s%luUWVS]js uj6usWhu >G(W] j(suWhU RGW6 V- e[^_UVSu^;t3 s ;uv Fe[^%s%dU(WVSUBxu"xux ux,ux8u xDj(誋 UBEEUUؐUJUR|chtuEuE >%UDPUrŒ UBUËUZjvREj@Uru}E܋E wUz t u E}vUËUZj(S= UBe[^_UVS]cƋ[;t3Vl(;ue[^%s0x%04x%d0x%08x0x%xUWVS}7h]SDuVu4 GPhSC$uVu ftGuGPh]SCuVuЉ GPhSC$uVu謉 w hSvCuVi u芉 whSTCuVGuk whS5C(uV%uI whSCuV u' whSBuVu e[^_UWVSEu xX;3F0( C$jjFp fCjjFp fK fCjjFp ҩ fCjjFp迩 C jjFp譩 C$jjFp蘩 CjjFp 膩 C1(;4e[^_UWVSu} ^;tf~ uN{$tHtDC KHS fCfB S fCfBS C BS CBS CB S CB43荇 (;uvz Fe[^_UWVS} My Ap+xE t(t f tfupX] tGt'f tځ)U)gU)OHM t/tf t )T U)U)U4u\ j1ۉM]uu]3辏 uV3k e[^_UWVS]U { Cp+x t(t f tfucH tAt%f t)n)Y)EH t*tf t )T ) )ڋUj1QR3蓎 jUR3> Ee[^_UWVS]M { uKS+B t&tf tT  U"j1QR3 jUR3谌 Ee[^_UjV @%sUS];uj1 C@Ps詄 Cu h9CP=]%s%sUWVSu} 19~WF4h跡 C9e[^_UVSu19~F4聃 FC9vg FVZ e[^_device_list_pcidevice_set_eisa_dev_list_eisadriver_set_isa_biotab_fdc_isa_biotab_wdc_isa_devtab_null_isa_devtab_net_isa_devtab_tty_isa_devtab_bio-incore-bootfileuc_open: kernel name is %s, incore = %d r/stand/symbolsCouldn't open /stand/symbols file! Punting. %d Unable to get # of name list entries from symbol file. uc_open: opened /stand/symbols file, reading %d entries. Can't get name field for entry %d %u %d %hd %ld uc_open: for entry %d, decoded: "%s", %u %d %hd %ld uc_open: kernel %s does not contain symbols. uc_open: attempting to open /dev/kmem for incore. /dev/kmemuc_open: Unable to open /dev/kmem. uc_open: Unable to stat %s. uc_open: Unable to chflags %s. uc_open: attempting to open %s uc_open: Unable to open %s. uc_open: attempting to mmap %d bytes uc_open: Unable to mmap from %s. uc_open: got isa information uc_open: got pci information uc_open: got eisa information UWVS]Dž( ޸1t VO)Dž8u Dž88u޺ u jOPjOSPR% m3t8PRhb: j( ~ 48hh 0uh :LRh70a th;92tLhs9LBRRi} (4ALBRR( 1 9LL,0h,讜 j ,t,a v(hu,u uuPEu uuEu uhESFES~ESEUzt$Z;t3u Ɣ t(;uUzt#Z;t3u 蚔 t;uUzt'Z;t3u n o;uEe[^_%s%d%s?U WVSUBxh[jv EEjxMAphQ=EUEEMPux EUUjMU4uE8tj Wu NjMy tmUr QE19}:]CPuw EM MVWhQ0F]9uuv t Wv Whu0E EE@9EUPu1w EM MjQ MUJ UBe[^_UVS]Ƌ[;t3V;ue[^UVS]3Ve[^UVSu^;t3u ;uvu Fe[^%[a-z]%d%s%s*any%s%dany?UTWVSUz Bjt EEjt EEjMAQ<PuËUPsuE Su EUM<j 4uE]CPu~u E̋uFvPuhu EԋU؍RMԍEj\Uru6ǃ(WuuWt E}NjM܉]܍GP]ShU2 ShGP#.u؋Mqu*URUEMAPEEPuEȃ 1UztsMȃ<th]C[Put EԋU؍RMԍEj\U4uNVuu Vs MA]؃GUB9|u{s E}Gucs EM9MIUBptR2Eăj\uuƋ]C[Pus EԋM؍IUԍ‰EЉ]j vuà Shu,Sr hEЃP,MfAfA jv(uBÃ$ShEЃ Pk,Sr UBNXMVwr }6U؍DRPur EԋM؍IUԍ‰Eju E@Pur E̋E}jW UԋMQ ỦQ$?MA A$(UBuu Ejp E1EMAjVQ!Ejp EsPu r EËMjqulj{UBCS ]C[Puq EMIU‰EMqWhu*,UrWhEP*MfAfA AWhE P*]EUz-MA jVQƃ >UDRPu q EMIU‰Ej 6uvWhu*$~u,hYMtthEP)-t+E9]s~EU9<tE9]r9]uhEP)fF MfAfFfA A qAE>MUJ$BVuO4Puej\PuE]C[Puo EURME]j Uruǃ(Whu(hEP(MfAfA AjUr(uMǃ WhE Pv(0M9ЍxE EH9E URMWU237 u{ uMq hC P( EEH9E|}t:UDRPun EMIU‰EjuW UMQ um MA UB e[^_UVS]cƋ[ ;t3Vl;ue[^%dUWVS]'3W9sW0CPhuV!'uW$u5m C PhV&uWum s We[^_UWVSj Uruj\Mqumjsu^ǃ$UBPWhu &Wl jvu0ǃ MAPWhE PQ&Wsl Uf U fJUfJU fJ js(uǃ WhU R &W,l e[^_UWVS} EUz r >6G0D UZ${tEsshEP%uGp uEuk {u}tNFvsk GphFP7%jjGp踌 fFjjGp 襌 fF 1>3؍e[^_UWVSUr >Uz ~tz} ttEZ$1{t?sshEP$uv u}uj G{uƒ}t FUPFVP FV P6lj vdj v \j >MUr Bj UB z tZ${tsj {uUz$tr$i UB$e[^_%%34000 Replacing /etc files..../stand/PAO/etc/etcinst.shYESpccard_enableUh7#h1|hh1%%34001 Copying the backup of kernel sources into /usr/src/sys.2.2.8-RELEASE..../stand/PAO/sys/sysbackup.shUh"hK{1%%34002 Compiling and installing the new kernel. It will take a long time... (about 10 - 100 minutes on 486/Pentium machines)/stand/PAO/sys/syspatch.shUh!hz1%%34003 Installing new system binaries for laptops./stand/PAO/bin/bininstall.shUh;{!houz1pcicmem=3I/O address 0xdc000 - 0xdffffDCpcicmem=2I/O address 0xd8000 - 0xdbfffD8pcicmem=1I/O address 0xd4000 - 0xd7fffD4pcicmem=0I/O address 0xd0000 - 0xd3fffDefaultpccard%%34006 Press F1 for more HELP%%34005 PC-card controller uses memory area to get card information. Please specify an address that is not used by other devices. If you're uncertain of detailed specification of your hardware, leave it untouched (default == 0xd0000).%%34004 Please select free address area used by PC-card controllercardirq=4%%34062 IRQ 1-10 (ex. CardBus machine)Option 4cardirq=3%%34061 IRQ 1-9 (ex. CardBus machine)Option 3cardirq=2%%34060 IRQ 10 (ex. soundcard on IRQ 10)Option 2cardirq=1%%34059 IRQ 5 (ex. soundcard on IRQ 5)Option 1cardirq=0%%34058 No IRQ is reserved%%34009 Press F1 for more HELP%%34057 Please specify an IRQs that CANNOT be used by PC-card. For example, if you have a sound card that can't be probed by this installation floppy and it uses IRQ 5, you have to specify IRQ 5 from this menu. If you're using CardBus machine, you may have to use "Option 3" or "Option 4". %%34056 Please select IRQs that CANNOT be used by PC-cards%%34016 Replace /etc files.%%34015 Replace%%34014 Press F1 for more HELP%%34013 To use PC-card on FreeBSD, you must replace some /etc files with newer version. Do you want to do it automatically? If you don't want to do it, select [Cancel] button. CAUTION!: This operation will overrides all changes you made in /etc/rc.conf (e.g. hostname, IP address, keyboard configuration, etc.). It will backup original /etc/rc.conf as /etc/rc.conf.orig. Please modify new /etc/rc.conf manually. Sorry.%%34012 Do you want to install new /etc files for PC-card support?%%34021 Backup kernel source at /usr/src/sys-2.2.8-RELEASE.%%34020 Backup%%34019 Press F1 for more HELP%%34018 To enable PC-card support, you must apply patch to the kernel sources and recompile the kernel. If you want to backup original kernel sources before applying patches, select "Backup". If you don't want to do it (ex., because of the shortage of disks), select [Cancel] button.%%34017 Do you want to backup kernel source?%%34026 Apply patch, compile, and install the new kernel%%34025 Proceed%%34024 Press F1 for more HELP%%34023 This installer automatically applies patches to the kernel sources and replace the kernel with patched one. If you don't want to do it, select [Cancel] button. Otherwise select "Proceed" to proceed. The old kernel is saved as /kernel.old. If you have any problems with the new kernel, you can boot the old kernel by typing "kernel.old" from boot prompt. %%34022 Do you want to compile new kernel and install it?%%34031 Install new system binaries%%34030 Proceed%%34029 Press F1 for more HELP%%34028 This installer replaces two system binaries (apm and shutdown) and install new one (wlconfig). If you don't want to do it, select [Cancel] button. Otherwise select "Proceed" to proceed.%%34027 Do you want to install some system binaries for laptops?%%34038 Enable PC-Card (aka. PCMCIA) management%%34037 P Enable PC-Card%%34036 Enable APM (Advanced Power Management) BIOS%%34035 A Enable APM%%34034 Press F1 for more HELP%%34033 Enable/disable APM and PC-Card support. Please read PAO-FAQ (http://www.jp.FreeBSD.org/PAO/#faq) if you want to use automatic network configuration, etc. Note that there are some broken implementation of protected mode APM BIOS. Enabling APM support on such machines will result in system crash. If you enabled APM support on such machines, please disable APM driver from UserConfig [boot: -c] screen.%%34032 PC-card ConfigurationSendto server failed. CMD: %sSelect server failed.Select server timeout.Recv server failed. CMD: %sU,WVSuU} 0щKzщ@PRjSu Vr ƒ9tu hEEj ]S  DEPjjSj` } haDu h+=jhhV vÃ} u hBƃe[^_%%34039 Slot %s: Empty slot%%34040 Slot %s: Card "%s(%s)" Unsupported card!%%34041 Slot %s: Card "%s(%s)" Assigned %s driver.U(WVS11ҋE8tHAt+8~tD1tDjtB 8~u@8uu]]؋U]]0}u&uVhkj>0}tuRuVhXRuVh1e[^_pcicmemcardirq%d -i 5 -i 10 -i 1 -i 2 -i 3 -i 4 -i 5 -i 6 -i 7 -i 8 -i 9 -i 1 -i 2 -i 3 -i 4 -i 5 -i 6 -i 7 -i 8 -i 9 -i 10 /dev/card%d%%34042 Now starts initializing PC-card controller and cards. If you've executed this installer from PC-card floppy drive, this is the last chance to replace it with installation media (PC-card Ethernet, SCSI, etc.). Please insert installation media and press [Enter]. If you've not plugged the PC-card installation media yet, please plug it now and press [Enter]. Otherwise, just press [Enter] to proceed.%%34043 Initializing PC-card controller....%%34051 Can't open PC-card controller %s. ioctl %s failed. /stand/pccardd -n -s /pccardd_socket &Can't create pccard socket./pccardd_socketTimeout: Can't find /pccardd_socket/pccardd_socket is not a socket./cpccardd_socketBinding client socket failed.SCan't find PC-card slot(s). Message:"%s"%%34044 Found %d PC-card slot(s). Initializing PC-cards.... (about 20 seconds)N%d%%34045 Slot %d: invalid card information%%34046 No cards are initialized. Maybe your card is unsupported or hardware information you specified is invalid. If you want to install FreeBSD from PC-card device, please reboot the machine and check your hardware configuration. For details, type [ENTER] and read PC-card section in documentation menu.UWVSDžXDžp DžTj=u =\Cjhh׵jhhh迵LtPhS$tt!t;tt&.Džp "Džp@ Džp Džp tPhL twHt$0DLT\d0jhe]SGR Fhq 7h } =\uMjS ƒSh4 U pPhPRX }EPh_ ) q u y } VSl h Sl Sa=\ucjjj, X } h 1ۍxjVh B tC~h =\tDžlff%f=t h jjDP ƅE F J N Rƅ 󥤍0@PRX>} h jDPh: XƍlPhV(Vh< lhf O=\j贶j@EP 1ۃ 9l\PSh PO DPPX+0H11҃9} <2~uAB9|tSh 0Vr Tj C9luTu h @[^_Uh s h i %%34047 This option may only be used after the system is installed, sorry!%%34048 This menu item can be used just after the 2.2.8-RELEASE system is installed. If you've done any patches to kernel sources, this operation may fail. If you don't want to do this operation automatically, please select [Cancel] button for all three questions and execute scripts in /stand/PAO/bin, /stand/PAO/etc and /stand/PAO/sys manually. If you're installing other version of FreeBSD than 2.2.8-RELEASE, don't execute these operations anyway. Please read PC-card section in documentation menu for details.apm_enable%%34049 FreeBSD PC-card support is compiled and installed. The old kernel was saved as /kernel.old, and GENERIC kernel still remains as /kernel.GENERIC. If you have any problem with new the kernel, reboot the system with old kernels. PAO-FAQ (http://www.jp.FreeBSD.org/PAO/#faq) will help you if you have typical troubles with this system. Exit this installer, and type "reboot[Enter]" to reboot the system.U=thÐ~hjh<ajhUjhIjh8=$jh.thh 軬thh蠬P~h+"%%MES#%dU S]jhSb u $jhSwb tD1ҐD*B~EEPhEPUЅ})‰Ћ]UVSu] jVWTDpe[^/stand/I18N/messages/messages.%sCan't open I18N message file %s %s: fstat failedCan't read I18N message file %s UWVS]u hV Shf]SH jS蘱 ǃ} Sh `PW74 }EPhDEF PvPWMN }&EPhL619^jhP` D=wUV1D=wUV1tzD=wUV1tVD=wUV1t2D=wUV1tVPC9^1T[^_U<t4Zu{¡=~ UWVS]u u1~t;%u {%u{ t SVDj@PCP^ ujX ;t.v R1  tbD4%@u1uFC;\uÀ{\udCe[^_--UWSUu1=u:%t z%tz uBdPRÃt0u $0PSW^ ؍e[_UWuQ0҉ψщJЋ}US] uw19}B9|Ƃ]ja_JPUhh hh:E&0V?@ţtGOkISO8859-1FONTBOUNDINGBOX%d %dCHARSET_REGISTRYCHARSET_ENCODING-CHARS %dmallocENCODINGBITMAP%2X%4XU$WVSDžhpH U BDžDžDžuhW_ SuBu9jWhz[ u%PPhS.띐jWh[ u@"tC;"uCހ;"tC;"uV?\ KjWhG[ u`"tC;"uCހ;"tC;"uh] V] U BjWhZ PhS# M AAA A_(t GPGP(ЃU B}}F$)Ɖ~CM Dž1U B<(t OU U 2= uhYjJ uhM] 6jhXY u SM\ 벐|jhY uËM A u<1yhhu FCU B9|8%PPЉ9}1M yhuEC FCU B9|[^_Uu 01UuM 41OnStartupMessageUhX!hD!h[!=UTERM=vt100 KON for Linux 0.99.4e, Copyright (C) 1993, 1994 Takashi MANABE and MAEDA Atusi KON comes with ABSOLUTELY NO WARRANTY. KON is free software, and you are welcome to redistribute it KON under certain conditions; show COPYING for details. KON for FreeBSD-2.x ver0.01 Takashi OGURA KON using VT number %c. SHELL/bin/sh sh-%sKON> couldn't exec shell %s: %s UPVSuԧPn詧Ph!]S}= S P=4th! Y h"Y FP\@ Ph"X h4d" =0tj0PPu Zh"= 0u 0"j/50u"@Ph"]S< jS50}h"Vg 5px P50h#VJ j(E UEU <*w%D@DÐ%D@DUSE] <)w %%ٍ @)ÍT߉]UEM v"%_PPD%_PPDUEU <-w%D@DÐ%D@DUE PEPUE PEPUE PEPJISX0201.1976-0ISO8859-9ISO8859-8ISO8859-7ISO8859-6ISO8859-5ISO8859-4ISO8859-3ISO8859-2ISO8859-1BIG5.HKU-0JISX0212KSC5601.1987-0JISX0208.1983-0GB2312.1980-0UWVSu1ۃ=(tC0щHPV[4( ƒ u fC[<(u1ۃ=tE0щHPV[4ňB ƒ u C[<ňue[^_%sUWVSUu ]=tRh'hdN SVhd >0щHPRdOSVS 0щHPS>O[^_KON> fatal error: UWVS}u ]h'hd SVhd6 WdB KON> warning: UE Puh'KON> error: UE Puh'KON> UE Puh(system error - %s: %s US]5p> PSh2(]%s: %s UVSu] 5p PSho(hd VA U0SEh$jP!Zà | EPjS,Z f} jjSZ]UEh$jPY |hjPZÐ1UWVS}18{tsW u F~1e[^_Fatal: internal error - can't find room for capability `%s' UWVSu}VnÃtV? CU S*18{u.V  CU S``t+W C @~Vh)hd? 7 e[^_UVS18C {t s3 {t s3 {t s3 CCCF~e[^:,; rError: can't open config file Error: entry for capability `%s' not found UWVS]h*SbQ uh*hd6 S計hWQ j#WO tj:WO th*WtPƃhWCQ t$ u:#t BC: u CƐ~ g~tvFЃ}&jP= PFЃ} jQ= F  h*j=1۾8~tZ~ uT~tvFЃ}?jR= ~tvFЃ}#jSl= vh*hd jTS= C~ error reading %s US`1=u z1!=u1=u1 S}Sh1hd3 j37 ]UfU%UWVE}u e^_US];t 3+ ]USjErU ș}AM)Mef À f `؉ff fÀ ffUfӀ؉ffEf%f  ffUf f҉f $ ؉f]U,WV}EPu /3| 51e^_U=Xt=t=Yt hL; =[th ht,j2 jj1 jj1 jj1 jj 1 jj1 jj1 jUE4p j switched to new VC KON> finished stty saneUjj1 jjEPhI9t1 jj2 ^ j52 h4j0 ÐEt>Ett4p hV4j=PÐEPhu4j>6Ã}uh4hd j4 h4hd h4sj4 UE~ \UE~!\selectU(WVj h\̷ \0 \=$t=~5X 5m% j-}\EEܠEPjjEP5/ t}%=pt=|}h5j50DtHhhV/ ~1=tPhjtİfF>tİfGGfUf`t rFfm`8Xwİfe[^_UWVS}E EUU@IfU5@5LME9tfȺfE0f=p~rp9|M9 tEff Etr)É06?tİffUf`t rGfm8Hwðİfe[^_U WVSu@t  ÉE9tfغfM n9~!C]֋d1ً=@ tأ 9d@ +dE d)@1]ً=@ )؉5@1ىЍe[^_UWVSu@t  ÉE9tfغfM n9~!C]֋d1ً=@ tu) y@ d 1ً=@d+ 5@5 1ى+ ]@ 1ىЍe[^_US]tET rE  15dS]USrEE1uщt؉]ى L]UWVSu pXC9~˃=tf=@~ff T=Pt?f>t99}9GGr9|r9|fe[^_UWVS@t 95tff5d1ы=@e[^_U}t#h! ȺÐh%d %d %dPELS entry too short U VS]1EPEPEPhibSj S Ãuhrb2'CEEEF~1e[^%d values required for vga registers, but only supplied %d %x %d %dmissing arg for vga driver UVSu 1ېE8Dj EPu蚨 C~h@cu CM9t Q F(EPEPEPhCcSuhNc ffhfFfjfUflfEfn jnBUș}fpfhffrpUfEfEfjrЉdfpfrft~7\;~#\!Sjhc'\#7ÊE$\V UE UEȈ!VUEȈ"VUE$ #VUE$VUE$ UЈ%F&'jJUUE%EU U'F%EEUUE E'VUUE%EU U'F%EU'F%EU@)F0V 1jȈ2UE3V5F6' )% $ 1e[^/dev/vga/dev/memioctl CONSOLE_IO_ENABLEmalloc mmapUSjhfb Ã}hf!jf jhw@bÃ=t j ۉ]S Q==tA=6u"1҈ـv ـ w t=u v=t j=uˀ]P%>=~5=} QuN}e[^_%s %s %sEUCSJISUWVSƅƅƅRRPh:{u9~1t8S蔪}MhC{Su 6JhG{Pvu 6&6 t $_5 $4Fr1[^_JISX0201.1976-0 JISX0208.1983-0 EUCJCodingUh7|hL{h\|;Uln45 DUuu uCU1ɋU9s f3 9r,-o %s: option not supportedU WVSu_Eu jj茠uh}V]ƃ>nu~ou EE] ;ti0щOWRVƒ u<t<=t;uƃ;t)U{ tUE9Cu [ &C!=uVh}j肠19uPQe[^_asyncunionrdonlysuidexecdevautoatimerwromfsNF:T:a:b:c:d:e:f:i:m:o:s:NOS:T:a:b:c:d:e:f:i:k:l:m:n:o:p:r:s:t:u:x:%s: bad sector size%s: bad maximum contiguous blocks%s: bad block size%s: bad cylinders/group%s: bad rotational delay%s: bad blocks per file in a cylinder group%s: bad fragment size%s: bad bytes per inode%s: bad track skew%s: bad interleave%s: bad free space %%%s: bad rotational layout countspacetime%s: unknown optimization preference: use `space' or `time'%s: bad spare sectors per track%s: bad revolutions/minute%s: bad file system size%s: bad total tracks%s: bad sectors/track%s: bad spare sectors per cylinder/dev/%sr%s%s%s%s: %s%s: getmntinfo: %s%s is mounted on %s%s: unknown disk type%s: %s: not a character-special device %s: can't figure out file system partition%s: `%c' partition is unavailable%s: `%c' partition overlaps boot program%s: maximum file system size on the `%c' partition is %d%s: no default #tracks%s: no default #sectors/track%s: no default sector sizeWarning: changing optimization to space because minfree is less than %d%% disagrees with disk labelWarning: calculated sectors per cylinder%s (%d) %s (%lu) mfs:%dvfsload(mfs)mfs filesystem not availableUWVS]lj/U 2jttt U th~5t.t@TDž=@t Dž~u Sݏ -9$HTTTTTTTTTTTTTT0@TTTP|TTTTTTTTTTTTȅ0\TTT 8h<ThTT TX5H5h+dP}5La5h?5}<=25haP5M@5ht |5P5h5x5h58u5h5I5hg5e45h;59l5h5 D| c5h%5T}5h;} =TyTj=@tjh`ht5@5[uH5auHhf 5 ,5h535h5pi5h܀d5$75hXd5O(5h (5%05h ; +dIdIE t=@ut U  j/RduW hChIhDEPhD? u hChOhDDž D=TtDžj {? }5pWP hTjP9+ƃu5p!P h[ j hC u NxqæjShCs urSWtCPWuLP hn Ny=@t<=dt35dxUÃu5dhj +> }5pP hTfEP }5pҵP hT1fEf%f= t"=@u 5the jU 2 'Qt*A<v3A=wUV1uU 2h=@u=du U Bd Ë=wUV1t >uPU 2h ~ uPU 2h  =pupp9s'=@u6PU 2h6=3uCH3 3=$uC0$U 2hof=(uC,(U 2h?=HuC(HU 2h=4uCL4} 4=luCJl l=8u"F8{(vC(8=<u2F F<!8 ȣ<=Lu=<HL=u8=D6=Ht-hhd^ jhhdu^ H=,uC@,} ,(,L=0uCB0} 0($+0h=dt%9C8t s8h Ph%hNhd] =xu<xCPDCT3EFEFEF E V*=Tu  =@?x Ph`SnDž$ `tDž Dž \pHh~"ÃuTh~t2h~t hg)qh~Ãu htP5`U rtC$PY}5pZPU rhT=PtpHP5\ j ioctl (GDINFO)USh( hedAu . }N=dt.35dNÃu5dh(h躍uhh ( ]UVSu] jj }%jj5tVSVj SVj usage: %s [ -fsoptions ] special-device mount-point [device-type]usage: %s [ -fsoptions ] special-device%s where fsoptions are: -N do not create file system, just print out parameters -O create a 4.3BSD format filesystem -S sector size -T disktype -a maximum contiguous blocks -b block size -c cylinders/group -d rotational delay between contiguous blocks -e maximum blocks per file in a cylinder group -f frag size -i number of bytes per inode -k sector 0 skew, per track -l hardware sector interleave -m minimum free space %% -n number of distinguished rotational positions -o optimization preference (`space' or `time') -p spare sectors per track -s file system size (sectors) -r revolutions/minute -t tracks/cylinder -u sectors/track -x spare sectors per cylinder U=@t5th`hdW h5thhdW hϒhdW hhdW hhdzW hFhdkW hWhdYW hehdJW hhd;W hhd,W hhdW hٓhd W h hdV hhdV h8hdV hVhdV hvhdV hhdV hÔhdV hhdV hhd~V h1hdoV hIhd]V h^hdNV hqhd?V j mfs%smmapmalloc failedpreposterous size %d preposterous ntrak %d preposterous nsect %d block size must be a power of 2, not %d fragment size must be a power of 2, not %d fragment size %d is too small, minimum is %d block size %d is too small, minimum is %d block size (%d) cannot be smaller than fragment size (%d) fragment size %d is too small, minimum with block size %d is %d There is no block size that can support this disk minimum bytes per inode isWith a block size of %d %s %d Minimum bytes per inode is %d With %d bytes per inode, minimum cylinders per group is %d With %d sectors per cylinder, This requires the block size%s to be changed from %d to %d and the fragment size %s to be changed from %d to %d CylinderWarning: cylinder%s groups must have a multiple of %d cylinders panic (fs_cpg * fs_spc) %% NSPF != 0cylinder groups must have at least %d cylinders Warning: Block size and bytes per inode restrictBlock size restrictsBytes per inode restrict cylinders per group to %d. file systems must have at least one cylinder File system performance may be impaired. and ntrakrotational layout tables with nsectWarning: insufficient space in super block for %s %s %d %s %d.%sinode blocks/cyl group (%d) >= data blocks (%d) must be increasednumber of cylinders per cylinder group (%d) %s. Filesystem must have at least %d sectors Warning: inode blocks/cyl group (%d) >= data blocks (%d) in last cylinder group. This implies %d sector(s) cannot be allocated. Warning: %d sector(s) in last cylinder unallocated calloc failedcylinders%s: %d sectors in %d %s of %d tracks, %d sectors %.1fMB in %d cyl groups (%d c/g, %.2fMB/g, %d i/g) super-block backups (for fsck -b #) at: %d, />UWVSDžEP)d 3]PSo=@> lhjT NtFu hPj jURog tEu URU j M j/=Phh5P* ǃ }5PhTj 51pH9sJvSRW 9t5PhTj ~ދpH9rjjWjjpHRj' \uhWj ~W. YpH9`s`15HppHR.\u h\j ~U3M 3=Xt<=p5phjj h5HpJRL0(,$( ShjW =,5,h{j4 <8JtShBj Jt5hחj 9H~5HShj =h5h1j 9~5Sh\jZ أډ щș҉Й~ѽ ~ѽ ~ѽ=~2}R55h}j6 T  ؙ=HƉ5~ѽ X \Iؙ=Kؙ=55 \Iؙ=Kؙ= ,Jؙ=Kؙ=55 (~%ѽ(J(t%@ډ ƉDž`d`扅04d4`4045=~5r 5h0h~Eu@=ѽ=~+u =ѽ=~ t 0 HxK15 4N5=lj59~5PؙP= |T 0ʉ|||Lș=8<=L~L~Džt 8D8A<y<280=Ís}s4:==~v 8 0T PTPDPyDPP9w 9Džt=o%u <%ѥ|T񉵈58%=9uhؘhj = %%GDžp Hx)ˉؙ=ƍ^ؙ=<=4N5=D9tDžp]=P=@x+DO===PPFPVh Dh'== ѽ|tD=8 MD4=<y֡80=DǃyǃP \=~y<80T PTPDPyDPP9\r 9\s %8x+ؙ=ƍ^ؙ=Ɖ<=4N5=D9p 4O5=lj59~+x+PRhFI,tu,5he+htt#50hhpu ttV9<tS5<hhޙ98tS58hhjE @8t[>=|t5ShPK8JЙ؉8 =|u@x 8+ؙ=Nؙ=<4N5=5H95<Džp) 8x8+=N5=55<عN5=5P95<= X5Ɛ8D 8 JD<Py PPDD80H{|TPyTPPDD=~P80HTPyTPPXD9w h9Dv`Džt)8x8+DD=HD{x<80ؙ=Ɖ5@5PؙPӅth$jݹ 9 8}Qhj輹 89@=|uh֚tupu jw tt#pt htthh~58h6k=|tj 8D8P<yס80=Ís}s:=~[ 4=8=0 PPǍOD} DDӉ1҉HLHLHLӉ΋H!ىHL!LHHLLH $ppؙ=0Ɖ54 09~4Dž=4hSji l 4Ld#=(u55==0HHǍd=u!=\```   9,~?h5(h5,hhڛh y#19DžTT9~qT҉D=uD$UDDDfTT9C9jO ؙ=0։É=,։=05 HH=,5=T5ƋT҉D=u!U=Df?u,=t= =t= TD=uH'EDʉHH(ЈT=u:Uf3)954=8 =8ӅtH<ؙH55K щ9~=@#)9@H@=P=)ÉHShhM58h_j菲 5N@ p)ى9 @!9u+RRh^j =S !Ήؙ=Sh Qh 4ؙ=8)5440ؙ=ÉpDžt;=@u2 p 4H0)0)Rh@l  # ډ~ѽ5 jJ 3uhtjeT P DL x 3ع<Ɖ5HXDHLPTVUUQXÉ=@5,5(h54Ru h5< @(Ƀ$585 Ƀ$h<=@u hDžh19}uSg=@@ !  RhW]Ƌ 9hh!DžWhTh4d覊 C9Z=@u h!=Tt=@u jG u M h5\ ؙ=HVDž9 ~m 3R +9}SPj 9 19~Hh5\ @!5P C9E@ P H f8UfB=@t1jld ,j踩 j豩 j誩 h# /$[^_Panic: cylinder group too big UulÃu h}Hܮ~,CugCkj/u~ÃEtCÀ;t&hSuÃ9E}su;tC;uڃ}u Mu}tuFFuu,j.uEu hJGu~uNuh7u!ye[^_%s: %s: cannot %scompress onto itself %s: %s and %s are the same file n%s: %s already exists; do you wish to overwrite (y or n)? not overwritten USp]Sht=p?hҐ=4u5]Sht hSh sEPh\7tahhH3vxu''=4tPhH35hhhH35h6hd#=8fWfPh5hYhd=H7tCcPOI t/hphdyhd?C hcjOPPyPvRH  tbD4%t PYu 1Pyt'hhd=huPhDh螨u115hHhdh1hLUS] CEC EEPuztUfCf%f=@tG=Pu5hHhdK =hu h=Pu h蚯]%s: time stamp restored US]=4t<=Юt3C 9Юt(ЮC =L~hhchd Sh fC%PhQtJ=Pu5hHhdt =hu h=Pu hîss hxhH3ܦtG=Pu5hHhd =hu h=Pu hH3N]%s: %s unreadable ..%s: %s/%s: pathname too long UWVSuH:u'u5hhdchHÃSֿt҉ֿt}0щNщ=Lurst/CPPIs FCPu5hhdph[^_US]=tSb =7t57V 7=lt5lV lSb U=xt579_ hojiUVSEu 0fEfEf57`fƀf=@u<ƀf=@u<=ܮtf=@u<=?w8ЮffЮffXЮf=@u;<fЮff=@u<=?w:ЮfЮffZЮf=@u;Юff=@un;jjI:3Vh`EP EP5dEf=@u;ƀf=@u:=ܮtj̮+P1=| P ̮ ̮ (3{=(3w =$3t=(3t̮Pj j̮+P1=| P} e[^_UWVSEU Ȯbbf=A11Ґ Q1 9}  NCF9|B~ˆ N11҉Q1 9}  OCF9|B~5jFA ZBPXBPjF^BP\BPjFP1}}u 9}u E] 9]e[^_U5`h435|h(<yh{Bf|uI bTIУ bUWVSujEPjE HPjFP1ۃ9}#BjDPC9|EHPh43E HPh(<e[^_block vanishedUWVSu bbQȮf8uhH{hdqǡ b b 5b9wЍ^9wA}t;ju!b $bbjVu9u8jEPhAh=bbbMjEPGP|@P`@PWh(<h43b bbA}t bbe[^_UWVSUM aau f43ZJ Nf87  O Pf(<afEabb%bau&bbQbbb=d~`auTa<5̮+51ɐ(<A~a9as9r1=at =aue[^_U WVS1EEE=auUQUEGUuUDPP NUPPkt+4 QPVOU4UBUw  O  PU DPP t+4QPVm9=aUPPe[^_-l used on binary fileUS111ې43A~"43A~ 43A~Ȯ9ff]UEbf b$b=bt T74 UVS]u )9$b $bf  b=?w9 bff bffY bf=@u f bff=@u ù+ $bf b$b$b $bf  b5$be[^US]M 1҉؃ I]U=$b=?w8 bff bffp bf=@uf bf=$b~) bf=@uff b$bUWVS}u ]*=?w0񈈼fffP񈈼f=@uff=@u=?w3шffЈfdшf=@uFfЈffG=@u Nuԍe[^_ %s: %s: not a valid zip file %s: %s: first entry not deflated or stored -- use unzip %s: %s: encrypted file -- use unzip UVSEL7fKC SC TL7L79r& C SC  сPKthH35hP'aC`tthH35ho'L79v EL7j9% E9}wE#EM4pcNm)σ9sDL79v EL7j% E9r]#EFwNm)σu:FMAMK3E0G9sDL79v EL7j% E9rvu]#EEm)9}vDL79v EL7j % E9}wE#EM 4tcu Nm)σ9sAL79v EL7jE % E9r]#EFwNm)9sDL79v EL7j % E9rFu)]#E)Ɖm)ߐ9us )+]9]sE)]E)9r$USPR}1 ]MFAMKu}u E}hM M =1e[^_UWVSU߃5)wCL79v L7j % ƃvwBL79v L7j5 % ƃv%9t tL79v L7j % ƃvMAMui EOu‹U51e[^_US1DŽC~$DŽ C~DŽC~DŽC~DžxxP|PhJh hh PHÃ1ېDŽC~DžppPtPhhjjPÃ~|Epxt|u|UtJ1l incomplete literal tree incomplete distance tree UWVS=5wDL79v L7j% ǃvwDL79v L7j!% ǃvBwAL79v L7j% ǃv19v>L79v L7jI% ǃvC9wDŽCvDžP PjjjjPTt u EDžDž9xt;v R  tbD4%t C;uƉe[^US]j/SqtX؋]US]j.SQt9u@H8.u_9u] out of memoryargc<=0U WVSuUEu Eu 10}PuS3E] ;t6hFS5Ã;t!hFS谶Ã;tCE;uʃ}uu 1Uj@Pĥƃu hFU :2EM} hFw]}~7hFS葵ÉCuM} M}uEe[^_ %s: %s: %s UuhH35h$Hhd,O %s: %s: unexpected end of file U5h[Hhd =pthH3JkhH3haHhd踤 ؾU5h[Hhd蔤hk譾%2ld.%1ld%%UWVSMU ]u1a  ȉיпƉșƅ})KyC9C -Sj-$KyC9C   Sj  RQhHSe[^_USu Ãu hFM؋]output in compress .Z format not supported US] =@u(@hIhd;9]t h] %s: %s: warning, unknown flags 0x%x %s: %s: compressed with %d bits, can only handle %d bits corrupt input.corrupt input. Use zcat to recover some data.U0WVSL79vL7j‰\%P\`t:=PuRhH35h`Jhd =hu h\\E܃~1jRhH35hJhd踡h ME EEEE1L7EE=PtEhjh Ky]5)19}B9|5E?w4hPu Eԃ uM  P7}tv1u؋ )nhjhg EEEЋMTЙ}ЋM)ыEDEE EE  MAE)MM9M(E9E~XMMЋETЙ)ыELME؋M9 \uE MHEMHEEJ R ËU#]EE}u*~ hJ ]]MfGMu =P]E9|a~@=Xu~Whfu o= J=0tJRNM]N]wN]E) ;?~a@)9~Ӆ~fSVP ߁?~"=XuWhfu = 1޻)fSVP ߋE9E}fEMfMEAMMME9E}=Xu~Whfu 2=1e[^_US]DdfDd9Ld}a+LdHdf DdL79vL7 jHdu HdLd Ld)ى LdHdf Dd]USEDd)P?؋]UfDdHdLdjBad table UWVSfDUBv19UvM  fDEB9UwfE]DUܿ)׉ftUff4SBvf}t hP+MM9Ur@DUMfDUE)оfDUB9Us)ѸfDUBvMTMMtM9tufVB9u}+EuE9}M u |TMDMЉEu9w"9fuMf4QB9Uw|\M؋MuFE|+UtOMf9uf}f}fG]tuEMEEJufMuffM|fLuEu9up[^_UWVS] Srǃu9Sc19u~Ɔ,bF9u1fuDbF~19}zfDdf ؃uDdEtCUu~CPE,bF9uujÃKxƆ,bFKy덐Ɔ,bF9uhDbjh,bue[^_UWVSj ǃu:j o1ƆfF~1fuF~19EdEDb~-Ddt ] ],bP@Du"ujX j XKnƆfFKy^fFOƆfF~hj hfhe[^_US=@bu=jD@bu jjjjjj @bfDdf%Ev/Ddt ] ]wfP ؋]UVSEdEDb v.Ddt ] ] w,bPtKSBÉ؍e[^UH@bUPdTdUWVS}u 1$(b03(b@%(bC9 Pdy_=u Tdh=w 3C9uWPd)‰H%(b Pdx(b03(b@%(bC9t Pdy낐؍e[^_USE] f7=Tdu1hh =Xu܅tPhSZ ǐ1]invalid compressed data -- Huffman code > 32 bitstoo many leaves in Huffman treeUWVSXdXdL79v L7 j أXdG~L79vL7 jU\d~ hW19\d|AeL79vL7 jt]+fP5f6  u2+f69}u uUUEE>u}tD}u>=htdM 41h-]hd͋5f_f}jUUd?Myt G=`=htXdU Dx-uM12hK]hdO+U2dM DP1hx]hd"5ff1nUzuwM9 d}dU `dT=ht dM t1h]hd貊5fDf1U:::5ff}tUMMytQA 1MA }t)dU x-tfPuuu=htRdM x-u5f1h]hd(5fdU P2h]hd趉f ^d1ffPu;ơf8udt:u1=htPM 1h ^hdDۉl1~:~:uf8ui`hf8uQU9du;=htPM 1h&^hdֈۉl0ۋU::u:dM `dfÍe[^_Ujjjuu uIUjuuuu u+UWVSt$-=̮~s)ҁĮfD;fO;خr0+fD;fOf69vSMtPf;3uf;u؍ft2O*N))Ɓ9~5;|[^_]æUuu uepremature end of archive070701070707070702warning: skipped %ld bytes of junkUWVS1ۃ=hu V讁ǃ h fjj@ jh9fVz ujh@fVW ujhGfV3 uifqt fquE~,Vwtuju VQC =wO=t9+9+9‰~ShNfjjl?u uriMA<ju Q =t 9+9+9D=ujh9fu t=u?jhGfu u)~ShNfjj>u u,=t =u:jh@fu{ u$~ShNfjju>u uu=t =u6Mf9qtf9qu%~ShNfjj.>u u`.CjuE@Pju EP~[^_%6lo%6lo%6lo%6lo%6lo%6lo%6lo%11lo%6lo%11loUXWVSu} jFW]S)~EFPF0PFPEPFPFPF PFPFPEPhwiSҏUV UV$UV(UV,<~8t v8CF0@P躍F8v0WP}F%= tw =t9=`t=u(~t"~(u~,uVV(VV,Fe[^_%8lx%8lx%8lx%8lx%8lx%8lx%8lx%8lx%8lx%8lx%8lx%8lx%8lxUpWVSu} jhW]S|EF4PF0PF,PF(PF$PF PFPFPFPFPF PFPFPhjS蚎H~8t v8)v0袌F8v0WP|F0nPWe[^_warning: archive header has reverse byte-orderU(VS]u fCfEfCfEjVEP"| f;qu2=puhlkjju;p j EPMۉK EڴC$M܉KMމKMK MKMKMK(EC,fUE ‰SMK0fUE ‰S{8t s8s0gC8s0VPV{C0tjV}C%= tw =t9=`t=u({t"{(u{,uKK(KK,Ce[^USM] QAAK]r/dev/ttywstandard input is closedTRAILER!!!.%s %s: checksum error (0x%x, should be 0x%x)rename %s -> %s not created: newer or same age version existscannot remove current %scannot link %s to %s%scannot swap halfwords of %s: odd number of halfwordscannot swap bytes of %s: odd number of bytes%s: unknown file type1 block %d blocks UWVS= tbEhXR7jjPR=th#m5 DQ=tbh#mh%m Luh%m5pj=8 h.mh%m_ Huh%m5pj 8 =t=t h7W 9@~9;dUR@th0m5pj7 0fUff`tf u9fUffˆ;<) Dž8@`R@Im} 1t VO)ʃ =tt}tnU:/uf,,,9/t9uMfTmf90,R.,V\ uu=;~h<195;~E<9u3ju;4d u==,=hvm|BRT8||@8)v8`R 8|@/$7 u`Ra  j`RN uhVmG 9|@aw|@=  h q== hu9|@v|@,99U* uRuhZmjjE4 =t7uhmHDzH XRL3"=t\j XRD3 t8u+|@v|@qy \聄E1URu5VfUff@uh@u g=ux9UruhmjfUff@uupvuu7t uhmh`w6 w@wtPtwA|uO`R |@wt|@ tvSvSdURRu.uK|@t|@} Ow}t U:8!hhuSƃ }l=tuvhhuSƃ}@uhm5pj+1|@fs|@ 9=t)|u uhmjj0=t+|uuh)njj0|V@NsVmV}uhm5pjV0=u#99UtuRuhZmjj*0=ua=u p9R=ul9Rut }!=ptuhm5pj/hRut}uhm5pj/=t@xTPPRu}uhm5pjH/|@ t`R u^U:.u zyuhRuWQ1}`=tu%thRu)Q }8=pURu)QfUff@k==up9R=tv/v!dURRu+M=uC}t=U:t5RuP+[uuhm5pj-;huhRuq U URhRun }=tSurhuhRupU URhRuvn }uhm5pj,=ub=u p9R=ul9RuMq }!=ptuhm5pjl,hRu5q}uhm5pj=,=xTPPRupuhm5pj+~vJ|BRY|8||@8.l|@Quh|8u8m}N=tupu8m }(uhm5pj++8,=ub=u p9R=ul9Run }!=ptuhm5pj*87uhVnjj*|@l|@) =tuhVmhdop =thdj.<0ۄ=thdj <=w*=щ$($( 99040404($40=xuhlnhdvoPhunhddo[^_%c%s %3u %-8u %-8u %-8.8s %-8.8s %3u, %3u %8lu %s -> U8VS]u EPs)ECEȍEP?Ph'~j(EP膂7+Eȃ=NvEPEPcEsEPh*~ =tss h2~w $s,6Ps 5Ph=~QC%= t=`us,s(hL~( shV~EPh\~s8f th`~VO Eu5 hm5pj%j EPu$ t+9|CPVlvƃuvGMA @uQiu5 hm5pju%19;~;B9;5;=;e[^_UU w%Ѕ}B$)‰к)‰yB$)t=t =u"$)‰к)‰$)?w/Ѕ}%)‰к)‰y%)1҅t RufUu}"¡ttU WVS}WUW UW$Ut1trU9SubU9S$uZU9S(uRw8s]S@jnu S`v0u v8`F0n/=tK=F%= tw =t$=`t=uF( F,F~  ~$^( ^,Ftv8hjjy vF0PvPFPFPF PFPFPPPh@S4jLu S_v0u v8_Twu VNP9fDžqfF ff F$fFtv8hjjfFffFffF f fFf"fFf$=uDF%= tw =t*=`t=uF( F,FfDž&fF(ff F,f&Ff(fFf*fF0f,Ff.fFf0ju P^v0u v8^F0Pu [^_standard output is closedblank line ignored%s%s: file name too long%s not dumped: major number would be truncated%s not dumped: minor number would be truncated%s not dumped: device number would be truncated%s not dumped: not a regular file%s: symbolic link too long%s: unknown file type%s TRAILER!!!1 block %d blocks UWVShXR/jjPR7fDž`q59~:<^URVth5pj 0fUff`tf u:fUffˆ<=tVb`L8RXRhc \:uhjjS 뾐UR\9҃}\hԈ5p]]MMUdf]hfUffuhfUff@uh@fUff`u h`nfUff u h RfUffu h6fUffu hfUffu hUlUpMth tw t&`tu]]MMEEUxUЉ|EE\@;.u5@y/u(A@9/u@@;/t@9.t̋@]0@҉UwShRt uh׈yLM t!t 8t#1uhHuh8uhL(h`w6 wW@GCTwt%w"uud_ t Ew=tv4LuLVLjj\:ǃ }\hԈ5p=u\|WiE VL\|VW \wuuud_|VW }\hԈ5pj=UPUTPRu&uhԈ5p=uuh|jj=uNuud6^ tf]hhE!uuud^Dž|VLUBRguW\@}(\hԈ5pjW*@|wB@Bd~uhjjH@;}VL*VL@VWV@V;W:\hjj=t\hωhd\ =Shdj.k(?VDždDžhDžlDžpDžtEEEEDžxEDž|E EӉvV`R#hVh9ThVh9TVVQ=thdj y'=щ8<8< 99DHDHDH<8HD1cƒuhމhdhZRhhdTZ,[^_cannot read checksum for %sUWVS1u ~_hRu4à }uh75pjt%19})A9|)jjju$utuh75pj`[^_US]9+;=~ h+;PSh9R ;9]UU w%Ѕ}B$)‰к)‰yB$)tw/Ѕ}%)‰к)‰y%)6=t+=t"$)‰к)‰$)1҅tRuh9RUS]S@9Ct1]UVSEpX H$1t9ru 9Z$u9J(u@ue[^Uu¡UWVSEPUP Ux$1tUU9SuEU9S$u=9{(u8C u CPt؋P뱐ދ멐e[^_U@WVS=tZsVu uV@#}sEuEP[ue[^_UHWVS]jjEP}jjs82ƃ} s8=us8uVcE u EPs8uu V TwuuuuWuu V }s8hԈ5pj=t1E؉EEEPu<}uhԈ5pje[^_UM=t =ucQ( Q,=u9ÐA%= v=`=u=벐w+A(%9A(t ÐA,%9A,tPËQ( Q,=aA%= t!w =tD=`t =1Q1blank line ignored%s%s not created: newer or same age version existscannot remove current %s%s: unknown file type%s 1 block %d blocks UWVS0=4҉K$h8R AQ0R 544s4/<jj(R$8R8Rhc  <:uhjj> 빐<:.uztz/uztUR<9҃}<<;/u9/t0򮋕$)R0R $4BR]1@R4)/fHff@ufUff@ut=uU9`|4h֘jfHff@u4^Ou%4t4hfUff=t<4* ƃf}vuURUR4ƃgjj<-ǃ } <hh4-ƃ }Z=t%4Phh4M-ƃ}(4hӘ5pj WvR}+}19}-uމuM MUڋuMM C9|}u9uT+888e[^_POSIXLY_CORRECTUS]887hs8;-u 7C6;+u7C$=8t7 7؋]--%s: option `%s' is ambiguous %s: option `--%s' doesn't allow an argument %s: option `%c%s' doesn't allow an argument %s: option `%s' requires an argument %s: unrecognized option `--%s' %s: unrecognized option `%c%s' %s: illegal option -- %c %s: invalid option -- %c %s: option requires an argument -- %c U$WVS]=uu E=7t78=7898t89t&u 89t 8E9}5E U9}U 9-u߀yt١8E9t}E 4uU898t)89tu 898u 8U8E9u 89 8t) !E 9-uyuQ=7u E ]EEE  1t U z-uFFE 7pU y-t(}UyuAPu7EEE57>t>=tF>uE;tg+7P573 u>+7E;0щJ9U}u ]EEEE;u}tL}uF=tE 40hhdx=0=7H74}UU>Ext F5=tYE Tz-uE0U 2h«hd<+E0E TPU 2hhd<0=7H7?ExU9}U `=tE t0hhdE<0ɋ=7щJ7?E8:u:.0=7H7}tEUUztBR 1E@ }t*E z-t7Puux=tUU x-u572hBhd[;+57E PU 2hbhd.;7?377Pu[78ut:uQ=t4=8tPU 2hPU 2hhd:ۉ?y:y:u 79t un 79t UE9u9=tRE 0hhd:ۉ?U::u:U 7Íe[^_Ujjjuu u!Ujuuuu uUjuuuu u%uUWVS}5 8t 9>tLvuW?j CƉ>uWh]S`S3CF 8F5 8Fe[^_UWVSu 8tS8uVRtt[u8tS8uVRt3[uVj BVGCCu8C81G 8C 8؍e[^_UWVS}58t 9>tLvuW7j BƉ>uWh]S@S3BF8F58Fe[^_UWVSu8tS8uVRtt[u8tS8uVRt3[uVj AV'BCu8C81G8C8؍e[^_versionverboseunconditionalreset-access-timeswap-halfwordsswap-bytesswapsparsequietrename-batch-filerenamepreserve-modification-timepattern-filepass-throughowneronly-verify-crcnumeric-uid-gidnonmatchingno-preserve-ownerno-absolute-filenamesmessagemake-directorieslistlinkio-sizehelpformatforce-localfileextractdotdereferencecreateblock-sizeappendnullUsage: %s {-o|--create} [-0acvABLV] [-C bytes] [-H format] [-M message] [-O [[user@]host:]archive] [-F [[user@]host:]archive] [--file=[[user@]host:]archive] [--format=format] [--message=message] [--null] [--reset-access-time] [--verbose] [--dot] [--append] [--block-size=blocks] [--dereference] [--io-size=bytes] [--quiet] [--force-local] [--help] [--version] < name-list [> archive] %s {-i|--extract} [-bcdfmnrtsuvBSV] [-C bytes] [-E file] [-H format] [-M message] [-R [user][:.][group]] [-I [[user@]host:]archive] [-F [[user@]host:]archive] [--file=[[user@]host:]archive] [--make-directories] [--nonmatching] [--preserve-modification-time] [--numeric-uid-gid] [--rename] [--list] [--swap-bytes] [--swap] [--dot] [--unconditional] [--verbose] [--block-size=blocks] [--swap-halfwords] [--io-size=bytes] [--pattern-file=file] [--format=format] [--owner=[user][:.][group]] [--no-preserve-owner] [--message=message] [--force-local] [--no-absolute-filenames] [--sparse] [--only-verify-crc] [--quiet] [--help] [--version] [pattern...] [< archive] %s {-p|--pass-through} [-0adlmuvLV] [-R [user][:.][group]] [--null] [--reset-access-time] [--make-directories] [--link] [--quiet] [--preserve-modification-time] [--unconditional] [--verbose] [--dot] [--dereference] [--owner=[user][:.][group]] [--no-preserve-owner] [--sparse] [--help] [--version] destination-directory < name-list UVS]u 59hS/59hS/59h_Sr/$V0aAbBcC:dfE:F:H:iI:lLmM:noO:prR:sStuvVzinvalid block sizecrcCRCnewcNEWCodcODCbinBINustarUSTARtarTARhpodcHPODChpbinHPBINinvalid archive format `%s'; valid formats are: crc newc odc bin ustar tar (all-caps also recognized)%s: %sGNU cpio %s%sU WVSE1ۃ}jhd9jhPhu ue1=$Tl<\||PHTLl$L 0@`x\l8}mSA51h@jj# % =Qjhdo=5ٹh@jj  0u=tjhd5St5Wu5[t5`u5et5iu5mt5qu_5ut5{u5t5u5t5u5t5u_5hjjP@=DtjhdDnU 95.=u =tjhdt=DtjhdDMA 1=DtjhdDP =tjhd?EPEPh9h95 tP5hjj}tu芗}_ukE5%5hj蹢jh4d jhd0=Du&=tDnjhd=t =u=tjhd=Dn9=u:=u1=9u%=u=uu=0t}tjhda=u U+;E ;}U095D9U9====uz=uq=uh=u_=uV=uM=uD=u;=t =0ut%=u=u}u =0ttjhd1=u 0}9EH9uH=u?=u6=u-=u$=u=u=u =tjhdU 4=0tU=Dnt95Dtjhdb50%9}50h5pj=u=u^t e[^_UVS=Dnu#=~U)"=Du5 S,999999V,99;99hjh9軝e[^error closing archiveUVSu] $9hj1SV:jkDЃ=9|K=9~9Pt*59Śuh5pj jٝcannot make directory `%s'%s`%s' exists but is not a directoryUpWVS]1j%E0Ѓ$)ĉSWDEPWEE%=u}t}tEtEEMME?/uC;/tj/S ÃEPWVtEPWd}tWujj}t4}t.uuW[ tWh{5pj}t%$ML$efEf%f=@*/C;/9C;/t-E PWt:=puEPWufEf%f=@tWh`5p}tWujj}t4}t.uuWz tWh{5pjE t-E PWgtWh{5pjqURufEf%f=@t2Wh`5p Wh~jjEP s}t4}t.uuW tWh{5pjE PWtWh{5pjEPe[^_UVSUtǃDe[^UWVSjj 轕0} KSu U49t#Vj 臕uop Vj d1e[^_UDWVS1]U<jS  ; tFC?~ڃ@u 񐐐]}t; uC;u<wMCPPp}U4jW蒕 u} u;Fu-u#;Au CPutpe[^_/etc/rmt-lrsh/usr/bin/rshcannot execute remote shellO%s %d UWVSu|8<41u|tG~u!p>:t FB>@uF~@u2S4ܧڃ>:t FB>:uF!48FA8>u鋍8P]PET7j zjݓtOēt軓 PPB<t.jhsPj诖"u |Ph]SnjSW WvE([^_C UVSuh+VtV7Vwe[^R%d UDWVS} uhl]S/Suzt(uƃu up819}-UU)PWU t9|݉e[^_W%d U@WVS}uVh]S芋SWuRjj 苐Vu 49t"Sj jWTpSj HWe[^_L%ld %d U@VSuuu h]SSV>t Ve[^I%d %d SUDWVSE ]=mt=m@@tKpsPh]SwSutu&hutuƃt~*}}VS}  ~)˅f;7upH19}D T 9|1e[^_UWU0Ѓ~</u H}UVS]1ɉڍ9sÔB9r1 B@~9s B9rȍe[^ustar00UWVShjV荑MQ80H dPRVޠ FËMY8Üd;/t HC;/uPCPV讠؋M+A8Pq8YP薠FdPjMqFlPjMq FtPjMq$F|Pj MqPj MqtMA%=@tow== tg=tw=`t\=teMy<tjdq<PʟƆ1XƆ0^Ɔ5RƆ3FƆ4:Ɔ6.Ɔ2jdMq<PiF|Pj j=jhP9jhP&Mq _tP P_Mq]tP)P=IPjMq( QPjMq,PjV(Phu P [^_UMU t1ÐJuTRAILER!!!invalid header: checksum errorwarning: skipped %ld bytes of junkUWVS]DžDžhu W hWBtC8}C4PPW 9C4tVuhjjDž hPP@ju EPT 덐=tWj WYPC8CCPGdPc=u PtC C PGlP=u)PtCCPGtP{CPG|PkCPP[C(PIPKC,PQP;C< 7[$K@pK .K`"KK KV[C[^_Ujduh8蒚88/USE] t8ujdSh8`8=hPh8D9hLh86jdSh8a98]USU] 1ɀ: uB: tLB<v: u B: t :%]USM]U  J$0~u~ J ]US]EPPZS 9Et1%jhP轙t ]UWU0Hd~C=u0=)D8/t 8t@8/u8t)H=u 1}UU:t< v1B:uvirtual memory exhaustedcan not omit both user and groupinvalid usercannot get the login group of a numeric UID%uinvalid groupU$WVSEUU10}Ѓ$)ĉuS%j:Sjǃuj.SYǃtE;t]Et tWU}u}u N}uÃuYuuEo1t }utE|u脚U CU }uxttC Us u3s h]S~ 0Ѓ$)ĉS0Ѓ$)ĉRVΗ}}uu.u~u Eu褙U @U?}0}Ѓ$)ĉuV6}u`}tu_Uu Ut9}u3V^Uu!U:t2{UUEe[^_write errorUWVSu~5;59VRy5;59V袂 9;=:th}=ptpwMVS~ =;)߉;~S59VRS59V' 9thp5pj;9 999;e[^_UVSu=u =tR0;}S59=t&;;R59=t5;59V!5;59V: 9;thp5pj!;9 999;e[^USU] ~ BJB BJK]read errorpremature end of fileUVSu] 999}~S59VRv S59V諀 9=9u?=9t6V ~S59VR/S59Vc 9=9}h5pj =9uhjjj藃99 9e[^UM 99~Q59u9}9Ã=9t99 91øUWVS}u~D+;uu &9}S59W49;)ރ 븍e[^_UWVS}u~D+;uu ␐9}S59W}49;)ރ 븍e[^_UWVS}u~R=9u5u 959~9SW5949)9)ރ e[^_UWVS} U995959+999199S599R3)9)ރ ~5VWR 5VW} Åu@=9WG ~5VWR_5VW} Å}h5pj ډUME9E99M9 9U99|]9Su592؍e[^_UWVS}u ~i=9u5W959~ 9=t$= t19}99B9| 9) 9)΅e[^_UWVSu~r=9u5uq99~=t19} 9 9B9|Su 59))99 e[^_File %s shrunk by %ld bytes, padding with zerosRead error at byte %ld in file %s, padding with zerosUWVSu}u=9uChunt/~ VWh WE)Phjju V _99~=t!19} 9MM 9B9|Su 59g))99 Ve[^_UWVSu}u=9uChut/~ VWh WE)Phjju V _99~=t!19} 9MM 9B9|Su 59))99 Ve[^_virtual memory exhaustedUSuÃuhjje ;.u{tjjjhhSSDq]cannot seek on outputUWVS ș=։)jEUuuuzӃ}h)5pjȹ ~_VK VSu yjEUuuu:zEU }}h)5pju VuSt!>duu>%%F>u>u W$I)KCP6(SWP (^0P,SP7e[^_USM] 19}At1 B9|]U WVSu M M]]E=tE=EM9M}tNr}hVatEuEEhV%t qjM]uuuquEEu f~;9B4vF9B0v F9B,w&FPFPPVPh GG;X0VX,FÃ}~:9]~}uh  GE}~9]uSh G]E}}8tj^Ee[^_can't copy replacement sector %d to %dUWVS;?+P,JU] KUJU9]}|U=P;P]~B=@t&E)P;PPu uAE)Pu9.})Wu+uVus uWVh  MK[e[^_can't read sector, %dcopying %d to %d can't write replacement sector, %dU$WVS;@($)ĉe1E EUj;R(1҉E܉UEe܉É֋UU֋EEVSuZӃ}hj;r(uuTY; 9J(tG ~;9J(t'}u h u h j;R(1҉É֋EE܉UEEUUUEEuuu ZӃ} hjU=;tuu h Kn ==u3;r(uuX; 9B(tuh L1e[^_zeroing %d UWVS;@($)ĉ;r(jWZj;@(1҉É֋E EUEEUUUEEuuuYӃ} hjY=;tu hqRm==u-;r(WuW; 9B(t u h Ue[^_UUM ff9sff9vÐfBf9Au?RA)‰USM;C0QC,QЋ]U1ɋU9s f3 9rUuu u*@(#)dir.c 8.1 (Berkeley) 6/5/93lost+foundUWVS=ABE1B9]v0zt CB<uB<uF9]wӅe[^_wrong type to dirscan %d UWVS}0tW0Rh蠟$uDW1Ʌut1WOjhQRщ WOB_Z4wwt!ډ)WO#G W3XSPy  = Cuw(WW҉tf= Cu!=AuwSW +R CBu(WN'uv[^_DIRECTORY CORRUPTEDUWVS}BOJ4MQwEG  v~]9_ }vMqw VWbu_hW̜ESwEpw fFFFF}t]CG GWuvM9O | 1_ ]ދMqVW Vщ)O_G ]SW M9O uvyRWukG …})Љ»)Ӊ]_ M)O_hW赛EuwwEupf]f^}tMAe[^_UWVS} = CuGG $]K ʅ})щʹ)у= Cu_]_] _]_]90BvnftgW9_GuY9|UÉډu9N|Bu9Vr;}w5?t'O1}t}9tA/t@9|9u 1e[^_UEu PP$%s NAME=%s DIRFILE%s=%s UVS]u uh膛V hfVSPvH950Br@VSft+Pff%f=@uRh貚Ph蟚[^UNREFLINK COUNT %s COUNT %d SHOULD BE %dLINK COUNT INCREASING (ADJUSTED) ADJUSTUWVS}fu wÃf9su(jwNjhcWZB9Gtff%f=@u`Rhi+wC։)щRPhwe=At2f}hdh}hd=Auh螉u f)sue[^_UWVSu^(0~,Ȉȃ ;tS 1C)9}of{f)ffSӋF = CtAF CC CCffC@PCPv, [^_UVSu^(C@Pv,CPǚt)F = CtAV CC e[^UNREF %s (RECONNECTED) RECONNECTNO lost+found DIRECTORYCREATE (CREATED) SORRY. CANNOT CREATE lost+found DIRECTORY lost+found IS NOT A DIRECTORYREALLOCATESORRY. CANNOT CREATE lost+found DIRECTORY SORRY. NO lost+found DIRECTORY SORRY. NO SPACE IN lost+found DIRECTORY..DIR I=%lu CONNECTED. PARENT WAS I=%lu U8WVSu} j4EPVMff% f=@%tPhіVC =At{u{ t=Auh|u1ha=Bjá`EEEH6EEPS tEأBh *=Auh$tq5djjB t_5`Pj t=At8h+)j5BB=At h`=Bu h75Bff%f=@hdh/B5djjB uh|5B5`jm u h[EEf]ԡ,BfXf@PEP+,BfX5B CB<th7VSSV5B.uhhas_,Bf p5BhV uth5BV 5BJfCB,BfPVh tWh^,Bfx=Au h^[^_U4WVSu} j4]SEEАuE}UUSVPe[^_U8WVS}] u9=0B90Bj4URzEEи}ԉ]EuW%jhV NRQ? ut6VN jhQRtщ VN OURVt 9WWSWSVOtURVz1[^_NO SPACE LEFT IN %s (EXPANDED) EXPANDU WVS}B@P_w  J|(?u  /Br8gT(T,\(BR0ӉGG BR0 WhB J5BFPӉ9w r!9O u 9_r BB0BG#8@#BLPt,xhQsMBr0xhv N B^Z09st3Eph\*S4SuYtB9r5B xNjzr9>tKUB} uRЉuuu u7t_b}Ex0uE}u=}v7URRRSqShD%bhh%s)EU9Eb[^_blk %ld < cgdmin %ld; blk + cnt %ld > cgsbase %ld blk %ld >= cgdmin %ld; blk + cnt %ld > sblock.fs_fpg %ld UWVSu} 95AA)9 BÉA!A‰UQ9}QEA9=CRVh-M BA!AQRWh-U BC9~N=Ct;Q!QAPVh.MBWh0.M1e[^_bad inode number %d to ginode U WVSuv950Bs Vh~/= @t95 @w @BPx9 B1׉EA!ÉQUIM B1qxNjY`}}=Ct C`Bp0u{sÉC B1qxYx @ B1qxCX؍e[^_bad inode number %d to nextinode UWVS]AA9u90Bs Sh09 BA B؋ B1։ÉA!ÉQy1qxƋY`uBXdAؙ=Cօu|A A BAA BSW5A5CvA@@@e[^_Cannot allocate space for inode buffer U @A BAB8#BHAA=ACB=Aщ A|At CAAA|A=Au15A*Auh1}5A=AvU=At 5Am+Acannot increase directory listUWVSBz0u h2%`}BP0J}Ӊ_w P0QRVSƃ vR)ÃE 158BA } u C CC } {}WSSRSRU(RL A9Au7AdAR5B*Bu h3c| ABAe[^_cannot find inode %d UM158BAt 9HtuQha4{US=AtbAB9Bw3)9Bv5Ah)5B])BA]UC@DIRFILE%s %sCLEAR (CLEARED) UWVS]Mq8ƃu3ff%65f=@u25Ru h;5{Mq6=AuhA5kuI=At hG5F AuVWAP|@=Atj,P,-%c flag requires a %s US]uEPSAƒ 9]tE8tu uh=rЋ]ufsrwroUWVEp=u.p>tp>uxu1e^_starting CAN'T CHECK FILE SYSTEM.clean, %ld free (%ld frags, %ld blocks, %.1f%% fragmentation) ** Last Mounted on %s ** Root file system ** Phase 1 - Check Blocks and Sizes INTERNAL ERROR: dups with -p** Phase 1b - Rescan For More DUPS ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups %ld files, %ld used, %ld free (%ld frags, %ld blocks, %ld.%ld%% fragmentation) %ld files missing %ld blocks missing The following duplicate blocks remain: %ld, The following zero link count inodes remain: %lu, ***** FILE SYSTEM WAS MODIFIED ***** ***** PLEASE RERUN FSCK ***** / ***** REBOOT NOW ***** UtWVS]=At}thįj$$B=Ct=At hh>oStJu=Ahr>fo=AtxBt`=$CuWC8Ph>oBB(P<$$Qh>f:u=Au;BPh>B:=At h>,:h>:k=At(=At h?nh9?9=Au h]?9O=Au h{?9!=Au h?9"=Au h?9&BP8R5A5Ah?:n<<< BA(A(ShO}w @@ ~8whO#`=Ah(IOuBh1I<_j u0hOv_h(IOu h1I_vY= Cu C A  C A9 Ct9Xt 9 Cu9 Cu 9Xt CUB$CM}VEe[^_@(#)pass1b.c 8.1 (Berkeley) 6/5/93U4WVSj4EPlEERA@11B9x,~Z19~Dv.Sƒt]ԡC<tEPRuFCB9GB9z,e[^_DUPUWVSEMqyjV0tE@t<9su)VhRMqr@PSp@ 9 Ctuă= Ct C@9uFOzEe[^_@(#)pass2.c 8.2 (Berkeley) 2/27/94ROOT INODE UNALLOCATEDALLOCATECANNOT ALLOCATE ROOT INODE DUPS/BAD IN ROOT INODEREALLOCATECONTINUEROOT INODE NOT DIRECTORYFIXBAD STATE %d FOR ROOT INODEDIRECTORY TOO SHORTDIRECTORY %s: LENGTH %d NOT MULTIPLE OF %d (ADJUSTED) ADJUSTMISSING '..'..BAD INODE NUMBER FOR '..'UWVSCR҃U$ U8UUVlVUUhS[hSKu hSG[hjj  hS [hTj[h'TKt-jhjjThSZh2TfKhSZh;T[h'T3CƃCff%f=@u,BfFfJC]C<u 3xtr}$~~GPPVJPPSJShZVh[?N(=Ath[9hZ=}$~ GC= CtJAG8t4h([Q]sAGhTT=u,Bf P!PCPh7[Lu  [^_UEU I+H@(#)pass3.c 8.1 (Berkeley) 6/5/93UWVS ABE9BM{{tCC<usCC<td1{{t'CS<u958B|RÃFӐs W+BC C,Bf BC4EM9 BVe[^_@(#)pass4.c 8.1 (Berkeley) 6/5/93UNREFZERO LENGTHBAD/DUPBAD STATE %d FOR INODE I=%dU4VSj4EPEEf9A u̐]ԡC$fffXffdff,BXtPV苰 A9Ytc ujhre*S6xux u jhxe jheV DSCPheIAPQAQjhreV}C9Ae[^UWVSEEp@EjV8t-EAPSËASD}FA}F$)sRAt9stuu8}FA׉}F$)"; AFM}7Ee[^_@(#)pass5.c 8.2 (Berkeley) 2/2/94DELETING CLUSTERING MAPS DELETE CLUSTERING MAPSCREATEXPANDCANNOT %s CLUSTER MAPS CREATE CLUSTER MAPS%sING CLUSTER MAPS UNKNOWN ROTATIONAL TABLE FORMAT %d CG %d: BAD MAGIC NUMBER BAD STATE %d FOR INODE I=%dFREE BLK COUNT(S) WRONG IN SUPERBLKBLK(S) MISSING IN BIT MAPSSUMMARY INFORMATION BADMODIFIED FLAG SET IN SUPERBLOCK (FIXED) FIXCLEAN FLAG NOT SET IN SUPERBLOCKUWVSDž@B<5hA8T,(WF1Dž,9Hp~utA$t<9$}$ 1ɋt,9~pt<9$}$ ,$},@E,v u,}uVt =(C~j Shǟw<@]@(#)utilities.c 8.1 (Berkeley) 6/5/93bad file type 0%o UUf%=`t>!= t5 =t,3=@t '=t =t =u Ð=CtPhf1INTERNAL ERROR: GOT TO reply()CONTINUE %s? no %s? yes %s? [yn] UWVS=At hu hu'=Bu =B}uh=Au t#=Btuh&uh0h4da cyhc<Icc9 cyhc u!cc tc u9 uÀytYtnt NghyGY>1e[^_cannot allocate buffer pool UWVSACBp0襺ƒu h hAlAXAdAAAAAЋ By0ǃ19}jj 1áBp0"ƒtuBh* SCAAAXACCCF9|5Ae[^_deadlocked buffer pool USUAAtBHd9CtIAuAAtCt [AuAu he u RS>ASCBCAAAXAK؋]UWVSu}BHd] 9^t+V5BZBWSv5CF^~ e[^_PARTIALLY WRITING %sZERO'ED BLOCK %d TO DISK UVS] {{t*sC =4Bڤ9Cu٤Rh CCs ssuJBu]11BHЋ)9P0}P0RBP8HdR5BBX0F9e[^CANNOT %s: BLK %ldProgram terminated U=Au hZu uh٥ h u h` UPDATE STANDARD SUPERBLOCKPanic: lost %d buffers cache missed %ld of %ld (%d%%) UWVS1=B} 5ChB5B@=BBӉ΋4BUMuujh "OEU9]u9utU=AuLhFt;4BQRjh NBBhB5BhPA5B5hA׶5A t1At'GV5BW^v訶V袶ޅu9=AtA)RhaAC=Ct+ B=AP5AQhy?5C蹾5B设e[^_SEEKREADTHE FOLLOWING DISK SECTORS COULD NOT BE READ: %ld (%ld), %ld,UWVS} EEU4BEUEeÉ֋UU֋EEƉ]ujuuuӃ|uWu豽 9Eu1auhRuhWjuuu軾}uhREuWhDh\}1 U9U5xAuu 9xAj]u֡xAEUEUEUuuuxA94Bt>=4Bt5=4BURU4B=xAPhC =4BURh#E=xAxAE9}"hEe[^_WRITETHE FOLLOWING SECTORS COULD NOT BE WRITTEN:UWVS} }kEEU4BEUEeÉ֋UU֋EEƉ]ujuuuӃ|#uWu/ 9Eu(BuhRuhjuuu蓼}uhRh}19}54Buu觺 94BtXj]u֡4BEUEUEUuuu =4BMMQh_=4B4BE9}uh;e[^_UWVS}yBM9H8hEBAEB8EEyAUUyB$)‰9]~Y}}} AM萐Eyu0EUډyB$)‰Ћ}rC9]9]~]w19]~\MMMEyE5AuuUډyB$)‰оMu u} 7C9]}=AEE:EB@8+E9EBH8M‹5A+p89E1e[^_U4EU E܉UEP/?..U4WVS} u9u uf=0uC<vfMf0j4EP{?EE]MƁ9},uEH6EEPVPvtmU؉UԉuE6MMEPR̀Pvt=0}H)PSuGmK/E 9r uԃh0tK?M)PuSle[^_U=Au7j ĺreturning to single-user after filesystem check UhlAjj Ujjj jj (SALVAGED) SALVAGEUNKNOWN INODESC FIX MODE %d US]U tWr tZtK]{0uRsEe R=Ath hu 13h]UE Puh4dD@jq%s: %s: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY. UVSu] =At@5$BhTSVh4d?h>5$BhŰ. jSVh4d?e[^US] =At5$BhSuh4dk?]INTERNAL INCONSISTENCY:US]h7SUWVS]C8} Ee} 9K8~o]S8Ѕ}B$)‰ȋ}sE4@d]ʋ}9O8|*E !9Eu}]<eeB]9S8}A}9O8e[^_ffs_isblockUWVSEu ]@8t=tR|tur<3%n؃‰4؃‰؃‰" 08% hye[^_ffs_clrblockUSE] M@8t3 tL^t uRVȃ ȃ E   h6]ffs_setblockUSE] M@8t3 tL^t uRVʃ ʃ U! hϳN]Uuu u@(#) Copyright (c) 1983, 1993 The Regents of the University of California. All rights reserved. $Id: ifconfig.c,v 1.19.2.2 1998/07/17 20:13:21 jkh Exp $I<D<@<;<5<.<(!T h|<<ܶ <ն<϶@<ȶ<¶l<< <L mtunoicmpcompressnormal-mediaoptmediaoptmedia-link2link2-link1link1-link0link0ipdstbroadcastmetricphaserangenetmaskdelete-aliasalias-debugdebug-arparpdownup<i i@tC4Ci i@tC4CPi i@4C4Ci i@tC4C ethernsatalkipxinetUWVS]} uj jFP1ɐ9s)t\;tH \A~Ӎe[^_ ifconfig -l [-d] [-u] [address_family] ifconfig -a [-d] [-u] [address_family] [parameters]usage: ifconfig interface address_family [address [dest_address]]%s %s %s %s Uhyhhոhh4hd4j述adlmuiflist-sysctl-estimatemallocactual retrieval of interface tableout of sync parsing NET_RT_IFLIST expected %d, got %d msglen = %d buf:%p, next:%p, lim:%p interface %s does not existULWVS^6EEEEEEEhtu u|Y w|$xExEpEhE`'V dI)ME }t }t}t }t}u}ts}~}EL=Lt,M 1M1-tE Mȃ9uދMȃ9uHAME 吐ME a}aj M 1hCܼME  }~AEL=Lt*M 1M1襾tE Mȃ9uދMȃ9uEEEEEEE}t MIMjjEPjjEP} hzjqbuРEuhjRbjjEPujEPb}hj'bEMMM]9]{us`C,CbhhdI0MAPjh߹hd00MPhhd0$uSuhhd0j説MEE9]v؀{ u}u]E9]w}u }}t ,C$}t ,CFPFPhCźFƀC }}tMȁyu ~}t6 %s netmask 0x%lx broadcast %sUVSu jj]SFp}mPh,CtF upUmPh޲ F uE@Ph 輲,Ct#F txtpmPh/萲 %d.%d broadcast %d.%dUVSu jj]SXV BPfB %PfB %PBPfB%Ph2,Ct'V uBPfB%Ph ,Ct%V tBPfB%Ph԰ 4d h4dj>褐e[^_Attempt to set IPX netmask will be ineffectual U VSu CEuPECECEC u hce[^AppleTalk does not use netmasks%u.%u%s: illegal addressUVS]DCECDC} u hjNEPEPh4S5)u}w }vSh:j^NfEfFEFe[^%hu-%hu%s: illegal net range: %u-%uUS]fE{fE{EPEPhS(uf}tf}t fEf9EsEPEPShjMfEfCfEfC]12%s: illegal phaseUWVEƿuu C,ƿwu CPhyj?Me^_ atalk %d.%d range %d-%d phase %d AppleTalk address is not in rangeUS]=CuCf=CufCfCfCCPfC%PfC%PCPfC%PhةfCfCf9wfCfCf9s hjILCCfCfC ]Attempt to set XNS netmask will be ineffectual U VSu CEuP蓣ECECEC u he[^%s: no media types?mallocSIOCGIFMEDIA media: status: activeno carrierinsertedno ring supported media:U(WVS}j(j]S_jhCSʤSh8i(Wƒ$\}uhChpLBUP8ƃuhjJuEPh8i(Wf }hjIhާuE9E tW4#uC<uWhojDe[^_strdup,unknown option: %sU WVS]EEu fEu hjC=t9t @xuxuShWjCuhV"ƃtD1ۃ(tVt(FEuC|(u}u Vhj4CU U1몐upEe[^_UVS]u {t Vs?fu{ue[^%s <%s%s>UWVSE=tE%9t @{u{uhA负1?t5U|8u8{t9t {uF<uhPfshbS1(tg|8,uQ\8({tGM t7}u hesEh}tPhi {uF|(uh}tnPhbƞe[^_Uuu u_@(#) Copyright (c) 1983, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. $Id: route.c,v 1.16.2.7 1998/08/12 06:48:51 charnier Exp $xresolvexnsx25staticssthreshsendpipesarttvarrttrejectrecvpipeproto2proto1osinostaticnetmasknetmtumonitormasklockrestlockllinfolinkisoinetifpifainterfaceifacehopcounthostgetgenmaskgatewayflushexpiredstdeletecloningchangeblackholeatalkaddbad keyword: %susage: route [ -dnqtv ] cmd [[ - ] args ] UEtPhC@hhdq j@nqdtv/dev/nullsocketUVSu] djhSV3 L78$xXhxxI@IH8IKj9+5dIdIKK=8Itjjh jjjYH =H} h(jGD<5K;3"'H$PKSVw j`[SVjM3must be root to alter routing tableroute-sysctl-estimatemalloc failedroute-sysctl-getExamining routing table from sysctl write to routing socketgot only %d for rlen %-20.20s done U$WVSu] =Kt hjML;j5H?~ku[8-uT@Pe%tt<t++t0H,H HH3EEEEEEjjEPjjEP赙}hjG9uxÃuh&jG[:jjEPSjEPl})h4jGy9hj:ShsUU܃=Ht hEQE9}=Ht PW7F=HtF]9H=KFUVPW5H€ 9BE=@Iua=Ht SVL^\Ft Sy SPh耖SUPhjh`9}e[^_default%u.%u.%u.%uatalk %s(%d) %xUWVSu=tVhhE҈u/j.hEÃtFCPhEyE>u)D-DvF t FE1ۅt>w)uO=xIuBjjEP4~ƃ t,j.6ÃthECP_uthShDGEE%PEPEPEPh1hDxv#Ph=hhDkhVdV\@%<0FPhFhDxD %Es#PhKE)PS Ã9rոDe[^_%u%u.%u%u.%u.%uaf %d:UWVSU1B tgZ؅u)o=xIue|)%=u Ѕu!u tjPlt0thVhF肏DuPh\hFOw!fu'%PPh_hF#wu0%P%PPhehFvP%P%PPh1hFvr!Ph=hhF'lR hRB`r@%<0BPhnhFavF 9s+ Gs#PhK G)PSÃ9rոFe[^_US1]U $dXLp|HRHFH:H.H"H H@ H ƃtQ}uKu vÃt&jjFPP؆Pu tvÃt2}u =4Iu#ZS,J1u pjÃu=Hu1u ]t"X t}ujS 1cu mt;U@Br PB0$u h/jD'[^_*.**.%XHany*%02X%02X%02X%02X%02X%02XH.%XH%lxH.%s%sU WVSUJMBEB EfEfEf}u;f}u4f}u-u)fu Phh GhjEPh&, u qjEPh   u QEPEPEPEPEPEPhhLHhLH =LH0u=XHs@80tft %Phh@Hg @Hh@HSPhh2h G9 Ge[^_actual retrieval of interface tableUVSEEEEEEjjEPjjEP豄}hjG$ucÃuh&jGW%jjEPSjEPh} h$jGu$u9sPS~9re[^got message of size %d UVSH=KtjohV5HClShSV֐uwriting to routing socketread from routing socketUWVS] EIph\hI}au EI}cu E8}gu*E=Hu!HH tI EUIIIhHhHItIIIHtH t0u  Vj>Ve[^_UVSu=tV3Lqt;uCe[^%s: link %s; %s: inet %s; %s: atalk %s; %s: xns %s; USU] BtUtit+u_RPSh &r,PSh rPSh @r r rrzjPSh rh4d;]UWVSuM M11EPu EU B< w ЉE8<w E$<w ɉE>uFwK$    0 U @ @ ȈB}3}1ۉȈB1ȈB 9U?*U M e[^_US] EPEPh_uAu}w }v1fEfEC]UU%PІ%Ph_jhlHdlHUuu u$Id: mount_nfs.c,v 1.14.2.3 1998/08/12 06:31:03 charnier Exp $nfsv2port=tcpsoftnqnfsresvportmntudprdirplusnfsv3intrdumbtimerconnbgupdateforceunionrdonlysuidexecdevautoatimerwroUUE Mt8} "t t@t !"t  t@t "t@ t@t @ "@t  tf8} "Bt  t@t "Bt  tt Ð"BtÐ 23a:bcdD:g:I:iKL:lm:o:PpqR:r:sTt:w:x:Uillegal -a value -- %sillegal -D value -- %sillegal -g value -- %sillegal -I value -- %sillegal -L value -- %sillegal -R value -- %sillegal -r value -- %sillegal -t value -- %sillegal -w value -- %sillegal -x value -- %snfsvfsload(nfs)nfs filesystem is not loadable%snqnfs 1/mount_nfs:nfssvc err %mUpWVSP'EE} u}h1u u$ h΃FT$LLLLLLLLLLLLLLLLLLLL$LLtLLLLLd<LLLLLLLLLLL,p|LLLhLLLLLX|LLdj W5nËE 8u}5hXj ^4N a TTNKj W5:nËE 8u5hoj_ ^2}ÃuUh>t4h>thBjG~h>|Ãu hOjG VuWs$tWhnjCFTuLtuhqjjSjPjPjPhyjjh{i} EPS}#=pQthjdՐ͐j]SUWVSM} EUQUQUQ Uf=`t `5XWhURG:ЅfU 1}ujjURWhURߋURVSWhUR Ãt>E ESuujhL<jhL<jS҉ƃ SSR҉$\e[^_no : or @ specbad net address %scan't get net id for hostcan't contact NFS serverNFS PortmapCannot MNT RPCMNT RPCbad MNT RPCnqnfs 2can't access %sUWVSEjZuh`L)`Lj@ubtX!j:ubuhf]HMwUV1҅t&STLuHSh1SKuh 1cp hLP2 =dt =duEEM IEEM aL M quhL [=dudxh'jLofLf `fMfu;5XuhhL77fEfuTch@vfL 1=\t'M yujjURuhhL計URWVuhhLЂÃuThL蜔E EM AtL LM LSuuhLhuhjS҃ tP u'=dh[SPhnjTut Ft t#F j FPuo!F Pu0F H?w|v FPu9! tfEPutS19]~%}Wut8E9FuEC9]߃}E} ~5P*1e[^_usage: mount_nfs [-23KPTUbcdilqs] [-D deadthresh] [-I readdirsize] [-L leaseterm] [-R retrycnt] [-a maxreadahead] [-g maxgroups] [-m realm] [-o options] [-r readsize] [-t timeout] [-w writesize] [-x retrans] rhost:path node Uhhdj?K,-o %s: option not supportedU WVSu"Eu jjuhVƃ>nu~ou EE] ;ti0щOWRVq#ƒ u<t<=t;uƃ;t)U{ tUE9Cu [ &C!=uVhj19uP>e[^_Uuu u/etc/pccard.conf/stand/etc/pccard.conf/var/tmp/.pccarddpccardd restartedsocket failedbind failedUWVSEEHQ1DžPPL9LuV׃)uMPuMAMM扵| |xx c׃)tt C9L PwppL dV1DžP_PL9Lui׃)llPhhAdd扵` `\\ d׃)XX C9L PwTTL |VxVEPP_7=PQ~ =PQt,jhz LTLPCjjj L=L} h TjjEPE=t PEPRVEPRvHMP谈EPEPLP } h OTjjPU hPbLP(@[^_pccardd: kernel version older than expected; we don't take kernel's advice UEEEjjEPEPjEPY}!h#hdpV1UeEsyscall(machdep.checkio)syscall(machdep.checkmem)U\WVSEEEEE}~EEjjEPEPjEPY}h$討jD}}LQUUMM]u9uDUUMUUܹ+M܉MغMUԉ"MԈMЊUG}ŮM C9| 򐐋})UȿMEEEEEE }~KEEjjEPEPjEPW}h$pjC}}tVMMUU}}EM MUUMM]} ]]u9uFUUĿMUU+MMMU"MMUI}UM C9| 򐐋})UMEe[^_:dvf:s:i:nIz%d%s: -i number No config file argumentIllegal optionrcan't open default config filefork failedNo PC-CARD slotspccardd startedSelectUWVSOEEE|VxVXVPQpVEh'E PEPL E}u)Eƃ@(******************************************)* ***@*****0*************jh4djhdݴEPQXVEPh'Pt t"E Rh'hd  j?M00!UM@E7h'>M%pVEh'MEhjIHQj j8dVhj$LQj jtV=umh'P-QE}tEPY7h'PPE}tEPsY=u h'-LEPP?.+K=PQ~=PQt}u%}ujj辺t h(K =hVu h(K}tjj~t h(Kjh,(JjjjJ L=L} h UKjjtPƅu=t PtPR:MtPRx}࡬P"EPtPLPi } h JjjPľ hPѾLP藌h j\8j 4P?j TP.hVE}u?EPEPу00 4EU뻐LLǃ00 Tj4PjTPj Y8E}uh<(衅}hVE}uZEPUz00牽00#4ȅt EPEU랋LL׃00#Ttkq$[^_Card manuf %s, vers %s Configuration entries: Index code = 0x%x, driver name = %s Insert commands are: Remove commands are: UxVE}uEPREPRh0/L hH/{LEP$U}u/EPBPEPRh`/HL EU̐Ex(th/%LEP(R"Ex,th/LEP,REU4available ioport(kernel): %04x %04x-%04x available ioport(pccardd):available iomem(kernel):available iomem(pccardd):USh0OKE}~ELQMƒu}]C]}~.ELQMƒu EʐME9EuEPh0JEPEPh0J ]C]EGh0Jh0uJE}~EHQMƒu}]C]}~.EHQMƒu EʐME9EuEPh0IEPEPh0I ]C]EIh0Ih0IE }~%UЅ}  tV Mʅ} уƒu]]}~YUЅ}  tV Mʅ} уƒuE럐EE9EuEPEPh0H EPEPh0}H ]]Eh0VHh0IHE }~%UЅ}  dV Mʅ} уƒu]]}~YUЅ}  dV Mʅ} уƒuE럐EE9EuEPEPh0FG EPEPh0)G ]]Eh0G] %s U吃}u EPRhv5FEUڐ/dev/card%dioctl (PIOCRWMEM)Can't allocate memory for controller accessUDž||~n|Ph5EP* jEPmxx}$hBttxPEPBtBt|P t@=hVDžppPhPxP0 t h5@puYhBppu h5@pPhPxP/ t h5_@thVthVtP'|ioctl (PIOCGSTATE)UElVEPhP@EPR/ th7?qEPUEU9PuZEUPUBt(ww.t%}u EP%EPEPUEEPExtEPRJEx tP$EError reading CIS on %s Card "%s"("%s") [%s] [%s] matched "%s" ("%s") [%s] [%s] Card "%s"("%s") has function ID %d Unknown deftype %d cardd.c:card_inserted()No card in database for "%s"("%s")No MAC address definition for "%s"("%s").Invalid MAC address. Check "ether" field of "%s"("%s").specified CIS was not foundmemory block allocation failedI/O block allocation failedIRQ allocation failedUnknownResource allocation failure for "%s"("%s"); Reason %s UVSEUZ|X|EUr|p|j/EPRDUBExuEPRh^::xVE}uUBtPEPBPEPR>EPBPEPREx t!EPB PEP RuEx Ext#EPBPEPRuExuWEPREP REPREPREPBPEPB PEPBPEPBPhw:j9$vcEUJ@8Au+EPREPBPEPBPh:)95#EPRh:9h:9EU^EUP}u(EPBPEPBPh;8 EjE8P;jEhP*Ex EEP z EPREPRh#;S8 EP UUBtt!EP6EP&EHˉ؉RPEPd EP U}uUBt t"EP6EP&EHˉ؉RPEP EP U}uKE}~)EUBUMQ88tEҐGEU믐EU4}u"EPREPRhM;6 EEPEPUB Ex t }u EPE}Et1t3=tt0E;3E;'E;E;E;EPEPBPEPBPh;6EP1EPtEP(Rj; EPe[^read err on net addrEther=%02x:%02x:%02x:%02x:%02x:%02x UEEPhPEPR% juu EPR&j EPEPR$ thkA5EUP8EUP9EUP:EUP;EUPhi}tEPEEUB@E}t hi1Illegal memory blockMemory address out of rangeIllegal or missing memory block specU E}E}}hjj EEMHEUсH} ~EE==hj}tEPEEUB@E}t hjh1?anypioIllegal IRQ valueUMPhku}t 1PPhktu }t1yPPhkDu}t FP1E}~}E}t hktdefaultUlPhl u1P‰serialfixed_diskUPh*mw u GPPh1mH uP=‰%xU EEP!t E}~MEP8u4jjjEPtjjjEPQPPe[^CIS code readCIS len readCIS readcode %s ignored U EEEEPE}u6EP9Uu@ 9EuEU 9Pu1PEUĐjEEMHMH EM HE PhPEP juuEPjEPEP thOLE}ujqEEUPjEPEP th]oE}t}u }uEEMH}uE@EE}tSEEEPUB EPEP REP U9thjgEPE}u>EP REEP RtEP R E}tExt3EP8Uu&EPPhsE@Exu EUPEUEE}t }~ EUEPhPEP juu EPjEPEP t1,}u"}u}Cu}Iu}Su 1UU UEHM}uEH8MuEMېERead return %d bytes (expected %d) U S}vEURPEP^ &URPh R)E E ϐȉCode %d not found US]]EE8uEP8UuE EސEPh1]UnknownUS]]EPE}tUa]Tuple #%d, code = 0x%x (%s), length = %d %03x: %02x Common Checksum from offset %d, length %d, value is 0x%x Illegal length for checksum! Long link to attribute memory, address 0x%x Long link to common memory, address 0x%x Attribute PCMCIA ID = 0x%x, OEM ID = 0x%x Unknown function Multifunction card Memory card Serial port/modem Parallel port Fixed disk card Video adapter Network/LAN adapter AIMS SCSI card Security - Card has ROM - POST initialize%s%s UEEU}uEPU}uEPREPRPEPREEPhmEP UEPUE}eEPhڕ:EE~9E|EERhEhEEE딐EPB? ఙЙL @HPdxH`hEPREP R  Exu_EP PEP  UJ  PEP Bf fUJ ff Rh>h(.EP  UJ  ȋUJ A ȋUJ  PhGEP  UJ  ȋUJ A ȋUJ  PhuqkEPREP RIMGhEPREP R $EPEPEP R<EP R(EP  UJ  PEP B UJ  Ph{ gEP  w2Th|̜ܜh̖&hޖhhqhah!Qh2AhA1hV!h\hgzEP B$t qPEP B$tPh0 EPREP REUTEU0 Reg len = %d, config register addr = 0x%lx, last config = 0x%x Registers: %c USEP $ЍZ]EP €X]EEX ]EE9EUEU EEސEP BPEPEPh}t hǝEE9EPE}u,EU"tX-PhԝehםEE멐h](default) Config index = 0x%x%s Interface byte = 0x%x (reserved)(memory)(I/O)(custom) BVD1/2 active%c card WP active%c +RDY/-BSY active%c wait signal supported Vcc pwr: Vpp pwr: Vpp1 pwr: Vpp2 pwr: Wait scale RDY/BSY scale External scale Card decodes %d address lines Card provides address decode, 8 Bit I/O only, limited 8/16 Bit I/O, full 8/16 Bit I/O I/O address # %d: block start = 0x%x block length = 0x%x IRQ modes: Level%c Pulse%c Shared IRQs: NMI IOCK BERR VEND %d IRQ level = %d Memory space length = 0x%x Memory space address = 0x%x, length = 0x%x Memory descriptor %d blk length = 0x%x00 card addr = 0x%x00 host addr = 0x%x00 Max twin cards = %d Misc attr: (Audio-BVD2) (Read-only) (Power down supported) (Ext byte = 0x%x)USEP UE@tPE?Ph E EERhEƒt: t!|0h,1h7!h@hFE EthOnE,E tEPh^LE,E@tEPhp*E,E tEPhhEEUEUƒt( tt7trhEP EhEP EhhEP E^hFEPv Eh(EPX Eh EP: EE$E]E]]}t0h˟EPEREhEÃ]}t0h؟~EPERElh[EÃ]}t0h:EPERE(hE$EtEPh hEрt tCtt&42h6!hGh^vhfEEEUEEE$9U~E@PhrU$<t(< t<t0<tTEREhsE@U PhEHEU  ЋUB  ЋU PhaEU$<t&< t<t0<tXEBPEh xE@U ȍPRhEMEU  ЋUB  ЋU ȍPRhEhE=E$haE E thDE,E@tEPhà"E,E tEPh̠hEUBU  Ӊ]h֠Et hߠEt hEt hoEt hVE}~(MEƒtEPh%EѐhEEPhEE€ƒt- t3tCE@U Ph EE@U PEU Ph)G EEUEEE$9U~xE@PhVU$<t(< t<t0<tTEREhosE@U PhoEHEU  ЋUB  ЋU PhoIEU$<t&< t<t0<tTEREhsE@U PhEHEU  ЋUB  ЋU PhEE$U$<t%< t<t0<tTEREh,sE@U PhEHEU  ЋUB  ЋU PhEhEyE$EPhuh¡hEt hΡOEt hܡ6E t hE tE@RhEhE] (MWAIT) (3V card) (Extension bytes follow)UE8tehEt hEt hiE t hPhCReservedPower down supply currentMax current average over 10 msMax current average over 1 secondContinuous supply currentMaximum operating supply voltageMinimum operating supply voltageNominal operating supply voltage100V10V1V100mV10mV1mV100uV10uV1A100mA10mA1mA100uA10uA1uA10nA98765.554.543.532.521.51.31.21 %s: %s x %s, ext = 0x%xUEEUEEE}~EMƒE}~EERhUE‰UPE$ЋPh E uEEERhhEE2Ereserved2Mb512Kb128Kb32Kb8Kb2Kb512b100nS150nS200nS250nSNo speedExtendedFunction specificDRAMSRAMFLASH EEPROMEEPROMUV EPROMOTPROMMask ROMNo device %s memory device information: ONOFF Device number %d, type %s, WPS = %s Speed = %s, Memory block size = %s, %d units UEE8t }  EUEE E}uEPhRNE$t ruPEЋ|PEPhyE$<uKM E8t8hjEREE u EM E E$Ћ`PhEPRE‹@Rhs E Version = %d.%d, Manuf = [%s],card vers = [%s] Addit. info = [%s],[%s] UE@RERh  EEPhEE8uEPh+EE8uEPh=EE8uEPhQz Wrong length for serial extension Serial interface extension: Unkn device 8250 UART 16450 UART 16550 UARTEven,Odd,Mark,Space,, Parity - %s%s%s%s Modem interface capabilities: Data modem services available: Fax/modem services available: Voice services available: U} uU Dp̶pp} thDhE@ƒt6 t t3h=1hK!hWhdzEt qPEtwPEt|PEtPhhBh1h!h޴h8.07.06.05.04.03.02.01.010 ms1 ms100 us10 us1 us100 ns10 ns1 ns10,000,0001,000,000100,00010,0001,00010010NoneSpeed = %s x %s, scaled by %sUS]]E$ЋPE€‹RhS } tE Rhc]%2dUEhVE}uEEU萐}~EEPhEP荨 UhVE}tEP 9UuEUِE0129%d~%s~%s~%s~%sUE PE}uExt[EPBEEPBEEx t.EP zt"EP BxtEP BPU EzzEEEUBt!wt -t%E{"E}E E쁸EPEPEPEPE PhEP'invaild arguments for cardpwrUEPmE}u,E Ph PEPR } h訽UE@sendto failedU=DulEP RPEPCEDPhPjEPP@P衽9EthDrecvfrom failed%dIllegal slot requests for N commandslot %d: spring has comeIllegal slot requests for P commandslot %d: hybernationIllegal slot requests for Q commandUnknown control message from socketU=@uDjhDhPjhP@P7} hͻƅv hs>t< vF>u>u hVhsXP貶 E }3} h=Phs5 t hlPhs5 t h Phs 5 t h pE3 u)|PhsU5 h63 u-tPhs5 tlh#/]33uH Phs4 u Hv h6 ≕xE}X}t hB|xtplhXPh\ hS*jS ƃ} ShjXlt_DžDDžHAlLpPTDPhPVѠ thjFXttODž4Dž8t<Dž@ 4PhPVw t hjWXPhPVR thjWVV1[^_enabler: %s Usage: enabler slot driver [ -m addr size ] [ -a iobase ] [ -i irq ] -m card addr size : Card address (hex), host address (hex) & size (Kb) -a iobase : I/O port address (hex) -i irq : Interrupt request number (1-15) Example: enabler 0 ed0 -m 2000 d4000 16 -a 300 -i 3 Uuhhd{%hhdl%hhd]%hNhdN%$h~hd<%hhd-%j֡Write pcic registerwrregWrite byte to attribute memorywrattrRead pcic registerrdregRead pcic mappingsrdmapRead attribute memoryrdattrPower on/off slotspowerAllocate memory for pccard driverpccardmemPrints command summaryhelpDevice driver enablerenablerPrints CIS for all cardsdumpcisBeep typebeepUnknown Subcommand.UWVS} &1}~\vPt4Pw۰uGGPEHPT#F}}~ hVWuEe[^_Usage: %s ... Subcommands: %s : %s US] h7hd"3h?hd"h[hd"1ۃ=Pt2[XPhihd"C[h6h.h&hhhh hbG 1@t!RG 1@t2RhE- ww ?u6ue[^_ Reg len = %d, config register addr = 0x%lx, last config = 0x%x Registers: %c UWVS]C BAME{ 19}D.GF9|C @PuRhxJ}t h719u~9-tXPhuhFG9uhe[^_(default) Config index = 0x%x%s Interface byte = 0x%x (reserved)(memory)(I/O)(custom) BVD1/2 active%c card WP active%c +RDY/-BSY active%c wait signal supported Vcc pwr: Vpp pwr: Vpp1 pwr: Vpp2 pwr: Wait scale RDY/BSY scale External scale Card decodes %d address lines Card provides address decode, 8 Bit I/O only, limited 8/16 Bit I/O, full 8/16 Bit I/O I/O address # %d: block start = 0x%x block length = 0x%x IRQ modes: Level%c Pulse%c Shared IRQs: NMI IOCK BERR VEND %d IRQ level = %d Memory space length = 0x%x Memory space address = 0x%x, length = 0x%x Memory descriptor %d blk length = 0x%x00 card addr = 0x%x00 host addr = 0x%x00 Max twin cards = %d Misc attr: (Audio-BVD2) (Read-only) (Power down supported) (Ext byte = 0x%x)UWVSEp 1@tP?Ph葤 >FPhvt%t }hhhh2E thE, tEPhE,@tEPh E,>}EPh ˣh辣FMFȃtttF}h9莣Vƃfh9vVhDdVƃFt"hgSPFht"htȢSPFih賢t"h虢SPF:h脢M$t%Ph_hNt~)tthhhh $F@MF1ȃ9+$EGPhơ}t~m}t}t3_PFh#蝡JF Ph#聡+VF F  Rh#Tt~rtt9f@PFh6(NF @Ph6 /VF F  BRh6۠hˠGE9MhK裠E  thX荠E,@tEPh_rE,>}EPhhWhJ~F hr't h{t ht ht hߟ1ېsShȟC~h赟Ph蜟FEtt/tZF Ph]F PFV Ph+ MF1ȃ9$EÀGPh}t~m}t}t3_PFh 轞JF Ph 衞+VF F  Rh tt~mtt5aPFh IJF Ph -+VF F  Rh Etrt~ktt3_PFh4ѝJF Ph4赝+VF F  Rh4舝hxGE9r}}tPhHPh^F t hj4t hx" t h>}FPhhe[^_ (MWAIT) (3V card) (Extension bytes follow)US];tMh螜t h茜t hz;} hhh[]ReservedPower down supply currentMax current average over 10 msMax current average over 1 secondContinuous supply currentMaximum operating supply voltageMinimum operating supply voltageNominal operating supply voltage100V10V1V100mV10mV1mV100uV10uV1A100mA10mA1mA100uA10uA1uA10nA98765.554.543.532.521.51.31.21 %s: %s x %s, ext = 0x%xUWVS]UCE1EsqG~E 4hu蕚U44@h|q;}GCPhX;|hFCF~e[^_reserved2Mb512Kb128Kb32Kb8Kb2Kb512b100nS150nS200nS250nSNo speedExtendedFunction specificDRAMSRAMFLASH EEPROMEEPROMUV EPROMOTPROMMask ROMNo device %s memory device information: ONOFF Device number %d, type %s, WPS = %s Speed = %s, Memory block size = %s, %d units UWVS]u 1;UCGuuhȘ UtPE%4Wh 蕘E$<u1N;t&h4yjPC ;}CN;|CE4h7A%@P4hDC ;#e[^_ Version = %d.%d, Manuf = [%s],card vers = [%s] Addit. info = [%s],[%s] US]CPPhi螗Shz萗CuShzCuShbCuShJ] Wrong length for serial extension Serial interface extension: Unkn device 8250 UART 16450 UART 16550 UARTEven,Odd,Mark,Space,, Parity - %s%s%s%s Modem interface capabilities: Data modem services available: Fax/modem services available: Voice services available: US]U  $tPXrhPPP`t h+hO趕Cttthmh{hhz1CtP1CtP1CtP1CtPh)hhhhh.]8.07.06.05.04.03.02.01.010 ms1 ms100 us10 us1 us100 ns10 ns1 ns10,000,0001,000,000100,00010,0001,00010010NoneSpeed = %s x %s, scaled by %sUS] Eƒ4<4h' t؃4\h  ]Usage: %s rdattr slot offs length/dev/card%d%sioctl (PIOCRWFLAG)%xarg error%04x: %02x UTWVSu }t6hpj(6vXPh}WwjWE}Whj:5EURhPu} t hj 5URhvc uURhv J thj5UщΉusEuURhj4jWVu0~uuu|9EtURhjj4E]9]~dMuRhQ]MRh9U}])Ӊڃu hEM9M]t h1e[^_ioctl (PIOCGIO)I/O %d: flags 0x%03x port 0x%3x size %d bytes UWVS}u 19}I]EPhPW{ thjS3uuuuhJC9|e[^_ioctl (PIOCGMEM)Mem %d: flags 0x%03x host %p card %04lx size %d bytes UWVS}u 19}L]EPhPW.{ th6j2uuuuuhG藐C9|e[^_/dev/card%dioctl (PIOCGSTATE)UTSuh]StjSÃ}>EPhP@Sz thj2uSuSbSz1]USE }t1ېSvC~'p訏SXt Shj11]/dev/card%dRegisters for slot %d ioctl (PIOCGREG)%02x: %02x UDVSuVh]SsjSrÃ}hV2tVh EEPhdPSYy uEuEPhՎEPh ÎE$<u h譎E}?vS#y1e[^USE }t1ېSC~'pDSt Shj801]TerminatorOrganisationBattery replacementCard init dateByte orderGeometryData formatVersion 2 InfoSoftware interleaveFunctional EXTFunctional IDManufacturer IDGeometry info for attribute memoryGeometry info for common memoryOther conditions for attribute memoryOther conditions for common memoryConfiguration entryConfiguration mapJEDEC descr for attribute memoryJEDEC descr for common memoryAttribute memory descriptorAlternate language stringVersion 1 infoNo linkLink targetLong link to common memoryLong link to attribute memoryChecksumCommon memory descriptorNull tupleUWVS]j40SXu11>%_CH $h|F$Pss eSss VBFPss A/ss Vss Vss VX ?e[^_UVSu'Cz t r QlSuuAF0C R)lS uCRlSuSl^0uVke[^UVSu] FCFC~t vkSrOFCu~t vkSNOFCu~ t v {kS*OF Cu~t vWkSOFe[^UME Q@AFUJITSULAN Card(FMV-J182)UWVS]hSPT CuhSS7:u޿Bu 1[^_USUM ]~>:t9C$C$CB:tC$CB‹]UWVSu} _?^OE1 D*AB9~EFFe[^_U0WVSu] Ej$/NjF0t8t 8u8~0?W@t~,$CtC MCEt?ʃUԐCO1%EАMs $CuF~EU9U|ʊMt4OUCЃtCEtCEtCMO;} C$GW$G$ChEMCE:j EЃ}t UMЉO UЉUE}t~i}t}t%[EPECe7ECe ECe ECe ECEMЉAEt~htt#\EPECe7ECe ECe ECe ECEEUЉBEG9EMt/OW O$CtC ЉGEtt4toOjYOC AVOj1OC AOCS AOUCE$GEUUMM܃MؐjEԃ}uGMԋU UԉUE1E9u~EАD.CF9uUMԉQE1E9u~EЊD.CF9uUMԉQEt2E1E9u~EАD.CF9uUMԉQ EG9E/}} O G e[^_UWVSEVjjju@VEjuu1juntkxue@ P P ъP щˉ]uWuuut)uuWuEu]]E}[j5Vu6V:u+jjjuNtjjjuMVVe[^_CIS code readCIS len readCIS readcode %s ignored UWVS]uEEE=Vt$U 9_u9w u9Wu 1?ujlj_w M OU RhPukjVSum jURu th,$.E} jƊUVjURuth:X$E}t}u }uEMN}uFEE}t5UUR(F URPuOU9t hG#wURÃ}uv oEt{t$S8UtURPhPZF uwM1u}t }e[^_UWVS]u }URhPSgjjWVSkjURS}u(}u"}u}Cu}Iu}Su 1e[^_UEU @t 8PtuRead return %d bytes (expected %d) UWVS} E=vPPuxi‰փ VhG[^_Code %d not found UU=t 8Pt8uPh~1UnknownUEPuËUsage: %s wrattr slot offs value/dev/card%d%sioctl (PIOCRWFLAG)%xarg errorUXWVS} }t7hj w}PhMMQFbju$ƃ}uhjEURhPV&h th jURh3w uURh3w  th6j UщM]UUjuuVhjURV gtURhj1e[^_Usage: %s wrreg slot reg value/dev/card%d%s%xarg errorioctl (PIOCSREG)ULWVSu }t6h`jLv||Ph]S`jSǃ}Shj_EPhv uEPhv  thjEEEffUfUf EEPhePWkf t hj1e[^_U_HiStOrY_V1_ UUBB9u1ËBUUB B9u1ËBUU9Ru1ÐB@B9tBUU9Ru1ÐB@ B9tBUE9@u1Ð@UWVS]u 9[tXCx0҉щMT R[NjCpWxVW:zCp\CxCVSe[^_UVSu] 9ux_S CBSC B sv\Sp\Ne[^UVS]u jj[CV@‹CPSCBCX SCB CCCCe[^UVS]u SCC s SGC@9Ce[^UVSu] j Z1@@X@ @@@e[^US]9[ ts S9[ uCC]USj$iZjSsC C C C  C0 C CT C H ؋]UEx u0fUEU x u} ÐP1UVSu] {t/{t){ t#{t{t{t{ t {t;uP~ t@jVF F F F  F0 F FT F H B~ u6CFCFC F CFCFCFCFC F 1e[^rUWVSh} u wEunEPu04ƃtOuh Vyt u:1EPu4ƃt#E00VU2BЋE0Gʐue[^_w%sUWVS}1h" u PwÃuDSh E]7G Ѓ t#ph$ S 7GFuSe[^_UVS]u 3C 90t3CЃu1e[^UVS]u 3C 90t3CЃu1e[^UWVSu0} Ѝx6FWsu s u6FЉÃu1e[^_UWVSu0} Ѝx6FWsu r u6FЉÃu1e[^_U$SME 1ۍU$   0 @ H 8 P   D     l x ` 21A 21AЉ1A1A1A 1A1AЉ1A2Q 2Q2Q2Q$2QD2Q~2QYBE܃BEBEBEBEBEBEBEEEPQuuQ؋]USEM ]U ,$S,0Da]USM] A,9A0vA(9A,vQ,9r J9Q(vY,]UVSu] F(9F,s^,+^(~3`9dt v(SjVSV(9V,rB9V,s)^,e[^UVSu] F()9F$v^(+^$~7`9dtF()PSjVV()9V,r B9V,s)^,e[^*?_-.[]~=UVS]1Ӂv R}B tbD4%u1=wUV1uSh qte[^US]ӁvRB tbD4%@t15_t#ӁvRA tbD4%t]UUv RA tbD4%@%UWVS} ]Ku39r-PU҃uK9sPU҃tK9sNuC9s؍e[^_UWVS]} u49s-PU҃uC9rPU҃tC9rNu9v؍e[^_UWVS] }lPMщƃ9]vPMу9uC9]wM@t49]v/v Rs@ tbD4%@tC9]wOu9]rEe[^_UWVS] }KM@t59]s0v R? tbD4%@tK9]rPMщƃ9]wPMу9uK9]vCvR? tbD4%@uO^9]wEe[^_UWVS]@t \`@ǃ@DC(9Ds&+DVSDC(SZ +C(9Dv D)V jSt~%t uǃ ǃ SC(,(e[^_UWVSu ]C}v Rc> tbD4%@tC9rv R6> tbD4%9v R> tbD4%tYC͐v R= tbD4%@u-v R= tbD4%uC9rO>K؍e[^_US]hNC$hjPZC$C(C$C,S$S0hN0hjPNZǃ ǃ$ǃ(C$,ǃ@C$DC$H h&N4hjPYC$<48\`C4C8C@C<CD"ǃTǃLj(MP1]UEP$P(P$P,ǀ ǀ$ǀ(P$,ǀ@P$DP$HP$<\`@4@8@@@<@D"ǀLǀUS]s$MC$C00Mǃ04Mǃ4PMǃPS]UWVSu] 0ЍPt F,9F0wRV;tV(CF(;u1e[^_UVS]u ~$C$9C(rVSC()C(9C$vC$C(e[^UWVS]} 1EEPS&JtjS%E<  <t< t|A<tu<u8C$C$C,C$C(eC(K(C(C,>N.~ StE>FS(EC(C(C,SVME}AE>e[^_UUB(9B$u1ÐB(8 tH9B$vR()‰HUS]SGNC,]UWVSu} t F,F<9F0w ~<ub~4t50$F( $0$jVjVwF(F(F8VU {~4tG19^<~$0$F( $C9^<ߋ0$vÃtmhjSJvs {uF#CdS;^S~S+ Sm* SSKSS:SWC1e[^_US]tLSKSe^So~SS*SSKS S:SW3>S>]US]SS5]bindtelltcsettcechotcsettyUPVS]u M ^$  ( 8 H ` ` ` ` ` ! ,! 1S: 1Sg1S,9tKc1ADtB~F$ E EPRS0E EPRS6ouE EPRS:paE EPRSrME EPRSB9?@QA1PRS3A1PSe[^UE$/.editrcrHOME%s%sUWVS}u uQX! h`! hX! ZÃu4hb! ?ƒt~hW! Rhg! hS肊ރh`! VZÃtIPSƒt:| uRW3uSc Sb1[^_US]EEPEPjFEPEPSgtuuS7h jEPjE]^DUS]C(9C,u19C$ujh" S`~l/S6ds s蚮jjЃ t@1u1]US]hOǃSe1]US]ǃǃ]UUE UUE US]>ǃ]UEuu Pkey_add: Null extended-key not allowed. key_add: sequence-lead-in command not allowed UWVS]u }>uh? uU:uh@ s,uPWuVe[^_UVS]M u< u29\u X<u9Xu\<tVS3e[^key_delete: Null extended-key not allowed. UEU :uhA p9ÐtRP1Ð1Unbound extended key "%s" UVS]u u>t."jVSVhpA s譫e[^UWVS] }u8u;{ t!Wut14[ ֐C{tC{t[봐e[^_UWVSu} 8t3~tS8tӃ{u{uPCsG?~ tv SF Ftt+!t#u~tv gEF}t  }t &tMF>M1F-#~ uP1F uuWv 1e[^_UWVSu 1U8t&ك{trY8tكyuytYϋ_F>ut$,{ tBVC Pu0{ u*u CUCGCS1e[^_US]tc{ ts C sCtt,"t#u{ts S]US]j@@@ @]UWVS}u ]U>u RSW1v8uZ%PR4ƒ { t F[ B뼐~u>D"DsCPWU1{t [xe[^_Some extended keys too long for internal print buffer "%s..." UWVSu} ]~9C"DhME v趧hE v裧yuoPS ƒ  u1D"DwGPVPBPw VK t SwV81e[^_%-15s-> %s ""[]no inputUVS]u MUtat t*HuCrF uoF PP1]P3t8t59Pt 8u![0huF V5lsp[^UWVS}u ]u>^F>@v S tbD4%t >^Fu >?$ @^u>\F>^\u >\F>\v tCv Su tbD4%t(vSR tbD4%@u>)>\F0>F$0>F$0>e[^_UWVSU}] ?t] C:u^C@Cր>v R tbD4%t ^C>u ?$ @>^t>\u \C|> tOv RZ tbD4%t,v R3 tbD4%@u"\C$0C$0C$0CF>?t tGCE e[^_UWVS]hXh\ǃdpǃhpǃlphDƉthlƉx{[ǃ|[S1e[^_US]XFǃX\1ǃ\ǃdǃhǃltǃtxǃx]UVSE\v S~ tbD4%t3C~ύe[^UWVS}\X1ې<3/t C~~,1ې</t C~~puƈ]E3t6 t/"t&ڀUj3PWPEPWC~E0e[^_UWVS]\MXMlhǃp\`S1҃:M 2M B~SjSRSAe[^_UWVS]\MXdǃp\`SK1҃2M :"B~SXSEEEjj(SPEPSjS"R SAe[^_emacsviUWVUE ƿL u R0$ƿL t R1e^_%s -> %s UWVSu} ];t{uPh#M PSt :t789Bt :u 2Ph$M vSV[^_%-15s-> is undefined %-4s to %-7s-> %s UWVS}M]Ȉff؈ffu <1"u49hoF PPPhM w.t:teu 19BuP9t\2hoF PP PhoF PP~ PhM wŞ> :u2hoF PP> PhbF w腞[^_Standard key bindings Alternative key bindings Multi-character bindings Arrow key bindings UVSuhO v11ۃ\8tCPQRVBكC~؍CPQ\V#hO v趝11ۃX8tCPQRVكC~؍CPQXVh7O vfh#M Vg hQO vKh#M V4=e[^%s %s %s: Invalid switch `%c'. %s: Invalid \ or ^ in instring. %s: Invalid \ or ^ in outstring. %s: Invalid command `%s'. UWVSDž}u M\DžDžDž}WD:-;B$TQ Q HR HR HR Q HR HR HR HR HR Q R HR HR HR HR HR Q Q HR HR Q MXDžDžDžyuu }t;s3hGP MqK ;uBP}7hOP MqC}M<uuRu+}4CPDƃu7hiP }4CtTtVuJ:~u<uVu"8"M<u+tVu5:Vut$_O}4PUu7hP Mqʙt'uPVu8uM4u:u$}47hP Mq@t#u+PVuf8d~t2uPVu8.Vu 8 w 1[^_UWVSu}|} t }tu Px x[Pt t|x;|9S8u ؋ S} C8u jVC}1YjEPv f ƒ u4}u5pv u Eċ}  E} Ѝe[^_UWVS]} ECt SSD SS EPEPSƃ M9|xEPSЊECD$8] ] ] ] ^ ] \] ] ] x] C<C8Sh S S C<C8S`C<C8P1Ls,+s$DSN SSC<C8 C<C8S)O1SE81CtSt71tC$e[^_UVSu] v S tbD4%tS ujVdž uj Vu~v Sj tbD4%t j^VXuj?>؃ @4j\V80PV)0PV؃0PVe[^US]M C  9CH#C CHǃ]U WVSudždžEEV^$9^,v+9^(uEEPVGC9^,wփ}uEEjV1ۃ9|4SF 4F4VvHF 4F4=C9}͋ 9}G9CSV jV!F<0щHPV%FC9 } uV; uV:!e[^_US] S j 6.j /.S 8.]UWVS]~iE+E9~Å~1u }L7)ډEE9r JI9Uvu }7U UE E9s~uFuBK9re[^_UWVSu M}U~0 9|1#~ʍ79s BA9r7e[^_US]M U 9t ACJu]U4WVSu ]>t 8uFC>uu߀>tF>u~ uN9uru;tC;u{ uK9r]U:u?NK8u 9us9wFuC]u]܉u]؋U:tlU9}v`U8uPu9MvU9s8u FA9Mv9uwE+E܉)ډU9}U҉)9~]܉M؋UUuC9]w?tmUuU9s^U8uN9Mv9}v8u AC9Mv9]wE+E)U9}U҉+E9~ }܉]؉uMF9uwE+E UUUUU)E+E)‰UԋU+U؋E+E)‰UЋUBPuE}~UUUUU܉U؃}~ UUUUU+UE)9} UUUUUBPuE}}UUUUU܉U؃}} UUUUU+UE)9~ UUUUE+EUUUUU܉U؋U)E+E)‰UԋU+U؋E+E)‰UuuXMU9UtM9}}+E EԋU9BH+EPRU9UtMuWuuWUrHE+E Pu R$])+]SuVuSVEEP|])SWueSWu }u+u VuU9Ut@]SuZSUrHVu R])SWuSWu3E)PWuE+E U+U)Pu6 E}}sE+E EPuU9Ut*EPuE+EPuuw .E+EPuu^E+E U+U)Pu9}u+u])9}+EPu`U9UtU)]ԅ~'SWuuWUrHE+E Pu R,$])+]SuVuSVEEP])SWuSWu}|XE+EPuU9Ut,}~uuup E+E+EPEEP E+EPuu6e[^_UVS]M u19s9tACB9r CB9re[^UWVSUJHMR$UUF u1 utsFuev S tbD4%tF9u}:2v S tbD4%u 9u}+uG9u1GEUM9Q(VWuYVuX&e[^_UVSu] SW&VFFFF9FHFF j #&j &e[^UVSuF(X t9F,t VQv S tbD4%t,t @?j^VJPV@nv S tbD4%t SV ;j\V0PV0PV؃0PV D%e[^UMAA19QL~AB9QLǁ UVSuFPt>jV1ۃ9 |SVvHVC9 }jV Vpj $j $e[^US]hǃǃƃǃ1]US]Zǃ]UWVS}] SWZGt8jSuV u!jjjWVV 1ۉ؍e[^_UEu UWS]CD<1҃pu`9XuBC(+C$=~ ǃ|)s$ 0He[_*[]?U WVSuN(M MEM싎M} F,9F0u3:.*EEF, F,u V,CF,;uF,F,C F,CF,9rF,VQEPVs tjV7%E`'$m n n ,n n ,n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n dn tn E V,EF,EME=*1E<t9 <t<EVJC9HF(F(h jv,PÃ9^(sEF(8 t;HF( V,F(F(F,9^(rMN(F,V'LVܐPh>l +Cdj@4Chj@jPCXhC\hjP(jC`jjPC@jS Su 1]US]sTCTsdCdCXs\C\s`uC`S]Out of termcap string space. UWVSE@\u }tu>uU0ҋ}щN8t8щK19u6fE@X=4uuFTFXP6E@X@uFX1ۋ9sA9t$t"9t:t ;BC:u;C9rŋu~TEXXpX~h~ pm-uEpTpX0VvuvXFEpX[^_UVS]sHSC`@HCH>@CLSe[^UWVSuHUBL@P`1ۃU9ZL~@PGC9^FUzF@P1ۃ9^~@PC9^FUz e[^_UWVS}wGt$>t3;uVw G t>t3q;uV`e[^_UWVS}M 9O9OL+w~E~G\x|t@|8t h8 VVVPg19}j C9|GW\tH8t=؃zhtBh8u&h8 PPPG\̟ P3;G\xht1@h8t)1ۉ9}ސh8 jG\ph C9|M Oe[^_UWVS}M 9OGH@9uj Gmu +wFv&G\xt@8th8 u u u P~'G\t8th8 VVVPGPtCG%U 9t.9}u j M 9|M OE +GPWGGPW؃~3W\t':th8 PPPRB P詔^GPt؋U M 9 "9E }j G1ۉ9}j C9|M Oe[^_UWVS}u ]~GH@9PFJ GKue[^_UVSu] FP9^HV\zxt5Bx8t-ztB8uh8 SSSF\px3 iF\x t@ 8th8 jP~ F\xt%@8th8 jF\pV KuF\x$t@$8t h8 jP/e[^UWVS}u ]:GP09_H'W\tJ8t?z4tB48u,h8 SSSG\N P赒SVWuG\x8tsP8:tkx(te@(8t]h8 jR|_ PF KuG\x<t@<8th8 jPF h8 jG\p(1XG\x4t@48th8 jP PF9 GG\x<t@<8th8 jPݑ Kue[^_UWVS}u GPt"G\x t@ 8th8 jP蜑19}j C9|we[^_US]C\xtP:th8 C`pRKWC\x0t?P0:t7xt1@8t)h8 C`pRh8 C`pC\pj 1j *]UUB\xtt@t8th8 jPȐÐB\xt@8ujTERMdumbCannot read termcap database; No entry for terminal type "%s"; using dumb terminal settings. UWVSu] DžPPj uhV Ãt;u[ hjvd(Svd距uh` v$euSh ve h vdF`@PF`@@ V`BB=jSVO ;uh{ ‹F`h\{ ٞ‹F`Phl{ Ǟ‹F`P hC{ 赞‹F`Ph{ [‹F`Ph{ I‹F`P=t#W3謞PSV;uF`x@PF`x@F`@FLF`@FHVPPVIVjPj{(V1[^_UWVS]} uC`@C`@EPhht@s  tf}tUf}tUEPhht@s Vtf}tUf}tU1ɋ[`C9uC9tȍe[^_US]M UC`~P @PC`H@SS ]downleftrightUE@h @@@ @:y @@@@  @$@(@,@0 @4@8 @<U WVSu^hsCEPhDV蔴s CEPhHV st<>u!EUt DPSur>G<>"uDSWuȱE U| u D>EUt DPSu%E}%e[^_U5@u*U5@ Your terminal has the following characteristics: It has %d columns and %d lines ano It has %s meta key not It can%suse tabs (empty) %25s (%s) == %s UWVS}h\ w`]hu wS]G`pph w=] GP@t Ph w] Џ GPtΏ PhՏ w\w\ =tM>t:th#M PRn  P3sh w\;uwj )1[^_yessettc: Bad value `%s'. UWVSExxxp@E=t9V3dt;u;tuSuu 1.=V3t;u;t u u-UR`Fu tuh UrM[-UR`uULu-UR` UB`@BLB`@BHt UB`ppR e[^_%s %d tabsmetabaud%lu rowslinescolsechotc: Termcap parameter `%s' not found. echotc: Warning: unknown termcap %% `%c'. echotc: Warning: Extra argument `%s'. echotc: Warning: Missing argument. echotc: Warning: Too many required arguments (%d). UWVSDžDž}u~Eu8-u%@8uђ u+ uFPt P5duvXqu֒ uuF` x t R븐uے uuh 떋u tu uuF`p5hRu u0uF`p5h&-uV\4Dž=t u63 t;u;uPu6St >uu6h 1;;%wCMF$@ | | | | | x | | x | | | x x | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | G!tPh uvU C;vtE t}Eu>t 8h8 jEu>81ۋu69ƒu>t 8h8 jtWh uv&U Eu>t(8t!u6Ãu>t8uuMhr uvT;u6ƒu>t*8t#uPhK uvT h8 RRS荈 P~1[^_chars:lflag:cflag:oflag:iflag:timeminstatuslnextdiscardreprintdsuspsuspwerasestopstarteol2eoleofkillerasequitintrextprocaltwerasenokerninfoiextenpendinflushoechokeechoprtechoctltostopnoflshechonlechokechoeechoicanonisigmdmbufcrts_iflowccts_oflowclocalhupclparoddparenbcreadcstopbcignorextabsonlretonoeotonlcropostimaxbelixoffixanyixonicrnligncrinlcristripinpckparmrkignparbrkintignbrkUWVSEPMq }lE }El ElPyMp4t%=%At!lMqp l!pMq| p!tM t!xM xt}ERPEP1ۃM R8t 98t 9C~1ۋu3R8t3 8t3 C~ҋE P]lSSjMq lu&E PElPu!u !u !u !u E9PEP1e[^_UWVEǀƀxll-󥍸  fP'e^_UUS]SuS]UEU H HJHJHJHJHJHJHJ HJ HJ HJ HJHJHJHJH"JH J@!BUUE JHJHJHJHJHJHJH JH JH JH JHJHJHJHJHJ"HJ @B!U WVSu9MMfMfMfMfM\M苾XpulMhMdMEl=lMMMMMUCME8u} txuuVUM M uQVUpDM }t5uWVޠUM :uWVǠUpD : ;[e[^_UVSuHw1zPv Y%=%PSlPA9uP*9t?lSIS-S+S 9ttFt!t t! 9xtN9tFx!x x! 9ltH9t@lFt!lVp l! 9ptK9tCp!pV| p! ptdžFPRPPZ1Ƀ1R81 uA~1ɐu1R81 t19t 19A~jV9PPE1Ƀu1R81 t1 t 1 A~ PlPPjv 艿tdž1e[^US]u1)lPjs Ctǃ1]UWVS]u 1 󥋃! ! ! !  Pjs {tǃ1e[^_US]t1)Pjs 3tǃ1]%s: Unknown switch `%c'. %*s%c%s %s %s: Invalid argument `%s'. U$WVS}EEu E?Ӏ:-zu|Sdt  at;qt'xt,E<E0E$E?}OQuh Vt?t ;-u{tt ? EEE=E9CSRM IM4Mt l#M }t Rhg! uvFCE܍@M t9} tU e[^_QUITUVS];uN{th ShhPSS u1sC;u1e[^Uopencmd Sending: %sUVSuEPu hPF4>uh: h? ohC S3~ tShF hd  Pvt=@ftjV(=t[^ftpsetup@USER %sPASS %sUWVSu}]t A>t Veu }uE uu 艉tEFE?u (ƒu F뉐BE%Fr EPB0m8 ؆fEjjvWà } FURWEhPWtWEUр:t7wUV1҅u EM9uӋU:uWME]]Ej uu蠙UD* E}~݊WUj]URUR5jURUR5jSVU$}td];u{tV]S RQh WE|=@fu=u'V1UW]CEuu h W[E=+uVEUR]SwfEEjSVW|URURVjV} VMfURfUfRRRRQh WE hPW tV"E}tg];u{tY]S RQh WKE|=@fu=uV~EG}^t]Cuu h WE=+vV~UWjjVE }Vb~GaVN~uu諙]];=1e[^_File name not allowedExceeded storage allocationRequested action aborted. Page type unknownFile unavailable (e.g., file not found, no access)Need account for storing filesNot logged inCommand not implemented for that parameterBad sequence of commandsCommand not implementedSyntax error in parameters or argumentsSyntax error, command unrecognizedInsufficient storage space in systemRequested action aborted: local error in processingFile unavailable (e.g., file busy)Connection closed; transfer abortedCan't open data connectionService not available, closing control connectionRequested file action pending further informationNeed account for loginUser name okay, need passwordFile/directory createdRequested file action okay, completedUser logged in, proceedEntering Passive Mode Requested file action successfulData connection open; no transfer in progressService closing control connectionService ready for new userSet system typeHelp messageFile statusDirectory statusSystem status, or system help replyCommand not implemented, superfluous at this siteCommand okayFile status okay; about to open data connectionData connection already open; transfer startingService ready in a few minutesRestart marker reply'dialog_gauge: Error creating window (%d, %d, %d, %d)[ ]%3d%%BUWVS}]WuuSƃuWuuSh hd<j{55uSjjV薢uSWu5 Sst8t␐hA 4P4 hA jU R |$ Dž,$uj5pNP hC PmjjjjuEP}tEEHPPV肖$V=$h 0ЍX+ uƄ+j Pt @됐jjjjuEP}tEEHPV˕$jjjjuEP}tEEHPhK V蘕$V#${,,u*u" hM Pl }FjEPV5[VS1ۃE9}}5[V0C9|졬F5[VjEPV1ۃE9}}j VC9|uEHPV:jEEPEPhd V V(tG( t>( t5( t,V(t t u VVU,[^_ newwin(%d,%d,%d,%d) failed, maybe wrong dims No Yes U WVSEEEj҅}}u yE}}2u ֞Ã}tuÞ1]9}EE}}EU9|n} |nUU9\} \U\u|n+]؉= \u=\+}=tuuSW5 j VFjjV>jjjjuEP]KSu V*0uSVуEE}jC PWh V聗 jSWh VoVe}TV&EN9   } ~}?릁}'}}j}ntL }Yt,널}yt"w} }at6[V育u΃1Vju趃}u&EjSWh VtjC PWh $EjC PWh VKjSWh V<(V/Vu6E 'Vʱue[^_ Autosizing is impossible in dialog_textbox(). Can't open input file <%s>in dialog_textbox(). Error getting file size in dialog_textbox(). Error moving file pointer in dialog_textbox(). Can't allocate memory in dialog_textbox(). Error reading file in dialog_textbox(). newwin(%d,%d,%d,%d) failed, maybe wrong dims subwin(dialog,%d,%d,%d,%d) failed, maybe wrong dims OK U<WVSu Dž}|}}h hdSƅjVwuVhP hdpjjj5wk‰wuh hd8jjj5wkuuh hdh(`wu1h hdj{mh(5w5wiw uh hdEw www]9|n} |nM]9\} \M5\u5|n+u= \u=\+}=tuuVW5}1]9}uw9U}UE}}EE9|n} |nME9\} \M\Eu |n+MMMM \Eu \+MMMM=tuuuu5]Cw} jUU܋Ẽ<}M| :5pGƋEPM\ ]ӉǃtjF@PjV^VDVu1ۃ9]~8E|tPMTU҃1ҋẺC9]19]~V}tEU1R9]PSMىME4 IEp0u2C9]u衻uuuۣug(19]~aM|tQETU҃1ҋM̉C9](19]~EC9]MM܋EM ME@E19]~U}tEU1R9]PSMىME4 IEp0u"C9]u葺uuuˢuW9]M ME@E}tEEU1Rju܋MM܉ME4IMUrE0u]܃}tEU1Rju܋MM܉ME4IMUrE0u9u豹 uuuut}O}*} } } }}?}Rto!}} }a}St}htsE9E~5EM)MqEEUBM)щ9|E+EEKE?MM4EE E+EEyEMIMu}}$ExtPMIуUR0ҋEx҉UEDPuMquhExtPMIу URuuEp1uEPuh urhE4Puuh uVhuG}}$}t UUz 5p|Ã}t UU}tuuVB ЃtjC@PjS¸S訶SkA[]M4u$Q&}$tE$19]~M̃<uC9]EEEESQ}19]~U}tEU1R9]PSMىME4 IEp0u~C9]uuuwPuuuuuu{l(u蘵E}uHu@Ed[^_%c%c%cUWVSu} FjuV詝1ۃ 9w~j VC9w5wuVy }t F)t tGP}t*tt G P(t tGPh) VFj VS}t FU PV+}t FjE @PV苨5wuV蜜}tFjuVY ttVuWGЍe[^_ newwin(%d,%d,%d,%d) failed, maybe wrong dims subwin(dialog,%d,%d,%d,%d) failed, maybe wrong dims Cancel OK UxWVSEEEEE}(tE(EE},tM, ME}|E EEMM[EEԅ}]ԋM M}uEE)ĉe19]~*MEMًMLELC9]؋MM؋E9~EEE1ۋM9M}eE<0҉NEE9E}1ME|0ʉ)Љ9U}UEM9M|9u}uC9]}}u h‹ETU}}Ku gÃ}tugEE]9]~MMU9U}UE}}EE9|n} |nME9\} \M\Eu |n+MMMM \Eu \+MMMM=tuuuu5FEOME+EEEHE0MLMQEM\SuuV Eu/V{uSuuhO+ hd苽 ju>55EPEPuuV`$E@9E~U+UЉUE9E~ ETUU19]~Nuuu}tEU1R9]PSMًEt4u $C9]uVWuuuuuuuVd(uMIQV1KEEEMM }}$E@vRy ƒtb4UȋMytQE@Ѓ1R0ҋMy҉UEDPuMqVY^E@v R ƒ tb4ŰMytQE@ЃRuuMqV]8ECjEPuh+ V]EOjuuh+ V](V譬} VnE=v PC ƒE tb4E9}t^}$tuExtl5prËMQE@ЉƒtjC@PjS*SSx}$tMME4u$ GES}vuƒMtb4E9um}tZ}$tTMytK5pQqËEPMIщƒtjC@PjSkSQSxE19]~l}WvuǃE tb4E؋M vRƒ tb49tC9]9]M}0~U؃099U~7}9~.}t%}-t}t}t}+t }}0~&U؃099U~}9]}t}-t }}}u>FE}~_uuu}tEU1RjjM܋Et4ul$ju|juejuo|Muuu}tEU1RjjM܋Et4]K/}t}+t }EH9EUUEH9>NM}~luuu}tEEMT1RjEHPMM؋Eppup$ju{juijus{Euuu}tMMET1RjMIQEE؋M qqu$u腨WuuuuuuuV_]C9]>FEuuu}tEEU1RjuMMEt4u]$uuu}tEU1RjuMMEt4u<$u轧uWVV艧}_}>} } (} } }}?}Rtw!}} }a}St}ht{oE9E~ EM)MOEEEEUBM)щ9|E+EEy"EMMEEEE+EEyEMIMאu}}$ExtPMIуUR0ҋEx҉UEDPuMqVVExtPMIуURuuEp/uEPuh+ VxVE4Puuh+ V^VVQ}}MME| 5pjNjMQE\ ]ӉÃtjG@PjWW٤Wqt Eat9ulqVfqUZB}$tMME4u$?MMEEk?}(tME(},tE܋M,}19]~Puuu}tEU1R9]QSE؋Mt4us$C9]u>FEWPuuuuuuV~Z(uWVV蓣EuHpVBpEč|[^_UWVSu} FjuV赋1ۃ 9}j VC9|u$uV萋 }tFU PVÙ}t FE(+E$PE @PVu(uV/}t F+E(HPuV }tUztV耢uuUBЍe[^_ newwin(%d,%d,%d,%d) failed, maybe wrong dims Cancel OK U WVSDžDž}}u nXE}}3u WÃ}tuW1]9}EE}}EU9|n} |nUU9\} \U\u|n+]؉= \u=\+}=tuuSW5WU+055EPjHPGPV>QuSVh<EE}(jCPWh< VPjSWh< VPDž(uP :F SuK5mP5jV0Dž$V>O ~7 B kg S?? 0CDotgctx at4VjPuW81Viy@0DžjWh< VMjSWh< tOttoDžjWh< VvMjSWh< *DžjSWh< VOMjWh< V;M(V.nDžjWh< VMjSWh< VL(;VhPu61t%6Vth[^_ Can't allocate memory in dialog_checklist(). onoff newwin(%d,%d,%d,%d) failed, maybe wrong dims subwin(dialog,%d,%d,%d,%d) failed, maybe wrong dims Cancel OK %c%c%cUWVSEEEEU}ڍ)ĉeEEE}|tE EEMM19MhC [Mtƒ%M̉C9]ufufOtMMЅ}]ЋE E}uMЍIU)ԉe19]E|tPMTU҃1ҋẺ [EMEMEMMETMQuC Ẽ<tC C9]rMMԋE9~EEE1ۋM9M}\[M<0҉N19U~+RM|0э|9}}}B9U9u}uC9]}}u 4O‹ETU}}Au NÃ}tuxN1҉]9}UU9U}UE}}EM9 |n}|nEM9 \}\E |n+MMMM\+EEEE=tuuQP5ƒtb4UMytQE@Ѓ1R0ҋMy҉UEDPuMquEE@vRƒtb4UMytQE@ЃRuuMquD:ECjEPuh D uDEOjuuhD uvD(ug u,vE=vPƒE tb4E9}tf}$Ex5pXËMQE@ЉƒtjC@PjSޔSĒS_F}$t>M$19]~1Ẽ<t! [E4u$Z/hD u$M/C9]E }vuƒMtb4E9u}}th}$tbMytY5pWËEPMIщƒt'jC@PjSSuuu?z S^E] 19]~t}_vuYǃE tb4E؉E @EvRƒtb49tC9]9]S}0~Uԃ099U~=}9~4}t+}-t%}t}t}+t}t } }0~(Uԃ09 9U~ }9]g}t}-t }3}}' M ME@E}~nuuu}tEU1RjjM؋E4IMUrE0u (jubju轉jubMuuu}tEU1RjjM؋E4IMUrE0u| (uՏuuMQuuuuuueF(u肏 ]K}t}+t }_EH9EFUU܋EH9EEMIM}~~uuu}tEEMT1RjEHPMMԉMEtIMUrEpu(jutajuVju`aEuuu}tMMET1RjMIQEEԉEMt@EUrMqu(u^uuEPuuuuuuD(u ]C} E0E}MM܉E| Z5pSNjMQE\ ]ӉƃtjG@PjW虏WWBZuW1ۃ9]~7M|tQETU҃1ҋM̉C9]19]~^uuu}tEU1R9]QSE؉EM4@M q1u(C9]uՌuuEPuuuuuueC(u肌3]]܉E|tPMTU҃1ҋẺMMEDEE\LMUU܋Ẽ<ɉ EEMIMuuuEt MA }uE[u]}uEXۉ]SEEܺ M̃<tUREPhD u_Vu蛋uuus$u^9]EEMIMuuu}tEEU1Rju܋EE܉EM4@EUrM1u]܃(uuu}tEU1Rju܋EE܉EM4@EUrM1uQ(u誊uuurup}O}*} } }  }}?}Rto!}} }a}St}htsE9E~5EE)EMMUBE)Љ9|M+MM[EOEEDEE0M+MMyEEHEu}}$MytQE@ЃUR0ҋMy҉UEDPuMqu9ExtPMIу URuuEp1uEPuh D un9E4PuuhD uR9uC}}$}t UUz 5pMÃ}t UU}tuuVB ЉƃtjC@PjS軉S衇SdT$F}$t>M$19]~1Ẽ<t! [E4u$.$hD u$!$C9]ЋMMEE?"}uP1ۃ9]~^uuu}tEU1R9]QSE؉EM4@M q1ur(C9]uņuuEPuuuuuuU=(urE}u"SuSEčX[^_UWVSu}$FjuVn1ۃ 9}j V|C9|u,uVhn }t F]} t U ztBP}tX} tU ztB P[} t U ztBPhD V^PFj V2|}t FU PV |}t FjE @PVkyu(uVm}t FjuV9y } tU ztVՄuu U BЍe[^_AddObj: Error malloc'ing ComposeObj AddObj: Error malloc'ing o->next UWVS]u };uDjuhPZ !jc0x@@ R{t [{ujxCuhuZ T!j C0CxC@CX e[^_US]؅tXP؃u]UWVS}}t u1ۋutt -t&v v và tct5?tRUt8Kt t5t+~tvu~ tv ;؍e[^_UWVS}7~t v~u{ t [ { u1ҋt  t /t%pp pt(tt*:t t(xt@x t@ 7Ѝe[^_UVSutDtt +t$s,s s[uVe[^UWVSU Et10Ѝp$)ĉVj*S jSjRuiue[^_UWVSuF @Pv6biBjv6,u55vjv F@P62B4F @PFP6 i^0щHV 9v3FHP0щHF+FPSvSvv6[^_NewStringObj: Error malloc'ing StringObj NewStringObj: Error malloc'ing so->title UWVSuj LÃuh^ )j 0} PCuh^ j u ssVVUS USUSU SUmCS,؍e[^_UWVSuF$)ĉvW:vWj5FPvF @PFP6yÃ, t t tau WvVu = u.at u t u ؍e[^_US]sS] UWVS]C@sC s(9s$:C(9+s(V3:f s <t @ Bs0щNS9v1R/CƄ(j3q\js43{qs<0щO s9}jh` 3Bq GC9|9C$PH+C(P3e1 jh` 3p GC9|C(9|[^_(%3d%%)UVSuF@Pv6dBjv6tp55vv vF@P6-4VF,F D~$~ ~$d~ &dF,F D~$~~$dPhb ]S\FFPFF P6cBjS6oe[^NewListObj: Error malloc'ing ListObj NewListObj: Error malloc'ing lo->title NewListObj: Error malloc'ing lo->seld UWVSu(j0dÃuhc hdLj0} P-Cuhc hdju sMK~LPC uhc hdΈjw19}C B9| C MKMKM$KM K s$C(C,MKM S؍e[^_UpdateListObj: Error malloc'ing lo->seld UWVS]} u{ t s {~IPC uh#e hdj19}C B9| C s$C(C,Se[^_U$WVSuF@N,N~()~$j6 L65aBjV,F46l 6w[Dž    ?6`V,F <t@ BVF,0҉HV9v*RSSFƄ(jS6ljV,F46k LW!(:tz"tVSR"hFF H9}F$H9F,F,F$H9F,yF,F(RF9~~,VN,H~,<N,N(F,F(NF 9F$}%~$O~,F(F,FN$IN,~ F$)F(N,N)F,F F,9F$F$HF,F(F F(V$J9|V(~(}F(N,N~()@F,+F F,yF,F(+F F(yF(F,FN()ȉV6-u DžV,V D~$~Й~$d~ /d'F,F D~$~ؙ~$dShb SmNNQ~~ W6]BjS6h$6\ J~,F0҉HV 9vUR0ӉH)PS FƄ(jS6(hjV,F46h u6Vv4 t+t+ t?t  u^ uNat u2 t uV,F4v)[^_US]s={ t s ,S#]USUZ,J <%RF]UM19Q$~A B9Q$QUM19Q$~A B9Q$QUS]55sjss 3$jCPC @Ps3#]UWVSujeE00ۋU ׈щMQD‹EPu R E}GEG U ׈щσEx@}xP9Ee[^_UVSujFPF @Pv6P"FFFHPF @P6Y 6SjFPF @Pv6" t; t, tEt7 t 6at *#F ؍e[^US]sS]-csh/bin/shU VSU:rt:wuUzuj Eu 1EP}|(~ƃt t$uuu`뵐U:ru }tju4[u u}tju[u u} u juhn hn hn ku u9ljU:ruRuuuuu3UZrww؍e[^U WVSuV:1wt9stߋuucjMYEUUjusƃ u =ptuXu wStEe[^_UWVS] KaESaEE@EjuAtlhjhwu$hwD 0wЍX9]| w MI w9]} +E@w wu(juu5w5whwuuuu u0EHEEMAQmuUPƃ}x: 5 S dVHN&J< t6at4OhWw0҉Ӄw uƃwKww9}  ww+w+wPjwwwPwwu(juujjw0҉Ӄw uƃwKww9}Cؙ}w)Уwu(juuPR=wuK=wwM9| B+U1҉w@)Éأwu(juuRP_ wEwPu uS wws}| 9UdwwwuƂw E9wuwu(juu5wPEwPu uRwwwPu`wZ=wu =ww0҉UwwE)P ww wQIQp =wu0wE9| C+]1ۉw@)‰w ww0҉Ӄw uƃwKww9}Cu Voww)ÉPwwwBPRou(juu5w5whwuuuu u<E9u E9u vV tbT4w0҉Ӄw uƃwKww9}C}|ww9E9]~. w w)P ww wQAQn wwwE9wu}|9]~ wwu(juu5w5whwuuuu u^0u(juu5w5whwuuuu u$0ughwu$e[^_UWVS]}E(}0t M,UJUBuu u$O | +u$9u}u19}8E$؀<8tE4u8* Pu2]C9|ʋU,MQ9]~7E$؀<8tE4u8* Pu\C9]ɋEE Pu u{Ne[^_UEtPh ÐNo memory to dup previous screen rCan't open helpfile : %s Can't stat helpfile : %s Could not malloc space for helpfile : %s Could not read entire help file : %sUse arrowkeys, PgUp, PgDn, Home and End to move through textOnline helpUWVS=}=p5p*ǃuh0y 0MhRy 5Ãu5hTy BURSRt5hny uƃu#5hy PSSSujV1ɉHLH9Mu L9Ut5hy PSSVpU2hy b|nR\RVhz SjWBRjWwe(WZcW 0V<[^_UWUtIԃ0HLvjLRhԃ@LR5 }[ ]UWVSu=]0}HV9vD30=)ƉPu uJ]Cjh'| SVj5SV$jh*| SzVe[^_UWS=t*0=Px5S1ۉ؍e[_US]SS1] dupwin(newscr) failed, malloc memory corrupted Press enter to continueMessageUVS5p,'ÃuJh@} hdojhhq} jjuh} V4jC@PjSc(S`S-e[^ newwin(%d,%d,%d,%d) failed, maybe wrong dims OK UWVSE}}u PU}tE}}3u WÃ}tuD1]9}EE}t } }E U9|n} |nUU9\} \U=\u=|n+} \u\+]؉=tuuWS5D5[VR1ۃE9}}5[VhRC9|졬F5[VLRjEPVC1ۃE9}}j V RC9|uEHPVrj]]CPMMQhO~ V$ FMM1E u wEjju uuVE}$EPEPV,Su} Vx=E=9?t|}ts}tb} }t\}t/}Stg}Rtl}hto~1Er~mOjE+E9}_G\ES}~E}}AE8+E~#+}'UE+E9}}+}y 1uWu uuV\EEP<$$EPEPV_(EEPEPVAV*Y}t } cV%1}ue[^_(%3d%%)BUVSuEEu }U Um$XmPh ]S]uu VAjSVLe[^UU1:t@:t: t: u@B:uUEM }1Ð1Ҁ8t9}8 t8 uB@8u9|Ð1 UWVSuuEjE@PuQ@1 E9}}jh u L F9|jE@Pu@1 9u~CF;t ; t; u12E9}@jSuK ; tFF}FƃC;t%; t; u ; t C;t ; u;tCEU 9U'e[^_ Curses initialization error. Uh juuj$uh hd$ejj51ۃ 9]~j WlLC9]F9u Սe[^_\n UD WVS] DžDžuuuE}whSSE}(uhs S(uj Pyn}(uhs b(1j 1ƃu .t00҃Ѓ9sCjuHC }919] ~ISu< tEx(P C9] ]9]~HSu1< tEx(P C9]E@Džju*&ju Mju&ju;1ۃ$9] ~%}GWIC9] ۋ}G9]~:j uIC9]#}GWIC9]ۋ}GWRu u; j}$t\ډ0щHU ҋ})׉9w-ډ0щH})Wu:(}$u20HU)9wjSuKFhv P8tِDž0щDUB960щE D9rg])DDVu9jWu}ED\}?Džu E919}ISu-9 t}G(W C9] ]9]~HSu8 t}G(W C9]}Džju"juIju"jub81ۃ$9] ~)ExPFC9] ׋Ex9]~>j ujFC9]'ExPMU D PMDPSG079E[(PS>UM DPUDPS079E[+PSH>MU D PMDPS/79E[)PS>u$u(S/e[^_wt Error opening file for writing in create_rc(). # # Run-time configuration file for dialog # # Automatically generated by "dialog --create-rc " # # # Types of values: # # Number - # String - "string" # Boolean - # Attribute - (foreground,background,highlight?) # # %s %s = %d %s = "%s" ONOFF%s = %s UWVShЗ uMǃuhӗ hd%Tjh WT1v^(Ph WS $t? ttKvF 2Ph QvF Ph 3vF # 8t RvFPh' WOS6vF pp0PSh' WSFWe[^_DIALOGRCrtHOME.dialogrc%s%s%s/%s Parse error: line %d of configuration file too long. Parse error: unknown variable at line %d of configuration file. Parse error: string value expected at line %d of configuration file. Parse error: boolean value expected at line %d of configuration file. Parse error: attribute value expected at line %d of configuration file. Parse error: syntax error at line %d of configuration file. U(WVSDžh dÃt h S th 1Ã;t0Ѐ|/uh Sh h Sh Ph PuTJh hdcPh h h 0щ YщƄ PPƒ tC51ې[CPtCvك[CT$tJ t R[CD :"t:'uT0щ| "tщ| 'u0щHwh# 0ҋD[St h u[CD h# Тu[CD hj nPPPH\[CT T BT Bh hdOM%1[^_(,,ON),OFF)UVSMu f\ f$19 $tB9L uPh$#h^ h$1҃95$tB9t uPh$e }t` Ph$$e[^U WVS]1Dž;($0Ѐ|) CPS0Ƅ.F. t瀼. t݀.>.F. t. t .,uӀ.]. t . u6> .tF. t뀼. tြ.,>F1ۉPtC~݃t$U Dž$U.F. t瀼. t݀.tw.0ЍpN< t< t틕D2h Ru U&h# t U1[^_UWVSE} ]1Ҁ8 t8 u<tB< t< t<u <#u <=ts  <tcB< t < t<=u<tJ<=u+<t B< t< t<=u<tB< t< t<u<430ЍP<2 t<2 uJ< t< tD1e[^_UUUUUUWVS}G PGPG@PG@P#ƃu1fGfFfffGfFfGfFfGfFfG fF fG fF GFGFGFGFGFG F G!F!G$F$GFGFG8F8Gm pJnBAn@11p=ptc{t<;}|nPj\JR|nPjVFPjDPCЃ \G8uE EEj]Sj趶E jSj襶jSj蛶E E$jSj耶jVpP)P‰pP h?pTh@pXhAp\hBp` hCpdhDplnhEppYhFptD hGpx,hjphkphp hKphIphph[p hlp~hmpihnpThop? hRp'hpphqphSp hrphZphsphtp hupyhvpdhwpOhxp: hp"hyp hzph{p h|ph}ph~php hpthp_hp Jhp5 hphPphphp  hp$hp(hp,hp0 hp4ohp8Zhp<Ehp@0 hpDhQpHhpLhpP hpThpXhp\hp` hTpdjhphUhpl@hpp+ hptm(BUWVSufU fU==(tZ=(C8t{t [C8uC8uF>;ʐj MCt[Tj 5(É߃u=Zj Ãu"t;;Sܝu'CCFfC >ufUfS e[^_UUmP1U1U塴mD UMmuÐmuBƀmu ƀ mm8uC:mu ƀ mm8uƂmL 1@ ~1UWVSuE~umtF t F9VuF tF u Vmtuu E~$}m~Xm~JV$mu#jR@P u ~ tVÃmjEPm@P覣 u =pt؋m}| u mu ƀ mm8uƂ1@ ~mL u Ƃmm8uƂmƀ1@ ~˄} ~!uF uamtSKF VPFP5n3 t FP5nr FPVc}t ؍e[^_UVSEmXau jEPm@P u =pt؋mut u mu ƀmm8uƂ1@ ~Umƀ8St[uf{ tA1mD @~mƀmƀƀC EPum@P cmL u Ƃ mm8uƂmƀ1@ ~mjEPm@PC u =pt؋mut u mu ƀ mm8uƂ1@ ~…gmL u Ƃ mm8uƂmƀ1@ ~ȍe[^USU] M|#B9|B9fJfJ 1]U=mtmÐ1U塴mƀp0tHPj0|kPnYjpHPjjJpt6YmupTY=ntnxt@j\OmtppXmp}fUWVSu]}upE)u} upE )] U ڋ p9&U9SVu uǃu119uju #‹G(u;19}G(4C9|w,w0ٔw(єW˔뙐W( U ËW(9s G(9rF9uqe[^_UWVS} Mu|j}|d7]C@9UUC@9Gu]{C))uUJB )+M]C EPCPQWEu1]Ur<]Z8UB]CBC19}'UU][(UB(UFA9|]fC US@Ee[^_UUB M)PBM)Puu RUWVSujDpÃu1jV("C(uSFjV"C,uSs(&jV!C0uSs(s,1>fCffOf{f} fOf{f}f{f}f{ fC CC 0ɋp9u9E uKCCCCC 0ɋpB`%=uBX uK!C$CCC8C<C@fC4fOf{619}S,C0fHfJA9|UU p9u9K }u9u }uK Ep9uK ؍e[^_Up(t(TÐpu Ðp`TUpt@TÐp(u Ðp(TU塴mƀmǀƀ=up@8%pʀ!P8`,`0@Lp@Mp,Pjp0#t1ÐU塴mǀp`8H8@Lp@Mp,Pjp0ʔt1ÐU塴mƀpJ8p,Pj2荔t1øU塴mƀmpH,H0p,Rj04t1ÐU塴mƀmǀpP8ʀ P8H,H0p,Rj0t1øU塴mǀpJ8p,Pj2t1ÐU塴mƀpb8p,Pj2At1øU塴mƀƀp`,`0p,Rj0t1ÐUMU } t A ЉA Q1UUE } u!B1UVS]mvkt' t9PuHpt:-ppt#ppdt d{Pme[^UWVSpƒu pu]}יƅ~CpmJIy A9A t ؈ QS艎Nmptpt}P1e[^_Up@kUp@mUjp0賒=mt$mƀmƀmƀ1Up,P{Uh,p0舐1Uh,jp0膐1UWVS]uj hXEك XE UMEURjjhXCS茓t*}<}<}<}]ؿUЉȍe[^_UWVS}] uu K}<;t>PCWEt؀;u!;tPCW$tN1e[^_UWVS}] u}>;t@PWt;u$PWtN1e[^_UWVSUM }_7G9G9 tw tXf t; tQXs؃)9j uC9|u1ۃK1wjPPuD} OG G(9 u}R},}fp1f~,p@,fv BBKe[^UWVS[+[+[+[+[+[+[+[+[-[|[+[~[_x[+|[:['[#[oZ<Z>ZvZ^[#[#Z#pt Kp 10ҋ ҉K9=p ЃSt$                                                                                     F @YF9le[^_UWVS]MpXuH=pEؙ}Eș}уXtQSX P 1e[^_UVSU] uSjpT[ ptSjQSjQpP ptSjVSjVpLPe[^UWVS} u֋m#Ћ]!÷M9W}ulpt]m@t)t WjDm mWjpp8uWjEPEPEPEPEPEPEPEPEPp8(P @t%ptWjT t%ptWj' t%ptWj t)ptWjE% à @tptWj tptWjy tptWjR tptWj+ tptWj tptWj tptWj tptWj tptWjh mt"U9utWRmM1e[^_Uh uPUWVSu}EP px - ^# \t!$^Ft$t  4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4  4 4  4 4 4 4  4 4 4 X        4 4  4 4 4 4 4  4 4 4 4  4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4  4  4 4 4 | 4 4  < 4 4 4 4 4 | 4 H 4 4 4    u( u4 ~vGu7 .u7F]wUVEE}tLF>/uEF>*u#E>*uEF>/uEF>> u9  PF׃>}t 1e[^_UjjuyUu uuTERMTERM not set setupterm("%s",%d,NULL): %s$TERMCAPFILE $HOME/.termcap /usr/share/misc/termcap$TERMCAPmalloc error bad format database not found terminal not found problem initializing tty LINESCOLUMNSoops... UWVSuuAh! >ƃu.}ph! u jh! hdjMGjjjh! jh" Ãu,}"h" u Vh! hdZjGPSVS.G$\# x# # # $ @$ @$ @$ }h" u Vh! hdjF}u"h*" u Vh! hdjdFM_}u"h6" u Vh! hdj,FM'}hJ" u Vh! hdJjEpM  Dfg u.}h^" u Vh! hdjEhx" .<Ãt$SW~SW¡pfh~" ;Ãt!SxW~SkW¡pf}t M18}u"h" u Vh! hdZjEM[^_UEp` ut1ÐUS]SjS81]TERM$TERMCAPFILE $HOME/.termcap /usr/share/misc/termcap$TERMCAPLINESCOLUMNSUVSu uh% :ƃjjjh% jh% xÃGPSVuS!F"$l& ' ' ' & & & & j%t Hj%t 0j%t ji%t1ҡpDfu1h% 9Ãt$S3U~S&U¡pfh% {9Ãt!ST~ST¡pfp@ [^UEx@yzhx=ƒtpPÐUEx@yzhx<ƒtpÐ1USE] x@yzhx=ƒu12p tt :t BA:uA Ћ]UpmBpY@BUWVS} u5Hƀfu*HfEguHdgulfVWu:à t> ttCWhDfV@- !w)WhDfV$ thDfV="u,edf5Hfuƀfu*Hft32;uV2e[^ :UWVSEMp} thÍDžl8;$C1;tD;_t'v R tbD4%t.xCF;uƄ.xxPG4ƒt&:tAl4BGl:u!;/uClCGl;?} t /ueth+ h 9Ãt[;ttRjSTt;h+ h8Ãt';tuu Pu18ppApIM hjj\[^_U,WVh|p075t;u.}Ծ| eEPjp051e^_Uh|jp04Up@-txt @p@p,Pr5¡pP1U=puÐpPhht@p008 |աp,Pp0<4u `u1øU=puÐpB pPhht@27 |͡pXPp031҅tU=puÐp,Pjp031҅tU=puÐpXPjp0m31҅tUpffBffBuBpPt mu p@@@1Ðp1Ƀ\t \8u,p`t `8uptJpft&ftffff1UU= t%@ǀ8<1øUU= t%@ǀ8@1øUWVSM] }9 h}>h@ǀlhlT9 h|9 h~7I9t uIqIbh@u"lhl)h@lhl1e[^_U =u Ð@88uujtÐUU =uá@8tt5Rj@4<]Ð@@1ÐUEM 8\uR@'tt0t\Ðx0ux0u ÐÐ%c%d%02d%03dUWVSDžU l]DžƅDžhp;<%tB<\t C;CӊCG;ycCtf8u(9u;uƅ;?u ;; 1^-$4 : 0D 3 : 3 46 A x? 3 3 @ L6 3 8 9 @ : : 9 : : : : : : : : 4E C B 8< D 3 tC = 6 p= 3 3 3 3 3 3 3 3 3 3 C @> 3 3 3 3 3 3 3 : 3 3 3 3 3 tB 3 3 7 LE : 9 E dE > 3 ; 3 3 4@ HA ; : = 3 ; U9 D : 3 3 : 3 3 ? $B 3 pD CB=puSh,- h((,(Pg;Cuch(jpHPx =(_~<(`($u\B(Gk3 =pIh(jpHP +C;!{pt {cf{\T{pu'PjCpP {cu%h4CPSH4$7 T8 08 8 @8 8 l8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 =(e(+O=(:(#h4Su4(pH@h4S5ápH@4(K=puQh,Wh(nB(+,(P! k3 =p t;-u^h(jpHP C;h4SbápH@4+(K=pu=pt?uk3 =pt-un3 =ptuq3 =pt umv3 ud=p:;:uCƅ%;ut-;CF;st;xt;Xt;dt ;ot;cuΊF0ЊD$u\BFG>uZ=ph(jj (Ch(jjf =C=pbh(jj! I5`5`C=pu[h,Ah(,(9,%(Psh(jpHP h4S;49(~'h4SápH@4h4SÃC=pFh(jpHP (pH4@( ȉCn=ph(jpHP pH@ 5(}F$)Ɖ()‰C=pC;|;0u ( ϣ(=( S5(=pC=pC;(C =(@@8t t)/(@@< (@@@=punC;th(CwW(@t t(@4x(@4p5=pC;th4Sn4P[ uÊC<'ut=p(C=wUV1t(TЉ(ĐC<}\5(Fp=p*h00=0H(P=ph,h((,(P&F=pvh,ah(xL(=,(P*=pt/h(jj 55C]h,h((=,(R:Zh,h(m(#,(PLh,^2h(I( ,(Ph,h((3,(PHhh,h(}(9,%(PTh,f:h(Q%(9,%(Ph,h(1=(t =,t@(P>^h,h(q1=(u =,t(PBh(R&=(%(Ph((У(Pe=ppCh(}=(u5ƅe Rƅ;C$㐐 p=p ːp=p볐uCG?[^_  %s$<%d>%s%s$<%d>UWS=pguOf=Rg~2RgP5hE SSHpg5Hpg=guuf=Pg~2PgP5hE SOSMHg<=fu 5=lmt=lmt5lmHg=guq=mt=mt5mJ=gtNf=Vg~1VgP5hE SSGg5Gg1=tku}=gttG=mt=mt 5mL=gtNf=Vg~1VgP5hE S&S$Gtk5 Gtk=k=guKf=Vg~5VgP5hE SSFki5N=pgM=pg@f=Rg2tDh~5pgSm0ƅ{0к)‰P5tk=mtK=mtBh~5pgS0ƅ{0к)‰P5mtf=Vg~*VgP55pghE PGh~5pgS/ƅ{0к)‰P5S贤ƅ{PREk=gt =gu pg=kuLf=Xg~/XgP5hE SSDk5Dkf=gu=gu fg=thu5Dth=iu5Di=hu5qDh[_UWVSf=`g~f=gu f`gfg= gu=fuf=pm=pm5pm|PS/ƃ>5t>,t >tF>,u>tF5t9Ãt|uFPBG$u{N9s׋MUt 19]~1<0t%08u >uƄ8CF9]ыMUt u19]~q<tfVPfufDŽG;fGu)VftV ‹fGC9]MUt uuMM19],tM9tAMC9,uu~(u=h(@F(K;|twMA(-DA$u>M9,u Eu>,tMvR0 tbD4%@tEϐu>,>>Ax=MvR tbD4%@u u>tFuC>,t >#t>=uM<#0<=tAMhxEuhxEEKa(FMSM9,P<\tJ <%t'<^uFuC>^ }G^FuEMHZ$hP R R R R Q Q Q Q Q Q Q Q R R R R R R R R R R R R R Q R R R R R R R R R R R R R R R R R R R R R R R R R R R R Q R R Q Q R R R R R Q R Q R R R Q Q Q   { s kc [ SMA=wUV1u %uF=wUV1tEM‹uF=wUV1tEM€'t* t$t'\t}K}Kt\C}Gu %u\Cj\CuZEM9@~9_ EWu<w  Fu?u>@u$}Ku\C0C0C0CE^MAMCu>xPN u%uuh] }Mu h;M 뷐Eu>0u!Fu>xt>Xu E 1ېM=wUV1t׋u\TuWM=wVV1t6uv R tb4ߍ\EqM9tu>,t Fu>uhx!Et"MfAfAhx&EuufFcfFVM9tuFu<,t>u{@ChxEtMƄ hxbEtufDŽFhxEtMDŽ hxEtuƄ0hx&EtMfDŽAjhxEtUuDŽ EhxEuhxEtMuuƄM9b1e[^_$<%d$<%d.%dUWVSuM ME>:t>t FC>:u}(h7G(GK;|twMA(-DA$F>:tv R tbD4%@tFՐ>:]>]x6v R tbD4%@u>tFC>:t >#t>=u<#<= hxEEKt (FMEEF=wUV1z}Kp>Љ}F=wUV1tMɍDЉEː>.u,F=wUV1t F>Љ}F>*uEFE>:<\t!<$<^HFH#$X [ [ [ [ `Z Z Z Z Z Z Z Z [ [ [ [ [ [ [ [ [ [ [ [ [ Z [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ HZ [ [ Z PZ [ [ [ [ [ (Z [ 0Z [ [ [ 8Z XZ @Z P H @ 8 0(  F=wUV1u ЊF<wFŠF<w F€'t<t$t19\t'/}Ku \C0C0C0}Kt\C}Gu %u\Cc\CVF>@~>_  Z<w  I>@u}Ku\C0C0C0 >?uCF^}Kt\CFC>}u}tQ}uuhV S uuhV S0Ѝ\}t*C>C=xtu:=ycu1=zu(uuh }h}M Th\2M 5봐FVÃ>tF<:t>uhxE}fGfGF<:t>u{@ChxEt!MƄhxbEt}fGugfDŽG[hxEtEM u8DŽ +hxNEt}8uƄ8>^1e[^_UVS] u=`~ iPSu t t;t1`SVP\`SVP1 `[^UWVS]} 1Ky S$#uWxKy S$ tu߸ct9u~FGKy S[$  uԅ~.Wv R" tbD4%@tONe[^_%s/%c/%srUWVSu xjVCjà PSf(f%f=@uguUPVh7_ u S=juià tOhuS ~3M9u+yu%Sh@_ SQ"ƃuS|huV: TxUv S tbD4%@utM\ Dž<:t'<,{<\pDž];:tq;uatOhuV t3x]Dž~| \u렐;CG덐uPj.0}H}ǐNyV!  \u~Ny Vg!tl uWNyVD!tH#u7NyV! t uۃtE\G؈G6V"9];,t CG;,uuP'-}NyV   NyVH v S tbD4%@u uVj 6#uONyV t, uۃt"VS7؈G$V!V!1 [^_UWVS} 1҃?Gt  ttku7h8/t\u;t;:t CF;uuu+;t CF;u8/uuPuƒ Pu;t;,t CF;uuu2+t;t CF;u1ҍBvt ?Ѝe[^_UU|hg jj5hHh|蜰t -/øUU|hg jj5hph|`t -.øUU|hg jj5h h|$t -0øUU|hg jj*hh|t -2øUU|hg jj*hh|謯t -X1øUU|hg jj*hPh|pt -2øUU|hg jhh@"h|1t -9ÐUU|hg jhhh|t -\3ÐUU|hg jhh(h|豮t -?ÐUSEU )tQS]GNUMTOTxqUWxlUWxcOTxxOTxrOTUCOTptOTOPOTnsOTNLOTncOTLCOTHDOTEPOTbssamxvpandscrlpixhlsdaisycrxmcpixxhpacccbcexonulhzeslokmc5iosnrrmcnpcxsbnxonmsgrmirdbdainhskmchtshcgneoxenlxtxhpambwMTxqxlxcxxxrUCptOPnsNLncLCHDEPbsYEYDNDYGhlYCYBYFYAccutxoes5iNRNPxbnxmsmiHCxnxsGNU_has_meta_keyrind_only_at_topindex_at_bottom_does_crinitialization_messytek_4025_insert_linereturn_does_clr_eoluppercase_onlyhas_hardware_tabsodd_paritycrt_without_scrollinglinefeed_is_newlineno_correctly_working_crlower_case_onlyhalf_duplexeven_paritybackspaces_with_bssemi_auto_right_marginrow_addr_glitchnon_dest_scroll_regionlpi_changes_reshue_lightness_saturationhas_print_wheelcr_cancels_micro_modecpi_changes_rescol_addr_glitchcan_changeback_color_erasexon_xofftransparent_underlinetilde_glitchstatus_line_esc_okprtr_silentover_strikenon_rev_rmcupno_pad_charno_esc_ctlcneeds_xon_xoffmove_standout_modemove_insert_modememory_belowmemory_aboveinsert_null_glitchhas_status_linehas_meta_keyhard_cursorhard_copygeneric_typeerase_overstrikeeat_newline_glitchdest_tabs_magic_smsoceol_standout_glitchauto_right_marginauto_left_marginGNUtwOTugOTknOTdVOTdTOTdNOTdFOTdCOTdBwidcscpsorviorlorhiorcnpinsncvmlsmcswnumpairsmjumpmaddrcolormaspinvspinhbtnsbufszbitypbitwiwslvtpbnlabxmclmlineslwlhitcolstwugkndVdTdNdFdCdBYnYmYlYjYkYiYhNCYgYfMWpaYeYdCoYbYcBTYaYpYowsNlsglicoGNU_tab_widthmagic_cookie_glitch_ulnumber_of_function_keysvertical_tab_delayhorizontal_tab_delaynew_line_delayform_feed_delaycarriage_return_delaybackspace_delaywide_char_sizeprint_rateoutput_res_vert_inchoutput_res_lineoutput_res_horz_inchoutput_res_charnumber_of_pinsno_color_videomicro_line_sizemicro_char_sizemaximum_windowsmax_pairsmax_micro_jumpmax_micro_addressmax_colorsmax_attributesdot_vert_spacingdot_horz_spacingbuttonsbuffer_capacitybit_image_typebit_image_entwiningwidth_status_linevirtual_terminalpadding_baud_ratenum_labelsmagic_cookie_glitchlines_of_memorylabel_widthlabel_heightinit_tabscolumnsusesrslsr1sl1UWkzUWkkUWkiOTnlOTmuOTmlOTmaOTkoOTbczeromwaitu9u8u7u6u5u4u3u2u1u0tonedocrsupcssubcsrcsdrbimscsdsbimsmgtpsmgtsmgtbsmgrpslinesmglrsmglpsetfscpsetcosclksmgbpsmgbsetbsetafsetabs3dss2dss1dss0dsscsscescreqmprmclkqdialpulsepfxlpctrmmcuumcufmcubmcudopocpordeminfomcuu1mvpamcuf1mcub1mcud1mhpaflnkmousinitpinitchupwingogetmhookpauserumrsupmrsubmrshmrmscrmpchrmicmrlmritmrwidmsumssupmssubmsshmsmscsmpchsnrmqsnlqsmicmslmsitmsdrfqswidmendbidispcdclkdialdevtdefcdefbicwincsincsnmcvrchrlpicpibirepbinelbicrscesaxoncxoffchuuctslhtwindhtssmgrsmglsgrriindscvparcrfrs3rs2rs1rfirepmc5mc4mc5pmc0plnpfxpflocpfkeycuurincufcubilindnichcuddldchpadnelsmmrmmsmlnrmlnlf9lf8lf7lf6lf5lf4lf3lf2lf10lf1lf0smkxrmkxkcuu1kundkspdkUNDkhtskSPDkSAVkRESkRITkRPLkRDOkrikPRTkPRVkOPTkNXTkMOVkMSGkLFTkICkHOMkHLPkFNDkindkEXTkEOLkENDksltkDLkDCkCRTkCPYkCMDkCANkBEGksavkcuf1kreskrstkrplkrfrkrefkrdokprtkprvkppkoptkopnknpknxtkmovkmsgkmrkkllkcub1kil1kich1khomekhlpkfndkf9kf8kf7kf63kf62kf61kf60kf6kf59kf58kf57kf56kf55kf54kf53kf52kf51kf50kf5kf49kf48kf47kf46kf45kf44kf43kf42kf41kf40kf4kf39kf38kf37kf36kf35kf34kf33kf32kf31kf30kf3kf29kf28kf27kf26kf25kf24kf23kf22kf21kf20kf2kf19kf18kf17kf16kf15kf14kf13kf12kf11kf10kf1kf0kextkedkelkentkendkrmirkcud1kdl1kdch1kctabkcrtkcpykcmdkclokclrktbckcankc3kc1kcbtkbegkbskb2ka3ka1ipil1ich1iprogifis3is2is1fslffflashrmxonrmulrmsormirrmdcrmcupsgr0rmamrmacsechsmxonsmulsmsoinvisrevprotsmirdimsmdcsmcupboldblinksmamsmacsenacshddsldl1dch1cvviscuu1llcuf1cnormmrcupcub1civishomecud1cupcmdchhpaedelel1clearmgctbcrmpcsrcrbelcbtacsctcSISLSrSlkzkkkinlmumlkobcZxWATOZwZvZuZtZsZrZqZpZoZnYZZmSfspYzSCZlZkSbAFABs3s2s1s0ZjS7RQRCQDPUS6ZiZhZgZfZeMiZdZcZbZaZZZYLfKmIpIcHUWGGmfhPAZXZWZVZUS5S3ZTZSZRZQZPZOZNZMS4S2ZLZKZJZIZHZGZFYyS1DKDIdvZEYxCWYwciZyZDZCZBZAXyZzYvS8XNXFtstawistMRMLsasfcvr3r2r1RFrppopfpOpspnpxplpkUPSRRILEALSFICDODLDCpcnwmmmoLOLFl9l8l7l6l5l4l3l2lal1l0kskeku&8&7!3kT!2!1%j%i%h%gkR%f%e%d%c%b%a#4#3#2#1*0kF*9*8*7*6*5*4*3*2*1&0&9&6kr&5&4&3&2&1%0%9%8kP%7%6kN%5%4%3%2kHklkAkIkh%1@0k9k8k7FrFqFpFok6FnFmFlFkFjFiFhFgFfFek5FdFcFbFaFZFYFXFWFVFUk4FTFSFRFQFPFOFNFMFLFKk3FJFIFHFGFFFEFDFCFBFAk2F9F8F7F6F5F4F3F2F1k;k1k0@9kSkE@8@7kMkdkLkDkt@6@5@4@3kCka@2K5K4kB@1kbK2K3K1aliciPi3isi1fsvbRXueseeitemeRAaeecSXussomkmrmpimmhdmtimdmbSAaseAdsdcvsupndveCMlevihodocmCCchcdcecbclMCctrPcsblbtac_get_otherparm_scroll_rightparm_scroll_leftscroll_rightscroll_leftkey_suspend_charkey_kill_charkey_interrupt_charlinefeed_if_not_lfmemory_unlockmemory_lock_abovearrow_key_mapother_non_function_keysbackspace_if_not_bszero_motionwait_toneuser9user8user7user6user5user4user3user2user1user0these_cause_crsuperscript_characterssubscript_charactersstop_char_set_defstop_bit_imagestart_char_set_defstart_bit_imageset_top_margin_parmset_top_marginset_tb_marginset_right_margin_parmset_page_lengthset_lr_marginset_left_margin_parmset_foregroundset_color_pairset_color_bandset_clockset_bottom_margin_parmset_bottom_marginset_backgroundset_a_foregroundset_a_backgroundset3_des_seqset2_des_seqset1_des_seqset0_des_seqselect_char_setscancode_escapereq_mouse_posremove_clockquick_dialpkey_plabpc_term_optionsparm_up_microparm_right_microparm_left_microparm_down_microorig_pairorig_colorsorder_of_pinsmouse_infomicro_upmicro_row_addressmicro_rightmicro_leftmicro_downmicro_column_addresslabel_formatkey_mouseinitialize_pairinitialize_colorhangupgoto_windowget_mouseflash_hookfixed_pauseexit_upward_modeexit_superscript_modeexit_subscript_modeexit_shadow_modeexit_scancode_modeexit_pc_charset_modeexit_micro_modeexit_leftward_modeexit_italics_modeexit_doublewide_modeenter_upward_modeenter_superscript_modeenter_subscript_modeenter_shadow_modeenter_scancode_modeenter_pc_charset_modeenter_normal_qualityenter_near_letter_qualityenter_micro_modeenter_leftward_modeenter_italics_modeenter_draft_qualityenter_doublewide_modeend_bit_image_regiondisplay_pc_chardisplay_clockdial_phonedevice_typedefine_chardefine_bit_image_regioncreate_windowcolor_namescode_set_initchar_set_nameschange_res_vertchange_res_horzchange_line_pitchchange_char_pitchbit_image_repeatbit_image_newlinebit_image_carriage_returnalt_scancode_escxon_characterxoff_characterup_half_lineunderline_charto_status_linetabset_windowset_tabset_right_marginset_left_marginset_attributesscroll_reversescroll_forwardsave_cursorrow_addressrestore_cursorreset_filereset_3stringreset_2stringreset_1stringreq_for_inputrepeat_charprtr_onprtr_offprtr_nonprint_screenplab_normpkey_xmitpkey_localpkey_keyparm_up_cursorparm_rindexparm_right_cursorparm_left_cursorparm_insert_lineparm_indexparm_ichparm_down_cursorparm_delete_lineparm_dchpad_charnewlinemeta_onmeta_offlabel_onlabel_offlab_f9lab_f8lab_f7lab_f6lab_f5lab_f4lab_f3lab_f2lab_f10lab_f1lab_f0keypad_xmitkeypad_localkey_upkey_undokey_suspendkey_sundokey_stabkey_ssuspendkey_ssavekey_srsumekey_srightkey_sreplacekey_sredokey_srkey_sprintkey_spreviouskey_soptionskey_snextkey_smovekey_smessagekey_sleftkey_sickey_shomekey_shelpkey_sfindkey_sfkey_sexitkey_seolkey_sendkey_selectkey_sdlkey_sdckey_screatekey_scopykey_scommandkey_scancelkey_sbegkey_savekey_rightkey_resumekey_restartkey_replacekey_refreshkey_referencekey_redokey_printkey_previouskey_ppagekey_optionskey_openkey_npagekey_nextkey_movekey_messagekey_markkey_llkey_leftkey_ilkey_ickey_homekey_helpkey_findkey_f9key_f8key_f7key_f63key_f62key_f61key_f60key_f6key_f59key_f58key_f57key_f56key_f55key_f54key_f53key_f52key_f51key_f50key_f5key_f49key_f48key_f47key_f46key_f45key_f44key_f43key_f42key_f41key_f40key_f4key_f39key_f38key_f37key_f36key_f35key_f34key_f33key_f32key_f31key_f30key_f3key_f29key_f28key_f27key_f26key_f25key_f24key_f23key_f22key_f21key_f20key_f2key_f19key_f18key_f17key_f16key_f15key_f14key_f13key_f12key_f11key_f10key_f1key_f0key_exitkey_eoskey_eolkey_enterkey_endkey_eickey_downkey_dlkey_dckey_ctabkey_createkey_copykey_commandkey_closekey_clearkey_catabkey_cancelkey_c3key_c1key_btabkey_begkey_backspacekey_b2key_a3key_a1insert_paddinginsert_lineinsert_characterinit_proginit_fileinit_3stringinit_2stringinit_1stringfrom_status_lineform_feedflash_screenexit_xon_modeexit_underline_modeexit_standout_modeexit_insert_modeexit_delete_modeexit_ca_modeexit_attribute_modeexit_am_modeexit_alt_charset_modeerase_charsenter_xon_modeenter_underline_modeenter_standout_modeenter_secure_modeenter_reverse_modeenter_protected_modeenter_insert_modeenter_dim_modeenter_delete_modeenter_ca_modeenter_bold_modeenter_blink_modeenter_am_modeenter_alt_charset_modeena_acsdown_half_linedis_status_linedelete_linedelete_charactercursor_visiblecursor_upcursor_to_llcursor_rightcursor_normalcursor_mem_addresscursor_leftcursor_invisiblecursor_homecursor_downcursor_addresscommand_charactercolumn_addressclr_eosclr_eolclr_bolclear_screenclear_marginsclear_all_tabschar_paddingchange_scroll_regioncarriage_returnbellback_tabacs_charsUGGUWVSuuG1=Gu(hGtءG@0ׁG1;u'h9ÃtCC=VCP{e[^_US]StCRSu]UVSu ];tF;t;|t CB;uVPu  ;|uC1x[^f ȎfffsffJf1fffrCffg&C> FreeBSD BOOT @ 0x%x: %d/%d k of memory, %s%s console Boot default: %d:%s(%d,%c)%s %s boot: Can't find %s UWVS}1S\3CF~j 6j$66 =hx d} xhhhhhht=t4hh h\h$t thtuPlaP5dx4hP\tPtP5$65 6hh\%\0th- u j h\h-K=t-ƅt5th>mInvalid format! Booting %d:%s(%d,%c)%s @ 0x%x Start address too low text=0x%x data=0x%x bss=0x%x symbols=[+0x%x+0x%x+0x%x+0x%x+0x%x] .configtotal=0x%x entry point=0x%x U(WVSj EPMэvI tot9Ȇ%=t$=t= t=th>=`U= t!1=tІf= t p}}W5tlaP5dx4hPhOhnuhuuduut FuuhcuV1uuhJut )߉މ5(6jVEPoujShuV u$j]SjVS9E܃E܃Pjh uV u܉5,6` x Ћd Ћl ЉÁ5t=556H)ABuJABuhh'h)Zhhh'VuVh$h5S\ Pue[^_Can't find file %s UVSE] utt~5th VS D3e[^No keyboard found Keyboard found UVSMu A< t< t<-umA< t< t 1023 (BIOS limit) Error: D:0x%x C:%d H:%d S:%d UWVSE9@\uU 9H\ 9D\E =<8Ɓ~ Vh+E =<8Ӊؙ=88EE =88׋88)~=h@8SWuVu t@h@8SWuVutWuVuhLXʋE@\U H\ӉD\E +H\ @8e[^_UWVS=08 T9M489EE)ȉ158׉Éމ15,f}15,f]ffE1ۿ06 fTfUf9t v~fEf9D tC}~у~t/=t   <Q,؉)Ee[^_UWVS}u ~,ShP\SWhP\G)߃ԍe[^_U WVS} p5Xp#8}NPU B9wu9r^08#@#^L]u1NdT}u9] |SRu| /+]9] }] uRhP^SuUPRz])] pډp} ~ 9u 9e[^_%s U WVSEE8?u xuEXUr0M׉ËÉEQ!ӉAUQUyxNjY`}EUZdTPhPlhh XyxPPsUu /u EM9/t=u =tnfff@u[EEUt}/tEM MuE1UM9]ru M9 w}1X#8[P]M -C‰UM M9Mwu E9r XR0 X8#@#QLUuSXJdTRhP PS׃P}tSRh|PSRuPUUM j Ce[^_UWVSu   JXJd<T9Ptr0ShP+PVЋ=XtPe[^_Unknown device UVStހ;t;(tC;u;uL\~:u< w L\C9tH=MM8u@8Ft:u:-x< w ƒУdCtq<,uC;tg<w ƒlC;tLC<)t;u;t;L\ƒЄudxt"t u h_huh TPXP|hP|Stt|p1te[^@@7  |/-\XU WVS1ېU Bt؋MA ? ؋UB Pu.‰ R C~M ytqU ztr󥍕hjR藺MY ti{ t[s tGC@w8t3CC C$uǂ ǂ fBJfBHMqPB(M A @BUߋu 3xs J C {t"h(CNjUrof{t hCNjUr{thړCNjUr؍e[^_wfdoddasdwd%s%d/dev/r%sU WVSjT艓jTjPR1DžT=0HMȉPM䉍L1VT40Hh PjPh LThPLJ$udq t[jL ÃtDXPhodLS! t!PVwGu 2SFETT<0H'@[^_UWVSu] ~t v.u F1h*Fu h jR~ofe[^_UWVS]{t s͒hؑCuh jR{u {t s茒h藑Cu h jaR{ue[^_fat (12-bit)XENIX /XENIX /usrfat (16-bit,<=32Mb)extended DOSfat (16-bit,>32Mb)NTFS/HPFS/QNXAIX bootableAIX dataOS/2 bootmgrfat (32-bit)fat (32-bit,LBA)fat (16-bit,>32Mb,LBA)extended DOS, LBACompaq DiagnosticOnTrack diskmgrNetware 2.xNetware 3.xSCO UnixWareMinix 1.1Minix 1.5linux_swapext2fsOpenBSD FFSNetBSD FFSOpenBSDbsd/osbsd/os swapUEU >$ ÐB=$    $ , 4 < D L T \ d l t |  Ð# Ð+ Ð6 ÐJ ÐW Ðj Ðx Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð) Ð3 Ð= ÐH ÐO Ð[ Ðf Ðn Ðu Ð Ð Ðu踅 Ð| Ðw Ðp Ð UUM B9Av1ÐB 9A |Ð1Unsupported mother type in Find_Mother_ChunkU8WVS]E UEԉU܃}tbw }t}tEPSbts]ȐM9N uSV5u^6udst[}ȐM9N uWV u2~ u$^tM9K uWSuu6u h L1e[^_US]tE{4t{,t s4C,Ѓ{t s;t 3sS]malloc failedUWVS}u1wj8jj8ىP訕à uh} jJߋuUz4tz0ts4C0ЉC4s&nC3s~C؍e[^_-UWVS}]Uz t q j8jj81PE uh} jIj8juܔuFUBu r zD7BZ u}mUBur$u r(Ru"uu[wCwlj8jj8蕈Pdà uh} jWIj8jSBUBCu s {D7CC h lCUZuFU9Bj8jj8Pà u h} jHߋE@CURBS uVu+VSu~tvYlCUBu+F)BFBUB u9F t"v NrUrU)rUu9UBuFB F BFB$F$B(F(BBR1e[^_U@B(tƀR@B(tƀB@ƀ%p %8ld %8lu %8lu %-8s %-8s 0x%02x %sUWVSu} g18 4dOh4dj>܅; 0ЍDPڀe[^_chunk '%s' [%ld..%ld] does not start on a track boundary chunk '%s' [%ld..%ld] does not end on a cylinder boundary UWVSuE x t x E X{ K(s uCu,ss sh 0щMDPE x tH@9Ct@C@Pu^u,ss sh( 0щMDPYe[^_Max one 'fat' allowed as child of 'whole' UWSE ]x u<1ҋ@tx uBu~hC 0ЍDPe[_Max one 'extended' allowed as child of 'whole' UWSE ]x u<1ҋ@tx uBu~h 0ЍDP~e[_Blocks %lu to %lu are needed for bad144 information, but isn't unused. You have assigned root to a slice which uses bad144, and extends past the first 1023 cylinders, and thus cannot be booted from. Root filesystem extends past cylinder 1024, and cannot be booted from Max seven partitions per freebsd slice Max one root partition child per freebsd slice U WVSMuEEE x 8@(x+yǂXtB0ɐ9{r3{ t-E pWhH щMDP|u‹E @(t;Xt40C(t&h щMDPN|u΋E XtA{ u5C(t,EC(t#h 0щMDP|Eu}~"hZ 0ЍDP{}~h 0ЍDP{e[^_UWVS}] uVSW-VSW%VSW)$VSWVSWZ{t VsW ;t V3WG G 9CrK(c(e[^_UUƅPr R] u1ÐP@\The root partition must end before cylinder 1024 seen from the BIOS' point of view, or it cannot be booted from. Internal trouble, cannot find this chunk in the chunk-tree The root partition must be in a FreeBSD slice, otherwise the kernel cannot be booted from it This partition is unsuitable for root, because the FreeBSD slice it is inside has bad144 enabled, but the badblock data lives past the 1024th cylinder, and the bootblocks cannot get to it there. USMAƅA(th Sh t@ PtB 9A |B9Avuu hU @z tR͐B(t1.h S臓h2 S|hu SqSY%lx.0.%x%02xUWVSfEfE] }EPh hwhƍVU} u 9sC;t9uf}tih Vw6PCh F>uPCh Vw 9ru3ƃf}tEPh VkwFPe[^_US11ɋU:5$ u u u u u u u u u z z z z z z z p p p p p p z z z z z z z z z z z z z z z z z z z z z z z z z z p p p p p p B:t uHBЋ]U4WVS}j1u ]SEj#S貐ƃt#/j.]S虐j:S菐tt9sƳ:.tFĜȜ̜jhEP t2PV/t@jhœP{ jhVkGGe[^_%d-%d-%d-%d-%d%x.%x.%x.%x.%x.%x%x:%x:%x:%x:%x:%x%x,%x,%x%3x%3o%3dU-tGMMԍEPEPEPEPQh u ǃ~uu WuhhRMMЍEPEPEPEPEPQh u\ ǃ ~uu WuhhMM̍EPEPEPEPEPQh u ǃ ~uu WuhhMMȍEPEPQh u ǃfE%EfE%EfE%Euu WuhhMFKZ$d EN0EEN>}tE E0}uM90uE EE EuFM9t CFuu~{xMt \E9v"MMĐSuVb  9]rSuuE uu WEPhu e[^_UWVS}u~IE11U9U}+EM~C} UMAMEU9|NME9u}UMAM9|e[^_US \= \tЃ;u]US\u1=\t@<\uÅt\Kuh0 b%]U=МuМU$WVS}EE܋uU Uu=9v "u 1NjE1U։uEM9MvuMEEEEU܀Uu"U9Uw9r M)M܉MuE +MMMe܉M E܋M]MMeM EMEu܉UUËM9wu9v E)E܉EU)UUMMu UEEUUUUEUe[^_UWVS]u UMUω]uE9vEu}u1uE1uӉƋEu9v1z׀Uu9wU9UrZ +uME NjMe؉EME ËMe؋UӉNjEU9wu9usO1}uEUe[^_UDWVSEEEE EUUUU}}(EUډUuޅtNuMMMM}}$UUډU]ۅtK]EEEEUUȋuMMEEuC9vȋUuȉ}u1uȉEȋE1uȉUËEuȉ9us1}։Ӏu9uwU9UrZ )߉Eȉ ƉeȋEE܉eE EeEUUNjEӉ9]ru9usO1ۉ}ԉ]؋uԋ}؃}tډỦۅtK]Ћű}Љe[^_UEHauthunix_create: out of memory UWVS]j(jeǃ1hSeƃG pHw$pF pFpFF G FGFGFj8P8EMMM MMM=Ht9H}HE]MMjhXP@SEPSHuWhD@R@ЉÉ^SadFt+SPXP#FGFGWh hd1,[^_UVShPuugEsÍPj}g~19}B9|퍅PQSVPx[^UUEU @$JPRA UVSu} ^$juuEPK{tscCC PEPtC CFCF/EC PEPdCCFCFV`e[^U uQh| u v$uQh| } G@PuQh uQu ~ ~0! =mtm0! =mtmPFuQu h cuQu h OuQh| } 7m9uQu uQu h uQh uQh| u F~)ljP uQh } GuPCE+E@} _lwu}u'ؾduؿu En EmEu)ƉUEE)Ѓ}E9E[u9u[Ku)ؿduؾu EnYEmL}?VuuQh| Pu>gu uQh| ؿdRuQh SmuQu h WuQh| u F~t@+F POuQh } w4uQu 0! =mtmuQu 0! =mtmuQh| u FldRuQh u FlPi} (t uQw(#u F w uQ4U uQhz ȍe[^_U`WVS}uuu ]SRVVWS^e[^_%ldUWVStu 󥍅tPKSPh~ ]SVuu S h[^_USMU ]9sAtB9rЋ]-csh/bin/shU4WVS}u EEEUUR]Sj%[}WSj[EuVEPj\$ÃthuDjujZjWjZjVj\$juh h h j^uАjVSWà u =ptjEPjZjEPjrZjEPj]\tEЍe[^_UWVS}EGˁvQ? tbD4%@uԀ-u E+uG}t}u0u?xt?Xu _E}uE 0uE1uUE1EÉ=wUV1t_ˁv Q? tbD4%t~ۉفv S> tbD4%t9E~@}| 9uru9E} EEuƊG6}}p" }tރ} tE}tGU e[^_UWVSU=DIu@I@I95HI~a@IE}LȿÉЍBB BS)])مE F95HI=LI}=@I=8I@I Bu}9wuGtfu}9wv~ uBuMu}9wNvQQ* tbT4}_}}u9~nvQ* tbT4u>_ -u}9wuGteu}9w > uBuIu}9wv Q) tbT4}?_}u9~OvQ=) tbT4uQu~_tHlE}RuJځU}ځuEE}}uu9u E{M}RuځX#w1HQw8tO2PLpwh"x]}O|u | NuVM\ + U)9U-}OUEw 4ىƉuЋJU@}9tHU@Eu9uuuUBRuURuuUBRuuu ځM}T:uVu}tUBe}W}u9=h)=p!= w=p==t]=tn9EE}t }EE~E}Ey}oEa}ZEL%ƋMq}4UN "E! ÁU!! ÅM)MM! É!с! É!сEMAMT%=t'Mq%EEE%=u߉!M:! ÉցUMA%=t!! EM9M؍e[^_UtWVSMȉMuv Fuċ}$}MAtEutM }Mu wu!} }0]ҍTUM9Ms u~<tS]}9s7F<8u&U)ڋM9Q@ډEq@u։NjMtC9]w9]u uM1}yAAu q }yuqRR,}G$uK gMq$-Quv$}w-w$- )MA Q$Q(A q rMQ$Q,A y zMQ$Q0A I JʋuV$V4F rjv4 8 uuuuu E2}u}HuuuMqQWEu uFِ}u }HMMyu RDBR+uF}9ZDr/MQBB BC9ZDsҋu~Hu%}GuuuuwWÃZMyL~2u~uQLBR+F}L~ My1juuuuvVÃu]uXM}9Os9uuċUJRwWEtjuuuwWÃ븅uuvFuA}tI}W+W ։u}}MMOUu+V ։u}}MOMO }vp9]vfu9ZDr.F<M<tt||D ED 'MDDD C9]wu~t v~*}t wj*Mq$\*1e[^_UWVSu u]9]]uRXtw Htaxt WuRu։u:uыRuAu։uuEuRPw](w8w0tv@HoxPZ`NwXt0?hpEUuSRuuP uuuWu< (9EtWϐC]]KSuWuu tSuWuu}UuSRuu uuuWu (9EtWϐC]]Kuuu𐐐SuWuu t9Et uuEِu EuuSuPuUuSRuuL uuuWu8 (9EtWϐsuuR\SuWuu 9t1CsuuJӋuK뻐SuWuu}\uR^U+V L/uR^U+V TL ]9]Ee[^_UWVSM UMEUu9ul}Ruځ0w8wtb (tlw` }9}uFu8}9}EuځA}9}uFu@Rvu}9wu G6u}9wP~ FB5u}9wu Gu}9w> Bu}9wuGtfu}9wv~ uBuMu}9wNvQi tbT4}_}}u9~nvQ tbT4u>_ -u}9wuGteu}9w > uBuIu}9wv Q tbT4}?_}u9~OvQU tbT4uQu~_tHlE}RuJځU}ځuEE}}uu9u E{M}RuځX#w1HQw8tO2PLpwh"x]}O|u | NuVM\ + U)9U-}OUEw 4ىƉuЋJU@}9tHU@Eu9uuuUBRuURuuUBRuuu ځM}T:uVu}tUBe}W}u9:]]U WVS}WE9Gv jhP] 7 u jh(9Gv*jhW] 7 ujhW9G8^uE9G8]uNH]fF]9Gv~8-u^X-fF-9Wva:]t39Wv@9Gv :-uz]tVW9Gv.8]uЋ9Gv"8-uNH-fF-9Gv8]t jW AG@@HExiU^tV}v uM tbMD4%t-ue E]9tEN fEfFMy~ t VW}tsG@HEx?]]N t fEf)FE^fEfFMy‹G@tF B fF~ t VW=VWsuVW(PWq VW VWIPh0We[^_UWVS]u 19Sv-t[u@9Cv@ j 0<:t <=tr9Cw jS <-t<]u jS VS9CwjS 9Cv@9Cv 8:ux]tljt9Cw jS` <-t<]u jSI VS9CwjS- 9Cv@9Cv8=ux]u 3jS $SE9Sv9:-u4@9Cv,z]t&9Cv8-u E-SEMMM8MuEN fEfF=Qt?M8Msj Sg ]E9ËN ffFC9~gEPEP~ j S SEP%EPSËN ffFC~Íe[^_UWVSu M ME}9Ov5v R tbD4%t M9Aw̋}?+}}J=Jt/uu3o u M<t;uك;uju" { C$c Lc c c +}J=Jt#Wu3! u<t;uރtjV1CMe[^_US]v S tbD4%t vSPtb4Bv Sn tbD4%t$vS tb4Ë]UWVS]3{E UUSEE]ES+3{e[^_UWVSu] Fx8@tDӁv R tbD4%tS9t SVi$PhV<;u FP4;@4e[^_UWVS]3{EECE^E E]ESb3{e[^_UWVS]u {{}~}u M}~}u E$|j j j j j l l l l l l Dk k l l l l l l k k ))CDVC)@PhxSujFPS C)PhSC)PVS9jhSh$jCHPSjhVC)@PhxS}C)PhS(C)PVS(jhS jCHPSjhS$GPFPS‹EHPjOVC)@PhHSC)PhPS:WVSH‹EHPWVS4uEHPRS jSe[^_UEU xuP`@`1UWVS}Gp u@ G@E9wGG‰uuGxuP‹GPPGpS‹GPGxuu‹GPQuGp‹GP1҃9U~/GpuЅ}BEAuB9UыWztztujE+EBPEj WWEZE}EBE}$M)CfCCC ؍e[^_UWVSu }GP PU@E19sˋF ff)FC9]wE9u }GH e[^_UWVSU fRfUMAx x}PUp9s{fMf9NuU9u tP19]vD>}U UˊV}9%EU R}9%9EuC9]w9]t9uw9uvu uu MA} +xe[^_UWVSEu @H19s>Њ^:t@9r1e[^_UWVSE} @@E119s7Š_0tAB9Uwȍe[^_UWVS] s0}C{ uPC ss ]C { u j u[uC HPM SC De[^_UUUVSuV yB] 1N9}< t  @N9|1e[^UWVSu^ yC} uu1ɋuV9}u8t1AuV9|e[^_UWVSEU z8xue<>uQVu %tAU R4UU B4U>^$<;uSVu < tU;C~F~e[^_UWVSu~]+] t8FPV!V MNЋM uRPX^e[^_US]{u1C9CC@@PSSC M M C]UWVSu}~ud^uu VF  9| |D 9|H|DH@ ~F)PV RF PsF e[^_UEM xuP % EUVS]u 9s}*Ps xu j S} C se[^UVS]u CFSPs 0Fuj S2C Fe[^UWVSE} x1ۋW %=XtAw=t,=Htp=ptsw =htj[=xtPurCP% %=`t#=t=uT%=`t=u9_@}u_@1ۉ%=L@tRG@@PGuPCht Vf 9ru3ƃf}tEPht V;FPle[^_US11ɋU:5$u v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v B:t uHBЋ]U4WVS}j1u ]SEj#Sƃt#/j.]Sij:S_tt9sƳ:.tFjhEP t2PVt@jhP{ jhVkGGe[^_%d-%d-%d-%d-%d%x.%x.%x.%x.%x.%x%x:%x:%x:%x:%x:%x%x,%x,%x%3x%3o%3dU-tGMMԍEPEPEPEPQhw uwǃ~uu WuhhRMMЍEPEPEPEPEPQhw u,ǃ ~uu WuhhMM̍EPEPEPEPEPQhw uǃ ~uu WuhhMMȍEPEPQhw u蠀ǃfE%EfE%EfE%Euu WuhhMFKZ$y z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z EN0EEN>}tEw E0}uM90uEx EEx EuFM9t CFuu~{xMt \E9v"MMĐSuV2~ 9]rSuu~uu WEPhu e[^_UWVS}u~IE11U9U}+EM~C} UMAMEU9|NME9u}UMAM9|e[^_Ujjuuu u耿UUE wU% E8wU% EwU% E ‰UEEUE†| %É%=tÐ$Id: setjmp.S,v 1.5.2.1 1998/11/04 08:42:01 tg Exp $jLZL$$Yai qyAy1ÐT$rKXT$D$ Zbj rzju@ $$Id: _setjmp.S,v 1.4.2.1 1998/11/04 08:42:01 tg Exp $D$$X`h pxx1ÐT$D$ Zbj rzju@ $Uuu uj赢Ujjuj藢UVS]ƍ\ST!‰Ѝe[^UU tEBEEEE1Pu!jU8VSu],EEEEURSjzK @B1EU}u}tTU9Su U9S | (U9S} K)MU+S Uy)E@BMUMSK EE NEL EEURURjBIh IjSjJ=uߐSI=tjURjHVIjURjvJe[^U/var/run/dev.dbUWVS}tPWt|EPWufEf%f= t 1jjjjh` Rƃt~jjlSqfDžl EpdDžhj\PdPVF Ѓu&`hN\ VFиNVFЃEPWP[^_/dev/U`VSu hj 軾Ãu1hS6ƒu S1M9FuB@PhNBP}EPhNGu9EuF9EuS˞Ne[^UDWUEEE80HPREP}WjEP|EEuuuu PW}U S]EPjS |?} tK xneK!xnMjEPS]Uuu ujfUuu ujfUuu ujfUWVSf} Utf t $xrxVG t:t"f tx xxOx t(t f tfuLG t*tf t xMG t2tf txT xxU1ۉx|xx||}1ۉM]M]x|M]]]]ux1M M9]:CCfCCG ];urEMt_FuY] ];tNM:tBRUURu"V]SVSfVfSVSO~ E M9u }uuul[^_U EEEEEjjEPjjEP}1Ð=Ot5OuOtjjEP5OjEP0|E01OÐ5O-O1UWV=Ou!u1`O9OvO@5O O=tă=Ou5OOe^_UWVSu=Ou t|19OvLV[OPt C9Ow9Ov[5O =Ou5OO9Ow1e[^_UWVSu=Ou to19Ov?O[9t$t C9Ow9Ov[5O =Ou5OtO9Ow1e[^_US]=Otu5O-OOO]U=Ot5OOO/usr/lkm/lkmLKMDIR%s/%s_mod.oUWVS}h ƃt 6D69u5u5(O1ۃ= OtEW4 Oh hh@jhLu C< Ou1e[^_/dev/lkmUjjhA K4 |Pu:%Ð1TMPDIR/var/tmp//tmp/_mod%s%s-q-u-o-emodload/sbin/modloadUWVS]S0ЍHM$)ĉup  W…} ~DjEPRoEuEp1҅tpEh Y}t6h UEt"h UEt5pkh Sh E@PWrjVh h Wh Wh h h CE<1҅tpRe[^_/bin/csh/bin/shU=u tU=t5=t 5Ur/etc/shellsU`WVS=t5k=t5Jhϗ hї Vǃu 0OEPGP tuuW0OjEй1PTu(W~50O5WhS4 te ;t C;#t݀;/u;#tӀ;tΉv R tbD4%@u;#t ;tCːC느We[^_UWVS=8u mtg=tt' D hx<E2j]EPh<`]EEP u1y :+t:-ubhhxS E0ҋ}JRhxuD  hxƒQ e[^_passwd.bynameUWVSu=8uRu 1E10҉щHwщOW]EPVE]G}EPÃu"=pth Vh ? à t :+t:-u1+1҅t Ѝe[^_%upasswd.byuidU$VSu=8uou1E3uj]EPEP菀]EEP8Ãu3=pt&Vhj j]Sahm Sh u Ãt 8+t8-u1b1t e[^UE<t@U<t@U<t=8t8P@8=HOtHOP@HOLO/etc/pwd.db/etc/spwd.db%s: %mUS. t jjjjS‰8E4MMEjEPEPRB Ѓt p2Ep-u9=|uh|tR5|mx x=HOuLǐ=u Sh j1]UVS8jURuP@ Ѓu5]E9s/P5u155 CFu5CFujhS}jhS}jhS}5 $CFu5$CFu5(CFu5,CFujh0S=}jh4S-}e[^U=HOujjhXjjHOUWVSu>+[0uh  ~@t=TOTOP : =LOtSM0҉ψщHEHOjh@OEPRR U҉t1҅t TO@ 념h TO@ 0h CáTO@ POTO1=POuFPn POEPEPEP u5FPhTOPOt1<M=LOtKM0҉ψщHEHOjh@OEPRR U҉t1҅\h uh ? ?N=LOtPM0҉ψщHEHOjh@OEPRR U҉t1҅t 1ah FPh G~@FP 1ۃEPEPEP tHLOEE}0щHEHOjh@OEPRRU҃C룐FP‰TOz 0ۡTO@ ELOE}щHEHOjh@OEPRRU҃TO@ uFFuLOEE0ҋ}щHEHOjh@OEPRRU1e[^_:UVS]E u8+8-VPhƆEh EPpK(h EPQC(uCK(h EP|+C(uPCK(h EPMC(uPfC K(}h EPC( uCK( h EPC(uPTCK(h EPtrC)uPSC$K(h EPtDC(@uCK(@h EPot"{(|CK(h EPMu1(C)u C K(j s ~te[^master.passwd.bynameUEPEPEPEPh uMuuÐ1%smaster.%sU,WVSu=|uh|KVhd S  =xtVhg S PP0} HPu P5|T=tj:ODžƅ5jQWuDžSgu2ƅ2jWuS9 8+t8-j 0=  x@ul5|VjPuk Pà C ƒ8V2htC S :u @PV;=LOK0HHOjh@OPRB Ѓt1҅a 8-x@up5|VjPuo PÃC ƒ8tV2ttC S :u @PV?LO0HHOjh@OPRBЃ:|12:5xuH؍[^_UWVS =|uh|=xt =tuM=t5EPEPhhV5|ǃuVt<EPEPhh5SV5|Mǃ Srtt1j:u^Ãt{M=LOtNM0҉ψщHEHOjh@OEPRR U҉t1҅t: :5xuuu}uu³u谳e[^_/etc/netgroupr%cUdWS]h0S=hOt5lOS)pEPhЪ } =pt }u}uphު hЪ pOu=p=EPh 5pOxN5pO}+up=pt=t=pOtd5pO*WSt%0PNlOSP =pOt 5pOhOdOe[_USUM ]=dOu1/dO@dO@dO@ dOdO]UVS5`Ot"6s茱s 脱S~ u`O=lOt5lOYlO5hOtF6{t s.{t s{ t s SuhOe[^UWVS]0} ЍpPsWt\C퐉P[Wu C;,t;uVu Wc u)9u%;,tPWtCEE9r1e[^_*%s.%s%s.**.%s*.*USM] UE8~1mt1tWt+tBKЅu( PSh* Q01Sh0 Ѕu( Ph5 Q h: Q]netgroup.byusernetgroup.byhostUWVSu}0}u=pDž1hYPuuE PSt{PP0HPSݮ tͮ P5ǃtu2uguPPP* t{} ttu futtVFu}t"tu"s  1[^_), , UWVSu`OtsVtuuVÃt{t TCC E:E8+8(jEju_<hOUhOEhҰ EP芴EEh԰ EPnƃtaF> t> thְ Vt)0H~1XS~MUDSPV4jMUDE}m hٰ EPֳV u }t$EE8 t8,t8 t}1e[^_netgroup%s %sU,WVS=u.5pOhM ==uhBuRP}0щJRuh 5t*=p2Huh hӪ+u;#C; t; t;tC; t<w)C; t; t; ;jl@GPVJWQV h@0щO1| uO|\u ODž Dž~\D7P~ Vg誩WRSwg tP5pOh t0щO Dž!B `O`Oup\;5pO1[^_UVSu] =jjj5 |'=~$S555 }1qQ=t5T@PUtS5Pt5 |9ve[^group.bynameU=uu1Ð=th%t Ðjjj tá8+u%xu8+u뷐hp @Ph#UVSu u1^Vjj.à u.=ļ| t#8+uhp Vhà t=u1te[^%dgroup.bygidUVSu|u1`jVjà u3=ļt*Vh j]Svh Sh:Ãt=u1te[^r/etc/groupU=t5fÐh h =u1ÐļEP5it08+uxtx:t=ļu ļļ5UjUS]@t1]U=t5 : /etc/group corrupt: invalid fieldUWVSEE15hh u 1Ej hu2Jy R  tu댻=t; t; uC;u;#c;Zh1 u‰::+0u }}*C}t}tuSDhp Sh }t}uE 9F}t}tu5}h1 u(Ãu7h4 j{K0uuh1 uتÃuuS}t}uE 9}h1 u|Ã0uuzȼ]1ȼȼtNM9,ut71+M9t 9 t9 ut Eu]Eue[^_:US]hM E P軩t?hM E P褩t(ChM E P茩tP诿CE u1o1ȼȼtJ8,ut5 1)8t 8 t8 ut u@u]UWS] =uhuEPEP0HPSu5uOj ut}w2uuh*Eƀu谠hu1e[_UWVS}=uhM=uQ=t5MEPEPhhhp 5TƃuZ@EPEPhh5Shp 5ƃ S֟t1o}vu诟뚐uuhEƀu膟j h芼EthWJGe[^_/kernelU EEEjjEPhjEPtÐ .UWVS] Àtpj(ƃj(jV袩UV ^$ F$tN$u=vuPV ajhp V0 E ;f@2EE0U:HP2V fC2USS@SF$PSV fC4fufC4}tUS] C}u]UZ]EEU:d}t}~uuV E jhp VA  t>UPf@4 F$ujjhq ~F}N$3puv uvV1e[^_UWVSu] fC&fC$GP{@Wvm$j/WE,ƒt-9u{At#B0ЍxPRC@P3$f{&FCCC,F e[^_UWVSu>t1f{2|ڋCuCRLf{2}S<~t v ~t vvF$u"vn)1t=pvwF$utVԛ=p V辛1e[^_..UWVS}?jG%`7V8fF8ujVWjfF4ugfF4ffwYjVWDfF4 fG$jjhq kF }pFfF4N6f~4tG$@t:F,9G t2F6t v htw# GfF4Kt^$}g$w Gt9jVW tMpFN6wt:F@Fvu&jW GuG%1wGvP f~2u'G$uwa'XVWnf~8tf~8uPjVWfF4 fu4G$u.jjhq F }pFfF4N6fF8OFP$@|/uT F@$/BF&@PF@PR pP3f~2uV#pV$Gf~2uG$utw\&XF6t:G$u(v D&tpv Op)v <*F6u"G$uh &tO$N~tfF47e[^_UM UvBvtpfQ81UWVS}] ttp7pG%f~4 u Ff~4t wu O$f~2uF8/tG$tSWOG@jjhq ƃ |%SW*GV$ uVG1e[^_U0WVSUUrxEu!} MfA4pA} u1'UB$uMy0B$ u Eu} ufU2uu tCt} u pMAUJ6E pMuXEE EUB$MI)IMԉE܋BU܀|/uJU܋MA$t UQ/BUЋMI2AMEEEE}u8ƃUB$ u#~.u~ F%=.FPFPu^à tF9E}oPutD5pt STuuW5pMfA4UJ$1MIMU@$J)IMfFfEf@fC$UCfMfK2}t(tfC4 USfC4 MACt~*~t$~tUB$tCC@CfC4 VMA$tCCC&@PC@Pu S@SjSu?fC4 ~fHfvf{4uOC}u ]] MY]E}.}t uPV}tuuUB$tM9JuMЋU}te} t}uyMfy2uUB$uFr !u5MA$u+h !tUfB4MI$6}u} $UfB4My t}~uuQiEEe[^_U`WVSEu @$t]^<@$u}tESv<ta=pSvfup ~Sv7tpFj`jSn fCf%f=@ubF,CF(fC fF0~@.u~AtF@%=.ujFfx2|9P(u9H,tB@fx2}BfCf%f=u ,fCf%f=te[^_UWVSu} ]9^}(C(FPv:Fu FJNt@uv jSv~#N9ABKu@e[^_UWVS}uFDG$uPÃu1NFPu C@PG$u D3E$C!t>^uE}tFt;Uv R貖!1f[tb4EEMFMM쐀}\uuMF}t}/uut'Uv R2 tb4E>-^]\u uFAt'ӁvR̕tb4Ã=QtM8M|D8]~8=uEP?`'Pu,` M8MuEMF]M1M9M%e[^_UWVS1119|8]dPWۄu W&18Džu U EUBtF밃}t UUe[^_UVSEju Puƃ t5pVu pV覃pe[^UVSUEPu R$ƃ tuVuw pVXpe[^UVSEju Pƃ t Vu{pVpe[^U5pu u PATH/usr/bin:/bin:.execvp: : path too long sh/bin/shUtWVSDžj/u@t%UDžDž:U:up'h 肄u Dž eh P蟉8uDž 0Ѝp0}ЍxD7=v2jh jlVj^jh jP$`VS%?Ƅ./W\Su?7Ƅ(5pu  p=u$x p F p F p F p p 1ۋU :t CU <uP~ǃ WPGPE P=5pWh WcpPi uDžUp"tp pt [^_$Id: disklabel.c,v 1.3 1996/03/19 13:44:57 bde Exp $CCDfloppytype 9HP-FLHP-IBST506ESDISCSIold DECMSCPSMDunknownbootISO9660HPFS4.4LFSMSDOS4.2BSDEighth Edition4.1BSDSystem VVersion 7Version 6swapunused/etc/disktabb0b1tyremovablesimulatedsfsentnsncdtscsurmilskcshstsbssbpxbxfxoxtxdxUlWVSEEEQ EuEPEP- }1Shh   M܋u 9s7t+E܉€8|t!::tUBUF9stU܀:|uߋE Ph^ u8 Pha u8EPhd ux8$~uܿg u d!}tuܿq u dj:h{ up, t dEPh~ uI; tU؉4 0Ph u; ,Ph u; 4Ph u:$EPh u7 ~hOuf(EPh u: 1҃tfUfEPh u: u8<EУDEPh uS: uD@ẸHEPh u#: tfUfTEPh u9 tfUfVEPh u9 1҃tfUfXEPh u9 1҃tfUfZEPh u9 1҃tU\EPh ua9 1҃tU`EPh u=9 tUEPh u9 tUf fE Ef fE Ef fE Ef fE Ef fE EE` ÔEaMMMMMMSEPum8 u CPEPuH8 EPEPu58 1҃tUSt)EPEPu8 uE1sC C EPEPu7 0҃tUS u*EPEPu4 ~hOuC MME}hfEfff fE E \E0MMEPEPuN7 1҃tUE}4~ WEVWEVux e[^_UWVSu] ߃;t3V[t-;u=wUV1u1) V莕e[^_//dev/nullUSCtt j{;u \}u h \} u>jjh uà t&jSjS jS~S1]U EUEEEEEPRj}Ð}tEEUEt u PpUE Phu0rjr|rЂ;r鰂r鐂rprP#r0rr<rЁ$r鰁9r鐁UrprPr0rrrЀRr鰀r鐀rprPr0 rrrQrOrrp rP=r0rr~"r~ r$Id: pipe.S,v 1.5 1996/08/20 08:20:03 julian Exp $}~*rL$Q$Id: fork.S,v 1.5 1996/08/20 08:19:58 julian Exp $~rt$Id: Ovfork.S,v 1.4.2.1 1998/11/04 08:42:01 tg Exp $YBr tQ}$Id: strrchr.S,v 1.2 1995/01/23 01:29:23 davidg Exp $ST$L$ 18uBu[UVSu]t%M >tB:uBKt Aue[^$Id: rindex.S,v 1.2 1995/01/23 01:29:06 davidg Exp $ST$L$ 18uBu[UWVSu >=uF0HEEPuNqƒt5}50H9EFBu p1;t G;u= t*P5popuH PmÃtՍPS5p,p pD}U:t:=tB:u+EMDPmËUpkEp:=tBMAMu=BFBu1e[^_US]EPSot+MpBtԃBuƐ]UTWVSEuUu%EEE} EEEU UU9aE EEE܋EE̋U9ű]+]SEЉ~u}uŰUȋỦEȉGM+M}$u]̐Nu]̐CANU)ŰE9EsUUE9EME EEE} UŰE HEЉE} (U UUEẺ֍PVPU҃},SVEЃ|HSuU҃ƋM}51SVEЃSűU҃Ɖم} MM̋E+EE؋u]VPU҃}.SuEЃ|CSu؋U҃u؅}.*SVEЃSu؋U҃ޅ}u؉uEU)‰Uԋ]+]uSREЃ}0uSU҃|EuuԋEЃ]ԅ}.])VSU҃VuԋEЃ}]ԉ]]SűU҃}1uuEЃ|IuűU҃]̅}2]-uSEЃuűU҃]}]̉]}uEEȋUEEȋUJ}&u]M𐐋Nu]M𐐐CANUUỦUE HEEEEU9UuűEЉÃuwE}uUUȋE̋UUȋẺH}&u]M̐Nu]M̐CANEEUŰE9E]U9U)uuEЉÃuwE}uUUȋEUUȋEH}&u]MNu]MCANE)EU)UE9E]U9Uw}}uE̋EȋẺEȋUI}&u]̋MNu]̋MCANEUU)U}EEEU UU9E EEEАEE̋U9ű]+]SEЉ~u}uŰUȋỦEȉGM+M}$u]̐Nu]̐CANU)ŰE9EsUUE9EME EEEM+M]+]9~˅~DM)ك}"]Nދ]CANM+ME+E+E9s ]+]+]~BM)ك} ]̋Nދ]̐CAN]+]9]suu1uPul]+]9]sU)ډU1uE Pe[^_Uj juaUVSu]u1^9ssACCCCP3Ufu3eC+CVu Pp)se[^U WVS}hrdEtyEEjjh jEPVÃtFuu SSً}t1|%}t.E+E@Pueu}uudEU+Ue[^_U1U\WfEfEEEE0ҋ}щHEEE EEEPu EP+‹}UVSu]=0et VLSu V+à =0etVL؍e[^USE8eueX t^;EuV{t sc{t sc{t sc{<t s<}cStc]U WVS}u U ‰UE1HPE @PM A< w ЉEU<w E@<w ɉE,?u!u<v<w G w$   , @ @ Q , , , GFX*E U BDEFMM1EEEEFEEF 9uU BD(J)։uvM e[^_UWVSu$V\F؉E~thRh$FPF$~tIƀ$:?t1.AC~Ѓ@PA@P @PA9]w$e[^_$Id: setlocale.c,v 1.8.2.9 1998/04/30 16:50:34 ache Exp $LC_MESSAGESLC_TIMELC_NUMERICLC_MONETARYLC_CTYPELC_COLLATELC_ALLLANGCUWVS}} u}E|PEU|PPdR|E}~ۋM 9M4`Pb}tt8u5`Pobt8u h Ybt8u jP]dPCzƃ }EM4`P bt8udjP]dPyƃ E}~+}t&ju ]dPyƃ j/u J|ƃu=Edju ]dPuyD E}~E~/u F~/t~+E Wu ]dSyEu >/uE M 9/t>/tF>uM 9u}#EDdVSz}~}t u"vEU|PPDRyu u89]~)DPdRyS C9]1E}~ e[^_/UShPh$ey|PPhPyt8h h$z|PPh$zC~C~$]PATH_LOCALE/usr/share/localeUWVSEd|PE=4\u\h0 @_Ãt?vu60Ѓ+=Sj@4\u4\< uVxu E}u&V81ۅuui8}u"V,G1ۅ|uiuGh}u"V 1ۅ|uAu @}t }t}u2V<1ۅuu u% Vuw1e[^_POSIXU`WVS}t7u tu u1c=4\uQ54\S wh SxuSx1PSuff%f=@t[^_UUv RH tbD4%%UUv R|H tbD4%%UE%UUv R8H tbD4%%UUv RH tbD4%%UE=wUV1UUv RG tbD4%%UUv RG tbD4%%UUv RXG tbD4%%UUv R(G tbD4% %UUv RF tbD4%@%UUv RF tbD4%%UE=wVVÐ1UEUUv R|iÐtb4UUv R5Ðtb4UUvRF%ÐtbD4Ujuu ud ` \ W S N I E A < 8 3 / * %                  usr2usr1infowinchprofvtalrmxfszxcpuiottouttinchldconttstpstopurgtermalrmpipesyssegvbuskillfpeemtabrttrapillquitinthupSignal 0d w p f S C 7 +         r \ D 0    User defined signal 2User defined signal 1Information requestWindow size changesProfiling timer expiredVirtual timer expiredFilesize limit exceededCputime limit exceededI/O possibleStopped (tty output)Stopped (tty input)Child exitedContinuedSuspendedSuspended (signal)Urgent I/O conditionTerminatedAlarm clockBroken pipeBad system callSegmentation faultBus errorKilledFloating point exceptionEMT trapAbort trapTrace/BPT trapIllegal instructionQuitInterruptHangup/UWVSE E}t:t>#t =t|\u|\u :t::t:\t CB:u1t d:CP5~ƃu1=t(5k@ @twDtt:|t::t AB:ujjPju PuÍCw+C[^_UWVSj=u u6à u Rjd)Cǃup +Ed;:;;^u0C;:;;?u BC  x;\kC;:;<w,1EtCMt<vȈ)C2 $,  ( 0   0 0 0 0 0 0 0  0 0 0  0  0 0 0 0 0 0 0 0 0 0 0 0 0  ( 0   0 0 0 0 0 0 0  0 0 0  0  @ 8 0 ( :CCBM6)FdPWBǃEd> B)K}t)PWBDžM9؍e[^_UWVSj=u uǃ u jd@up idʀ?:t4?t/GBKu)ʉUЃdPQAt»dUB)Ot)PQAtue[^_UWVS}j#u uum90uA9xt9XuA  1< wP<wP<wP9}Í4AÐ71e[^_UVSu >:tF>:u^FPu\^e[^UEt $Ð$dUE(UEPu u%s: : %s UWVS}] 5p=$u j5ht 5$ t"uS5$+hy 5$V"Ph| 5$=(t W(ЃWKUEPu u UVSu] =$u j5ht 5$ tuS5$ h, 5$=(t V(ЃVJUE PuUVS]5p=$u jR5ht 5$ t"u S5$hy 5$cVv!Ph| 5$Ie[^UE PuUS]=$u j5ht 5$ tu S5$b h, 5$]UVS]sS_3Cs =Sz=S|-VEe[^0Jr" " " " " " " " " " " " " " " " " " " " " " w" n" j" f" b" ^" Z" V" R" K" D" <" 2" )" "" " " " ! ! ! ! %a %b %e %X %Z %YPMAM%a %b %e %X %Y%m/%d/%y%H:%M:%SSaturdayFridayThursdayWednesdayTuesdayMondaySundaySatFriThuWedTueMonSunDecemberNovemberOctoberSeptemberAugustJulyJuneAprilMarchFebruaryJanuaryDecNovOctSepAugJulJunMayAprMarFebJanCPOSIX//LC_TIMEUxWVSmm}u" gu" O,teRuPWuUDžmtn0щˋtnr0}փ=4\54\S$Vh" SWuSWh" SW jSzR(}p,t `Qu Q8QX:uOUSA99A~ Džmtns29tH; t C; uCtnrϋ,m1R,`Qm0! ,Dž8Am|[^_U(WVSM DžDžDžDžDž3CvV% tbT4@t^My Q\u]=vPi% tbT4@rMI릐%1Dž3Cx$0' 0+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ ) <+ <+ <+ <+ P) <+ <+ <+ <+ <+ ) ) ) ) ) ) ) ) ) ) <+ <+ <+ <+ <+ <+ <+ <+ <+ <+ f+ * * <+ <+ <+ <+ <+ x) <+ <+ ) <+ <+ <+ <+ <+ <+ <+ <+ ) <+ <+ 0* <+ <+ <+ <+ <+ <+ <+ \* m+ * * * ) ) <+ <+ \) <+ * ) l* h) <+ $* <+ ) <+ <+ * MyQmZ6 ]94 K }׍|>oDž@F DžDžC DžDžC geXRB * 1DžC DžtE]Sff tEMQnt!E]CXBE]S )> vV  tbT4tDž@F Dž ]{SW u]]=v Po  tbT4@t.MIy~uWa 말G$, ,, , - . d2 ut\DžMq9s&)1Q*Wt߃]){;.uWjE]s#utP1,FMIOt2yQVt U]*u…DEMI]DMICOt0yQVt 9M*u)ޅutT1M=v P/ tbT4@uF]KOt{S^Ut눐EMI]=v P tbT4@u1MICOtyQTt)OvGYM2VՃMB$$/ 0 ^1 0 ^1 ^1 \0 0 0 0 0 0 0 0 0 0 ^1 ^1 ^1 ^1 ^1 ^1 ^1 0 0 0 0 0 0 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 0 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 0 0 0 0 0 0 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1 0 uDžt ? MpQ?t]pQՐ Ő@tsΈ.t[9uMDžʋCMIy~u@RuO}-9uSRqxtXuuVyjRӉƉ׃ u(tE]Sf2$t E]S+tE]S2zEMQ2OvG]2VՃ:$2 3 >4 3 3 >4 3 3 3 3 3 3 3 3 3 3 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 3 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 >4 3 ?]@ΈCto(uJʋCMIy~u`OuOVtB9 uR9w3etEtuVK3uVudjRgtE]S:+tE]SEMQ)ꋝgt[^_UWVSU :BU ^uE:BU Ehuu3 tB+MMUMU 2BU -t( t]E HM 1]t=Qt9|WV} -돐E =QtGUM9|21ېSW}}VSo UM C~҉@E %e[^_UWVSE@U9B0u=h&DžtmMy0A4UD@>Ny:1FMq4uURq0'ǃt>VWS2My0UQ41e[^_UVSu] u =mu=0et SC uTC u=0etS}뷐C t0St=0etSV됀c CCK {0t?C9C4'St=0eMS B CLc ߃{t9Cs@9u C)CC<C8S@S0C4SBSBC=0etSe[^UVS]u 9sHr1VsDC&t CDsH1e[^UWVS}WJwj 7ƃ tF)ËM fO )_7_ECPPW^u+EUWDP7Rk0 ]WJuMwj 7\ƃ u_뮐F+MSWu$EGDu7P0M)O7M GD M 1e[^_UVSu] 9u1(04h4h0 u)؍e[^CPOSIXPATH_LOCALE/usr/share/locale//LC_CTYPErNONEUWVS}0}Hwzu@: tuB: utb V1)=4\uihH: %ÃtLC=uC0Ѓ+=v S4\up4\T: 54\S>hf: Se@uS\@hh: SQ@ hr: S@Ãu fS~u SoIOCSbIztt: t  E[^_RuneMagiUtWVS]EPCP"m}a}S Tu!E>SwSjuuMMuЉuuT L E < ƉtPMA0A0P P 4 4 < < D D 1uD4D44444G~L 8 4 u8 L M9L uL @ < u@ L M9L uL H D uH L M9L 1u94 M8 DD4uDFunL+AMuL D D L M9L  EM~:uMD uENu D GM94 31u9< ~DM@ DDDDG9< 1u9D ~CMH DDDDG9D uL P 9Esu1]MP u ǁL u4 u dž8 M< u ǁ@ uD u džH Ee[^_Uu u U`WVS]EPSrfEf%f=@tpjS ǃ1EPW fEf%f=@t pijjWFk tVjƃtFqFtFvxF t>FFVX FpV,W%p1e[^_U =8u9EEEjjEPh8jEP<uá8UVSu] SVt[hCPV tECPVot4C PV^t#hX<jjCPCPVt t1e[^U,WVSE] =Qt SPy8EEE1PwƉuSlÉ]܃U:UU؍UUԀ;EE>t;u؍EPEPV u>t}tuԍEPEPS];t}tރ}t&}t E9Eu:}u U+UU>r>u;t;&>t;u>}+} >u;u}uue[^_U4WVS}EGȁvQ tbL4@u΀}-uEUE}+uEG}t}u }0u?xt?XuWUE}uE }0uEE1҉EUuujjӉM]uujjmӉMEEEUŰM€AwUVу1ɅtEtMvQ^ tbL4]فvS* tbL4t ــMU9U}|1E9Ew)U9UuE9EwU9UuE9EuU9U} ECEEeÉ֋UU֋EEUЙẺUЉ؉EUЉEUUG}}EEp"}t ]U]} tM}tOE EUe[^_U4WVS}EGȁvQ tbL4@u΀}-uEUE}+uEG}t}u }0u?xt?XuWUE}uE }0uEE1҉EUEE}tEEuuuu襪EuuuuEUEEEU€CwUVу1ɅtEtMvQ tbL4]فvSN tbL4t ــMU9U}|1U9Uw)E9EuU9UwE9EuU9UuU9U} ECEEeÉ֋UU֋EEUЙẺUЉ؉EUЉEUUG}}1EE}tEEp"}t ]U]} tM}tOE EUe[^_CPOSIX//LC_COLLATEr1.0 UWVSQQ}u Q?u0I u2I =4\uQ54\SF0h8I S1uS1h:I S1 hFI S2ÃuQSjj hpuuypHI ucSjh h8\EuISjhhp+u/SjhhxuS:Q1 Sn:[^___collate_substituteU WVS1E0ҋ]߈щHE1ۃ}t}?uhJ wE0ɍ8\׈щMEDE9#thY VÃt5|hY VsÃtC; t; thY SNƃtFS t:6;t3; t); t$shY SÃtCu|e[^_UWVS}5ƅt5W6yt&^;tސW3`t ;uÐ=ue[^_UWVS}u 5uCÅt 9su9{ u=ue؍e[^_U$WVSƅUU MfA%fADž˃ u,ApS\ODž,, ,DžB94hSu ǃ fƅhPƅ;C ǃ3C ƃ  hSusǃ 0u $ $/}t }t# (  ƅ11ۀ8.t GC?.uu80u ƅt StHp t D  SGGFG(  p1[^_0.0.0.%u.in-addr.arpa0.0.%u.%u.in-addr.arpa0.%u.%u.%u.in-addr.arpa%u.%u.%u.%u.in-addr.arpares_query failed US]} ؅tJȉLutN thtuvuh^ P  ]uuh^ P@uuuh_ P!uuuuh(_ PhPj jPZ}nt8hA_ ",jPP!tڄuttP 1USnuup1`huSƅhPj jS[ }nthA_ q뮐jPPmU}t nU%n肍UWVS}uu1E ?0uEG?xt ?XE=wUV1tU\j}ul=w VV1tP uсv R) tbD4%t u\ u\GZ?.uE9Es9uuG ?t+vR tbD4%@u*uE)H119sD B9r؍e[^_nisyellowpagesypdomaindnsbindhtablehosttable/etc/hostshostsUWVS1ۃ=4Rt30R40Ru+uD7 C|u1e[^_r/etc/host.conf ,:;U WVS1hVc hXc u&h6 #t͋hgc WÃt;ttv R tbD4%tStFhgc WÃH;t;~1v R[^_US]n tjSujS]UWVS} 11=RuQYJt rt t ,1-Wu/Wus WuÃFt؍e[^_UWVS}11=Ru\Ut$rt t(718Wu u Wu uxWu u8à Ft؍e[^_US]SOS]U|3UWVS}u12E@M A9uu1@E u֐e[^_ UWS]}tp/1G=RuhR&uݍEPEP0HPSu 5R}$uuhuVEƀudEj h LÃthpf uPClu¡ C; t; t;t1; t); t$hshpf SÃtCue[_hosts.bynameUu hg umhosts.byaddrUEuh h 0P>r/etc/hostsUS]=Ruh@h hBh !R 5RKR]U=Rt=Ru5RR# UVS=Ru.h@h hBh Rup1m5Rhh8 ƃ up1<>#thh V@Ãthh V)ÃtCh<Vj[ ~ Jh<VjZ dn th<h<Z L<PLC; t; t;t1; t); t$4shh S9ÃtCupe[^UWVS}jp7ƅt=U 9VuW6t&^;t֐W3t ;u뻐7e[^_UWVS} ujÅt9suWuC0^H u؍e[^_gethostby*.gethostanswer: asked for "%s", got "%s"USntpu up]gethostby*.gethostanswer: asked for "%s %s %s", got type "%s"size (%d) too big Too many addresses (%d) Impossible condition (type=%d) ULWVSDžEUU } t% }t}Dž' Dž(Ef@ЉEf@DžDž u 9~uVu薺ÃM҉2t9"}t}u:0Ӂ)EDžDžTTTDžDžtn9VuuÃ.҉ލF 9VκVº%}uuV輺tnV菺؃393t }t }bhVu}Ã6҉9 0Ӂ)09o } hVu臷Ã|Dt29"09|~ )9}t7W襥Pu蜥Pj襥Puhk j% ރ t#SBctuVuQÃ譶tx9u/s0Ӂ~k)W5gt$5h0k j%x ރ)9tu60щ))Љ=rShk r(Uj#hk ASPV=)ރ 9tWhk -u~9v ot"~}uhT=uI0}9|bZu0)n tPPhOp p1[^_UEtuPuu uqres_search failed (%d) UWVS]u nuuptt(pp/5j.S-uSJƒt=wUV1ڀ;{.hSVN  hSh DžDžTXT n  PPhM=wUV1u:.uB:uӀz.=wVV1tj:Su ;:ڀ;{.hSVM hShDžDžTXTp=wVV1u ::t:.uB:uҀz.4hVWjSD|$WSPV[&pp Pht 1[^_%u.%u.%u.%u.in-addr.arpa%x.%x.ip6.intres_query failed (%d) UWVS}nuC}uC} u=j hw W: tj hw W: uE EE }t }t  p/9E tpp1M}t }t0rPGPGPGPhx PO;%P;Ph!x VVƃKyڡ(x ,x F hPj jP(AÃ}Sh0x 1j PSP>Ãu1jUSU S RhuFTX }u&n thhICC p؍[^_UPWVS1uu19} ~Xo1Ʉt%u6uҋu#o9otA9rfL]u~ D]9}CE9] tL9} ~GuuO|3uNfDMf9}"ffDMfuDTIyG9} e[^_Unu st}t nU%njsUVSu]9s}s~Vu 3V3)s1e[^UEPu uVsyslog: unknown facility/priority: %x<%d>%.15s %s[%d]: %m /dev/console U@ WVSu} tVh{ j#q Rpu 5RDžjjh`{ jP 8SJVh{ pSPh{ p R tn+=RuRt5Rh{ `p RtPh{ >p =Rth{ "ph{ W$5Džjjh`{ jP6ÃuEx<%u muGSP SP<GuSj;S*ƅ uWr+R tG)‰Љ)‰Dž{ DžjPj =ujR P5R jWV5RWjWV5R3}bRtYjjh{ Jà |Bj>V\@))ljDž{ DžjPSS[^_U=Rt5R}R/var/run/log/dev/logUlVS=Ru)jjjR jjP9, =R=EjEjhh u]SjjV5R%uGjhh SjjV5R%u5RRe[^UUM EtR Rt uRRtU5RRUURtR$Id: yplib.c,v 1.24.2.3 1997/04/10 20:29:35 wpaul Exp $UWVSu}EPE< tC9Euu*jjSAl =< t< < {t s{ t s CC uCt}WC {ujaC[US{ssu !ss u{tVstsVĿCURSe[^_UWVS} u=< uhC UCUQEPD< t89su+usuVWs0 uE9C}u1e[^_SuccessInternal ypbind errorDomain not boundSystem resource allocation failureUnknown ypbind error: #%d UEtt-tt Ð Ð Ð/ ÐPhR h/var/yp/binding%s/%s.%dclnttcp_createYP: server for domain %s not responding, retrying clntudp_createfcntl: F_SETFDUhWVSDžDžDžj/uu|8ǃ=Rt?9=Rt758ft#~`t VVރu8f=R} t M }t0}u 758ftVRut6uu+jlLjlVhF\FhDžrRRv\D tu ff9VdtA~\WDÃ~`tV`JRQ҃FhF`WSDS. ~h~`tV`JRQF`F\juhǃ h׃ SjSxCÃu jjSC=p#DžDž jRS8CNj 9t S=jVHR gFIFHVLffVJfVXSSVhB~`tV`JRQF`F\jSfƅDžjjRjhSÃu6=$\h=$\ [=,\=Nh '<ffv'SSRRRDžKRhD MQh jS҉ǃ t?SSRFh uh hdeMt/SSRFhRRR>SSRjVHReFIffNJVLfNX FhuVR*~` RRDžF\V\RjhVHR1F`uh" &FhWjjv\" u h1 b*DžjS#dSv\@ƅRSv\A@ uffVd)V`JRQ҃tV^ 't8f58f} tM 11[^_UWVSuE~`t[EPEPv\? t}u fEf9Fdt'^\S?NjF`PPBSW?WO F`PPBF`F\Fhe[^_Uju[UWVS}18ft?CPWu#S-t8fS7 ދuče[^_yp_match: clnt_callU,WVSu]}tD0}t2}~,} t&} t}t}u ouh<uHURURuuu t+UBR{]6Pu3  1URut R]E]]] ]]]]]j ]S]aUJ`AuuSh URh jQ҉ǃ(t#hD Ur`{u _u ǃuMUBR]6PuS  uh<u63uuu %URh e[^_US]=<uhh<k;t <1]yp_first: clnt_callU(WVS}t(0}t} t} u GuuuuURu8t 5RuEuuu uj]S_UJ`AuuSh URh jQ҉Ã(t#h} Ur`u ku ÃugUuBRuu6Puuu UuBRuu6PuMuu URh ؍e[^_yp_next: clnt_callU0WVS}tD0}t2}~,} t&} t}t}u Su uu$uURuxt 5RuEuu܋u uuuuuj]S]U؋J`AuuSh URh jQ҉Ã(t#h$ Ur`u _u,ÃugUuBRuu6Pu賋uu Uu$BRu u$6Pu聋u u$ URh J؍e[^_clnttcp_create failed U,WVS}t(0}t} t} u 5URut R]EEMQHUQLUQPUQTUfEjjURjhURǃuh ]]] ]]pSnOuuԍURh URh jW҃ t+h$ Ur`WWRuWWRҋ}܍URh Ʃ u1We[^_yp_order: clnt_callUWVS}t(0}t} t} u URuTt 5RuEuuu uj]SZUJ`AuuShD URh j Q҉Ã( u Pt h Ur`u \uÃuUuURhD 腨؍e[^_yp_master: clnt_callUWVS}t(0}t} t} u URu$t 5RuEuuu uj]S}YUJ`AuuSh URh j Q҉Ã(t#h Ur`u kuÃuu_uURh Y؍e[^_yp_maplist: clnt_callUWVS}t0}u URut z5RuEj]SyXUR`JuuShD uVh j R҃(th Ur`u uuUu e[^_Request arguments badRPC failureCan't bind to server which serves this domainNo such map in server's domainNo such key in mapYP server errorLocal resource allocation failureNo more records in map databaseCan't communicate with portmapperCan't communicate with ypbindCan't communicate with ypservLocal domain name not setServer data base is badYP server version mismatch - server can't supply service.Access violationDatabase is busyYP unknown error %d UE$    $ , 4 < D L T \ d l t Ð Ð֕ Ð Ð Ð/ ÐB ÐR Ðt Ð Ð ÐԖ Ð Ð Ð$ Ð^ Ðo ÐPh h4UEtmwtFw t8t/ytkt^lt?w tHt;Yt#tL1ø ÐÐÐÐÐÐ ÐÐÐUS]=<uEPut<h<mt1h<f]$Id: xdryp.c,v 1.6 1996/06/03 13:16:53 jraynard Exp $UU hBPRuttÐ1U WVSjEPSUUuue4uuh M 1}uuh ݡU MMtE@PuWu谁E8E@PuSu葁E uh b5nuSuWu䡬pЉƋMU WoSi-uh U uh UM e[^_clntudp_create: out of memory U@WVS} u$1j EtT7dRÃu/hP hdQ$\ p,\~T3`SXjUR6.Mfyu%juu QcfC†MfQMARYMSQS QSQ SCUSUS C$C({Ts\A3U3ỦUEEM M܋MMjWsXs8V=URV?SP`[T`I XX?B~TXX?B䋝H9TH9TuL9X~`A,=pSDžddRURj`q\``R1_}<=pt}/=p#p`S0C,`IX`S`9jP``RhS8uVS";`,RV<`y,uL]C URSP҃u`A,A0}tR\URS9:P~0MZ RS ҃tPS`A,`C,0[^_UEM PB,B0AB4AUEM @P8@8uRUUSU]BU Jwz$P d t KP$H(SP$H(KCKPH 3PH K#PP SPSPS 1]UVSu^{t 3StW11e[^_U@WVSMYsLK0ME{u M KM$K 1}u } u}$tC$M ŰNsHS0RVQ ҃ t:VM QVR҃t&MJ VRQ҃tuVMуu{$uC$jV1OWV}1uC$2u1&} u}$uC$pU܋pUpUEEL<VI0URV5u {$tM9MuS$RUR6{$ubM A URQP҃uC$C(uVMуu {$uC$}t7URV3%Mă}tMJ RQ ҃(C$e[^_UEM PB$B(AB,AUEM @PL@LuRUUSUM ]Bt' t Jt'AKPH @0PH K#PPSPSP S 1]UVSu^{t 3謾SPzt CLPBЃSVe[^UDWVS]u1j EP9EUMЋM D}uEPjjEPn5P谽tu8UB$o=ptMA$pA(JSu U2~Ãtu-MA(6A$pUB(B$؍e[^_UWVS}u ]~1SV7迼 upG(G$ )ƅЋEe[^_U=@ uh蚳@ @ %s: ; errno = %s; low version = %lu, high version = %lu; why = %s(unknown authentication error - %d); s1 = %lu, s2 = %lu UWVSuKE]u 1VEPVRUu h S 0щM\ u]RSL0щM\ }E$    P P  l |  ܫ         uDPh S\uuh ~uh, S/0Ѝ\ tVh5 uh8 S 0Ѝ\9uuh uuh\ Sô0Ѝ\hq S衴Ee[^_%s Uu u6Ph* hd2ARPC: Failed (unspecified error)RPC: Program not registeredRPC: Port mapper failureRPC: Unknown protocolRPC: Unknown hostRPC: Remote system errorRPC: Server can't decode argumentsRPC: Procedure unavailableRPC: Program/version mismatchRPC: Program unavailableRPC: Authentication errorRPC: Incompatible versions of RPCRPC: Timed outRPC: Unable to receiveRPC: Unable to sendRPC: Can't decode resultRPC: Can't encode argumentsRPC: SuccessRPC: (unknown error code)US]10S90Su D@v ]UuPh* hd> - Error %dUWS2Åu1uh S5$\kPS $\ t'u~h S5(\tt}uuuuu jW{<}t Up&}tp}t pe[^_;; res_querydomain(%s, %s, %d, %d) %s.%sUWVSu] nu!ؤupnt uu؅uq PVhw ^uG0ЍXUKx!<3.uSVP腹Ƅ+ ZR0҉ЍD=~p/SVh Puuuu[^_HOSTALIASESrUWVSnu  9a  9MhԿ 葠8h PKǃ jWEWhS謼 ހv R菋 tbD4%@uF>uҀ>uS荁uFv RB tbD4%@u؀>tc^~t0v R  tbD4%@uC;uH hVhH tWH  W1[^_;; res_mkquery(%d, %s, %d, %d) UXWVS}$u(nu upntuuu uh yt΃ ~j W+}fnfnfE$gGn$gGg_ }Em}}t[}NEuEPVSu e))SEPfSEPfUfB}}uEPVSudSj KfSEP=fSjJfSj'fUfB mE 9vCSEPeSEPeSjeSEPe }tuSuX]UfB)e[^_US] jEPu`X1 C@ ~CCjSEP:X]UWVSEu }xu]x uW@@ X;tA)B9} #)63_;ue[^_UEM UttRQ-ÐRQÐp/0123456789U WVS1EuEZSh uEt/‹E- =wNu%E}?.u3t/}t)F1MAMu}~EM 1e[^_0123456789abcdef0123456789ABCDEFU(WVSjj]S袣mE M9:u AM9:lMME1VE~ h~ zuVE h at+E ǁEq:uCMM}u}]PC9ECȈCE1*.s9uSu:*M1AM.}tC9EsvCȈC}t5+u9$M)ىM؉)ڋM M؈M C9~݋]9]u!EM EAEAEA 1e[^_US]jEP} tEE]U8VSu] CC CURSj }s}u}t?U9Su U9S | U9S}K)MUMSK EEEԼ EEURURjh L jSjJ=L uߐS=L tjURjVjURj1e[^UL U E EEEjjEPujEP@t1ÐUSE ]tpSPu<uts]UEPURj uEÐUEPURjuEÐUUR鐡irpxrPvr0 rrZrР)r鰠hr鐠SrprP/r0r+rUu u6st Ð1Uu ust Ð1Uj@u uttÐ1Uj@u uttÐ1Uj@u uttÐ1UE hPPuLstÐ1UE hPPu$stÐ1UVSu] SV>t7CPVMt&CPVotC PVKt1e[^UVSu] SVt'CPVtCPV t1e[^UVSu] SVtCPVt 1e[^UVSu] SV t7CPV!ot&CPVotCPVnt1e[^UVSu] SVtCPVut 1e[^UVSu] SVt'CPV9tC PVt1e[^UVSu] SV6tCPVt 1e[^UVSu] SVtCPVnt 1e[^UVSu] SVottuCPVu1e[^UVSu] SVmtCPVt 1e[^UVSu] SVth jCPV~t 1e[^UVSu] SVth jCPV:t 1e[^Uu unt Ð1UVSu] SVltCPVt 1e[^Uu unt Ð1UVSu] jSVn tjCPVynt 1e[^UVSu] SVt)tuCPVk CPVu1e[^UVSu] SVt'CPVItC PVkt1e[^Uu umt Ð1Uu umt Ð1UVSu] SVtAt w t 1t'CPV:CPVz CPVu1e[^UVSu] SVbtAt w t 1t'CPVCPV CPVZu1e[^xdr_reference: out of memory UWVS}uU uEt u9VV2ËU uh hd1/VS]jSWU҉ƃ ?uSՋU e[^_UVSu] ;%EEPVVku1&}tuuSV1e[^xdrrec_create: out of memory UWVSu }jD=Ãt*VFƉsuNSV_t@CPVat/CPV_tC PV_t CPV_1e[^UUE wR$( h @ H P X `  @PUUE tuÐ@PUVSu] Ft t!+~u ^SvSv FCtwt ( t!FCFFC FCF Ce[^U=P u'nP =~ P P $Id: sigsuspend.S,v 1.4 1996/05/05 07:56:20 peter Exp $鈌D$D$or1UU h1uPRures_send: %s ([%s].%u): %s USpnt1uUbPfE%PuWPu h up]res_send: %s: %s USpntuaPu h{ u p]UETUETUVSUEBEBEB E119n~;unn9uztB9EuC A9 nω؍e[^UWVSu UfBOhVuuF| ƍF9EsNVNH؃VBH%9] u"9Euugau O1[^_UWVSu UfB9u r%E 9ErUfB%9t1}O~phVu uE|ƍF9E rVjG؃V^G%uuPStO[^_;; res_send() ;; Querying server (# %d) address = %s socket(vc)connect/vcwrite failedread failed;; response truncated ;; undersized: %d read(vc);; old answer (unexpected): socket(dg)connect(dg)sendsendtos out-of-boundsselect;; timeout recvfrom;; old answer: ;; not our server: ;; wrong query name: server rejected query: ;; truncated answer ;; got answer: ULWVSMMnu  } p nu ot"h h4d h4du uDžnu } ~ DžDžDžDž<DžDž9 n 19=n nEu=TtY11ېEPuuE PMQEPTЃ $ & C) tnt"EpQPGPh h4dn nDž=T|=Tu|=T|p jjjuVT  pju5TV }( pEp pp0Qh5 T]SE PC]EEEE EjEP5T-‹E 9t* pQh@ hdj*ufEEPV5Tgà ~fEf)fEuׅS pQhM hd: 6_RDžuPB%EM9~2nthY h4dDžfMfM fEfEf} wnrEPVuf}t+EPV5Tgà ~fEf)fEuׅ pQh tTIfEf+E7f}w]SP5T~à ~fEf)fEfuËff9?nu o %h h4dbh4dE9EEPu=T| =Tt3=TthjjjmST !T=nt=TuBju5T\S }!Ep pp05ph Tju u5Tz9E 5ph hdn.=TtEƅDžfDžjP5TRTp juju u5T蒎9E t:Ep pp05ph hdk[n~ =n DžDž=T}jh $T  vS0sƃu SVgT PjjVT@P{Í9t Vs}=pR5ph ~u0nth h4dDž)pDžPPjuu5TPE%5ph hd4g Dž} 4ntuhp h4d Dž(Mff9t nu o ?h nu3Pu nu o h GnugEEPuEE PuuGnu o h h4dh4dE9EEPuu A$<t<wMnt+h2 h4dh4dE9EEPu& =o>n u=At1nthJ h4daDžCnuo%!=!uh_ h4dnu o t+ho h4dh4dE9EEPu^ t nt u nu=TtX11ېEPuuu uuTЃ$ &  & C)tEG9=n/9 nnuIu p=@p<45ph* hd5ph 搐 p[^_U=T|)5TxTTTrjeechodiscardsystatdaytimenetstatqotdchargenftp-dataftptelnetsmtptimerlpnamewhoisdomainaptsapfsbootpsbootpctftpfingerlinksupdupnewaccthostnamesiso-tsapx400x400-sndcsnet-nspop-2sunrpcauthsftpuucp-pathnntperpcntpstatsrvprofileNeWSsnmpsnmp-trapprint-srv%dUUB=$H H H H H H  H  H  ( H 0 H 8 H H H H H H H H H H H @ H H H H P X H H H H H H H H H ` H H H h H p H H H H H H H x H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H  H  H H H H H H H H H  H H H H H H H H H ( H H H H H H H H H H H H H H H H 0 8 H H H H H H H @ Ð Ð Ð Ð Ð Ð( Ð- Ð5 Ð> ÐB ÐI ÐN ÐS ÐW Ð\ Ðb Ði Ðn Ðs Ðz Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð ÐRh( hT hlT icmpigmpggpsttcpuclegpigpnvp-IIpupchaosudpUUB$  X   ( 0 X 8 @ X X X H P _ Ðd Ði Ðm Ðp Ðt Ðx Ð| Ð Ð Ð Ð ÐRh( hh Xkh UWVS]}U#oUfE=ot tot u WNxS=ot}tWuS #PS1\S3%\ +E9E |+Ny=ot}t%otOx 1 Wj i؍e[^_Uh4duh;; res options: %sUWVS}u hf Vun_tS! Phv VuNx  Vj Xie[^_;; ->>HEADER<<- opcode: %s, status: %s, id: %d; flags: qr aa tc rd ra UNUSED-BIT-ON ad cd; Ques: %d, Ans: %d, Auth: %d, Addit: %d;; QUESTIONS: ;; , type = %s, class = %s ;; ANSWERS: ;; AUTHORITY RECORDS: ;; ADDITIONAL RECORDS: ;; ...truncated ;; ...malformed U WVSunukUӃ U =otou UBtWf%PB4@UB4Uh VNx   Vj g=ot ot"NyF9F ; Vj;Tg=ot oh Vz}h VfBth VLBth V2Bth$ Vz}h( VB@th, VB th; VBth? V=ot ofB%PhC Vz fB%PhN VZ fB%PhX V: fB %Phc V =ot o tNx  Vj efBd=ot otho VO==ot oth~ V9=ot otVu uSÃ+hPSEE Pu8,aÅW9C=ot ot S-%PPh V9=ot ot SV-%PPh V=ot otNx   Vj (dO9h Vj BPSu u3Ãtn9r^h Vj@BPSu uÃt>9r.h VhB PSu uÃt h h V[^_Uu huUWVS}E ]hRWURPn*ƃ}1=u#KyC9C .Sj.bSPGe>[^_Uuhu uf.UWVS]uSuEEPu )ƅ|&0ЍPt|.tB9E1f fEe[^_UVShVhu uqÃtuV{d1[^ %lu %s %s ; proto %d, port %d " "\"?" ;; *** Warning *** OS-type missing ( %lu ; serial %lu ; refresh (%s) %lu ; retry (%s) %lu ; expire (%s) %lu ) ; minimum (%s) %d %u %u "%.*s" %u %u %u %u %s %s ( 0x%04x %u %u ( ) ; BAD BASE64 %d ; LABELS WRONG (%d should be %d) ( %s %u ?%d?;; packet size error (found %d, dlen was %d) UWVSu}nucup1hPhu VzƃtWPbV(%(V(؃V(V(%$=ot oth8 W =ot otSPh= W(tPh= W(He $       D  h  D   P  8 d   t j\PV $u\$4Ph= $ \4 FV*&%PP hA Wt $ OyG9G Wj $WhY C_F ~y9vqPh\ wt"OyG9G \ Wj\\FOy G9G t Ȉ WQU\ OyG9G " Wj"$\9FWhY n^ ~z9vqPh\ "wt"OyG9G \ Wj\[FOy G9G t Ȉ WQ[ OG9GWj"(  Wh` ]hd W OyG9G   Wj [Wu Vƃ OyG9G   Wj ZWu Vƃ qWh ]V#ÃSh WV#ÃSCPSh W0Vu#ÃS"PSh WVW#ÃSPSh W0V6#ÃSPSh WjV"%Ph WIWu VƃV"%Ph WWu VxƃfOG9G$WhY [F ~y9vqPh\ tt"OyG9G \ Wj\(YFOy G9G t Ȉ WQX OyG9G"PWj"gOyG9G   Wj X$9 OyG9G " Wj"hXF ~z9vqPh\ st"OyG9G \ Wj\XFOy G9G t Ȉ WQW OyG9G " Wj"W9'OyG9G  Wj W9jV$*Ph= W$j.,PVjk+Ph= W$,PVPh= WW$wV؃V%PSh W!FVSh WF(VSh WFVSh Wރ Vn%VZ؃VN%PSh W ]OyG9G   Wj $VWu Vƃ OyG9G   Wj UWu Vƃ POyG9G   Wj UWVX$$VPh W$j\PVdPP\+Ph WuF1Dž } F }\uWh% WWDžWSP:WOyG9G   Wj Tѥ Cu$9oOyG9G)Wj)\TOyG9G   Wj 4TV%Ph* WgPFh1 WWPFh5 WG(h`P$)PV*Dž 9  ?uh; W *`Oy G9G t Ȉ WQmS 9 |V6%(PB Phv W~PFhO WnF P 9tPShS WAVÃ9tSh1 W VPPhw WVPPhv W(Vr%Ph~ WWu V(h`P$)PVm)Dž ,9 }^ ?uh; Wj *`Oy G9G t Ȉ WQQ 9 |h> W}hA WW7$(h W$ Ox   Wj lQ+9$t$Ph W1[^_TNKD@ANYHESIODHSCHAOSIN/'$ } xs oO K7 1 v7rhd`]ID"  !|"w[V<7)#def#n@h"any"URN Naming AuthorityNAPTRgroup ID (nonstandard)GIDuser ID (nonstandard)UIDuser information (nonstandard)UINFOmail agent (deprecated)MAILAmailbox-related data (deprecated)MAILBzone transferAXFRincremental zone transferIXFRATM address (unimplemented)ATMAserver selectionSRVNIMROD locator (unimplemented)NIMLOCendpoint identifier (unimplemented)EIDnext valid name (unimplemented)NXTlocationLOCIPv6 addressAAAAgeographical position (withdrawn)GPOSmapping informationPXkeyKEYsignatureSIGNSAP_PTRnsap addressNSAProuterRTISDN addressISDNX25 addressX25DCE or AFS serverAFSDBresponsible personRPtextTXTmail exchangerMXmailbox informationMINFOhost informationHINFOdomain name pointerPTRwell-known service (deprecated)WKSnullNULLmail renameMRmail group memberMGmailboxMBstart of authoritySOAcanonical nameCNAMEmail forwarder (deprecated)MFmail destination (deprecated)MDname serverNSaddressAUWVS]} u{t(sW -u t {uۅte[^_USEU ]xt9ut@) xuRh( h| Jt| ]USEU ]xt9ut@) xuRh( h Jt ]UjuhX>Ujuh*initdebugaaonly(unimpl)usevcprimry(unimpl)igntcrecursdefnamstyopndnsrchinsecure1insecure2?0x%lx?UE w'tnwtWtZt_tb=tuw@t^=t_=tiw =tXn=t]c`ÐeÐkÐzÐÐÐÐÐÐÐÐÐPhh  I 0 secss%d day%s%d hour%s%d min%s%d sec%sUWVSEu( ff  <1U1U1׉ƻ t%uPVhSWHC;ut0t CuPWhS&HC;u}t6ut C}uPuhSGC;u}uu;u7}u1u u}t C}uPuhSG e[^_%ld.%.2ldUSE% f1fȊEff1f% TȻd1RPh4h )G ]UVSu11ɋ=wUV1tu HCB̀:.ugB=wUV1tIu  CB=wUV1tu  CBCu1ۈ؉%e[^U WVSEEE1M=wUV1tMɍDЉECɐv RK1 tbD4%@tCՐ=wUV1=wUV1tMɍDЉECɐv R0 tbD4%@tCՐ=wUV1&=wUV1tMɍDЉECɐ;.C=wUV1tn;<C=wUV1t:ЍC=wUV1t |8Cv R/ tbD4%@tv Rs/ tbD4%@tCՐ28$                                           MIM4vM447)MIM@M)12$<                                           M M  M Cv R, tbD4%@tv R, tbD4%@tCՐMe[^_U0WVSE1EEEEEEEE0ҋ}҉H}MQ]SEEPSzƒMMu2}u}uEEU#}u}u MMU 1E8-u EEE8+uEEwUVƒ1҅tEMLЋUʉU뺋E8.uoEEwUVƒ1҅tEE0ЍEEwUVƒ1҅t Et0EEUЋ]ځÀEvR* tbT4@u 9}sEɐEvR* tbT4@t9}+EŐ9}EPEԃEvRX* tbT4@u 9}sEɐEvR * tbT4@t9}EŐ9}EPZE܃EvR) tbT4@u 9}sEɐEvR) tbT4@t 9}sEɐ9}s EPE؋M EԈAE܈AE؈AME HMHEM AEAME HMH EM A EA E H H M AYe[^_?; error: unknown LOC RR version%d %.2d %.2d.%.3d %c %d %.2d %.2d.%.3d %c %d.%.2dm %sm %sm %smUHWVSMAthg#u <UAEAUAQ y EA E]y A ‰UQ UuQ y IM ȉE=w)EMigE}ESENؿUÿ<UÙUE} EWEEUƿ<UƙUEȿdUЉMMEP QEu TUEPPƃu5TEPPÃuTSVuuu}WuuuuEPuuuuh#u :DU9Tt R895Tt V{89TtSj8E e[^_UWS]0ЍH119} <.u@B9|;*utH~| .t@e[_%04d%02d%02d%02d%02d%02dUEEEP.BlB@B2rrr PrhY&h :ZONEREFZONEINITUPDATEMAUPDATEMUPDATEDAUPDATEDUPDATEA8765NOTIFYCQUERYUCQUERYMIQUERYQUERYNOCHANGE14131211109REFUSEDNOTIMPNXDOMAINSERVFAILFORMERRNOERRORUS]uSuu u~;.u]Uuuuu uUS]u URtE)]USM.AtYA.tH.t .tuBv2Bv*BЃ v"1+BvBv BЃ v-uމЉڅu]UE8*u!x.u PnÀxu ÐPVUSM1ۀ9u)9B߃]w$t1.t\uAuك.t1Q]UU ߃]v1BuUEff@f UU B B B UM fUfQUMU BBJUWVS}] UU%9] t 9].C9EUGP-tC9E\CM EPuC9E\CfUfUбd%UCfEdf1ffUE% %UCfE f1ffUE%U 9]v7UCN.7G9] u 9]v.C9]v C+E p(e[^_UWVS1ҋM MMM MShUAP-U<MAM"ShUP -UNjMAMShUO-Uǁ1k\uf.uW+]KM9MMM9u#t 9uvzF+E =jrt\u 9uvO؈FMAM+]Ku-M9Ms%Mt 9uvF+E =1p(e[^_U WVSEE}uMMM9M 9%t =t8uD;9Evj39E vbML M؈GSVW< S9u v:}} +MAM؃? Ћu9uw9u vEE +E9E|p(F\}}+uuEe[^_UWVSEE} MMEE}t2M MEt)MM9tEM9uMME1ҐM1TML1MuщE쐐M1t|}tvuuuQƒ|0G9E GЉG}Ј}t(E9Es+E=?M9Mu:D79Ev1^SuW: ]߅M9}s }t Mp(+E e[^_UShPuu uTÃtuuP4tUShSu^ tuuuu SUVSu] 9s$@tсt t @9w1p(e[^UEރ:$D00181018181818181818181810181818181818181818181818101818181810181818181818181818181818181818181818181818181818181818101Ð1UE߃]%UUBvÐB U WVSMMMMM1u%t =t`rMAM9uzt(MPAMPFx9uQKuڋM9u:>u E+E XM9u$.؃? Ћu  p(&FdEM9M@pe[^_UUBЃ w ÐUWVSu19}.+/Àt1Ӂv RW tbD4%t&Ӂv Rtb4=w VV1tP%EFuӁv Rctb4=w VV1/PŠEЋM AM GFe[^_UWVS}u UtU E~19}J%B 07FB 07u A9}.BA9|Ee[^_USE] MUttRQS0RQSp/1]%u.%u.%u.%uUWVSU} ]BPBPBPPh4uV+9wVW3Ep1e[^_%xU\WVSj jUR.41 M M+MM+MM DG~E1|uu "Ft}t9u}]uG~Ãt}t9u}]u}t }E]1}t9}UU9} 9}uv:Cpt:CuO}uI}t}u=}u4)ڃRSU Rs tv0ҍ\ th5SQ*à Gf}tUUu:CCEЉ)9UrPu |CE p1e[^_%d.%d.%d.%dUE PE PE PEPh6jhLuABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=UWVSu1ۃ} EFEFEFE EE$U% E$U% E? ?vo))C9ET7};C%7;C%7;C7;C} } EEE19U vD*FB9U wEE$U% E$U% ?ve(u(FRQV@Ѓ tGtJFSh$V@>>u'FRQV@ Ѓ ttFShUV@ >t1e[^_xdr_bytes: out of memory UWVS}uU VWty69us?umt r@tG]uSu(VËU uh9?hd轭'VSWtSU 뫐1e[^_UE hPPuDUWVSu} ]WVjt{t9t{u}u1juVCjuVUҍe[^_xdr_string: out of memory UWVSuM t u0HEEPVt{M9MwsUBt rAtI_tOu(RvËM uhw@hdY/EuSVgS"M 1e[^_Uju u u1ø0123456789U(WVSu95xv o[M؅}ؐ 1ÊAA؅u}-AIUUE9v]ؐIB9wUe[^_UWVSu0SAǃt SVW'1e[^_UWVS]} v R,ƃ tb4Gv R, tb49u Cu1Iv Rk,à tb4WvRF, tb4)É؍e[^_UWVS}]u v R,ǃ tb4Fv R+ tb49tLv R+à tb4VvR+ tb4)ÉCt MX1e[^_GMTUS]1;}1ɐ A~]UUUUU19 <~(P@,UA9 <19 8~- P@,UA9 8/etc/localtime/usr/share/zoneinfo/U#WVSut.t3t!>:u~/t>/tj.V6t1u D>:uF>/%DžD0ˉ҉S4hDSE6VS>6j.V5 t DžtjV21jV˃ÃEPSsfEf%f=hPS S QWQk} QTGW?M AW'‹M Q 92)AH=yr 29ytM 9yt))Ɖ} M QAQ 991M 9q~"M} DF9w1M 9q~0M G9A$F9q1bM LCGCGM 9A F} 9w1M 9q ~M LGF9q } Ƅ>L197~>M L?+CF} 971M 9q~H} Lt"B AvaB F} 9w1M 9q~B} LtBAv BF} 9w1t[^_mnUM+tAtƒЃ v<wUWVS]} ut=ƒЃ w01ɐɍDҍ 9CƒЃ v9M1e[^_UVS] hjEPutXURB9:uJAj;jEPQVt(E@9:uAju}u>CuC1ɋuu"duEuI)EE}?;i}t-^} 8L؉ELu 0L؉ElE1ҋ} 9W~$u 20PtB9VE1ҋ} 9W~#u 20PuB9V1ҋ} 9Wu 23P23\u(1t3Xu E+E E+Eu D} 8Lك8PtMMBu 9Vxuދ} LLJPLJTuމ`LJduFh8E} GGuމLLJPLJTuF} w }t G @EG }  ] LuuSR&]C }tuuS6&u1e[^_US]ShCt jShCB]U=O|/Oh4jt h4TZUWShS Ãu =O~ShNx'0H=%OtShN&;u?48hCh,\&;h4St&;:tjh4S t h4e[_UWVSE}E4=8t9D~*1҃PtCB9V~Pu+1$9V~E9DB9V2LWV3EPSW CLUCLƉw(e[^_US]8hOjS+O]UVSu ]=OuOh0Sh0VuVt C(UC(\Ke[^UhOjuOUhOu uyOUXWVS1EEIUUuLE9EuwU9H}E}ti~eEIMMULBu90Lu=EP@Uu9PuE~]IL@9LtË_ IAU ȾQщEE )؉EyMQx EQȾӉEHؾ<ӉEH]MȾӋEX}@}|<1u%ؾdׅuؾׅuE9IEm<}}O)؍ ȍ WU}wuEEWUEdU)‰UEEMK}KMK]ؾdE)ȉEԉؾ]ԉ]ЋE))E ÔUZurM|IB9|I UR4)uE@Pu94~UBEP @ u p$e[^_Uu]PUEU 9%1UWVS] M;| 3 Й׉)Wue[^_UMU A+Bu$A+BuA +B uA+Bu A+Bu+UpWVSE}ԋu j t@> t> u t21DžF>u <v F>t> uhOchQce-h ;tր#tjhbc  t  uzu t  u F> t> t>h> _hVhnhichnxƃtDž%jhmc  t   t  u F> t> t>> hVhn'j hnƃtnnnn1=nt@ns.> t> u  t21F>u> t F>t> uDžj htc  t   t  u F> t> t>> PV~nƂn5fnNjhc:  t   F> t> t>> >;>tQPh@cu9>;t4>|/vR tbD4%@uF>u>PZnhWh@cl؈F+v R tbD4%@uF>t >;t>}>Ptnl,oo igjhcR G t  1hcP@~ n%oo=nu:hVu"j.VƃtFPhnunnnhcƃt hcV n1[^_;; res_setoptions("%s", "%s")... ndots:;; ndots=%d debug;; res_setoptions("%s", "%s").. ;; debug inet6UWVS}u nVShj C; t; tjhkS uUCP$%oo onoPh$klmjh1kS/ u0nuVWh7k; n hXk'(jhbkS u n ; t C;t; u;e[^_UE|Ð%=tÐUjEP7]‹E3E1%UEPuu ÐEUWVSu]]=wUV11E 0u$FxtXuEE|4=wUV1tU|k}uj|f=w VV1tJك ]сv R tbD4%tEE FX.uE9E];]Ft,сv R tbD4%@t`E])É@wi$noonnnw(E:wEU"v11EU ЋU ǃ} t] e[^_UEU E EE EjjEPujEPt1ÐwwwwwwywbwPwfCfs [C$aC, bC(HbC bEt jjjS3؍e[^UWVS} 1=0et uUUOUZu0R$tU9Uuy=0etu뢐UZU29vSj V> t#@)U)ZSVu U&U)ZSVu ])hU=0etu-Ee[^_/usr/bin:/bin:/usr/sbin:/sbin:UVS]u EUM;tuQRPVSR<tp#{u%t:v%t0jh ~PYg!t:w u 1S$~@\@HtP\httttttttc wk, _SG;pe[^rUWVS}EGˁvQ8 tbL4@uӀ-u E+uG}t}u0u?xt?Xu _E}uE 0uEE}tEE1uUE1EÉEM쩀wUV1Ʌthˁv QO tbL4ۉفvS  tbL4tــ9M~?}| 9uru9M} EEuƊG*}}}tp"}tރ} tM}tOU e[^_UE@(@,(tbxb1UEU} uttb@0ÐtH UMU E}tt tB tUWVS}=Ru REPu ƃt1jjWz)à |ڃtE9tp1Dktfp Et ufH fx@@$a@, b@(Hb@ be[^_ yrUS]SCt K]UUfB f f t1R*US]=muCC uC uHC up C tSuc CCK 5{0t.C@9C0t s0RC0CEC P4'Ctw>t-6'KS ~ pX~tFC4~t F ~tVU~t~t ~uFCuSu1e[^_UVS]E H{4@}Ps&ADDDHK C$jP @PS9t LVS0S(uC,K@C<Й{@P&9C}CPSo e[^UWVSu14jV+ t=ptG04uVt u=p19~#8t8~C9ރtVUu1 =pe[^_USE} tp9tX4t%jjS* uSuǃ01]UWVSu4aFj h ҉F@SVbjjjW ut/hSWY t=tpOdž,O:1ې8t!jj^R8VuC~1[^_UE@}uuu jPÐpǀ,UEMPt tpǂ,upǂ,uu uPRdUE@}vpǀ,Ðtju jPpǀ,UWVSMq MIMM MjjuQu Pu$Eu=MMMMIMY ME9Mf{v9)9Euu׋MyEsEf{u juaf{uuuuuEbMMEPuf ju%Pu#E#X MEMq M9M} wD} r>uuuu} t~r,} t} MaMYMf|KwjuQuu&fMDKMAMMKDK)‹MQcuuu u;uuuut6$uuujt"$_Ma Ma1e[^_UWVSEMpt*t%t pdž,$|udž$dž(dž 1 uj$U9V(r:jjuV!t yf?uEdž(]9^(sƋU$9V(}dž$T x(Ef|GuEjQ]_PVw! ydž(EUf|Wtf?udž $f?f(f]f|Gwjuu QV4MO BU O]f}v DO)؉B ^ +]U Z ETGQ]GDG)‰SfEf]f9sdž $dž( U(1e[^_UWVS]C(K(MK(#K0MCu9\9s'C<PWP t!{jsX‹uNC(@P2ƒ9S }C DDDDS M9K,s C,C0 K,uuS7e[^_UWVS}u u<Ãt#V7SPE)PjP7؍e[^_US]uu #C,9C(}#C0]UWVSu} jvWtjNPwWÃupVNp8E9}})FUЍMAM9|1e[^_US]M CCACAACACACACAC AC A C A CA CA CA C AC ACACACACACACACACACACACACACACACACAC#A C"A!C!A"C A#C'A$C&A%C%A&C$A'C+A(C*A)C)A*C(A+C/A,C.A-C-A.C,A/C3A0C2A1C1A2C0A3C7A4C6A5C5A6C4A7C;A8C:A9C9A:C8A;C?AA=C=A>CEA?A@EEA@EAAEABEAC1ҐDDEEDDEDEEDFEDGfQfEEQEQB~UWVSu1Lhhxt#x=xttt Džt|uDž|}uE}uNLECDž|DžlDžhLUDžtEDžx}t }h$Ã!h$jSǃEǃ|Eǃj$}Ɖsj$jV; L9t ^FFF F FF F}tOM  tt uu u, *E  jj EPP}u }jEPt Q>}b1u  EdgEfEeEdEE`cEbEaE`EE\_E^E]E\EEX[EZEYEXEETWEVEUETEEPSEREQEPE}b1}E=EE_UxE UEdxu0Ex=w Džxxv Džxhu  ǃǃ xlt(xIltlBl!‰lx 9lsllJHH1H1tfffw fǃHjF  uShlhQdGStUE t @U@t }} Lp pOt.{t s贽t-S蔽1<[^_UWVS}jj7Gƃ tjV=ppEP7FƃtmEP7FÃtY}uSCCfCffCC jVjV7 IjS7I1e[^_TMPDIR/tmp%s/bt.XXXXXXUVSh߾uPhhSL DžPPjMS ƃ t S jPj$[^UEEt t ÐÐ1USEX{tjs3GC up]UWVSEX{tjs3GC }tpuEPu S:ƃ u V}uj63KG;jPujjVS<ǃ!@tj63GCe[^_UDWVSEU } uRpыEEEAEAEAAEEAEAEAEAAEEAEA EA EA A EEA EA EAEAfAfEEAEAfAfEEAEAAA 1f9fDQfEEDQEDQDQEEEBEBEBEEEBEBEBtEEÈEˆBEBEBEEEBEBEBfFf9e[^_UDWVSEU } uRAA 1f9DAEEEBEBEBEEEBEBEBtE؊EۈEڈBEوBE؈BEԊE׈EֈBEՈBEԈBfDQfEҊEӈDQE҈DQfFf9E̊EψEΈAE͈AËAAEȊEˈAEʈAEɈAEȈAAEĊELjAEƈA EňA EĈA A EEÈA EˆA EAEAfAfEEAEAfAfEEAEAe[^_UEUUUPUPUPPUUPUPUPUPPUUPUP UP UP P UUP UP UPUPPUUPUPUPUPPUUPUPUPUPUWVS}w~tjv6@F jWt6y@u ~tvF Ft"dždžt"足dždžV蓳W荳S1҅tЍe[^_USEX{tjs3?C } tpI t14 tS)u 3?u ]UVSujj6<à tUEb1EEEE UjEPS:jS6>1e[^0\r rUXSMU ӅtSvEfEfEMMUUPuEPaD…tEЋ]UjEPu`tUUS]jjS?1҅tډЋ]US]jjS1҅tډЋ]UuUpWVSu} t}tpgE;tC;uK;Xul}taE UEE0KUU;Xt;'EȉME41U EAE UGUM K;XtCEuK}tLC;/u;EPV/fEf%f=@tpK9wtDhh Vd |AӐaː=ptG}thV_t֐EPVjt=p%\];tO;ZuaCUw UVME}c;zR#1e[^_/dev/urandomUWVS}jEPiEjjh HÃ|jtEPSCS}E|1D9tGxx| G%L8L:GtL8F~h[^_U= Ru*1R@=~RR RhRUWVSu = Ru R1ېRRERREؙE}:R%R}RRRC~e[^_UVS= RuRRRRRRRRR%RRRRRRRRRR%R RRRRRRRRR%R RRRRRRRRR%R Ɖe[^UM19s @9rUWVS]1M 1CIu1׉e[^_UVS]u 19t@UCu9w0)ȉ ЍAAU=99u‰ȍe[^UVSE 1ɋ]p$0|iVC )ȍ C )ȍ C )ȍ C )ȍ C )ȍ C )ȍ C )ȍ C )ȍ CNaȍe[^USE 1ҋMX$(vi\OB5AAAAAAAAKuЋ]UWVS}EE}t$UZtM 9K t1ۃ}uWENGH#E EGu EU MEu 0uEuSuu Wà t"ju}%Pu sWt1E}u=M ًuU -C3FSC C؍e[^_UWVS}fEuFtIj蒧ƃtw 聧FuVY1RGFBV~ u F(Vf:t fDBfEFtjFPv vWuFtCGH#^ GV ꋇ0tFut  ~CCCE9C u|Sf:t fDBfECtjjs sWC CCBS@CXC{eM N F}tMqFFFF0e[^_US]E C HK}R]UWVSu}un{ uCt&t"CtjCPs sVu} t4{t sCBSS9u1e[^_US]E @@ @PQHRPBP]U4WVSExtjw71G tpn}t r }u G($<tpѐEM AMA9M 9QvMEPu W* tUUEjEPR@,jE PEP.,MMM M QMQ9vgEPQWC* )UUEjEPR+jEPEP+MM܉MM QU95}u%jw7.ƃ fOfM}tEPuu WEԃuEPu W"Eԃ pMԋ1fIfMЃ}u}tMjV7/}t2  t)EPVu W ujV7t/ MYM Y FV)ЍS9s%EPSuuQVW;Ff9EsE)RDFPPc* fFUfFf)fFfDV^M AMAM̈ CM q1S*M YMq1S*G($ <uG9ufMf9OrfGuY~u+UFH9uALJfMf"~u"f}uLJfLJjV7. } uMAP0W 1e[^_UWVS]} j3+ƃ uǃsffC MAG $VNM)ʃ9uCCxu~S ȃH9unCPWS$ƒ |ZtfC fC f0Cxu;f{ u4CPWSi$ƒ  fǃ%MCǃjV3,1e[^_UVSEuX{tjs3,C tpt tu S/sC(C(t j63*E tE@uCPEPS uFPujS5ƋUBuuRS1t-<%Pu3+pu e[^UWVSjM 1M1f+EPEPuc0M9NM;jVM1+1 E,M9t1ۅj3M1(ƃ SFH9ujVM1* G떐f[fCf]MfMfHMTEDF\0Mf@jV1;*jSM1(ƃtrfEOujVM1 *juM1'ƃtAM9M9vjVM1)EPEPuu r00NM.jVM1)1 E,M9t1ۅj3M10'ƃ tf{ujVM1+) G륐f[fKf]MSEDF\0jVM1(jSM1&ƃ!FfEfMMfMfHMOujVM1(juM1f&ƃM9jVM1W(jM1M1.&M %e[^_U WVS}EEPu Wà u1}ZP}uj37'E48E3CPVu W   t1FuVWjV7z'ESF9sSu W tSF9u8/Su W u2CPVu WhtPf{uEfCfKfuFt6jV7& }12jV7&jV7&VWe[^_UWVSE,}9t1Jj6}78$à XfvfuDC4FtF PW CuV;u!fC}ffCC Su[Su!0> }C؉)RPP f}f{EftCK fUfJf}tf91sf}f9fJfuCf+UfAf9sfEffJufCjS}7% } ?u(jW}7$1AjS}7$*1u u[uu u t؍e[^_UWVS}uF($ <u$F9uF9EuuWu VuHuDw8]Ct؃ PutCt$ Puu s3 GU)RPPff_uftwfufUOfuf91sffJfuGf+UfAfuf9sfffJufGuF($ <uF9u F9EsfN1e[^_U WVS}wg(E  } u;UUfEfEjjjGPPEPWEVU }t.UUfUfJfUEPu W= u NUBH9Es*UfUfBfUEPu W u N}uWUztNjr7a à tf]CfHfEEPu W uNejS7:" UBH9Eunzthjr7à u ]fEEPu WF uNjS7!EfEfF>jS7! UUfUfU}ujjjFPPEPW>uN1e[^_UVSu] {t(js6Gƒ t.CBjR6F! {t-js6ƒ uCBjR6!1e[^頡r逡r`r@r trU8WVS]fE fEM 9uSEPEPEPQubSEPEPEPu uƅUfFf)fFfDVF0} }$MAM C}w7S) >MA}GM C}w7S_Mq1S} ?uVM }*uuWQ5,jV}7K {uuu uE,M9t1ۅ.}}؋MMj3}7ƃ Lf[fCf]MԋA tCw t }GE M}GE܋ Mȋ}ti@uc~uf}vVMA$TʋE U}܋E }EPEPMЉEЃ $9EvE"EE {FV)ЋUȃ9sTu >uuȍEPEPEPu uuȍEPEPEPVu(ƅE<Ff9Es%U)PTVRR fFE}ԋG t`w tJUfFf+EfFfDV%0uuS3MԋC UfFf+EfFfDV%0}u }܋MЉ }ԋM܊I CEЅu}܋PE܃ PS MAq u= f}tEDF0EPD]u- }؋CUfFf+EfFfDV%0uMԋCf}tEDF0EPD]}GCUfFf+EfFfDV%0MAC}} ?u7M }uuWQuuu utGju؋}7ju7juM1ju}71Nju؋M1juԋ}7juM1tju}7ew}e[^_UWVSEPu/ƃu 1VEfFUffFM AFFQ V yu:M U B9u$BfFMfMU2M芌ǃujVU21M GAGfGUffGI O U zt9jrM1-à u W1]CjSU2 uuVWu uËMWu \$9u] W謌M U U2؍e[^_UWVS}EPWƃtEPWÃu1eEEFCCFfCfFffCfFU B C F uuSVRWU2Ue[^_UWVSu }UfffFfFF0G t G W"CfFffFfFF0UB t B uUCfFf N jVU21e[^_UWVSu UfffFfFF0UCF ttUBNj fFf)fFfFF0C7G PSD Gtcw uuPfURU fFf)fFfFF0QRSUC #fFf N jVU2U1e[^_U(WVSEUffUMfffMffMfEfE1U BfEf9E`fMf9Mu]EU B t6w ttKtfNjM DAƋ NjM DAƋ^ VUKNjM DAƻE+NjU DBƋEϋfMf9MwEDU9s EH9ufMcfUf9Ut)fGʋUfBf)fBfDJSVBP( fEf]fMf9Mr}t}tEfEf9}EEUfB]MA(t3AU 9u)fUf9QrfAf9{s M Uf){fMf9MwfEUU MMUf):fEf9}f9}u fEfEM A t2wtyt?tRlNjU DBƋ ÀYNjM DAƋ^ <NjU DBƻ&NjM DAƋ fGUMfAf)fAfDQSVAP fEf9} EUfBfMf9MufBEe[^_US]ju 3 tH jP31]UVSu11Ff9sDF0fBf9r؍e[^UWVSE} uX{tjs3YC FwW$`C(tVEPSƃ (VWEPS|ƃp[uREPE0SjPuPWEPSZƃ(!@tju3ECe[^_UWVSu} UEH*$Lpmmmm:tzupEPWRVjS6ƒ tBt*B uB\jR6 ŐfG{jR6jjS6nƒ ^BtB u$B$D\jR6L 뷐BfHfG1e[^_UWVS}_G(tEPu GPWj37 }t} tPCuHfsfFA9YjQ7 tMjS7z tT1eCtcU fCfBUfsfu>YjQ7V u0jS7& uAfNU fr1e[^_UWVS]Su uE ;-M  t}MQW}MOME}?9t"jPM1}MOM fM}fOfM}fum{M9tjSM1G js}7 à u E9jP7MSfQ}fOWu uC ,M9t jSM1 }MMOu}MP9uJËsjS}7 u UG9utuu WuvuMfMUfJ ENfuftfNUMfpDG\8jW1~ e[^_UWVS]u }jv36 E u1MfEURuS tju3 1#jV3 UMSK e[^_UWVS]u }jv3E u1YURfJfUURuS tju3 1#jV3z UMSK e[^_UWVS}uU M ADBCt&FPVGPC Pun} u U!@tR9Fs.>uP|363~F3C P6 G GK }Ct6EPuEP PuuWUM} u U!@trC@M9As>9u P{C@PU2u}u KMSBQs PM1;CUBMCUB É1e[^_UVS]EfxuzuB u 1B t@DB@u@DB@tH p uEt2PPEPQSt EEPu Ѝe[^UWVS}u W9VsV8t)‰ACJuG+Fe[^_UWVS}W} 9WsW}} 8tCAFJu}G} 9Gv@e[^_U WVS} ]ujWEPjGPEP{EU9Ev9>uuyu6R{u tEMUU>juM1ƃ tË]9]s]SFPWjVU2yE)؉Et ߋFE1e[^_UWVSE UU1M@EEPuÃu ECCC fCfCuU9vuVuCP4 tGjWM1 U)utMMgjSU21e[^_UVSu] jSEPjSEPju6+ƒ$u UB tjR6 >쐐BERV9]vju6ƒ t)]ѐ1e[^$NetBSD: bcopy.S,v 1.6 1996/11/12 00:50:06 jtc Exp $VW|$ t$L$)9rL$D$ _^ONL$D$ _^UMU BB jR1UVS]u t4j3ƒ tB V3 e[^U`WVSURu ceufUfftp1kh(jÃt[1ɍTTT A~u u1QRUԋMRQ}u ؍e[^_USEU M] $]mpool_new: page allocation overflow. UVS]u uhhdm8ySNu1XAAAHTQ9RuJH YCA 9u CHKAe[^UWVS} u9w)p1ZSuu u!ÃSJ}D9u SP SQ9CtKC9@uXZu9su S V KS Q }9{ gK SQusVS }9>u uVZ}_KuÃU u1u}juu}2~9E9Uus| 9tpO} {CSJuDC9@uXZ}{WS u97u }WZu^tss$ҋCe[^_UE `UP1US]C9Xu @ C P@ B 9X u @P @BQgs 9uSXs1]UVSu9t%CtSVu[9u1҅tЍe[^UWVSu9 9Cu~CtSVCHL9 u CA CB9Kt;S9su C F SC B 9s tS CBCCƐ[9qPNqÅt{{1e[^_UWVS} tM qq$ ҃ ] S1ۉM]juuS{9Eu/9Uu*] sy9u c1e[^_UM AU‹9t 9Ht9u1~_rUVS] ]SpƃtSVbe[^UEPu uj$Id: bzero.S,v 1.2 1995/01/23 01:28:52 davidg Exp $WS|$ L$1~ڃ)Ӊك[_US] {tSu)CC C1]UXWVS}fW fUfGfEGEċG,EԍEEEEEuu uVVà |VWtE@tO @؍[^_UVSUE]M t tStgy w I0svIо 10АI 0uu t+ RP+z3 PPƅ9}t t9} +~KbFEE}~uubNME}~uhutFEF tcƅ0fffff FEE}~uu +~LbFEE}~ujubNME}~uG u)~KbFEE}~uubNME}~uu u~}6e݅D@$9  uFEE}~uu K~JbFEE}~uub3$FEE}~uDu$ۉ~LbFEE}~uubNME}~u|u V 1$9   V ME}~u2 u$+ ~JbFEE}~uubNME}~uhu UFE$V$]E}~u(u$FEE}~uu +$VUr   Cƅ.FEE}~uS,u݅E@t% K^UJ U I~KbFEE}~uub^]FEE}~ud=u]NME}~u+u +~LbFEE}~uub^]E}~uzuW}tuSu0Eu%}tURu*uE]C @t Dž=0et u 9,t09,t ,+P[^_U(WVSMMEEEEjjPZ MMMMܐM%t EMuE1MAMBX_$88888888D88ddddddddd8888888888p8p888888P88888888888888888ppp888S88881ҋuҍDFЃ v>$]9]uuS EC9]}]]jMAM*1ҋuҍDFЃ v>$u7]؉9]uuS! EC9]}]]Fu9]uuS EC9]]BЃ MAMBЃ vj1DЍ4MAMBЃ v$@/'@ 9]uuSK EO t!9]uuS  E $t 9]uuS E@t 9]uuS E9]uuS Et 9]uuS E9]uuSg E k t 9]uuS? E Ct 9]uuS E @t 9]uuS E9]uuS E t!9]uuS E t 9]uuS{ E@X9]uuSO ES9]uuS/ E39]uuS E t!9]uuS E t 9]uuS E@9]uuS E t 9]uuSg E nt 9]uuS? EF@t 9]uuS E9]uuS EC9]g]_T}~MP*HMM9u|MM Ewa$E E E F9u}}tE9Etu`He[^_UWVS} uUUuSHG6PuSWH+PjPRe[^_UWVSMu fuetEuE]EuE]-EPEPuuRu ugtGu]tYUʃfu(90uEE@t +}];]ED@uU E0E9Ur})ϋ]$;ȍe[^_U4WVSuU E^}F-^+C ~1Iп 0ƒ I09sAC9r 0C0C)[^_UWVS}M ysG tuW+^M M MMqMG t[M MMqMtvPuwG,ЉÃ ])ދM A)؉AuG M MMqMt_G t#9s~Su7P )_k9Gs)9v%SuPP W@-e<_9rSuwG,ЉÃ @Su7P )_])ދM A)؉AQEEu EM MMqMt}u/Vj u/ƒ tEH)‰U NMEE9s__9Ws%9~!SuRO WD,um8_9|SuwG,ЉÃ ~LSu7O )_)]uW+u!E])ދM A)؉A1 O @e[^_UWVSUM ]u}ڃىUM UM1}ىكۃىURSQuu,EUt؃ڍe[^_$Id: isinf.c,v 1.3 1996/07/12 18:54:26 jkh Exp $U1fEf%f=uE u}tU1ҋE %=u }u$Id: memchr.S,v 1.5 1995/01/23 01:28:58 davidg Exp $W|$D$ L$uG_Ð1_$NetBSD: bcopy.S,v 1.6 1996/11/12 00:50:06 jtc Exp $VWt$ |$L$)9rL$_^ONL$_^UVSuSt S P@‰rZBB Ѝe[^UUtBSBSU WVSuVU^EM ME UȉE}9}|ƅtE9~2F@PËVK ~ PWQFL VMދ}U|BVe[^_UWVS]uEE E1E~eAE9EQqA } ~$ PCj Q F9u C PCj Q F9uȍe[^_UU1uuuu|@@u ÐUMt't1Ðt 1fuuuuu @u ÉUS]jBX@]U4WVS]u C9F~]uCSUNMʉU9S}@PEǃUU9s9}w]M Mu܋UU؋MM9UUt]}uEEEEЉUEȉÃUf^fMf9}wU܋Ut`}uEEEEЉUfMfNfEЋ]ÃM9}wEEU9UMUt~$>uIM~ M}~>tMUJEe[^_UWVS} tj4buE th\Suhq\StSuuUu tuSS뿐Ee[^_UWVS] MqyG}A9~ F9EVEM19}}}@9|UMIЉEe t: +u 1ۋM ؋}}9UwމtE}}9Uw}OMyuAEe[^_UVSMu VA)u9YD0 9t9v9w1e[^UWVSuu VÃu"j_E@UB}uu }} 1v"EX VU<}U U} ЉEM1ېU)؉E}?)؃EfAfUf}9}r9uv:؉E؃fAfUf9uwM9t}UzEe[^_UM ~MENEE.E)ȉEEEUWVSEPU@tSǺ )M  5 ) ?E9usF1O ) r9us MEtH] )U ? ؉E9us^1ۋU ) ?]UUEe[^_UWVSjEǃM Me u utMEEtTEPÃt )؋u EmEEGtuVU'EPoËEMAE }tuM5)ًu,uMut‹E)ЋMEe[^_UVSu] EPV]EPS]U+UF+C…~ E )EEue[^@?5?55?5?UWVSEEEEEMM]+t ^-uEEM9u9>M=vPU$ tbT4@tE뙐];0u'EC];0u EM90t]; MM1EE1F|9HMʋ|TЉU|tGE]|/}ȃ|.EM |uH0uEE]|0t鋕|σMM]]E|E|toMMĸ9})G]Ӊ] @9E؉GMы|ىM |EEM |ʃЃ hE|et |E)u}u }-MMEAM|+t-uEEM ||Ѓ |0uE]|0t싕|σ|ЉMEE]|/~5|9)Mʋ|TЉUEM |/΋U)ƒ }N~ EN]]ԃ}t]E MMu"}2}(]]M)Mԋ]ԉ|}u}ȉ}̃~EM1SQ,$U} ~#] tb]1SQ,$E]؃}}~Q}E] ݼb])P9UE)EE żbUM ͼb]Y}|UE4ռb]9+U|||t E żb]||4~#p"e eUM|1҃|~(|t E tc]Bѽ||؁EE tc]u|t|vEEEP|||t E4żb]||1҃|~*|t E ՜c]Bѽ||EUE ՜cUD@uiU ՜cUD@u:EEp"gUMRQwE]%EEuWuuE]sxEK RSP; URURURURbEjE}|Dž|1}ԉ}]ۉ||E1}|u+}u؋EEH=} U3 6+U׉9~9E}E؅~)))E؃|~,|u*EuuTu]~VuE}~uuE~WuuE}~uu^EuuNjO |G uW}C|^}TEGjWuW\(|t7Uu^}uXUUEEu/}u)]]]EE|QUMRQmUE@ duW']4']|tEE?E}u Et1}u }EE?EEO]EuEE?(<'M]<'MU]|uE]MMupUMUMEUMRQME]U|v'}u }iEEEPv}@wQ]È@s@<'E}M Mm$ZmR$U|u ]؋UMRQME]u9uukE}U UmUme]|u}u Et&D']EtJL']Et7T']Et$uuuWuuuuW} t]M E}tp[^_U WVSE @Eu9F} 1E EMuuE]ߋ@E1uEEEuuEMuUE3)֋ME3U)։‰EfSf u9uv?u#]M9v?tEuFu uMEEE]E E쐋uu‹MUE3)֋ME3U)։‰EfSf u9uv]Ek}x5U4մbe]E`5E}M Mm$[mES$$]0UBUE]Ee]EEЋM9ME]E]끐EU մb]Ex5E}M Mm$[mES$$]0UBUM9MuDEEEEeEu7JU:0u MU:0tEE`5M]l؋MMUUUU MMUȉŨ},}"Mͼb}}:}4EE}lp5]XcEE}U Um$[mS $m]ـ0U BUM9MufEUEt)D@M9Mt$MU:9tMAMEU0`5MUE@E2M܉MuEE}tj}%}tU3U;6+MM-]K9|) )]]1ỦUЅ} )UEMMjwE}~~UU9~}ЋM)M)M)σ}~N}t7~'VuEuuHu]])tSuuEjE}~uuE},}uE uE t EGEE}t+UR|Mt W )ƒU OMЃ}t +UЉUЃ}~EMMM}EUUU׃}~uuE~WuE}tEuud}3Mjj uE }tjj uE MĉM̃}T}~N}|&jjudEPu؋U҉U؋M1AME}}~uuEUU}tArwEMI| U QRP) ju|E Euu0Euu$OQQPQQQQQQQQQOj& YYY= eu  e% e j8YYe[^_UWVSE]1 Yt79Yr+uq9tABQMqY)Y u uSƃt[ + YY9s=Y} }B9r=Yt PhV }t=Yu}=Y u0e[^_U WVSEwEHEuYM<GhE'ME9~$uƃuu1uMfFfMfN MfF fFMN~1ۃv2D )؃wك DC9|9vu<1ۃ}~4M琐ك!DfN fN)}C}ًE +YY4M4u1YM{{u?t1uFt1fK uYMG)K =YtCPhCPTCe[^_allocation failed. UVSu=Yt 9s1wVVÃ=Ytu hV*=Yt t VjS؍e[^junk pointer, too low to make sense. junk pointer, too high to make sense. modified (page-) pointer. modified (chunk-) pointer. chunk is already free. pointer to wrong page. UWVS} =Yt E +Y w hV9Ys hVY;u\Ut hV;t=Y99E;vw@HEth WiE% q UЋMDt h(W/p=Yu)9s%9wu|h@W19WÃt&tt9sVWuS u[؍e[^_page is already free. freelist is destroyed. malloc() has never been called. U WVS} =Yuh Y=YU +Y whV9YshVY{EuhX{th@WueMthV[KY|uY2B2<t =YtVhu =YtjVu }}=YujYYMH}x p=Yu@YYMMY}9{ s;t M9K r}9{vYSPCPkM9K u8s s;t{C 9BuhUB C }{MtTXF}9{u sMK2;uYXYhX";C9 eswC 9Yulj!9YuZ{= e{ eCs C Ys +5YN Y9wYB9Ys}'uuK CHEth WDth(W=YtCPhu  DfC C 5Yf{ u7>t)E8t}}B9CvutU:uJfC f9Cu?9t69uC +YYs9t SVe[^_ in malloc():recursive call. out of memory. U VSu=0et heYQ]Y=Yth_] Y1=Yu~=Yt u1 V.Ã=YtEu]j EP Y=0et e=Ytu hp]Y؍e[^ in free():U S]=0et heY\^Y=Yth_] YHSr=Yt]EEj EP6 Y=0et e] in realloc():U WVSu} =0et heY_Y=Yth_] Y1t=Yuh Y1=Yu=Ytu V1ۃ uWrÃWVÃ=Ytu}]j EP/ Y=0et e=Ytu hp]؍e[^_UWVS}tw=pul+pU XM9t 9=tA9u+MM=p/Mut;t AC8uNuuC<=tu1e[^_UWVS}tw=pul+pEZM9t 9=tA9u+MM=p/Mut;t AC8uNuuC<=tu1e[^_US=YtYEj]Sjj6PjjOjSj(jPj~UVS]uu SRƅ|UMECPECTfc e[^US]C tjjjCPfc uu CP]US]uUM RQSRuu fc fK CPST]UE@P\UWVSEdt.w_Kxf~ t VU EXKy?uՋEe[^_Uu ht,@uU,WVS]E Ut}ԉ MU$t t +t!Rht,Rht,Rht,S`pe[^_UE EEPhvtu'UEPhwt@u |EøUE@(UE@$UUE B(1UUE B$1UUE B(B$1UE `` a_`H @ @!US]EEjh{t SW t'EPjjjjjhzt S1t1]Ujh^t u UE tt -t%E/E#EpÐEPhtuU0VSu] tt hcjhot jhnt V_TEPVzt ǃ!@tj63yCe[^_U WVSM9vYurMMu MMEEMM 9MMMHyMt NuDttVMPWs jEPuuK*4E؈Gzt M 9MWM 9Mr1M e[^_UWVSuM싎MM 9MM𐋆Hy:t9}uAE+EujEPuVM)t~}u_f+EuPDtÉȈCMtEM 9MM 9Mr1 e[^_UWVS}9vbuu EE uuW9]vvt"CAJ9]wtRPQ jEPuW'VEu 9ur1e[^_U WVSU UU9u v[9rU N]9s9EtC9r+UUjEPVu't CF9u wU1e[^_UWVSE} uX{tjs3 uC t t!Kt@9rHPS\BC(t&u 8C$HPS5u'K$pu e[^_UWVS}ju W  u 6@PSW.ƃ ujS7;t1jS7*te[^_UWVS} uDw8]Ct ؃Puznu GU)RPP+of_uftwfuOfUfuf91sffJfuG$D)ȉfAfuf9sfffJufGu1e[^_UWVS}_{tjs3"sC jWur1!tt!u. @tK tW1ue[^_U$WVSu^{tjs3crC } ujV2k 8t1N!ujS҃(jjjW {$EMM!tSjURURVV҃uuW 9EjURURVV҃tUMEj*U܉UUUjUR UB 9u\jURURVV҃t{$t=jjjlutRP"u 1e[^_UUM RQjujhUWVSu]}tlw@ujdjdžjEPkC M QDPCt%PPGPCPVhuCp!@to@9sCu P@P%u ? A3CPjG G1e[^_UWVS}w,EEju7mƒ B tWfu f+ufw G)1BfEDBfAf9MtE9E rEސu0fNfp[]}t r}t([DB jDBjjR7jn &5pu}tiG,9t1ۅtFj37 lƒ t2}uCDB CDBjR7m 뙐u5p1e[^_UWVS]U f;ftCf+rr2P ifGf4CMf+qq1PhfGf4Cf;Ef)fLCftCe[^_UWVSM qMMf|Nwu u}t MfDNMfA NjMf+|NEH9ttDFEËM YڋMDN+EPSRf|sTsE)PUREPffsf+DsMfKf|K f|sE2DsEԉEsDs)‰UEPEPufE fLsfM܃90fMf) Ef)fLCf|CMaMa1e[^_UDWVS]]܋{][]؉}Ef]f]ffKf]f9c]]]]fwyftrEPu ]s Suuuz]]][]ԋ]]][]؋]]܅]܋{]Ef|Gf GfEff)Uf]f)f\Wf]f\GjuPu^3E܃0]܋{]f[ f]E}tuu ]܉]Ћ]f[ f]fEf]f9&uf|w w]Mw)MDwEwDw)‰UftwfuQSu 9E uS]f{vEETS9vuuMEtS][]uuS ]Y]f{vEETS9v&uuEuR][]uuS3 ]KfEf]f9f]f9}t uu 1e[^_UWVSu] KEf9fyv fM E9E&]u f^fUU^UT^C]9~݃}t/MY<]tWR)UuT@QUL Kuv<]ڃtR)UuT@UjӉ]uuF]u]uuuu.ut'uu ukt9Eu1pOe[^_UWVSUr XǃtkMuNFSjWUB )PhSE\f] UMfQ81e[^_UM1t@vHASH: Out of overflow pages. Increase page size UWVSUz DDHMZ}HER H!EMq$u9uU8UuVuE 9uu MMUR HE9uu&MI HËU#Z$yC11M<@ 9]}F9udUDDB$DD\Dt+\@~2G~j1hʉj>]My P@TDH@MI H9EuYE}uj PuUDDC~TGMy P@TDH@17EE}E}$M)ȺЋM U4ÉyCE؅}C$)ȺЋMU MI ƍ\U9Z$KJ$19}U9\D}F9|tM+\@f f%1e[^_UWVSu} fG f ft‰T@JQ9V$~V$N~ H!Ë8u QVpƒ؅}CE؅}C$)}!u V+e[^_US]EEPEPjheNthejjjEPj1u]U WVS]f fMfLCfM}fL{fMftCM f+qft{q1P XMf+qf4{q1PWfMff fMfL{fD{MfAfM fAfMf)fLSftCe[^_UVS]u 9~Qs 8t;jjjsP8Su 881e[^U WVSEU z}M@EUUMIM9E}EfEfDGf+EfE]SuEEPV)]]7FfUfwFf7΍uf)fTOfUfTGfwu uE H7}usf|wtdDw9E}EfEfDGf+EfEfw]SuEEPV])]fDwfMf)LGfUfTG fDwM y}If\Gf}9E}EfE9EuMU9JufMfDGf+EfE]SuEEPyU)]]7FfUfwFf7΍uf)fTOfUfTG }t0fwu uE u 3M y}fwU Jf\Gf}%1e[^_U WVS] ]1KEfAffwEfyu f|AuHfDAKjS%Pu#Ãt Vuޅt9K}tfyuUfDQ}O~fAfACGsUBEf}f9NjUUU}f f+}f|AUfR fJfTA}Ot SuF9t Vu6UJ81e[^_UWVS} w}}}}}fW }f+~‰9E|h}f|{uZ{ƋEugE)Eju }D{Pu!E tFpE}fW f+V9M}9Uu}{ƋEщt Ee[^_UVS]u Afxut)fuǃ $ju DFPSt  @f8uK$ǃ 9ju DFPS,ƒtQuEEPRSǃ~7EM 9A u!uFAPEPKOpe[^_UVSu]uuju V Ct 1e[^UWVS}U rFW )‰UU fR fU]]fFffwKtSuuju Wt7iju DFPWtKuuSPWOÃ~4EU 9B uuFBPEPNpe[^_UWVS} ]jEPEPSuuTuuu1 9E%EEPufG ft(ju%PuGuGE }tEHXXfLCfDCfEf3fFfUfCfFfCf3fLCfUffTCUU WEXHf;vIfsfTCfUfLCfffTCfLCuu6fsE}tG1e[^_UWVSEuX{tjs3PC !F9D9vHu~v6K+FPPFPEE EFE} U$̚$$ؚ$$$C(tRs$aU 0uUEGU 0t%7U 0t9r-p9! uVSЃtϋ@9!t5EtEPPu EE@9v(}jWSmL@9w!t ujuEPFPS2u!} us$ ju VjSe[^_UWVS}Mu9FvBEPVQG MMEEEuFEEMMEM u9rGwPu ug tAf@fEt=t>>>c>Z>8>1>>=====q=k=9=3==<<<<<a<\<-<(<;;;;;;l;b;B;7;;;::::r:h:I:<:::9uh`UME;1& ަԦΦ¦yj\TME@90!ޥ֥ͥ¥~umeYQLG@l&1||32@@"3##3'4'43(5(536^^0773!8!839{{30}}3))0-_-_3  waAaAzZzZeEeErRrRtTtTyYyYuUuUiI iI oOoOpPpP^[[$*]] qQqQsSsSdDdDfFfFgGgGhHhHjJ jJ kK kK lL lL mM mM%'"||s``0wWwWxXxXcCcCvVvVbBbBnNnN,?,? 0;.;.3:/:/3=+~~3** ** 3 '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0\\%1=I&2>J //////// **KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVWWWWWWWXXXXXXXXYYYYYYYYZZZZZZZZ31!!32@@3##34$$35%%367&7&38*8*39(9(30)0)3-_-_=++3  wqQqQwWwWeEeErRrRtTtTyYyYuUuUiI iI oOoOpPpP``3[{{ aAaAsSsSdDdDfFfFgGgGhHhHjJ jJ kK kK lL lL 3~^~^3'"'"3]}}zZzZxXxXcCcCvVvVbBbBnNnNmM mM ,<,<3.>.>3;:;:3** ** 3 '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0J //////// KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVWWWWWWWXXXXXXXXYYYYYYYYZZZZZZZZ/??3........l1!1!32"@@3##34$35%5%36&6&37/{/38([(9)])0=}=3+?+?3'`|`3  wqQqQwWwWeEeErRrRtTtTyYyYuUuUiI iI oOoOpPpP3"^~^ aAaAsSsSdDdDfFfFgGgGhHhHjJ jJ kK kK lL lL 333'*'*3zZzZxXxXcCcCvVvVbBbBnNnNmM mM ,;,;3.:.:3-_-_******** '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0\>%1=I&2>J //////// KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVWWWWWWWXXXXXXXXYYYYYYYYZZZZZZZZl&1?2~"3#7'4{7(5[7-6|77`7_8\59^70@7)]7=+}7  waAzZzZeEeErRrRtTtTyYuUiI oOpP[{$]} qQqQsSsSdDdDfFfFgGgGhHhHjJ jJ kK kK lL lL mM mM %'@||s*#~3wWwWxXxXcCcCvVvVbBBnNnN,??;.,<3:/.>3!/?3** ** 3 '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0%1=I&2>J ////////********KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVWWWWWWWXXXXXXXXYYYYYYYYZZZZZZZZl1!1!32"3334$4$35%5%36&6&37/{{38([[9)]]0=}}3?\\'`3  wqQ@@wWwWeEeErRrRtTtTzZzZuUuUiI iI oOoOpPpP1+*~~3 aAaAsSsSdDdDfFfFgGgGhHhHjJ jJ kK kK lL lL 33^^#'#'3yYyYxXxXcCcCvVvVbBbBnNnNmM ,;,;3.:.:3-_-_** ** 3 '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0|3%1=I&2>J //////// KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVWWWWWWWXXXXXXXXYYYYYYYYZZZZZZZZl1!1!32"2@3334$4$35%5%36&6&7/7/38(8(39)9)30=0=3'?``?^^3  wqQqQwWwWeEeErRrRtTtTyYyYuUuUiI iI oOoOpPpP[{+*]} aAaAsSsSdDdDfFfFgGgGhHhHjJ jJ kK kK lL lL @7~#7\|~~3 zZzZxXxXcCcCvVvVbBbBnNnNmM mM ,;,;3.:.:3-_-_3** ** 3 '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0?%1=I&2>J //////// KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVWWWWWWWXXXXXXXXYYYYYYYYZZZZZZZZl1!?2" 3#74$75%?6&?7/{78([79)]70=}7\5-_?  wqQ@QwWwWeEeErRrRtTtTyYyYuUuUiI iI oOoOpPpP}]3'?~7 aAaAsSSdDdDfFfFgGgGhHhHjJ jJ kK kK lL lL |\3~[3^*3+*`*3zZzZxXxXcCcCvVvVbBbBnNnNmM mM ,;<;.:>;/?** **  '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0|7%1=I&2>J //////// KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVWWWWWWWXXXXXXXXYYYYYYYYZZZZZZZZ~1!1!32"2"33#3#34$4$35%5%36&6&37'7'38(8(39)9)30~0~3-=-=3^~^~  3qQqQwWwWeEeErRrRtTtTyYyYuUuUiI iI oOoOpPpP@`@`[{[{ aAaAsSsSdDdDfFfFgGgGhHhHjJ jJ kK kK lL lL ;+;+3:*:*3]}]}zZzZxXxXcCcCvVvVbBbBnNnNmM mM ,<,<3.>.>3/?/?3** ** 3 '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0J //////// KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVPPPPPPP\_\_ \|\|l1!1!32"@@3##34$35%5%36&6&37/{/38([(9)])0=}=3+?+?3\`'7  wqQqQwWwWeErRtTyYuUiI oOpP}]3^~^ aAsSdDfFgGgGhHhHjJ jJ kK kK lL lL |\3{[3|3'*'3zZzZxXcCvVvVbBbBnNmM ,;3.:3-_******** '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0%1=I&2>J //////// KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVWWWWWWWXXXXXXXXYYYYYYYYZZZZZZZZ31!32@3#34$35%36^ޞ7&38*39(30)3-_ߟ=+3 wqQёwWחeEŅrRҒtTԔyYٙuUՕiI ɉoOϏpPА[{]} aAsSӓdDĄfFƆgGLJhHȈjJ ʊkK ˋlL ̌;:3'"3`~3\|zZښxXؘcCÃvV֖bB‚nNΎmM ͍,<3.>3/?3**  '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0J //3 KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVWWWWWWWXXXXXXXXYYYYYYYYZZZZZZZZ3!13"2'33*43:53,6ޞ.73;83(93)03-_ߟ=+3 wёחŅҒԔٙՕ ɉϏА ӓĄƆLJȈ ʊ ˋ ̌333\|ښؘÃ֖‚Ύ ͍33/?3**  '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0J //3 KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVWWWWWWWXXXXXXXXYYYYYYYYZZZZZZZZl31!~~32"3#^^34$35%36&7/``38(39)''30=3'?+*3  wqQ\\wW||eEeErRrRtTtTzZzZuUuUiI iI oOoOpPpP aAaAsSsSdDdDfF[[gG]]hHhHjJ jJ kK lL 333yYyYxXxXcCcCvV@@bB{{nN}}mM ,;,;3.:.:3-_-_3** ** 3 '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0<>3%1=I&2>J //////// KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVWWWWWWWXXXXXXXXYYYYYYYYZZZZZZZZi1!||32"@@3##34$4435%5536&7/778(8839)880=993'?''3'`3  wqQqQwWwWeErRrRtTtTyYyYuUiI oOpPpP`^[[+*][ aAsSsSdDdDfFfFgGgGhHhHjJ jJ kK kK lL lL ~7{3\\}}zZzZxXxXcCcCvVvVbBbBnNnNmM mM ,;,;3.:.:3-_-_** ** 3 '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0\>%1=I&2>J ////////********KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVPPPPPPPl1!?2"@@3#74$75%?6&?7/{78([79)]50=}7+?\5`?  wqQqQwWwWeEeErRrRtTtTyYyYuUuUiI iI oOoOpPpP}]3^~7 aAaAsSsSdDdDfFfFgGgGhHhHjJ jJ kK kK lL lL |\3{[3\|3'*?zZzZxXxXcCcCvVvVbBbBnNnNmM mM ,;<;.:>;-_/?** ** 3 '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0|7%1=I&2>J //////// KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVWWWWWWWXXXXXXXXYYYYYYYYZZZZZZZZl1+32"@@3*##34435%5%36&37/||38(9)9)0=0=3'?''^`~~3  wqQqQwWwWeEeErRrRtTtTzZzZuUuUiI iI oOoOpPpP[3!]]3 aAaAsSsSdDdDfFfFgGgGhHhHjJ jJ kK kK lL lL 3{3?$}}yYyYxXxXcCcCvVvVbBbBnNnNmM ,;,;3.:.:3-_-_** ** 3 '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0\\3&2>J&2>J //////// KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVWWWWWWWXXXXXXXXYYYYYYYYZZZZZZZZl1!``32"@@3##34$4$35%5%36^^^7&[[08*8*39(]]00){{3-_||=+}}3  wqQqQwWwWeEeErRrRtTtTyYyYuUuUiI iI oOoOpPpP[{[{]}]} aAaAsSsSdDdDfFfFgGgGhHhHjJ jJ kK kK lL lL ;:;:3'@'@\|\\#~~~3zZzZxXxXcCcCvVvVbBbBnNnNmM mM ,<,<3.>.>3/?/?3** ** 3 '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0J //////// KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVWWWWWWWXXXXXXXXYYYYYYYYZZZZZZZZl31!1!32@2@3#3#34$4$35%5%36^6^7&7&38*8*39(9(30)0)3[{[{]}]}  w'"'"3,<,<3.>.>3pPpPyYyYfFfFgGgGcCcCrRrRlL lL /?/?3=+=+3 aAaAoOoOeEeEuUuUiI iI dDdDhHhHtTtTnNnNsSsS-_-_`~`~3\|\|;:;:3qQqQjJ jJ kK kK xXxXbBbBmM mM wWwWvVvVzZzZ** ** 3 '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0J //////// KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVWWWWWWWXXXXXXXXYYYYYYYYZZZZZZZZl31!1!32@2@3#3#34$4$35%5%36^6^7&7&38*8*39(9(30)0)3-_-_=+=+3  wqQqQwWwWeEeErRrRtTtTyYyYuUuUiI iI oOoOpPpP[{[{]}]} aAaAsSsSdDdDfFfFgGgGhHhHjJ jJ kK kK lL lL ;:;:3'"'"3`~`~3\|\|zZzZxXxXcCcCvVvVbBbBnNnNmM mM ,<,<3.>.>3/?/?3** ** 3 '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0J //////// KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVWWWWWWWXXXXXXXXYYYYYYYYZZZZZZZZ2к(  (2<FPZ QPiP_PWPDP3P*PPPTcbLb;bb|o baaaa($uaNa(7aaa`(t```r`(,]`4`(!``(__`N__(s_H_N*_^N4^^Ox^z^@O\^,^ ^]]](p]j]c]M]$]]]\\\\\o\G\>\,\\"[[h[[[S[(A[[(v [Z<ZZZ"|ZVZ=ZZtYY(YYYvY(؀bY:YL4'YY@XXL0XX.oXHX15XX=WW9WW@=oWJW؛.W W(|VV<VVVLVpVLV(P\Ciiihh"h}hvhgh>h9h*hg po onnnn}nunUn@n3n nmmmmmvm`mVm2mmmlllllqlGl-l rrr_rHrCrrrqqqqqvqmq;q%q qppv*tts(prss(ssssesPVs's y xwwwwvwkw4wwwvv {zyf {0{ }{{f ܔfl`5+ԓ{cM ђmY.ڑőq]2#ԐoD2͏|Q?+ގ`P=tdQ'یɌzg=*؋ċrG4 Ί|QA.l\Iӈta7&և‡rG6"҆\K7 mYE ΄}kW,"΃ye:"˂}j@.݁Ɂ|SA-݀`UB ~p\1%l~~~~~u~M~>~-~~}}} X(f ,Y# OI9.=͛@=d1V=@'=ÚL0L4|[< t`,`NNɟN4ZOxI@OמpOTƞ(>>>VOpF4 ԝO<<< å$[X]$[X]_$[X]V-$[X])O̤$[X]Ȥ$[X]@$[X]|e$[X]a7$[X]0$[X] ӣ$[X]ϣO$[X]@}TOH p 4 ӢO<<< ӧ$[X]ϧ$[X]$[X]ya$[X]Y0$[X]#O<<< -($[X]̬$[X]Ȭ$[X]]$[X]7$[X]/$[X] ۫$[X]@ӫ$[X]u$[X]m9$[X]$[X] $[X]ߪ$[X]$[X]|S$[X] M$[X]@$[X]֩L  M |MO<<<,w߮((8n(b5(M'\MíO<<< $]w1$[X]-$[X]Ȥ$[X]ɱ$[X]$[X]u$[X] pA$[X]@a,$[X]'$[X]װ$[X]Ұ$[X]q$[X]h@$[X] 4M M گO<<< Ǵw´$[X]w$[X]r[$[X]V/$[X]+$[X]ڳ$[X] γ N @N TO<<< twoH$X[X]B$X[X]$X[X]$X[X]@$X[X]p$X[X]lO$X[X]J$X[X]$X[X]߷$X[X] s$X[X]@o:$X[X]6$X[X]Զ$X[X]϶(> >oM aBN 5O<<< Bx9w4$X[X]ۼ$X[X]ּ$X[X]$X[X][$X[X] V7$X[X]2$X[X]@ $X[X]û$X[X]$X[X]p$X[X]kI$X[X]E%$X[X] $X[X] O<<< djc*h3* %%%|%Y|Lf: <V(,F(؀ T mHc8lPTlPT(*)lPT(*)./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzj(X.($ (؀(twI(|7((<vDl,"xwL<@R  <i<WD  XJ<<m<WD< <a<RD <<^<M@O<<< ؛nC<4!L<xJ@)<<Z[(P[X]H9 (T<z|o bk0lfU#O<<< fi\F!qb?r9&RAyjH zG/ t\>_/V?(e(V,((`(T Sk]P4! iUJ0o\1teC3( uXF5 wkP=0uiE4+  qdB5&|q te:-_TD  {f5 UK=$H@ {V"_("kHnqh/zNPA4foptprs@vtvuvvp؀,8ܔ|P($`Th<8:::d1:c:R:d1H:: :d1:99d19x9Kp9d1i94988d188l8^8d1O88xL7d177N7B7d157666d168655d155Y5K5d1@55K 51444w4d1j4,433d133O3E3d163222d12s21HPPȔ$OO<<OAO <)ON(NNȕNNܕ2dNNNM(MM#CQAQ9PAQ#PAQ #^P[P8v0v%v(v8vHvXvhuxuuw ww wvwvvw(vvw8vvwHvvwXvvwh}vnvwxlvWvwUv?vw܎,#̎v.,#< ٍT #Ed %"ٌt֌L#`P g,& ԣ (?y$v=#6 ]*d Ӧ!Ħv+d#p!?+?ҥ /t8< /#lv#6{3м|PPtL2ѻ|rUu|tBA412-E<t#<tƾ1qOFF t2}u{Z4ˀ>ut B u 묾1962ڃ`u ;rO <t<1r<5wP/SP$XtV2^O? F0 . . .disk 1 Default: F? cde$+/u3R36@;ADoHpfOsUniNovelMiniLinuAmoebFreeBSBSDPciCpVeniDosse?U|l\L=.!  i~_XP2(% XPe[R) +dXT8 Xnh lX\#  KhXX4 =X $[X]$[X]%BA%BB%BC%BD%BL%BG%BF%BH%BM%JI$9&A@$)&B%&C@$&D$&0$&1%T%$tl%~}T%$t$$...../WXYZ [``aa$b (  @(#)dkcksum.c 8.1 (Berkeley) 6/5/93@(#)getmntopts.c 8.1 (Berkeley) 3/27/94@(#)newfs.c 8.8 (Berkeley) 4/18/94@(#) Copyright (c) 1983, 1989, 1993, 1994 The Regents of the University of California. All rights reserved. ~~~~~~~~~ ~@ @%s: can't read disk label; disk type must be specified@(#)mkfs.c 8.3 (Berkeley) 2/3/94......>('a1'paccddfhlLnNqqxrqSltdT\vTVO1J9FZAbP3s)I@7Wqlgc`]7Wq`psmga''''[      43=(<AB           #+3;CScscc !1Aa  0@` ?? 0w,aQ mjp5c飕d2yҗ+L |~-d jHqA}mQDžӃVlkdzbeO\lcc=  n;^iLA`rqgjm Zjz  ' }Dңhi]Wbgeq6lknv+ӉZzJgo߹ホCՎ`~ѡ8ROggW?K6H+ L J6`zA`Ugn1yiFafo%6hRw G "/&U;( Z+j\1е,[d&c윣ju m ?6grWJz+{8 Ғ |! ӆBhn[&wowGZpj;f\ eibkaElx TN³9a&g`MGiIwn>JjѮZf @;7SŞϲG0򽽊º0S$6к)WTg#.zfJah]+o*7 Z-? ݷ0ַA˷ķoLViF@HC}ldMN<0  RpEնζbsS~ph`5@(#)dkcksum.c 8.1 (Berkeley) 6/5/93P ... ...tA~ws هӇ̇LJ?>~*&N>*>N>6^>>>^>6^>>>^*>>*>>.n>>>>*>n>6^>>>^>6^>>>^&66.66&n666>.>nN^^n^^nN^^^~n~N>6^>>>^>6^>>>^>6^>>>^>>>>>>>~>>>>>>~*>>*>>.n>>>>*>n>>>>>>>~>>>>>>~N^^n^^nN^^^~n~NΊΞΊ        @    !     !@CDCdCTCCDCdCTCCDCdCTC @`#   ga]WSMGA; 5 /vkg K ?93-!X0Ppxtmg _ W S N E?51-($  !"#$%&'()*+,pFn@  pksentrttvarrttssthreshsendpiperecvpipeexpirehopcountmtuUPGATEWAYHOSTREJECTDYNAMICMODIFIEDDONEMASK_PRESENT CLONING XRESOLVE LLINFO STATIC BLACKHOLEb016PROTO2PROTO1PRCLONINGWASCLONEDPROTO3CHAINDELETEPINNEDLOCALBROADCASTMULTICASTUPBROADCASTDEBUGLOOPBACKPTPb6RUNNINGNOARP PPROMISC ALLMULTI OACTIVE SIMPLEX LINK0LINK1LINK2MULTICASTDSTGATEWAYNETMASKGENMASKIFPIFAAUTHORBRD@(#) Copyright (c) 1992, 1993, 1994 The Regents of the University of California. All rights reserved.                  @ z t o k e  _ @  '@(#)getmntopts.c 8.1 (Berkeley) 3/27/94@ Q h PC-AT 915 MHzPC-MC 915 MHzPC-AT 2.4GHzPC-MC 2.4GHzPCMCIA 915MHzUnknownYYYYYYYYYYYYYYY|YuYpY ŀlN-{k ]!N":#+@AB C~D~E~F~ѮtU;24.*%ZVQKGB<9}ywsqmkgeca_а̰Ȱð۰հ22H?8/(2222222ys޶mڶgֶҶζ NKGA:2(nfPKt4*X`|@zt`~\=# B>93/*$!sokgea_[YUSOMKIGd`\WQKG>{uoiokga[UO{wg^@%{gD !"#@AvBkC\DHE;F0@(#)history.c 8.1 (Berkeley) 6/4/93  P  l   H    <    (    < L  p  p  |          & ( $ # " H( T% $) D) $ L$ ' ( % 4( ( h( % # D Ԯ  Ь ̲ ij 8 h |  T \  P H 4 8 t 0 < Fv< h< G3< < I; ; J; ; D; ; Eg; X; 8; ; 9: : @: : OV: F: P0: : S9 9 T9 9 :9 9 ?k9 d9 6>9 09 7 9 8 <8 8 >8 8 Uk8 c8 XO8 B8 Y.8 8 ;7 7 Z7 7 =7 s7 B.7 7 A6 6 R6 6 Q6 6 MX6 B6 N6 5 C5 5 H5 5 V_5 O5 W 5 5 K4 4 Lt4 b4 '4 4 &3 3 53 3 ,3 p3 -83 )3 %2 2 )2 2 02 {2 4?2 /2 #1 1 .1 1 11 t1 (W1 A1 31 1 /0 0 20 0 $u0 b0 *D0 10 +0 0 / / / / / p/ R/ E/ ./ / / . . . r. e. E. 8. . . - - - - - m- R- D- "(- - - , , , , , , v, `, M, !., , + + + + + + c+ V+ A+ 3+  + * * * * * q* Z* * * ) ) ) ) ) ) n) bF 1 ' ""   !,-5/"""""""""""""""""""""""""""""""$""""""""""""""""""""""""#&"0"""""."""""4"%""""""""#&"0""""".""""""4"%"""""""B=   !A;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "" """   !"A""""/""" """ """"""L"RZK"""Q"7I: UH""@""NG"PTWY"D"""" ""6J9<>C"? "M"F"OSVX"E"""""8"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" P  ̓ U >      L ? fwdbck:@{ -{ *{ { { { { z z z z z z z z z z z z |z yz iz fz Nz Kz ?z 6.&@80( 91)! ;3+# =5-% ?7/'91)! :2*" ;3+# <4,$?7/'>6.&=5-%      )4%/7(3-!0,1'8"5.*2$                                                                                                                                  @ @ @ @ @ ./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz n x }O   g D   Kk LT ^"     Z 5       a &. ' ( )   BLACKREDGREENYELLOWBLUEMAGENTACYANWHITEuse_shadowShadow dialog boxes? This also turns on color.use_colorsTurn color support ON or OFFscreen_colorScreen colorshadow_colorShadow colordialog_colorDialog box colortitle_colorDialog box title colorborder_colorDialog box border colorbutton_active_colorActive button colorbutton_inactive_colorInactive button colorbutton_key_active_colorActive button key colorbutton_key_inactive_colorInactive button key colorbutton_label_active_colorActive button label colorbutton_label_inactive_colorInactive button label colorinputbox_colorInput box colorinputbox_border_color(Input box border colorsearchbox_color4Search box colorsearchbox_title_color@Search box title colorsearchbox_border_colorLSearch box border colorposition_indicator_colorXFile position indicator colormenubox_colordMenu box colormenubox_border_colorpMenu box border coloritem_color|Item coloritem_selected_colorSelected item colortag_colorTag colortag_selected_colorSelected tag colortag_key_colorTag key colortag_key_selected_colorSelected tag key colorcheck_colorCheck box colorcheck_selected_colorSelected check box coloruarrow_colorUp arrow colordarrow_colorDown arrow colorp^x@(#) mytinfo: Release 3, Patchlevel 0 (ache).2Kn,X` %KOOPSE E E E k " #$!      !"#$%(&')*,-/012346789:;<>?@DJKPQRSTWXZ[\fq|     =ABCGHF+5.EILMNOUVY]^_`abcdeghijklmnoprstuvwxyz{}~ Cc!V>? UuT<;vwxyz{|}~ML@Aef`$%&'()*-./01234789:DEFGHIKNOPQYabgjlmnopqrstBJW=_^SZ[\]hk#di"+5,6RX/h/l/p/x///d/t/|///////.8/.D= >$>H=L=;;; ;$;(;,;0;4;<;@;D;H;L;P;T;X;\;`;h;l;p;t;x;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;>>P=>>:::::>\=,=0=>9=@?=L?>>>>X:>=`=>t:(>L>t>P>x>>?=:,?T=??d=L: ?8???t?h=?>===D?= >>,>0?===>>0>4>8><>@>D>H>T>X>\>`>d>h>l>p>|>>>>>>>>>>>>>>>?$?(?=9T:::?999999>99999=::,:9 :>:P:d:h:|:>::9=:::::4:::; ;8;d;;;;;<<;<::::< <<::4<@<<;<:::<<??<?d<<:<?== ===== =$=(==99? :$:\:0:@:?8=4=8:<:?9?<=>>=@==l=p=x==|=t====9===? ???==l:=D:4?===?`:(:=x?|?????????=p:9H:x:99:=> F?(DE?E?,D0D4D?8Dh ;h 8h 5h 2h /h ,h )h l k k k k k k k k uk ek Rk Ek 8k 'k k k j j j j j j j j j wj lj \j Lj 6j &j j i i i i i i i i li Xi Bi 7i %i i i h h h h h l l l l l l l l l l l l l l l l l l l l }l wl rl nl jl fl `l \l Wl Sl Nl Jl Dl ?l :l 5l 0l +l &l !l l l Em l l l Bm l ?m v :v 6v 2v /v )v $v v v v v v v v v u u u u u u u u u u u u u u u u u u u u u u u u u u ~u yu tu ou ju fu au \u Wu Ru Mu Hu Cu >u 9u 4u 0u +u &u !u u u u u u u t t t t t t t t t t t t t t t t t t t t t t t t t t t zt vt rt nt it dt ^t Xt St Mt It Dt ?t :t 5t 1t ,t 't #t t t t t t t t s s s s s s s s s s s s s s s s s s s s s s s s s s |s ws rs ms hs cs ^s Ys Ts Os Js Ds ?s :s 6s 2s -s )s %s !s s s s s s s s r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r {r vr qr mr hr er ar ^r [r Ur Pr Jr Er ?r 9r 5r 1r -r )r $r r l r r r r r r q q q q q q q q q q q q q q q q q q q q q q q }q yq sq nq iq cq _q Yq Sq Mq Iq Dq >q 8q 2q -q 'q !q q q q q q q q p p p p p p p p p p p p p p p p p p p p p p p ~p xp rp mp gp bp ]p Xp Sp Mp Gp Bp =p :p 7p 4p 1p .p +p (p %p "p p p p p p p p o o o o o o o o o o { { { @w { { { { { { { { { { |{ y{ v{ s{ p{ m{ j{ g{ v d{ a{ ^{ r [{ v X{ U{ R{ O{ L{ I{ F{ C{ @{ ={ :{ 7{ 4{ 1{ .{ +{ ({ %{ "{ { w { { { { { Bv { { { { /v { z z v z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z }z zz wz tz qz nz kz hz ez bz _z \z Yz Vz Sz Pz Mz Jz Gz Dz Az >z ;z 8z 5z 2z /z ,z )z &z #z z z z z z z z z z z z y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y ~y {y xy uy ry oy ly iy fy cy `y ]y Zy Wy Ty Qy Ny Ky Hy Ey By ?y / '   ӌ x f R = . " ދ ͋ z p _ R E 8 . $   Պ ͊ Ċ x m d ] V M E = 3 + #    ܉ ԉ ̉ ĉ } u m e ^ V N F > 6 . &     ߈ ׈ ψ Lj x p h ` Y Q I A 9 2 + $    և ͇ ć { m a U I > 4 + "  ؆ φ Ɔ x n d W I > 7 -  ԅ ˅ ą y r k d ] S J A 9 1 (   ؄ DŽ | r e \ S K ? 1 #   Ճ ƃ  t p a R E 6 (  ڂ Ȃ y m _ G ; / $   ہ ǁ u ` J 6 $  р t c O 9 (              s j _ Q E ; +   ~ ~ ~ p ~ ~ ~ ~ ~ ~ ~ u~ h~ W~ F~ 7~ %~ ~ ~ } } } } } } } } q} ]} M} :} +} } } | | =p | | | | | | | | | | | | x| `| R| @| 2| | | { { { { { { { K G GKG G G KK KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK KKKKKKKKKKK KGGGGGGGGGGGGGG G G K G G G G GGGGGGGG GGGG G G GG G G K GGGG G G GGG GGGGGGGGGG GGG GKKK KK KKK GGK@(#)dkcksum.c 8.1 (Berkeley) 6/5/93 | w p `H  < ?9㼥ͤtgQ>PNaPqk,jj6HT7qYIσ7 qR>)OqN9NL(K@K箂CAk[SžHHH8I $Id: asprintf.c,v 1.1 1996/05/27 10:49:42 peter Exp $J J J J J J |J dJ XJ AJ 5J J  J I I I I I I I }I eI ZI LI AI I I H H H H H H H sL mL gL aL [L UL OL IL CL =L 7L 0L fO bO ^O ZO VO RO NO JO DO AO 7O 4O 0O -O %O "O O O O O N N N N N N N N N N N N N N N N N N N N N N N =L N !N "xN #lN $_N %UN &JN '9N ('N )N *N +N ,N -M -M .M .M /M /M 0M 1M 2M 3M 4M 5M 6M 7M 8M 9M :M ;M <~M =lM >^M ?PM @?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~ Vس 0000000000000000}?$@Y@@@@j@.AcAחAeA _BvH7BmB@0BļB4&k C7yAC؅W4vCNgmC=`XC@xDPKDMD7yACnF?O8M20HwZ install and you should boot directly into the FreeBSD installation. If either steps fail, please go on to step 3. 3. Build a FreeBSD boot floppy from the floppies/boot.flp file in a FreeBSD distribution. Either simply use the ``makeflp.bat'' script from DOS or read floppies/README.TXT for more information on creating bootable floppies under different operating systems. Then you simply boot from the floppy and you should go into the FreeBSD installation. If you don't have a CDROM and would like to simply install over the net using PPP, slip or a dedicated connection, simply fetch the /floppies/boot.flp file from: ftp://ftp.freebsd.org/pub/FreeBSD or one of its many mirrors (http://www.freebsd.org/handbook/mirrors.html) and follow step 3 above. You should also read the floppies/README.TXT file as it contains important information for downloaders. Once you have a boot floppy made, please go to section 1.5 of this document for additional tips on installing via FTP or NFS. 1.0 Detail on various installation types --- ------------------------------------ Once you've gotten yourself to the initial installation screen somehow, you should be able to follow the various menu prompts and go from there. If you've never used the FreeBSD installation before, you are also encouraged to read some of the documentation in the the Documentation submenu as well as the general "Usage" instructions on the first menu. REMEMBER: If you get stuck at a screen, hit F1 for the online documentation for that section. If you've never installed FreeBSD before, or even if you have, the "Novice" installation mode is the most recommended since it makes sure that you'll visit all the various important checklist items along the way. If you're much more comfortable with the FreeBSD installation process and know _exactly_ what you want to do, use the Express or Custom installation options. If you're upgrading an existing system, use the Upgrade option. The FreeBSD installer supports the direct use of floppy, DOS, tape, CDROM, FTP, NFS and UFS partitions as installation media, further tips on installing from each type of media listed below. 1.1 Installing from a network CDROM --- ------------------------------- If you simply wish to install from a local CDROM drive then see the Quick Start section. If you don't have a CDROM drive on your system and wish to use a FreeBSD distribution CD in the CDROM drive of another system to which you have network connectivity, there are several ways of going about it: 1. If you would be able to FTP install FreeBSD directly from the CDROM drive in some FreeBSD machine, it's quite easy: You simply add the following line to the password file (using the vipw command): ftp:*:99:99::0:0:FTP:/cdrom:/sbin/nologin And anyone else on your network will now be able to chose a Media type of FTP and type in: ``ftp://'' after picking "Other" in the ftp sites menu. 2. If you would rather use NFS to export the CDROM directly to the machine(s) you'll be installing from, you need to first add an entry to the /etc/exports file (on the machine with the CDROM drive) which looks something like this: /cdrom -ro ziggy.foo.com To allow the machine "ziggy.foo.com" to mount the CDROM directly via NFS during installation. The machine with the CDROM must also be configured as an NFS server, of course, and if you're not sure how to do that then an NFS installation is probably not the best choice for you unless you're willing to read up on rc.conf(5) and configure things appropriately. Assuming that this part goes smoothly, you should be able to enter: :/cdrom as the path for an NFS installation when the target machine is installed. 1.2 Installing from Floppies --- ------------------------ If you must install from floppy disks, either due to unsupported hardware or just because you enjoy doing things the hard way, you must first prepare some floppies for the install. First, make a boot floppy as described in floppies/README.TXT Second, read the file LAYOUT.TXT and pay special attention to the "Distribution format" section since it describes which files you're going to need to put onto floppy and which you can safely skip. Next you will need, at minimum, as many 1.44MB floppies as it takes to hold all files in the bin (binary distribution) directory. If you're preparing these floppies under DOS, then THESE floppies *must* be formatted using the MS-DOS FORMAT command. If you're using Windows, use the Windows File Manager format command. Don't trust Factory Preformatted floppies! Format them again yourself, just to make sure. Many problems reported by our users in the past have resulted from the use of improperly formatted media, which is why I'm taking such special care to mention it here! If you're creating the floppies from another FreeBSD machine, a format is still not a bad idea though you don't need to put a DOS filesystem on each floppy. You can use the `disklabel' and `newfs' commands to put a UFS filesystem on a floppy, as the following sequence of commands illustrates: fdformat -f 1440 fd0.1440 disklabel -w -r fd0.1440 floppy3 newfs -t 2 -u 18 -l 1 -i 65536 /dev/rfd0 After you've formatted the floppies for DOS or UFS, you'll need to copy the files onto them. The distribution files are split into chunks conveniently sized so that 5 of them will fit on a conventional 1.44MB floppy. Go through all your floppies, packing as many files as will fit on each one, until you've got all the distributions you want packed up in this fashion. Each distribution should go into its own subdirectory on the floppy, e.g.: a:\bin\bin.inf, a:\bin\bin.aa, a:\bin\bin.ab, ... IMPORTANT NOTE: The bin.inf file also needs to go on the first floppy of the bin set since it is read by the installation program in order to figure out how many additional pieces to look for when fetching and concatenating the distribution. When putting distributions onto floppies, the .inf file MUST occupy the first floppy of each distribution set! Once you come to the Media screen of the install, select "Floppy" and you'll be prompted for the rest. 1.3 Installing from a DOS partition --- ------------------------------- To prepare for installation from an MS-DOS partition you should simply copy the files from the distribution into a directory called "FREEBSD" on the Primary DOS partition ("Drive C:"). For example, to do a minimal installation of FreeBSD from DOS using files copied from the CDROM, you might do something like this: C:\> MD C:\FREEBSD C:\> XCOPY /S E:\BIN C:\FREEBSD\BIN Assuming that `E:' was where your CD was mounted. For as many `DISTS' as you wish to install from DOS (and you have free space for), install each one in a directory under `C:\FREEBSD' - the BIN dist is only the minimal requirement. IMPORTANT NOTE: Though you can do all of the above by hand if you really want to, all of it is much more easily accomplished now by Robert Nordier's "setup.exe" program. It will give you a menu of distribution choices, verify that you have enough free space and do all the copying to C:\FREEBSD for you automatically. Once you've copied the directories or run setup.exe and let it do all the work for you, you can simply launch the installation from DOS by running the install.bat script (NOTE: Some memory managers don't like this - disable QEMM or EMM386 if they're running before trying this) or making a boot floppy as described in section 0.1. 1.4 Installing from QIC/SCSI Tape --- ----------------------------- When installing from tape, the installation program expects the files to be simply tar'ed onto it, so after fetching all of the files for the distributions you're interested in, simply tar them onto the tape with a command something like this: cd /where/you/have/your/dists tar cvf /dev/rwt0 (or /dev/rst0) dist1 .. dist2 When you go to do the installation, you should also make sure that you leave enough room in some temporary directory (which you'll be allowed to choose) to accommodate the FULL contents of the tape you've created. Due to the non-random access nature of tapes, this method of installation requires quite a bit of temporary storage! You should expect to require as much temporary storage as you have stuff written on tape. SPECIAL NOTE: When going to do the installation, the tape must be in the drive *before* booting from the boot floppy. The installation "probe" may otherwise fail to find it. Now create a boot floppy as described in section 0.1 and proceed with the installation. 1.5 Installing over a network using FTP or NFS --- ------------------------------------------ After making a boot floppy as described in the first section, you can load the rest of the installation over a network using one of 3 types of connections: Serial port: SLIP / PPP Parallel port: PLIP (using ``laplink'' style cable) Ethernet: A standard Ethernet controller (including certain PCCARD devices). Serial Port ----------- SLIP support is rather primitive, and is limited primarily to hard-wired links, such as a serial cable running between two computers. The link must be hard-wired because the SLIP installation doesn't currently offer a dialing capability. If you need to dial out with a modem or otherwise dialog with the link before connecting to it, then I recommend that the PPP utility be used instead. If you're using PPP, make sure that you have your Internet Service Provider's IP address and DNS information handy as you'll need to know it fairly early in the installation process. You may also need to know your own IP address, though PPP supports dynamic address negotiation and may be able to pick up this information directly from your ISP if they support it. You will also need to know how to use the various "AT commands" for dialing out with your particular brand of modem as the PPP dialer provides only a very simple terminal emulator. Parallel Port ------------- If a hard-wired connection to another FreeBSD (2.0R or later) or Linux machine is available, you might also consider installing over a "laplink" style parallel port cable. The data rate over the parallel port is much higher than what is typically possible over a serial line (up to 50k/sec), thus resulting in a quicker installation. It's not typically necessary to use "real" IP addresses when using a point-to-point parallel cable in this way and you can generally just use RFC 1918 style addresses for the ends of the link (e.g. 10.0.0.1, 10.0.0.2, etc). IMPORTANT NOTE: If you use a Linux machine rather than a FreeBSD machine as your PLIP peer, you will also have to specify "link0" in the TCP/IP setup screen's ``extra options for ifconfig'' field. Ethernet -------- FreeBSD supports most common PC Ethernet cards, a table of supported cards (and their required settings) being provided as part of the FreeBSD Hardware Guide (see the Documentation menu on the boot floppy or the top level directory of the CDROM). If you are using one of the supported PCMCIA Ethernet cards, also be sure that it's plugged in _before_ the laptop is powered on! FreeBSD does not, unfortunately, currently support "hot insertion" of PCMCIA cards during installation. You will also need to know your IP address on the network, the "netmask" value for your address class and the name of your machine. Your system administrator can tell you which values are appropriate to your particular network setup. If you will be referring to other hosts by name rather than IP address, you'll also need a name server and possibly the address of a gateway (if you're using PPP, it's your provider's IP address) to use in talking to it. If you do not know the answers to these questions then you should really probably talk to your system administrator _first_ before trying this type of installation! Using a randomly chosen IP address or netmask on a live network will almost certainly get you shot at dawn. Once you have a network connection of some sort working, the installation can continue over NFS or FTP. 1.5.1 NFS installation tips ----- --------------------- NFS installation is fairly straight-forward: Simply copy the FreeBSD distribution files you want onto a server somewhere and then point the NFS media selection at it. If this server supports only "privileged port" access (as is generally the default for Sun and Linux workstations), you will need to set this option in the Options menu before installation can proceed. If you have a poor quality Ethernet card which suffers from very slow transfer rates, you may also wish to toggle the appropriate Options flag. In order for NFS installation to work, the server must also support "subdir mounts", e.g. if your FreeBSD 2.2.8 distribution directory lives on: ziggy:/usr/archive/stuff/FreeBSD Then ziggy will have to allow the direct mounting of /usr/archive/stuff/FreeBSD, not just /usr or /usr/archive/stuff. In FreeBSD's /etc/exports file this is controlled by the ``-alldirs'' option. Other NFS servers may have different conventions. If you are getting `Permission Denied' messages from the server then it's likely that you don't have this properly enabled! 1.5.2 FTP Installation tips ----- --------------------- FTP installation may be done from any mirror site containing a reasonably up-to-date version of FreeBSD. A full menu of reasonable choices for almost any location in the world is provided in the FTP site menu during installation. If you are installing from some other FTP site not listed in this menu, or you are having troubles getting your name server configured properly, you can also specify your own URL by selecting the ``Other'' choice in that menu. A URL can contain a hostname or an IP address, so the following would work in the absence of a name server: ftp://192.216.191.11/pub/FreeBSD/2.2.8-RELEASE There are two FTP installation modes you can use: o FTP: For all FTP transfers, use the standard "Active" mode for transfers. This will not work through most firewalls but will often work best with older ftp servers that do not support passive mode. If your connection hangs with passive mode, try this one! o FTP Passive: For all FTP transfers, use "Passive" mode. This allows the user to pass through firewalls that do not allow incoming connections on random port addresses. NOTE: ACTIVE AND PASSIVE MODES ARE NOT THE SAME AS A `PROXY' CONNECTIONS, WHERE A PROXY FTP SERVER IS LISTENING ON A DIFFERENT PORT! In such instances, you should specify the URL as something like: ftp://foo.bar.com:1234/pub/FreeBSD Where "1234" is the port number of the proxy ftp server. 2.0 DOS user's Question and Answer section --- -------------------------------------- 2.1 Help! I have no space! Do I need to delete everything first? --- -------------------------------------------------------------- If your machine is already running DOS and has little or no free space available for FreeBSD's installation, all is not lost! You may find the "FIPS" utility, provided in the tools/ subdirectory on the FreeBSD CDROM or on the various FreeBSD ftp sites, to be quite useful. FIPS allows you to split an existing DOS partition into two pieces, preserving the original partition and allowing you to install onto the second free piece. You first "defrag" your DOS partition, using the DOS 6.xx "DEFRAG" utility or the Norton Disk tools, then run FIPS. It will prompt you for the rest of the information it needs. Afterwards, you can reboot and install FreeBSD on the new partition. Also note that FIPS will create the second partition as a "clone" of the first, so you'll actually see that you now have two DOS Primary partitions where you formerly had one. Don't be alarmed! You can simply delete the extra DOS Primary partition (making sure it's the right one by examining its size! :) NOTE: FIPS does NOT currently work with FAT32 or VFAT style partitions as used by newer versions of Windows 95. To split up such a partition, you will need a commercial product such as Partition Magic 3.0. Sorry, but this is just the breaks if you've got a Windows partition hogging your whole disk and you don't want to reinstall from scratch. 2.2 Can I use compressed DOS filesystems from FreeBSD? --- -------------------------------------------------- No. If you are using a utility such as Stacker(tm) or DoubleSpace(tm), FreeBSD will only be able to use whatever portion of the filesystem you leave uncompressed. The rest of the filesystem will show up as one large file (the stacked/dblspaced file!). DO NOT REMOVE THAT FILE as you will probably regret it greatly! It is probably better to create another uncompressed DOS extended partition and use this for communications between DOS and FreeBSD if such is your desire. 2.3 Can I mount my DOS extended partitions? --- --------------------------------------- Yes. DOS extended partitions are mapped in at the end of the other ``slices'' in FreeBSD, e.g. your D: drive might be /dev/sd0s5, your E: drive /dev/sd0s6, and so on. This example assumes, of course, that your extended partition is on SCSI drive 0. For IDE drives, substitute ``wd'' for ``sd'' appropriately. You otherwise mount extended partitions exactly like you would mount any other DOS drive, e.g.: mount -t msdos /dev/sd0s5 /dos_d 2.4 Can I run DOS binaries under FreeBSD? --- ------------------------------------- Ongoing work with BSDI's doscmd utility is bringing this much closer to being a reality in FreeBSD 3.0, though it still has some rough edges. If you're interested in working on this, please send mail to emulation@FreeBSD.org and indicate that you're interested in joining this ongoing effort! There is also a neat utility called "pcemu" in the ports collection which emulates an 8088 and enough BIOS services to run DOS text mode applications. It requires the X Window System (provided as XFree86 3.2) to operate. ---- End of Installation Guide --- nt you MUST be subscribed to the appropriate mailing list, either freebsd-stable or freebsd-current. For information on subscribing to either list (or both), send an e-mail to majordomo@freebsd.org with the following in the body, not the subject of the letter as appropriate: subscribe freebsd-stable subscribe freebsd-current end We hope you enjoy using FreeBSD as much as we enjoyed creating it! - The FreeBSD Project ----------------------------------------- FreeBSD 2.2.8 --- RELEASE Version , , ----------------------------------------- /( )` \ \___ / | Welcome to the 2.2.8-RELEASE version of FreeBSD! /- _ `-/ ' (/\/ \ \ /\ This is a full release to follow 2.2.7-RELEASE, / / | ` \ which was released in July, 1998. Many bugs O O ) / | were fixed and the general stability of the system `-^--'`< ' enhanced. For more information on these changes, (_.) _ ) / please see the release notes (RELNOTES.TXT). `.___/` / `-----' / Feedback or offers to help with anything <----. __ / __ \ you see in this release are most welcome <----|====O)))==) \) /==== and should be sent to one of the approp- <----' `--' `.__,' \ riate mailing lists - please see the | | ABOUT.TXT file for more information. \ / /\ ______( (_ / \______/ ,' ,-----' | `--{__________) NOTE: Unless circumstances dictate otherwise, this is the *last* release on the RELENG_2_2 branch. As of 2.2.8-RELEASE, the 2.2-stable branch is in maintenance mode only. This means that certain critical patches and security fixes may still go into the 2.2-stable tree from time to time, but people are encouraged to transition to 3.0-stable just as soon as it's created (est: Jan 1999) if they want to track a new and "living" -stable branch. The 3.0-current branch has not yet been forked into the 3.1-current and 3.0-stable branches due to the fact that we're giving feedback for 3.0-RELEASE more time to come back before doing so. This will result in less post-branch work for the release engineers who would otherwise have to merge a lot more changes from the very outset of the 3.0-stable branch. Most files here are also in the Documentation Menu of the boot floppy ROAD MAP: README.TXT This file ABOUT.TXT All about FreeBSD, including contact information RELNOTES.TXT Release Notes - what's new & different in this release LAYOUT.TXT Information about the layout of the release directory. If you are installing from floppies, it is especially important that you *read this section!* ERRATA.TXT Any late-breaking errata information for this release. On FTP sites, this file may be frequently updated so it's a good idea to check it first (the master copy is always on ftp.freebsd.org) before reporting problems HARDWARE.TXT Information about the configuration of the GENERIC kernel and supported hardware INSTALL.TXT How to make a new installation of FreeBSD on your PC using the data you see here UPGRADE.TXT How to upgrade an existing FreeBSD installation TROUBLE.TXT Troubleshooting information o For new installation instructions, see the INSTALL.TXT and HARDWARE.TXT files. o If you are upgrading from a previous FreeBSD version, please take a look at UPGRADE.TXT. o It is also important to check the ERRATA.TXT file for any late-breaking issues with this release. This file contains the latest information on upgrade, security or other problems which an administrator should be aware of. o Information regarding problems which arise after the CD is printed can be found at: ftp://ftp.freebsd.org/pub/FreeBSD/2.2.8-RELEASE/ERRATA.TXT For the latest 3.0-Current (HEAD branch) snapshot releases, please install from: ftp://current.freebsd.org/pub/FreeBSD If you plan to run either -Stable or -Curre================================================================ RELEASE NOTES FreeBSD 2.2.8-RELEASE VERSION ================================================================ 1. What's new since 2.2.7 ------------------------- Kernel features: ---------------- o Add support for >8G IDE drives. o Add support for 3Com 3c905B ethernet adapters o Add support for PCI ThunderLAN-based ethernet adapters (Compaq/Olicom) o Significantly improve Linux emulator again. Things like QuakeII should just run out-of-the-box now (given the rest of their requirements). o Major changes from -current's pthread implementation merged: This includes file locking based on FILE *, signal fixes, read/write-locks, better POSIX compliance and better performance. o Add a new flexible bandwidth limiter/delay emulator called dummynet. See dummynet(4). o Add support for bridging on multiple interfaces (10 and 100 Mbit/s). See bridge(4). o NFS client accelerator added. See 'nfs_access_cache' in rc.conf(5). Userland features: ------------------ o /bin/sh signal and trap handling reworked. Among other things, this makes tty-mode emacs work when called from system(2), i.e. by a mail agent. o ppp(8) merged from 3.0, adding features like multilink and VPN support as well as fixing a number of known bugs. Security issues: ---------------- o All open CERT/Bugtraq advisories against 2.2.7 have been dealt with. 2. Supported Configurations --------------------------- FreeBSD currently runs on a wide variety of ISA, VLB, EISA and PCI bus based PC's, ranging from 386sx to Pentium class machines (though the 386sx is not recommended). Support for generic IDE or ESDI drive configurations, various SCSI controller, network and serial cards is also provided. What follows is a list of all peripherals currently known to work with FreeBSD. Other configurations may also work, we have simply not as yet received confirmation of this. 2.1. Disk Controllers --------------------- WD1003 (any generic MFM/RLL) WD1007 (any generic IDE/ESDI) IDE ATA Adaptec 1535 ISA SCSI controllers Adaptec 154x series ISA SCSI controllers Adaptec 174x series EISA SCSI controller in standard and enhanced mode. Adaptec 274X/284X/2940/3940 (Narrow/Wide/Twin) series ISA/EISA/PCI SCSI controllers. Adaptec AIC7850 on-board SCSI controllers. ** Note: You cannot boot from the SoundBlaster cards as they have no on-board BIOS, such being necessary for mapping the boot device into the system BIOS I/O vectors. They're perfectly usable for external tapes, CDROMs, etc, however. The same goes for any other AIC-6x60 based card without a boot ROM. Some systems DO have a boot ROM, which is generally indicated by some sort of message when the system is first powered up or reset, and in such cases you *will* also be able to boot from them. Check your system/board documentation for more details. Buslogic 545S & 545c Buslogic 445S/445c VLB SCSI controller Buslogic 742A, 747S, 747c EISA SCSI controller. Buslogic 946c PCI SCSI controller Buslogic 956c PCI SCSI controller SymBios (formerly NCR) 53C810, 53C825, 53c860 and 53c875 PCI SCSI controllers: ASUS SC-200 Data Technology DTC3130 (all variants) NCR cards (all) Symbios cards (all) Tekram DC390W, 390U and 390F Tyan S1365 Tekram DC390 and DC390T controllers (maybe other cards based on the AMD 53c974 as well). NCR5380/NCR53400 ("ProAudio Spectrum") SCSI controller. DTC 3290 EISA SCSI controller in 1542 emulation mode. UltraStor 14F, 24F and 34F SCSI controllers. Seagate ST01/02 SCSI controllers. Future Domain 8xx/950 series SCSI controllers. WD7000 SCSI controller. With all supported SCSI controllers, full support is provided for SCSI-I & SCSI-II peripherals, including Disks, tape drives (including DAT and 8mm Exabyte) and CD ROM drives. The following CD-ROM type systems are supported at this time: (cd) SCSI interface (also includes ProAudio Spectrum and SoundBlaster SCSI) (matcd) Matsushita/Panasonic (Creative SoundBlaster) proprietary interface (562/563 models) (scd) Sony proprietary interface (all models) (wcd) ATAPI CDROM interface (acd) ATAPI CD-R interface (alternative to 'wcd') Unmaintained drivers, they might or might not work for your hardware: Adaptec 1510 series ISA SCSI controllers (not for bootable devices) Adaptec 152x series ISA SCSI controllers Adaptec AIC-6260 and AIC-6360 based boards, which includes the AHA-152x and SoundBlaster SCSI cards. Floppy tape interface (Colorado/Mountain/Insight) (mcd) Mitsumi proprietary CD-ROM interface (all models) 2.2. Ethernet cards ------------------- Allied-Telesis AT1700 and RE2000 cards AMD PCnet/PCI (79c970 & 53c974 or 79c974) SMC Elite 16 WD8013 ethernet interface, and most other WD8003E, WD8003EBT, WD8003W, WD8013W, WD8003S, WD8003SBT and WD8013EBT based clones. SMC Elite Ultra. SMC Etherpower II. Texas Instruments ThunderLAN PCI NICs, including the following: Compaq Netelligent 10, 10/100, 10/100 Proliant, 10/100 Dual-Port Compaq Netelligent 10/100 TX Embedded UTP, 10 T PCI UTP/Coax, 10/100 TX UTP Compaq NetFlex 3P, 3P Integrated, 3P w/ BNC Olicom OC-2135/2138, OC-2325, OC-2326 10/100 TX UTP DEC EtherWORKS III NICs (DE203, DE204, and DE205) DEC EtherWORKS II NICs (DE200, DE201, DE202, and DE422) DEC DC21040, DC21041, or DC21140 based NICs (SMC Etherpower 8432T, DE245, etc) DEC FDDI (DEFPA/DEFEA) NICs Fujitsu MB86960A/MB86965A HP PC Lan+ cards (model numbers: 27247B and 27252A). Intel EtherExpress (not recommended due to driver instability) Intel EtherExpress Pro/10 Intel EtherExpress Pro/100B PCI Fast Ethernet Isolan AT 4141-0 (16 bit) Isolink 4110 (8 bit) Novell NE1000, NE2000, and NE2100 ethernet interface. 3Com 3C501 cards 3Com 3C503 Etherlink II 3Com 3c505 Etherlink/+ 3Com 3C507 Etherlink 16/TP 3Com 3C509, 3C579, 3C589 (PCMCIA), 3C590/592/595/900/905/905B PCI and EISA (Fast) Etherlink III / (Fast) Etherlink XL Toshiba ethernet cards PCMCIA ethernet cards from IBM and National Semiconductor are also supported. No token ring cards are supported at this time. 2.3. Misc --------- AST 4 port serial card using shared IRQ. ARNET 8 port serial card using shared IRQ. ARNET (now Digiboard) Sync 570/i high-speed serial. Boca BB1004 4-Port serial card (Modems NOT supported) Boca IOAT66 6-Port serial card (Modems supported) Boca BB1008 8-Port serial card (Modems NOT supported) Boca BB2016 16-Port serial card (Modems supported) Comtrol Rocketport card. Cyclades Cyclom-y Serial Board. STB 4 port card using shared IRQ. SDL Communications Riscom/8 Serial Board. SDL Communications RISCom/N2 and N2pci high-speed sync serial boards. Stallion multiport serial boards: EasyIO, EasyConnection 8/32 & 8/64, ONboard 4/16 and Brumby. Adlib, SoundBlaster, SoundBlaster Pro, ProAudioSpectrum, Gravis UltraSound and Roland MPU-401 sound cards. Connectix QuickCam Matrox Meteor Video frame grabber Creative Labs Video Spigot frame grabber Cortex1 frame grabber Hauppauge Wincast/TV boards (PCI) STB TV PCI Intel Smart Video Recorder III Various Frame grabbers based on Brooktree Bt848 chip. HP4020, HP6020, Philips CDD2000/CDD2660 and Plasmon CD-R drives. PS/2 mice Standard PC Joystick X-10 power controllers GPIB and Transputer drivers. Genius and Mustek hand scanners. FreeBSD currently does NOT support IBM's microchannel (MCA) bus. 3. Obtaining FreeBSD -------------------- You may obtain FreeBSD in a variety of ways: 3.1. FTP/Mail ------------- You can ftp FreeBSD and any or all of its optional packages from `ftp.freebsd.org' - the official FreeBSD release site. For other locations that mirror the FreeBSD software see the file MIRROR.SITES. Please ftp the distribution from the site closest (in networking terms) to you. Additional mirror sites are always welcome! Contact freebsd-admin@FreeBSD.org for more details if you'd like to become an official mirror site. 3.2. CDROM ---------- FreeBSD 3.0-SNAP and 2.2.x-RELEASE CDs may be ordered on CDROM from: Walnut Creek CDROM 4041 Pike Lane, Suite D Concord CA 94520 1-800-786-9907, +1-925-674-0783, +1-925-674-0821 (FAX) Or via the Internet from orders@cdrom.com or http://www.cdrom.com. Their current catalog can be obtained via ftp from: ftp://ftp.cdrom.com/cdrom/catalog Cost per -RELEASE CD is $39.95 or $24.95 with a FreeBSD subscription. FreeBSD SNAPshot CDs are $39.95 or $14.95 with a FreeBSD-SNAP subscription (-RELEASE and -SNAP subscriptions are entirely separate). With a subscription, you will automatically receive updates as they are released. Your credit card will be billed when each disk is shipped and you may cancel your subscription at any time without further obligation. Shipping (per order not per disc) is $5 in the US, Canada or Mexico and $9.00 overseas. They accept Visa, Mastercard, Discover, American Express or checks in U.S. Dollars and ship COD within the United States. California residents please add 8.25% sales tax. Should you be dissatisfied for any reason, the CD comes with an unconditional return policy. 4. Reporting problems, making suggestions, submitting code. ----------------------------------------------------------- Your suggestions, bug reports and contributions of code are always valued - please do not hesitate to report any problems you may find (preferably with a fix attached, if you can!). The preferred method to submit bug reports from a machine with Internet mail connectivity is to use the send-pr command or use the CGI script at http://www.freebsd.org/send-pr.html. Bug reports will be dutifully filed by our faithful bugfiler program and you can be sure that we'll do our best to respond to all reported bugs as soon as possible. Bugs filed in this way are also visible on our WEB site in the support section and are therefore valuable both as bug reports and as "signposts" for other users concerning potential problems to watch out for. If, for some reason, you are unable to use the send-pr command to submit a bug report, you can try to send it to: freebsd-bugs@FreeBSD.org Note that send-pr itself is a shell script that should be easy to move even onto a totally different system. We much prefer if you could use this interface, since it make it easier to keep track of the problem reports. However, before submitting, please try to make sure whether the problem might have already been fixed since. Otherwise, for any questions or tech support issues, please send mail to: freebsd-questions@FreeBSD.org Additionally, being a volunteer effort, we are always happy to have extra hands willing to help - there are already far more desired enhancements than we'll ever be able to manage by ourselves! To contact us on technical matters, or with offers of help, please send mail to: freebsd-hackers@FreeBSD.org Please note that these mailing lists can experience *significant* amounts of traffic and if you have slow or expensive mail access and are only interested in keeping up with significant FreeBSD events, you may find it preferable to subscribe instead to: freebsd-announce@FreeBSD.org All of the mailing lists can be freely joined by anyone wishing to do so. Send mail to MajorDomo@FreeBSD.org and include the keyword `help' on a line by itself somewhere in the body of the message. This will give you more information on joining the various lists, accessing archives, etc. There are a number of mailing lists targeted at special interest groups not mentioned here, so send mail to majordomo and ask about them! 5. Acknowledgements ------------------- FreeBSD represents the cumulative work of many dozens, if not hundreds, of individuals from around the world who have worked very hard to bring you this release. For a complete list of FreeBSD project staffers, please see: http://www.freebsd.org/handbook/staff.html or, if you've loaded the doc distribution: file:/usr/share/doc/handbook/staff.html Special mention to: The donors listed at http://www.freebsd.org/handbook/donors.html Everyone at Montana State University fo+===================== Upgrading FreeBSD ==========================+ | | | 0.0 Preface | | 0.1 DISCLAIMER | | 0.2 IMPORTANT NOTE | | | | 1.0 Introduction | | 1.1 Upgrade Overview | | | | 2.0 Procedure | | 2.1 Backup | | 2.2 Mount Filesystems | | 2.3 Select Distributions | | 2.4 After Installation | | | | 3.0 Alternative Upgrade Techniques | | | +=====================================================================+ 0.1 DISCLAIMER --- ---------- While the FreeBSD upgrade procedure does its best to safeguard against accidental loss of data, it is still more than possible to WIPE OUT YOUR ENTIRE DISK with this installation! Please do not accept the final confirmation request unless you have adequately backed up any important data files. 0.2 IMPORTANT NOTE --- -------------- If you are upgrading from FreeBSD 2.2.5 or earlier, see section 2.4 for important details regarding changes to the /etc/fstab file required during the upgrade procedure. 1.0 Introduction --- ------------ The upgrade procedure replaces distributions selected by the user with those corresponding to the new FreeBSD release. It preserves standard system configuration data, as well as user data, installed packages and other software. Administrators contemplating an upgrade are encouraged to study this document in its entirety before commencing an upgrade. Failure to do so may result in a failed upgrade or loss of data. 1.1 Upgrade Overview --- ---------------- Upgrading of a distribution is performed by extracting the new version of the component over the top of the previous version. Files belonging to the old distribution are not deleted. System configuration is preserved by retaining and restoring the previous version of the following files: Xaccel.ini, adduser.conf, aliases, aliases.db, amd.map, crontab, csh.cshrc, csh.login, csh.logout, daily, disktab, dm.conf, exports, fbtab, fstab, ftpusers, gettytab, gnats, group, host.conf, hosts, hosts.equiv, hosts.lpd, inetd.conf, kerberosIV, localtime, login.access, mail.rc, make.conf, manpath.config, master.passwd, mib.txt, modems, monthly, motd, namedb, networks, passwd, phones, ppp, printcap, profile, protocols, pwd.db, rc, rc.firewall, rc.i386, rc.local, rc.network, rc.conf, remote, resolv.conf, rmt, security, sendmail.cf, services, shells, skeykeys, spwd.db, supfile, syslog.conf, termcap, ttys, uucp, weekly The versions of these files which correspond to the new version are moved to /etc/upgrade/. The system administrator may peruse these new versions and merge components as desired. Note that many of these files are interdependent, and the best merge procedure is to copy all site-specific data from the current files into the new. During the upgrade procedure, the administrator is prompted for a location into which all files from /etc/ are saved. In the event that local modifications have been made to other files, they may be subsequently retrieved from this location. 2.0 Procedure --- --------- This section details the upgrade procedure. Particular attention is given to items which substantially differ from a normal installation. 2.1 Backup --- ------ User data and system configuration should be backed up before upgrading. While the upgrade procedure does its best to prevent accidental mistakes, it is possible to partially or completely destroy data and configuration information. 2.2 Mount Filesystems --- ----------------- The disklabel editor is entered with the nominated disk's filesystem devices listed. Prior to commencing the upgrade, the administrator should make a note of the device names and corresponding mountpoints. These mountpoints should be entered here. DO NOT set the 'newfs flag' for any filesystems, as this will cause data loss. 2.3 Select Distributions --- -------------------- When selecting distributions, there are no constraints on which must be selected. As a general rule, the 'bin' distribution should be selected for an update, and the 'man' distribution if manpages are already installed. Other distributions may be selected beyond those originally installed if the administrator wishes to add additional functionality. 2.4 After Installation --- ------------------ Once the installation procedure has completed, the administrator is prompted to examine the new configuration files. At this point, checks should be made to ensure that the system configuration is valid. In particular, the /etc/rc.conf and /etc/fstab files should be checked. Read the following, but DO NOT update /etc/fstab as described below until the new system has booted correctly. The upgrade procedure replaces the previous FreeBSD kernel with a GENERIC kernel, and a custom kernel may need to be generated to suit the local system configuration. IMPORTANT NOTE: ============== FreeBSD 2.2.6 introduced a change in the naming of the device from which the root filesystem is mounted. This change affects all systems, however user intervention is only required for systems undergoing an upgrade installation from a version prior to FreeBSD 2.2.6. Previously, the root filesystem was always mounted from the compatibility slice, while other partitions on the same disk were mounted from their true slice. This might, for example, have resulted in an /etc/fstab file like: # Device Mountpoint FStype Options Dump Pass# /dev/wd0s2b none swap sw 0 0 /dev/wd0a / ufs rw 1 1 /dev/wd0s2f /local0 ufs rw 1 1 /dev/wd0s2e /usr ufs rw 1 1 For FreeBSD 2.2.6 and later, this format changes so that the device for '/' is consistent with others, ie. # Device Mountpoint FStype Options Dump Pass# /dev/wd0s2b none swap sw 0 0 /dev/wd0s2a / ufs rw 1 1 /dev/wd0s2f /local0 ufs rw 1 1 /dev/wd0s2e /usr ufs rw 1 1 If /etc/fstab is not updated manually in this case, the system will issue a warning message whenever / is mounted (normally at startup) indicating the change that must be made. In addition, trouble may be experienced if the root filesystem is not correctly unmounted, whereby the root filesystem will not be marked clean at the next reboot. This change should be made as soon as the upgraded system has been successfully rebooted. 3.0 Alternative Upgrade Techniques --- ------------------------------ Those interested in an upgrade method that allows more flexibility and sophistication should take a look at the "Upgrading FreeBSD from source" tutorial found at http://www.freebsd.org/docs.html. This method requires reliable network connectivity, extra disk space and spare time, but has advantages for networks and other more complex installations. README for XFree86[tm] 3.3.3 The XFree86 Project, Inc 7 November 1998 Abstract XFree86 is a port of X11R6.3 that supports several Unix and Unix-like operating systems on Intel and other platforms. This release is a full release, fixing a number of bugs and adding support for lots of new cards compared to XFree86-3.3.2. The release is available as source patches against the X Consortium X11R6.3 code and the XFree86 3.3.2 release. Binary distributions for many architectures are also available, including a binary upgrade for XFree86 3.3.2. 1. What's new in XFree86 3.3.3 For a summary of new features in this release, please refer to the RELNOTES file. For a detailed list of changes, refer to the CHANGELOG file in the source distribution. 2. Systems XFree86 has been tested on Note: Not all systems listed here have been tested with the current release. SVR4.0: o Esix: 4.0.3A, 4.0.4, 4.0.4.1 o Microport: 2.2, 3.1, 4.1, 4.2 o Dell: 2.1, 2.2, 2.2.1 o UHC: 2.0, 3.6 o Consensys: 1.2 o MST: 4.0.3 (Load 2.07 and Load 3.02) o ISC: 4.0.3 o AT&T: 2.1, 4.0 o NCR: MP-RAS README for XFree86[tm] 3.3.3 1 README for XFree86[tm] 3.3.3 2 o SunSoft: Solaris x86 2.1, 2.4, 2.5, 2.5.1, 2.6 o PANIX 5.0 for AT SVR4.2: o Consensys o Novell/SCO UnixWare SVR3: o ISC: 3.0, 4.0, 4.1 Others: o NetBSD 1.0, 1.1, 1.2, 1.2.1, 1.3, 1.3.1, 1.3.2 o OpenBSD 2.0, 2.1 o FreeBSD 2.0.5, 2.1, 2.1.5, 2.1.6, 2.1.7, 2.1.7.1, 2.2, 2.2.1, 2.2.2, 2.2.5, 2.2.6, 2,2,7, 3.0 o Linux (Intel x86, DEC Alpha/AXP and m68k) o LynxOS AT 2.3.0, 2.4.0, 2.5.0 o LynxOS microSPARC 2.4.0, 2.5.0 o LynxOS PowerPC 2.4.0, 2.5.0 o OS/2 Warp 3 FP5/17/22, Warp 4 -/FP1 PC98: o FreeBSD(98) 2.0.5, 2.1, 2.1.5, 2.1.7.1, 2.2, 2.2.1, 2.2.2, 2.2.5, 2.2.6, 2,2,7 o NetBSD/pc98 (based on NetBSD 1.2, 1.2.1, 1.3, 1.3.1, 1.3.2) o PANIX 5.0 for 98 o Linux/98 3. Supported video-card chip-sets At this time, XFree86 3.3.3 supports the following chipsets: README for XFree86[tm] 3.3.3 3 Ark Logic ARK1000PV, ARK1000VL, ARK2000PV, ARK2000MT Alliance AP6422, AT24 ATI 18800, 18800-1, 28800-2, 28800-4, 28800-5, 28800-6, 68800-3, 68800-6, 68800AX, 68800LX, 88800GX-C, 88800GX-D, 88800GX-E, 88800GX-F, 88800CX, 264CT, 264ET, 264VT, 264GT, 264VT-B, 264VT3, 264GT-B, 264GT3 (this list includes the Mach8, Mach32, Mach64, 3D Rage, 3D Rage II and 3D Rage Pro) Avance Logic ALG2101, ALG2228, ALG2301, ALG2302, ALG2308, ALG2401 Chips & Technologies 65520, 65525, 65530, 65535, 65540, 65545, 65546, 65548, 65550, 65554, 65555, 68554, 69000, 64200, 64300 Cirrus Logic CLGD5420, CLGD5422, CLGD5424, CLGD5426, CLGD5428, CLGD5429, CLGD5430, CLGD5434, CLGD5436, CLGD5440, CLGD5446, CLGD5462, CLGD5464, CLGD5465, CLGD5480, CLGD6205, CLGD6215, CLGD6225, CLGD6235, CLGD6410, CLGD6412, CLGD6420, CLGD6440, CLGD7541(*), CLGD7543(*), CLGD7548(*), CLGD7555(*) Cyrix MediaGX, MediaGXm Compaq AVGA Digital Equipment Corporation TGA Epson SPC8110 Genoa GVGA IBM 8514/A (and true clones), XGA-2 IIT AGX-014, AGX-015, AGX-016 Matrox MGA2064W (Millennium), MGA1064SG (Mystique and Mystique 220), MGA2164W (Millennium II PCI and AGP), G100, G200 MX MX68000(*), MX680010(*) README for XFree86[tm] 3.3.3 4 NCR 77C22(*), 77C22E(*), 77C22E+(*) NeoMagic 2200, 2160, 2097, 2093, 2090, 2070 Number Nine I128 (series I and II), Revolution 3D (T2R) NVidia/SGS Thomson NV1, STG2000, RIVA128, Riva TNT OAK OTI067, OTI077, OTI087 RealTek RTG3106(*) Rendition V1000, V2x00 S3 86C911, 86C924, 86C801, 86C805, 86C805i, 86C928, 86C864, 86C964, 86C732, 86C764, 86C765, 86C767, 86C775, 86C785, 86C868, 86C968, 86C325, 86C357, 86C375, 86C375, 86C385, 86C988, 86CM65, 86C260 SiS 86C201, 86C202, 86C205, 86C215, 86C225, 5597, 5598, 6326 3DLabs GLINT 500TX, GLINT MX, Permedia, Permedia 2, Permedia 2v Tseng ET3000, ET4000AX, ET4000/W32, ET4000/W32i, ET4000/W32p, ET6000, ET6100 Trident TVGA8800CS, TVGA8900B, TVGA8900C, TVGA8900CL, TVGA9000, TVGA9000i, TVGA9100B, TVGA9200CXR, Cyber9320(*), TVGA9400CXi, TVGA9420, TGUI9420DGi, TGUI9430DGi, TGUI9440AGi, TGUI9660XGi, TGUI9680, Pro- Vidia 9682, ProVidia 9685(*), Cyber 9382, Cyber 9385, Cyber 9388, 3DImage975, 3DImage985, Cyber 9397, Cyber 9520 Video 7/Headland Technologies HT216-32(*) Weitek P9000, P9100 Western Digital/Paradise PVGA1 Western Digital WD90C00, WD90C10, WD90C11, WD90C24, WD90C24A, WD90C30, WD90C31, README for XFree86[tm] 3.3.3 5 WD90C33 (*) Note, chips marked in this way have either limited support or the drivers for them are not actively maintained. All of the above are supported in both 256 color, and some are supported in mono and 16 color modes, and some are supported an higher color depths. Refer to the chipset-specific README files (currently for TGA, Matrox, Mach32, Mach64, NVidia, Oak, P9000, S3 (except ViRGE), S3 ViRGE, SiS, Video7, Western Digital, Tseng (W32), Tseng (all), AGX/XGA, ARK, ATI (SVGA server), Chips and Technologies, Cirrus, Trident, NeoMagic, Rendition, Epson, 3DLabs) for more information about using those chipsets. The monochrome server also supports generic VGA cards, using 64k of video mem- ory in a single bank, the Hercules monochrome card, the Hyundai HGC1280, Sigma LaserView, Visa and Apollo monochrome cards. The VGA16 server supports memory banking with the ET4000, Trident, ATI, NCR, OAK and Cirrus 6420 chipsets allowing virtual display sizes up to about 1600x1200 (with 1MB of video memory). For other chipsets the display size is limited to approximately 800x600. 4. Where to get more information Additional documentation is available in the XFree86(1), XF86Config(4/5), XF86_SVGA(1), XF86_Mono(1), XF86_VGA16(1), XF86_Accel(1), XF86Setup(1) and xvidtune(1) manual pages. In addition, several README files and tutorial docu- ments are provided. These are available in /usr/X11R6/lib/X11/doc in the binary distributions, and in xc/programs/Xserver/hw/xfree86/doc in the source distribution. The files QuickStart.doc and README.Config should be consulted for information on how to set up the XFree86 servers. All supplied documents, manual pages, and the XFree86 FAQ should be read before con- tacting the XFree86 team for assistance. Documentation on SVGA driver development can be found in the directory /usr/X11R6/lib/Server/VGADriverDoc in the binary distribution, and in the directory xc/programs/Xserver/hw/xfree86/VGADriverDoc in the source distribu- tion. If you are totally at a loss, you can contact the XFree86 Support Team at . Before doing so, please make sure that you are using the latest release of XFree86. Check the versions listed on ftp://ftp.xfree86.org/pub/XFree86. There is a Usenet news group comp.windows.x.i386unix that contains mostly dis- cussions about XFree86 and related topics. Many questions can be answered there. README for XFree86[tm] 3.3.3 6 5. Credits XFree86 was originally put together by: o David Dawes o Glenn Lai o Jim Tsillas o David Wexelblat XFree86 support was integrated into the base X11R6 distribution by: o Stuart Anderson o Doug Anson o Gertjan Akkerman o Mike Bernson o Robin Cutshaw o David Dawes o Marc Evans o Pascal Haible o Matthieu Herrb o Dirk Hohndel o David Holland o Alan Hourihane o Jeffrey Hsu o Glenn Lai o Ted Lemon o Rich Murphey o Hans Nasten o Mark Snitily o Randy Terbush o Jon Tombs README for XFree86[tm] 3.3.3 7 o Kees Verstoep o Paul Vixie o Mark Weaver o David Wexelblat o Philip Wheatley o Thomas Wolfram o Orest Zborowski 386BSD, FreeBSD, NetBSD support by: o Rich Murphey NetBSD, OpenBSD support by: o Matthieu Herrb Original 386BSD port by: o Pace Willison, o Amancio Hasty Jr Mach 386 support by: o Robert Baron Linux support by: o Orest Zborowski SCO Unix support by: o David McCullough Amoeba support by: o Kees Verstoep Minix-386 support by: o Philip Homburg OSF/1 support by: o Marc Evans BSD/OS support by: README for XFree86[tm] 3.3.3 8 o Hans Nasten , o Paul Vixie Solaris support by: o Doug Anson , o David Holland ISC SVR3 support by: o Michael Rohleder LynxOS support by: o Thomas Mueller OS/2 support by: o Holger Veit o Sebastien Marineau Linux shared libraries by: o Orest Zborowski , o Dirk Hohndel PC98 support by: o Toyonori Fujiura , o Hiroyuki Aizu , o Tetsuya Kakefuda , o Takefumi Tsukada , o H.Komatsuzaki, o Naoki Katsurakawa , o Shuichiro Urata , o Yasuyuki Kato , o Michio Jinbo , o Tatsuya Koike , o Koichiro Suzuki , README for XFree86[tm] 3.3.3 9 o Tsuyoshi Tamaki , o Isao Ohishi , o Kohji Ohishi , o Shin'ichi Yairo , o Kazuo Ito , o Jun Sakuma , o Shuichi Ueno , o Ishida Kazuo , o Takaaki Nomura , o Tadaaki Nagao , o Minoru Noda , o Naofumi Honda , o Akio Morita , o Takashi Sakamoto , o Yasuhiro Ichikawa , o Kazunori Ueno , o Yasushi Suzuki , o Satoshi Kimura , o Kazuhiko Uno , o Tomiharu Takigami , o Tomomi Suzuki , o Toshihiko Yagi , o Masato Yoshida (Contributor of PW805i support) Original accelerated code by: o Kevin E. Martin , o Rik Faith , o Jon Tombs README for XFree86[tm] 3.3.3 10 XFree86 Acceleration Architecture (XAA) by: o Harm Hanemaayer , S3 accelerated code by: o Jon Tombs , o Harald Koenig , o David Wexelblat , o David Dawes , o Robin Cutshaw , o Amancio Hasty , o Norbert Distler , o Leonard N. Zubkoff , o Bernhard Bender , o Dirk Hohndel , o Joe Moss S3V accelerated code by: o Harald Koenig , o Kevin Brosius o Berry Dijk o Dirk Hohndel o Huver Hu o Dirk Vangestel Mach32 accelerated code by: o Kevin E. Martin , o Rik Faith , o Mike Bernson , o Mark Weaver , o Craig Groeschel README for XFree86[tm] 3.3.3 11 o Bryan Feir Mach64 accelerated code by: o Kevin E. Martin , Mach8, 8514 accelerated code by: o Kevin E. Martin , o Rik Faith , o Tiago Gons , o Hans Nasten , o Scott Laird Cirrus accelerated code by: o Simon Cooper , o Harm Hanemaayer , o Bill Reynolds , o Corin Anderson Western Digital accelerated code by: o Mike Tierney , o Bill Conn P9000 accelerated code by: o Erik Nygren , o Harry Langenbacher o Chris Mason o Henrik Harmsen AGX accelerated code by: o Henry Worth , Number Nine I128 driver by: o Robin Cutshaw , ET4000/W32 accelerated code by: README for XFree86[tm] 3.3.3 12 o Glenn Lai , ET6000 SVGA and accelerated support (both based on the existing W32 code) by: o Koen Gadeyne , Oak Technologies Inc. accelerated code by: o Jorge Delgado , 16 color VGA server by: o Gertjan Akkerman 2 color VGA and non-VGA mono servers by: o Pascal Haible ATI SVGA driver by: o Per Lindqvist and Doug Evans . o Ported to X11R5 by Rik Faith . o Rewritten by Marc Aurele La France WD90C24 support by: o Brad Bosch Trident SVGA driver by: o Alan Hourihane SiS SVGA driver by: o Alan Hourihane o Xavier Ducoin DEC 21030 (TGA) server by: o Alan Hourihane o Harald Koenig NCR SVGA driver by: o Stuart Anderson with the permission of NCR Corporation Cirrus SVGA driver by: README for XFree86[tm] 3.3.3 13 o Bill Reynolds , o Hank Dietz , o Simon Cooper , o Harm Hanemaayer , o Corin Anderson Cirrus CL64xx driver by: o Manfred Brands o Randy Hendry o Jeff Kirk Compaq SVGA driver by: o Hans Oey o Ming Yu o Gerry Toll Oak SVGA driver by: o Steve Goldman o Jorge Delgado ARK Logic SVGA driver by: o Harm Hanemaayer o Leon Bottou AL2101 SVGA driver by: o Paolo Severini Avance Logic ``ali'' SVGA driver by: o Ching-Tai Chiu Chips & Technologies SVGA driver by: o Regis Cridlig o Jon Block o Mike Hollick README for XFree86[tm] 3.3.3 14 o Nozomi Ytow o Egbert Eich o David Bateman o Xavier Ducoin MX SVGA driver by: o Frank Dikker Video7 SVGA driver by: o Craig Struble RealTek SVGA driver by: o Peter Trattler Apollo Mono driver by: o Hamish Coleman Matrox SVGA driver by: o Guy Desbief o Radoslaw Kapitan o Andrew Vanderstock o Angsar Hockmann o Michael Will o Andrew Mileski o Stephen Pitts o Dirk Hohndel o Leonard N. Zubkoff ViRGE SVGA driver by: o Sebastien Marineau , o Harald Koenig Linux/m68k Frame Buffer Device driver by: o Martin Schaller README for XFree86[tm] 3.3.3 15 o Geert Uytterhoeven o Andreas Schwab o Guenther Kelleter Tseng ET4000 and ET6000 SVGA driver by: o [Unknown authors] o Dirk Hohndel o Koen Gadeyne o ... and others P9100 accelerated code by: o Joerg Knura Rendition code by: o Tim Rowley o Marc Langenbach Cyrix accelerated code by: o Annius Groenink o Dirk Hohndel Epson code by: o Thomas Mueller 3DLabs accelerated code by: o Alan Hourihane o Dirk Hohndel o Stefan Dirsch o Helmut Fahrion XFree86-VidModeExtension and xvidtune client by: o Kaleb S. Keithley o David Dawes o Jon Tombs README for XFree86[tm] 3.3.3 16 o Joe Moss XFree86-Misc extension by: o Joe Moss o David Dawes XFree86-DGA extension by: o Jon Tombs o Mark Vojkovich o Harm Hanemaayer , o David Dawes XInput integration, devices and clients by: o Frederic Lepied (XInput integration, Wacom tablet, Joystick and extended mouse devices, xsetpointer and xsetmode clients) o Patrick Lecoanet (Elographics touch- screen device) o Steven Lang (Summagraphics tablet device) Other contributors: o Joerg Wunsch (ET3000 banked mono), o Thomas Dickey (xterm "new" model ANSI col- ors and VT220, VT520 emulation). o Eric Raymond (new video mode documen- tation), o and an entire horde of beta-testers around the world! 6. Contact information Ongoing development planning and support is coordinated by the XFree86 Core Team. At this time the Core Team consists of (in alphabetical order): o Robin Cutshaw o David Dawes o Marc Evans README for XFree86[tm] 3.3.3 17 o Harm Hanemaayer o Dirk Hohndel o Harald Koenig o Rich Murphey o Jon Tombs o David Wexelblat Mail sent to will reach the core team. Please note that support questions should be sent to . 7. The XFree86 Project, Inc. The XFree86 Project, Inc, was founded to accomplish two major goals: 1. To provide a vehicle by which XFree86 can be represented in X Consortium, Inc, the organization responsible for the design, development, and release of The X Window System. 2. To provide some basic funding for acquisition of facilities for ongoing XFree86 development, largely to consist of new video hardware and basic computing facilities. The first of these was the primary motivation. We have held discussions with the X Consortium on and off for many months, attempting to find an avenue by which our loosely-organized free software project could be given a voice within the X Consortium. The bylaws of the Consortium would not recognize such an organization. After an initial investigation about funding, we decided to form our own corporation to provide the avenue we needed to meet the requirements of the X Consortium bylaws. By doing this, we were able to be involved in the beta-test interval for X11R6, and have contributed the majority of XFree86 to the X11R6 and X11R6.1 core release. The version of XFree86 in the initial X11R6 core is 3.0. The version of XFree86 in the current X11R6.3 release is 3.2. An additional benefit of this incorporation is that The XFree86 Project, Inc has obtained outside financial support for our work. This will hopefully give us the freedom to be more pro-active in obtaining new video hardware, and enable us to release better products more quickly, as we will be able to go and get what we need, and get it into the hands of the people who can do the work. The current Board of Directors and Officers of the The XFree86 Project, Inc, are: o David Dawes, President and Secretary o Dirk Hohndel, Vice-President README for XFree86[tm] 3.3.3 18 o Glenn Lai, Director o Rich Murphey, Treasurer o Jim Tsillas, Director o Jon Tombs, Director o David Wexelblat, Director Email to reaches the board of directors. Our bylaws have been crafted in such a way to ensure that XFree86 is and always will be a free software project. There is no personal financial benefit to any member of the Core Team or any other XFree86 participant. All assets of the corporation remain with the corporation, and, in the event of the dissolution of the corporation, all assets will be turned over to the X Consortium, Inc. It is hoped that by doing this, our corporation will be merely a formalization of what we have been doing in the past, rather than something entirely new. As of March 1997, The XFree86 Project has revised its source/binary access and release policy. The main points of the new policy are: o There will be no more time-limited public binary-only beta releases. Instead we plan to increase the frequency of full public releases to about four releases per year. o The source access/use is divided into three categories: o End users. End users have access to only the source of full public releases. The main reason for this restriction is that our develop- ment code often contains code from other sources which cannot be released to the public immediately. o Active developers (members of the XFree86 ``developer team''). Active developers must formally become non-voting members of the XFree86 Project, and have full access to our internal development source. They are permitted to make time-limited binaries (in coordi- nation with the Core Team) of the servers they are actively working on available to external testers for specific testing. o Commercial members. Commercial members are non-voting members of The XFree86 Project who donate US$5000/year to the Project. Addition- ally, companies who contribute significantly to the development effort of XFree86 can be awarded commercial membership by the Core Team on a yearly bases. Commercial members can use the internal XFree86 development source for derived binary-only products providing that they take full responsibility for supporting the product, and don't call it ``XFree86'' (although the derivation of the product must be acknowledged in any accompanying documentation). Binary packages for the OSs we support which are simply compiled from our internal source without significant added value are explicitly NOT allowed. README for XFree86[tm] 3.3.3 19 Here is a list of the organizations and individuals who have provided sponsor- ship to The XFree86 Project, Inc, either by financial contribution or by the donation of equipment and resources. The XFree86 Project, Inc gratefully acknowledges these contributions, and hopes that we can do justice to them by continuing to release high-quality free software for the betterment of the Internet community as a whole. o UUNET Communications Services, Inc. UUNET Communications Services, Inc, deserves special mention. This organiza- tion stepped forward and contributed the entire 1994 X Consortium membership fee on a moment's notice. This single act ensured XFree86's involvement in X11R6. o GUUG -- 1st German Linux Congress Also deserving of special mention are the organizers and attendees of the 1st German Linux Congress in Heidelberg. Significant funding to The XFree86 Pro- ject has been provided from its proceeds. o AIB Software Corporation , Herndon, VA o Roland Alder, Armin Fessler, Patrick Seemann, Martin Wunderli o American Micro Group o ATI Technologies Inc o Andrew Burgess o Berkeley Software Design, Inc , Colorado Springs, CO o Caldera, Inc. o Delix Computer GmbH , Stuttgart, Germany o The Destek Group, Inc. , Nashua, NH (formerly Synergytics) o Diamond Multimedia Systems, Inc. o Digital Equipment Corporation o Elsa GmbH , Aachen, Germany o Genoa Systems Corporation o Helius, Inc. o Hercules Computer Technology, Inc. o Ralf Hockens README for XFree86[tm] 3.3.3 20 o Dirk Hohndel o InfoMagic , Flagstaff, AZ o Daniel Kraemer o Epoch Networks, Inc. , Irvine, CA o Frank & Paige McCormick o Internet Labs, Inc. o Linux International o Linux Support Team, Erlangen, Germany o LunetIX Softfair , Berlin, Germany o Morse Telecommunications , Long Beach, NY o MELCO, Inc o MIRO Computer Products AG, Braunschweig, Germany o Rich & Amy Murphey o NCR Corp o Brett Neumeier o Number Nine, Lexington, MA o Kazuyuki Okamoto, Japan o Prime Time Freeware , San Bruno, CA o Red Hat Software , Chapel Hill, NC o Norbert Reithinger o SPEA Software AG, Starnberg, Germany o STB Systems o Clifford M Stein o Joel Storm o S.u.S.E. GmbH , Fuerth, Germany o Tekelec Airtronic GmbH , Muenchen, Germany o Jim Tsillas README for XFree86[tm] 3.3.3 21 o Trans-Ameritech Enterprises, Inc., Santa Clara, CA o Unifix Software GmbH, Braunschweig, Germany o Vixie Enterprises , La Honda, CA o Walnut Creek CDROM , Concord, CA o Xtreme s.a.s. , Livorno, Italy The XFree86 Project, Inc, welcomes the additional contribution of funding and/or equipment. Such contributions should be tax-deductible; we will know for certain when the lawyers get finished with the papers. For more informa- tion, contact The XFree86 Project, Inc, at 8. Source and binary archive sites Source patches are available to upgrade X11R6.3 PL2 from the X Consortium (now The Open Group) to XFree86 3.3.3. Binaries for many OSs are also available. The distribution is available from: o ftp://ftp.XFree86.org/pub/XFree86 and the following mirror sites: o North America: o ftp://ftp2.XFree86.org/pub/XFree86 (source and binaries) o ftp://ftp.infomagic.com/pub/mirrors/XFree86-current (source and bina- ries) o ftp://ftp.rge.com/pub/X/XFree86 and http://www.rge.com/pub/X/XFree86 (source and binaries) o ftp://ftp.varesearch.com/pub/mirrors/xfree86 (source and binaries) o ftp://ftp.cs.umn.edu/pub/XFree86 (source and binaries) o ftp://ftp.kernel.org/pub/mirrors/xfree86 (source and binaries) o Europe: o ftp://fvkma.tu-graz.ac.at/pub/XFree86 (source and binaries) o ftp://gd.tuwien.ac.at/hci/X11/XFree86 and http://gd.tuwien.ac.at/hci/X11/XFree86 (source and binaries) o ftp://ftp.fee.vutbr.cz/pub/XFree86 (source patches and binaries) o ftp://ftp.gwdg.de/pub/xfree86/XFree86 (source and binaries) README for XFree86[tm] 3.3.3 22 o ftp://ftp.mpi-sb.mpg.de/pub/X/mirror/ftp.xfree86.org (source and binaries) o ftp://ftp.cs.tu-berlin.de/pub/X/XFree86 (source and binaries) o ftp://ftp.uni-erlangen.de/pub/Linux/MIRROR.xfree86 (source and Linux binaries) o ftp://ftp.uni-stuttgart.de/pub/X11/Xfree86 (source and binaries) o ftp://ftp.funet.fi/pub/X11/XFree86 (source and binaries) o ftp://ftp.ibp.fr/pub/X11/XFree86 (source and binaries) o ftp://ftp.unina.it/pub/XFree86 (source and binaries) o ftp://ftp.pvv.unit.no/pub/XFree86 (source and binaries) o ftp://sunsite.doc.ic.ac.uk/packages/XFree86 (source and binaries) o Asia/Australia: o ftp://x.physics.usyd.edu.au/pub/XFree86 (source and binaries) o ftp://ftp.netlab.is.tsukuba.ac.jp/pub/XFree86 (source and binaries) o ftp://ftp.iij.ad.jp/pub/X/XFree86/XFree86 (source and binaries) o ftp://ftp.kreonet.re.kr/pub/Linux/xfree86 (source and binaries) Ensure that you are getting XFree86 3.3.3 - some of these sites may archive older releases as well. Check the RELNOTES to find which files you need to take from the archive. Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml,v 3.75.2.40 1998/11/08 10:03:41 hohndel Exp $ $XConsortium: README.sgml /main/31 1996/10/28 05:43:24 kaleb $ README for XFree86[tm] 3.3.3 23 CONTENTS 1. What's new in XFree86 3.3.3 .............................................. 1 2. Systems XFree86 has been tested on ....................................... 1 3. Supported video-card chip-sets ........................................... 2 4. Where to get more information ............................................ 5 5. Credits .................................................................. 6 6. Contact information ..................................................... 16 7. The XFree86 Project, Inc. ............................................... 17 8. Source and bina+================== FreeBSD Υåץ졼 =======================+ | | | 0.0 Ϥ | | 0.1 | | 0.2 פ | | | | 1.0 Ƴ | | 1.1 åץ졼ɤγ | | | | 2.0 | | 2.1 Хåå | | 2.2 ե륷ƥΥޥ | | 2.3 ۥե | | 2.4 󥹥ȡθ | | | | 3.0 ¾Υåץ졼ɤΥƥ˥å | | | +=====================================================================+ 0.1 --- ---- FreeBSD åץ졼ɽǤϻŪʥǡ»Фƺΰ äƤޤΥ󥹥ȡǡ֥ǥΤޤäˤƤ ײǽޤޤʥǡեΥХååפ äƤʤϡǽǧ׵ʤǤ 0.2 פ --- ---------- FreeBSD 2.2.5 ΥС󤫤饢åץ졼ɤ褦ȤƤ硢 åץ졼ɽɬפȤʤ /etc/fstab ѹ˴ؤפʾܺپ ˤĤƤϡ2.4 򻲾ȤƤ 1.0 Ƴ --- ---- åץ졼ɽǤϡ桼򤷤ۥեб FreeBSD ο꡼ΤΤ֤ޤɸΥƥΥǡ ʤ桼ǡ󥹥ȡѤߤ package¾Υեȥ Ƥޤ åץ졼ɤͤƤԤϡåץ졼ɤ򳫻Ϥˡ ɥΤɤ뤳Ȥ򤪤ᤷޤ 1.1 åץ졼ɤγ --- -------------------- ۥեΥåץ졼ɤϡСƤФ СΤΤ񤭤Ƽ¹ԤޤŤۥեˤäե Ϻޤ ʲΥСΥե¸Ǥ褦˥ƥ Ƥޤ: Xaccel.ini, adduser.conf, aliases, aliases.db, amd.map, crontab, csh.cshrc, csh.login, csh.logout, daily, disktab, dm.conf, exports, fbtab, fstab, ftpusers, gettytab, gnats, group, host.conf, hosts, hosts.equiv, hosts.lpd, inetd.conf, kerberosIV, localtime, login.access, mail.rc, make.conf, manpath.config, master.passwd, mib.txt, modems, monthly, motd, namedb, networks, passwd, phones, ppp, printcap, profile, protocols, pwd.db, rc, rc.firewall, rc.i386, rc.local, rc.network, rc.conf, remote, resolv.conf, rmt, security, sendmail.cf, services, shells, skeykeys, spwd.db, supfile, syslog.conf, termcap, ttys, uucp, weekly ΥեǿСбΤϡ/etc/upgrade/ ذ ưޤƥԤϼͳ˿СΤΤɤɤ ޡǤޤ¿Υեϸߤ˰¸Ƥ뤿ᡢ ȤɤޡˡϸߤΥե뤫餹٤ƤΥȸͭΥǡ Τإԡ뤳ȤǤ åץ졼˴Ԥ /etc/ ΥեγǼ䤵ޤ ¾ΥեؤζɽŪѹʤʳǡξ꤫Dz 뤫⤷ޤ 2.0 --- ---- Ǥϥåץ졼ɽܺ٤ޤ̾Υ󥹥ȡ ܼŪ˰ۤʤܤˤϡդޤ礦 2.1 Хåå --- ------------ 桼ǡȥƥϥåץ졼˥ХååפȤäƤ ٤Ǥåץ졼ɽϻŪʥߥɻߤ褦Ԥ ʬŪ뤤ϴ˥ǡ˲뤳Ȥޤ 2.2 ե륷ƥΥޥ --- -------------------------- ǥ٥륨ǥǥΥե륷ƥΥǥХɽ Ƶưޤåץ졼ɳϤΩƥԤϥǥХ̾ бޥȥݥȤαƤ٤ǤΥޥȥ ȤϤϤɬפޤǡ»򾷤ᡢɤΥե 륷ƥФƤ 'newfs flag' ꤷʤǡפ 2.3 ۥե --- ------------------ ۥե򤹤ݤˤϡɤ򤹤٤¤Ϥޤ󡣰 Ūʵ§Ȥơåץ졼ɤǤ 'bin' ۥե򤹤٤ ޥ˥奢ڡ˥󥹥ȡ뤵Ƥϡ'man' ۥե 򤷤ޤƥԤȤȥ󥹥ȡ뤵ƤΤ äɲõǽ줿ϡ¾ۥե򤹤ȤǤ 2.4 󥹥ȡθ --- ------------------ 󥹥ȡλСƥԤϿե򸡺 褦¥ޤλǡƥ꤬Ȥμ¤˥ ٤Ǥä /etc/rc.conf /etc/fstab ǧޤ ʲդɤǤƥब֡Ȥޤ ϡʲƤ褦 /etc/fstab ֹʤǡפ åץ졼ɽ FreeBSD ͥ GENERIC ֤ͥ ޤΤǡƥ˹礦褦˥५ͥ뤳Ȥɬפ ޤ פ: =========== FreeBSD 2.2.6 Ǥϥ롼ȥե륷ƥȤƥޥȤǥХ̾ ѹޤѹϤ٤ƤΥƥ˱ƶޤFreeBSD 2.2.6 ΥС󤫤饢åץ졼ɥ󥹥ȡ򤪤ʤ ƥǥ桼βߤɬפȤʤǤ Ʊǥ¾ΥѡƥΥ饤ޥȤ ƤƤ⡢롼ȥե륷ƥϾ˸ߴ饤ޥȤƤ ޤ㤨С /etc/fstab ǤϰʲΤ褦ˤʤäƤǤ礦: # Device Mountpoint FStype Options Dump Pass# /dev/wd0s2b none swap sw 0 0 /dev/wd0a / ufs rw 1 1 /dev/wd0s2f /local0 ufs rw 1 1 /dev/wd0s2e /usr ufs rw 1 1 FreeBSD 2.2.6 ʹߤǤϡη '/' ФǥХ¾ΥǥХ 褦˼Τ褦Ѥޤ # Device Mountpoint FStype Options Dump Pass# /dev/wd0s2b none swap sw 0 0 /dev/wd0s2a / ufs rw 1 1 /dev/wd0s2f /local0 ufs rw 1 1 /dev/wd0s2e /usr ufs rw 1 1 /etc/fstab ưǹʤϡƥ / ޥ 뤿Ӥ (̾ϵư)ٹåФѹ褦˻ؼ Ǥ礦äơ롼ȥե륷ƥबޥȲʤ 硢ȥ֥и뤫⤷ޤ󡣤ˤäƼΥ֡Ȼ 롼ȥե륷ƥब clean ʾ֤ȤƥޡʤǤ礦 åץ졼ɤƥबޤƵư顢ˤѹ򤪤 ٤Ǥ 3.0 ¾Υåץ졼ɤΥƥ˥å --- ------------------------------ äͻ̤åץ졼ɤˡμ˶̣С http://www.freebsd.org/docs.html ˤ tutorial "Upgrading FreeBSD from source" ܤ̤٤Ǥ礦ˡϿι⤤ͥåȥ ³;ʬʥǥڡȻ֤ɬפȤʤޤͥåȥ ¾Τʣʥ󥹥ȡΤˤĤͭǤ # Original revision: 1.1 $Id: upgrade.hlp,v 225.1 1997/11/02 02:20:29 hosokawa Exp $ 15 _isa_devtab_bio 7 1 0 -263569728 _isa_devtab_tty 7 1 0 -263568384 _isa_devtab_net 7 1 0 -263567744 _isa_devtab_null 7 1 0 -263567168 _isa_biotab_wdc 7 1 0 -263568960 _isa_biotab_fdc 7 1 0 -263568640 _eisadriver_set 0 0 0 0 _eisa_dev_list 0 0 0 0 _pcidevice_set 29 0 0 -263565196 _device_list 8 0 0 -263550328 _scbusses 8 0 0 -263550336 _scsi_cinit 7 1 0 -263566720 _scsi_dinit 7 1 0 -263566704 _scsi_tinit 7 1 0 -263566680 0 0 0 0 ================================================================ ꡼Ρ FreeBSD 2.2.8-RELEASE VERSION ================================================================ 1. 2.2.7 β ------------------------- ͥεǽ: ---------------- o IDE 8G 礭̤ΤΤݡȤޤ. o 3Com 3c905B ͥåȥץݡȤޤ. o PCI ThunderLAN ١Υͥåȥץ (Compaq/Olicom) ݡȤޤ. o Linux ߥ졼ޤ礭⤷ޤ. QuakeII Τ褦ʤΤ ̤ӽФƤ褦ư褦ˤʤޤ. (ߤʤ󤫤׵λĤǤ) o -current pthread μˤ礭ѹ礵ޤ. FILE * 򸵤ˤեΥå, ʥν, ɤ߽񤭤Υå, ɤ POSIX ؤɽȤɤѥեޥ󥹤ޤǤޤ. o Ӱ¤ٱԤߥ졼Ԥ dummynet 򤤤Τ ޤ. dummynet(4) 򸫤Ƥ. o ʣΥ󥿡ե (10 100 Mbit/s) Υ֥å򥵥ݡȤޤ. bridge(4) 򸫤Ƥ. o NFS 饤Ȥι®Τɲäޤ. rc.conf(5) 'nfs_access_cache' 򸫤Ƥ. 桼ΰεǽ: ------------------ o /bin/sh signal trap handling Ϻľޤ. ¾ˤ⤢ޤ, tty-mode emacs system(2) , Ĥޤ᡼륨Ȥ ƤӽФƤư褦ˤʤޤ. o ppp(8) 3.0 礵, ¿δΤΥХνƱ, ޥ󥯤 VPN ݡȤȤäǽɲäޤ. ƥ: --------------- o Ƥ CERT/Bugtraq 2.2.8 ˤƤϤޤΤϤ٤ ǤкƤޤ. 2. ݡȤƤ빽 ----------------------- FreeBSD ϸߡ ISA, VLB, EISA, PCI Х 386SX Pentium 饹 ǤΤޤޤʼ PC ưޤ ( 386SX ϤǤޤ) IDE, ESDI ɥ饤֤䡢ޤޤ SCSI ȥ顢ͥåȥɤ ꥢ륫ɤˤбƤޤ ʲ FreeBSD Ǹư뤳ȤǧƤ뤹٤ƤμյΥ ȤǤʳιǤưȻפޤǤư äΤ򵭺ܤƤޤ 2.1. ǥȥ ------------------------- WD1003 ( MFM/RLL) WD1007 ( IDE/ESDI) IDE ATA Adaptec 1535 ISA SCSI ȥ Adaptec 154x ꡼ ISA SCSI ȥ Adaptec 174x ꡼ EISA SCSI ȥ (, ϥ󥹥ɥ⡼) Adaptec 274X/284X/2940/3940 (Narrow/Wide/Twin) ꡼ ISA/EISA/PCI SCSI ȥ Adaptec AIC7850 ܡ SCSI ȥ ** : SoundBlaster Υɤˤϥܡ BIOS ʤΤǡΥ ֡Ȥ뤳ȤϤǤޤ󡣥ܡ BIOS ϥ֡ȥǥХ ƥ BIOS I/O ٥бդΤɬפȤʤޤΥ ɤϥơפ CDROM ʤɤѤʬˤϲ⤢ޤ󡣥֡ ROM ʤ AIC-6x60 ١¾ΥɤǤƱͤǤĤΥ ƥǤϥ֡ ROM ޤ̤ˤΥƥǤŸ 줿ꥻåȤ˲餫ΥåɽޤΤ褦ʥ ǤϤΥǥХǤ֡ȤǤǤ礦ܺ٤ϥƥܡ ɤΥɥȤ򻲾ȤƤ Buslogic 545S & 545c Buslogic 445S/445c VLB SCSI ȥ Buslogic 742A, 747S, 747c EISA SCSI ȥ Buslogic 946c PCI SCSI ȥ Buslogic 956c PCI SCSI ȥ SymBios ( NCR) 53C810, 53C825, 53c860 53c875 PCI SCSI ȥ: ASUS SC-200 Data Technology DTC3130 (all variants) NCR cards (٤) Symbios cards (٤) Tekram DC390W, 390U and 390F Tyan S1365 Tekram DC390 DC390T ȥ (餯 AMD 53c974 ١¾ Υɤޤ). NCR5380/NCR53400 ("ProAudio Spectrum") SCSI ȥ DTC 3290 EISA SCSI ȥ (1542 ߥ졼⡼ɤˤ) UltraStor 14F, 24F 34F SCSI ȥ Seagate ST01/02 SCSI ȥ Future Domain 8xx/950 ꡼ SCSI ȥ WD7000 SCSI ȥ ʾΥݡȤƤ뤹٤Ƥ SCSI ȥˤơ SCSI-I SCSI-II μյˤĤƤ٤ƤΥݡȤ󶡤Ƥޤ ϥǥơץɥ饤 (DAT 8mm Exabyte ޤ) CDROM ɥ饤 ޤޤޤ ߡʲμ CDROM ݡȤƤޤ: (cd) SCSI 󥿡ե (ProAudio Spectrum SoundBlaster SCSI ޤ) (matcd) /Panasonic (Creative SoundBlaster) ѥ󥿡ե (562/563 ǥ) (scd) Sony ѥ󥿡ե (ǥ) (wcd) ATAPI CDROM 󥿡ե (acd) ATAPI CD-R 󥿡ե ('wcd' Ǥ) ʲΥɥ饤Фݼ餵Ƥޤ󡣤ưΤޤ󤷡ư ⤷ޤ: Adaptec 1510 ꡼ ISA SCSI ȥ (֡ȥǥХȤ) Adaptec 152x ꡼ ISA SCSI ȥ Adaptec AIC-6260 AIC-6360 ١Υܡɡˤ AHA-152X SoundBlaster SCSI ɤޤߤޤ եåԡơץ󥿡ե (Colorado/Mountain/Insight) (mcd) Mitsumi CD-ROM 󥿡ե (ǥ) 2.2. ͥåȥ ----------------------- Allied-Telesis AT1700 RE2000 AMD PCnet/PCI (79c970 & 53c974 ޤ 79c974) SMC Elite 16 WD8013 ͥåȥ󥿡եƤ¾¿ WD8003E, WD8003EBT, WD8003W, WD8013W, WD8003S, WD8003SBT, WD8013EBT ١ θߴʡ SMC Elite Ultra SMC Etherpower II Texas Instruments ThunderLAN PCI NICˤϰʲΤΤޤߤޤ: Compaq Netelligent 10, 10/100, 10/100 Proliant, 10/100 Dual-Port Compaq Netelligent 10/100 TX Embedded UTP, 10 T PCI UTP/Coax, 10/100 TX UTP Compaq NetFlex 3P, 3P Integrated, 3P w/ BNC Olicom OC-2135/2138, OC-2325, OC-2326 10/100 TX UTP DEC EtherWORKS III NICs (DE203, DE204, DE205) DEC EtherWORKS II NICs (DE200, DE201, DE202, DE422) DEC DC21040, DC21041, ޤ DC21140 ١ NIC (SMC Etherpower 8432T, DE245 ) DEC FDDI (DEFPA/DEFEA) NIC Fujitsu MB86960A/MB86965A HP PC Lan+ (ǥʥС 27247B 27252A) Intel EtherExpress (ɥ饤Ф԰ʤΤǤǤޤ) Intel EtherExpress Pro/10 Intel EtherExpress Pro/100B PCI Fast Ethernet Isolan AT 4141-0 (16 bit) Isolink 4110 (8 bit) Novell NE1000, NE2000, NE2100 ͥåȥ󥿡ե 3Com 3C501 3Com 3C503 Etherlink II 3Com 3c505 Etherlink/+ 3Com 3C507 Etherlink 16/TP 3Com 3C509, 3C579, 3C589 (PCMCIA), 3C590/592/595/900/905/905B PCI EISA (Fast) Etherlink III / (Fast) Etherlink XL Toshiba ͥåȥ IBM National Semiconductor PCMCIA ͥåȥɤ⥵ݡȤ Ƥޤ ȡ󥰤ΥɤݡȤƤޤ 2.3. ¾ΥǥХ --------------------- AST 4 ݡ ꥢ륫 ( IRQ ) ARNET 8 ݡ ꥢ륫 ( IRQ ) ARNET (ߤ Digiboard) Ʊ 570/i ®ꥢ Boca BB1004 4 ݡȥꥢ륫 (Modem ϥݡȤơ֤ޤ) Boca IOAT66 6 ݡȥꥢ륫 (Modem ϥݡȤƤޤ) Boca BB1008 8 ݡȥꥢ륫 (Modem ϥݡȤơ֤ޤ) Boca BB2016 16 ݡȥꥢ륫 (Modem ϥݡȤƤޤ) Cyclades Cyclom-y ꥢܡ STB 4 ݡȥ ( IRQ ) SDL Communications Riscom/8 ꥢܡ SDL Communications RISCom/N2 N2pci high-speed Ʊꥢܡ Stallion ޥݡȥꥢܡ: EasyIO, EasyConnection 8/32 & 8/64, Onboard 4/16, Brumby Adlib, SoundBlaster, SoundBlaster Pro, ProAudioSpectrum, Gravis UltraSound Roland MPU-401 ɥ Connectix QuickCam Matrox Meteor Video ե졼॰С Creative Labs Video Spigot ե졼॰С Cortex1 ե졼॰С Hauppauge Wincast/TV ܡ (PCI) STB TV PCI Intel Smart Video Recorder III Brooktree Bt848 åץ١Υե졼॰СƼ HP4020, HP6020, Philips CDD2000/CDD2660 Plasmon CD-R ɥ饤 PS/2 ޥ ɸ PC 祤ƥå X-10 power ȥ GPIB Transputer ɥ饤 Genius Mustek ϥɥ FreeBSD Ǥ IBM Υޥͥ (MCA) ХϥݡȤƤޤ 3. FreeBSD ----------------- FreeBSD ꤹˡϤޤ: 3.1. FTP/Mail ------------- FreeBSD տ魯뤹٤ƤΥѥåϡ FreeBSD Υ꡼ ȤǤ `ftp.freebsd.org' ftp Ǥޤ ¾ FreeBSD եȥߥ顼ƤȤ MIRROR.SITES ˵ܤ ƤޤۥåȤȤˤ (ͥåȥŪ) ֶᤤȤ ftp Ƥʤߥ顼ȤˤʤꤿȤȤϴޤ ޤʥߥ顼Ȥˤʤꤿˤϡfreebsd-admin@freebsd.org ޤǾܺ٤䤤碌Ƥ. 3.2. CDROM ---------- FreeBSD 3.0-SNAP 2.2.X-RELEASE CDROM 򼡤ΤȤʸ뤳Ȥ ǽǤ Walnut Creek CDROM 4041 Pike Lane, Suite D Concord CA 94520 1-800-786-9907, +1-925-674-0783, +1-925-674-0821 (FAX) 󥿡ͥåȤ orders@cdrom.com ޤ http://www.cdrom.com ʸ ǤޤǿΥϼΤȤ ftp Ǥޤ ftp://ftp.cdrom.com/cdrom/catalog -RELEASE CD ʤ 39.95 ɥ롢FreeBSD ξˤ 24.95 Ǥ FreeBSD SNAPshot CD 39.95 ɥ롢 FreeBSD-SNAP ɤ 14.95 ɥǤ (-RELEASE -SNAP ͽ̡˰äƤޤ) ǤϡС󤬥꡼뤴Ȥ˼ưŪƤޤ ϥǥ뤿Ӥ˥쥸åȥɤϰޤ 󥻥ˤĤƤäϤʤĤǤǤޤ (ǥǥǤϤޤ) ϥꥫ罰⡢ ᥭ 5 ɥ롢ʳ 9 ɥǤ Visa, Mastercard, Discover, Amarican Express ޤϹ罰ξڼ꤬ѤǤޤ 罰ǤϾʤ򸽶ȰǤϤޤե˥߽ϡ 8.25% ξǤäޤ ⤷ʤ, CD ̵֤ȤǤޤ. 4. ΥݡȡƤ򤹤硢ɤ ----------------------------------------------- ơХݡȡɤ󶡤ϤĤǤⴿޤޤʤˤߤ 顢鷺˥ݡȤƤ (ǽʤ顢ˡ⤢ ˽ޤ) 󥿡ͥåȤΥ᡼뤬ȤĶХݡȤˤϡ send-pr ޥɤ http://www.freebsd.org/send-pr.html ˤ CGI Ȥ Ȥ褤Ǥ礦ХݡȤϥХϿץˤä¤졢 ХݡȤˤĤƤǤ뤫᤯б뤳ȤǤޤΤ褦ˤ ƵϿ줿ХƤˤĤƤϡ䤿 WEB ȤΥݡȥ Ǹ뤳ȤǤޤΤǡХݡȤȤơ뤤¾Υ桼 ǧֻɸפȤƤפʰ̣ޤ ʤ餫ͳǥХݡȤФΤ send-pr ޥɤȤʤ ˤϡΥɥ쥹إ᡼äƤߤƤ freebsd-bugs@FreeBSD.org send-pr ΤΤϥ륹ץȤʤΤǡޤäۤʤ륷ƥǤ ñư뤳ȤǤޤ㳲ݡȤפñˤʤΤǡ Υ󥿥եȤäĺΤ˹ޤΤǤФ 㳲Ǥ˽ƤʤɤǧƤ ¾ƥ˥륵ݡȤˤĤƤʤɤϼΥɥ쥹إ᡼뤷Ƥ freebsd-questions@FreeBSD.org ޤ䤿ϡܥƥομ򤤤ĤǤⴿޤޤ - 䤿 ǤϤ⤦ȤƤ⤳ʤʤۤɡꤿȤѤߤˤʤäƤ ΤǤṲ̄ǻ䤿˥󥿥Ȥ硢뤤ϱοФϼ Υɥ쥹إ᡼뤷Ƥ freebsd-hackers@FreeBSD.org Υ᡼󥰥ꥹȤϡ֤ʤ¿ΡץȥեåޤΤǡ ᡼륢٤Ȥ⤯Ĥǡ FreeBSD ˴ פʥ٥ȤξФ褤ȤϡΥ᡼󥰥ꥹ ˿Τ褤Ǥ礦 freebsd-announce@FreeBSD.org ٤ƤΥ᡼󥰥ꥹȤϴ˾мͳ˻äǤޤ MajorDomo@FreeBSD.org ˥ܥǥ help Ȥ񤤤Ԥޤå äƤǡʥ᡼󥰥ꥹȤ˻äˡ䡢 ֤˥ˡʤɤξܤǤޤǤϿƤ 󤬡¾ˤ򤤤Ȥ뤤ʥ᡼󥰥ꥹȤޤ ǡ majordomo ˥᡼ä䤤碌ƸƤ 5. ռ ------- FreeBSD (ɴϤʤ⤷ޤ) ο͡ ʤäȤѤη̤ǤꡢΤǡΥ꡼ʤμ긵 ϤƤޤ FreeBSD ץȤΥåդδʥꥹȤˤĤƤϡ ʲ: http://www.freebsd.org/handbook/staff.html doc ۥե򥤥󥹥ȡ뤷Ƥаʲˤ⤢ޤ: file:/usr/share/doc/handbook/staff.html ʲä˴դޤ: £Ԥ http://www.freebsd.org/handbook/donors.html ˥ꥹ Ȥޤ Montana State University γ󤫤ΥݡȤ򤤤 ơοȤ FreeBSD Υ桼ȥƥγ ǺΥ꡼ˤޤ FreeBSD κΥ꡼򤢤ʤڤळȤǤ򿴤鵧äơ The FreeBSD Project # translated by motoyuki@jp.FreeBSD.org # Original revision: 1.2.2.6 $Id: relnotes.hlp,v 225.1 1997/11/02 02:20:29 hosokawa Exp $ ----------------------------------------- FreeBSD 2.2.8 --- RELEASE Version , , ----------------------------------------- /( )` \ \___ / | 褦FreeBSD 2.2.8 RELEASE ء /- _ `-/ ' (/\/ \ \ /\ ϡ1998ǯ7˥꡼줿2.2.7-RELEASE / / | ` \ ³ʥ꡼ǤΥХ O O ) / | ƥΰŪʰޤ `-^--'`< ' ѹξܤϡ꡼Ρ (_.) _ ) / (RELNOTES.TXT) 򻲾ȤƤ `.___/` / `-----' / Υ꡼˴ؤեɥХ <----. __ / __ \ ˾ϤɤʤΤǤⴿޤޤ <----|====O)))==) \) /==== ʲ˼᡼󥰥ꥹȤΤ <----' `--' `.__,' \ ŬʤȤäƤ | | ˾ߤͤ ABOUT.TXT 򸫤 \ / /\ ______( (_ / \______/ ,' ,-----' | `--{__________) : ѤʤС줬 RELENG_2_2 ΡֺǸΡץ꡼ ʤޤ2.2.8-RELEASE ꡢ2.2-stable ֥ݼ餬 ʤǤϤޤפʥѥåȥƥ ؤ뽤Ŭ 2.2-stable ĥ꡼˻ܤ뤳Ȥ̣ޤ ǽɤ -stable ֥ѡפϡ 3.0-stable 줿 (est: Jan 1999) ˰ܹԤ뤳Ȥ ᤷޤޤ 3.0-current ϡʬ 3.0-RELEASE եɥХå˻֤Ȼפ뤿ᡢ3.1-current ֥ 3.0-stable ֥ʬƤޤ󡣤ˤäơ3.0-stable ֥餫¿ѹΥޡ⤪ʤɬפ꡼ 󥸥˥ˤȤäơ֥ʬκȤڸǤޤ ** Υեϥ֡ȥեåԡʸ˥塼ˤ⤢ޤ ** ROAD MAP: README.TXT Υե롣 ABOUT.TXT ˡޤ FreeBSD ˴ؤ뤳Ȥ٤ơ RELNOTES.TXT ꡼Ρ - what's new & Υ꡼Ǥ ѹ LAYOUT.TXT Υ꡼Υǥ쥯ȥ깽˴ؤ ֡ȥեåԡ饤󥹥ȡ뤷ϡ Υեä˽פǤ * ΥեɤǤ! * ERRATA.TXT Υ꡼˴ؤ륨åκǿFTP Ȥˤեˤ˹ޤΤǡ 𤹤ˤޤǿΥեǧ (ǿΥե ftp.freebsd.org ޤ) HARDWARE.TXT GENERIC ͥι & ݡȤƤϡɥ˴ؤ INSTALL.TXT ˤեѤ PC FreeBSD ˥󥹥ȡ뤹ˡ UPGRADE.TXT Ǥ˥󥹥ȡ뤷Ƥ FreeBSD åץ졼ɤˡ TROUBLE.TXT ȥ֥륷塼ƥ o ˥󥹥ȡ뤹ΤǤСINSTALL.TXT ȡHARDWARE.TXT ɤǤ o FreeBSD 򥢥åץ졼ɤΤǤСUPGRADE.TXT ɤǤ o Ǥˤ狼äƤΤ뤿 ERRATA.TXT ɤळȤפǤ ΥեϳȯԤŤåץ졼ɡƥ ¾˴ؤǿξ󤬽񤤤Ƥޤ o CD ȯ˸Ĥä˴ؤϡʲΥե ȤƤ ftp://ftp.freebsd.org/pub/FreeBSD/2.2.8-RELEASE/ERRATA.TXT 3.0-CURRENT (HEAD ֥) SNAPSHOT ϰʲ URL 饤󥹥ȡǤޤ ftp://current.freebsd.org/pub/FreeBSD/ STABLE ⤷ϡCURRENT λѤͤƤΤʤ顢freebsd-stable ⤷ϡ freebsd-current Ȥä᡼󥰥ꥹ+====================== FreeBSD Υ󥹥ȡ ===========================+ | | | ܼ | | | | 0.0 ®Ϥ褦 | | 0.1 CD-ROM 󥿡ͥåȤ FreeBSD 󥹥ȡ | | | | 1.0 ʥ󥹥ȡˡξܺ | | 1.1 ͥåȥ CD-ROM 饤󥹥ȡ뤹 | | 1.2 եåԡǥ饤󥹥ȡ뤹 | | 1.3 DOS ѡƥ󤫤饤󥹥ȡ뤹 | | 1.4 QIC/SCSI ơפ饤󥹥ȡ뤹 | | 1.5 NFS FTP ȤäͥåȥΥ󥹥ȡ | | 1.5.1 NFS 󥹥ȡΥ | | 1.5.2 FTP 󥹥ȡΥ | | | | 2.0 DOS 桼Τ Q&A | | 2.1 ɤΤ褦ˤ FreeBSD ΤΰݤФ褤Ǥ | | 2.2 FreeBSD 鰵 DOS ե륷ƥѤǤޤ | | 2.3 DOS ĥѡƥϥޥȤǤޤ | | 2.4 FreeBSD DOS μ¹Է餻Ǥޤ | | | +=========================================================================+ : Jordan K. Hubbard ǽ: Sun Nov 29 03:32:14 PST 1998 0.0 ®Ϥ褦 === ============== Υޥ˥奢ϤʤΥޥ FreeBSD 򿷤˥󥹥ȡ뤹 ʸˤΤǤFreeBSD ΰΥ꡼饢åץ졼ɤ 饢åץ졼ɤ˴ؤפʾϥե UPGRADE.TXT 򻲾ȤƲ PC Υϡɥ FreeBSD ѤꤹΤˤʤƤʤС HARDWARE.TXT ɤDzˤ¿μԤǤڤʾ ޤ FreeBSD Ƥʤ֡ȥեåԡʸ˥塼ơɤǤ ɤˤ̤¿褦˸뤫Τޤ󤬡ʸɤ ˻֤򤫤Ƥ⡢ʬ˽򤷤Ȥˤʤ¿λ֤󤷤Ƥ ޤǹԤͤޤäƤޤäȤѤǤμबʬ 礦󥹥ȡ뤬Ѥ顢WEB ֥饦Ǥ⤦٤Υ˥塼 äƥ󥹥ȡ뤵줿 FAQ (褯) FreeBSD ϥɥ֥å HTML ʸɤळȤǤޤ󥿡ͥåȤ³ƤС֥饦 ȤäƥͥåȾ (http://www.freebsd.org Τ褦) WEBȤ򸫤뤳 ȤǤޤѲǽʥ꥽ˤĤƤ ABOUT.TXT 򸫤Ʋ ֤ǤĤޤŤȤ⤢ޤˤ֤Ĥä鵮Ťʥȥ ֥륷塼ȾΤ TROUBLE.TXT 򸫤ޤ礦 : FreeBSD θΥǡ»кˤƤޤΥ 󥹥ȡǡ֤ʤΥǥΤäƤޤפȤޤ ʥǡŬڤ˥Хååפ FreeBSD 󥹥ȡ˥塼κǽ ʳ˿ʤޤʤDzܤˤäƤΤǤ衪 FreeBSD 386 ʾ (ǰʤ 286 ץåϥݡȤƤޤ) ץå󥹥ȡˤ 5M RAMưˤ 4M RAM ư ϡɥǥζ̤Ϻ 80M ɬפǤ FreeBSD 򥤥󥹥ȡ뤹뤿˴¸ DOS ѡƥ򶹤 ˡˤĤƤϰʲ򻲾ȤƲ 0.1 CD-ROM 󥿡ͥåȤ FreeBSD 󥹥ȡ --- -------------------------------------------------- ִñˡ CD Υ󥹥ȡǤݡȤ CD-ROM ɥ ֤ Walnut Creek CDROM FreeBSD 󥹥ȡ CD С줫 饤󥹥ȡϤˡ 3Ĥޤ 1. ƥब bootable CD-ROM ǥ򥵥ݡȤƤơ񡢥 ȥ䡢ƥˤäƤ PC BIOS Υåȥåץ˥塼 ǡͭˤ褦ǤޤˡʤĤͭˤƤ 硢FreeBSD 2.2.1 ڤӤʹߤ CD ϡE1 Torrito bootable CD ʤ򥵥ݡȤƤޤñ CD CD-ROM ɥ饤֤ ƥ֡Ȥȥ󥹥ȡ뤬Ϥޤ 2. DOS CD-ROMɥ饤֤褦ˤǤɥ饤Ф硢 ޤǾŷʥޥ͡ڤäػߤ DOS ư CD-ROM Υɥ饤֤ذư (Ǥ E:\) ƤƤߤƤ E> install FreeBSD 󥹥ȡ뤬Ω夬ϤǤ ⤦ޤԤʤä硢ƥå 3 ˿ʤǤ 3. FreeBSD ۥѥå floppies/boot.flp ե뤫 FreeBSD ֡ȥեåԡäƤDOS 饹ץ ``makeflp.bat''Ȥ뤤 floppies/README.TXT ɤ ǡ¾Υڥ졼ƥ󥰥ƥǤΥ֡ȥեåԡκ Ĵ٤Ƥθ塢Υեåԡľܥ֡ȤƤ FreeBSD 󥹥ȡϤǤ CD-ROM ̵PPPslip Ȥäƥͥåȥͳǥ󥹥ȡ 뤷С/floppies/boot.flp ե ftp://ftp.freebsd.org/pub/FreeBSD ¿Υߥ顼 (http://www.freebsd.org/handbook/mirrors.html) äƤơ 3ˤäƤɤݤνפʾ 󤬤ե floppies/README.TXT ɤǤ ֡ȥեåԡǤ顢ʸ 1.5 ˿ʤǤFTP NFS ǥ󥹥ȡ뤹ݤΥĤ񤤤Ƥޤ 1.0 ʥ󥹥ȡˡξܺ --- ---------------------------------- ҤȤӺǽΥ󥹥ȡ̤˹Ԥ失С˥塼λؼˤä 󥹥ȡʤ뤳ȤǤϤǤޤǤ FreeBSD Υ ȡץȤäȤʤ硢˥塼ƬΡֻˡ ʸΤĤ䡢ʸץ֥˥塼Τޤޤʸܤ ̤ƤȤ򤪤ᤷޤ ФƤƲ: ɤβ̤ʬʤʤäƤޤäȤϡ F1 áƤΥ˴ؤ륪饤ʸ򸫤Ƥ FreeBSD Υ󥹥ȡи̵ͭˤ餺ֽ鿴ԡץ󥹥ȡ⡼ ɤ֤ǤƻڤˤäƤСޤޤڤʥ ꥹȹܤ٤Ƥ˳μ¤˹ԤȤǤ뤫ǤFreeBSD Υ󥹥ȡ ;͵äơ򤹤٤ʬäƤСֹ®פ֥ ץ󥹥ȡ륪ץȤޤ¸Υƥ򥢥åץ졼 ɤʤ֥åץ졼ɡץץȤޤ FreeBSD 󥹥ȡǤϡ󥹥ȡΤȤơեåԡ, DOS, ơ, CD-ROM, FTP, NFS, UFS ѡƥ򥵥ݡȤƤޤƥ ǥ饤󥹥ȡ뤹륳ĤϤβ˽񤤤Ƥޤ 1.1 ʥ󥹥ȡˡξܺ --- ---------------------------------- CD-ROM ɥ饤֤饤󥹥ȡ뤷С®Ϥ褦 ɤǤʬΥƥ CD-ROM ɥ饤̵֤ͥåȥ ³Ǥ̤Υƥ CD-ROM ɥ饤֤ FreeBSD CD ȤΤ СĤˡޤ 1. FreeBSD ޥ CD-ROM ɥ饤֤ľ FTP 󥹥ȡ뤹 ȤϡȤƤñǤʲιԤ (vipw ޥɤȤä) ѥ ɥեɲäǤ ftp:*:99:99::0:0:FTP:/cdrom:/sbin/nologin ǡʤΥͥåȥïǤ⡢ǥ FTP ӡFTP ȡץ˥塼Ρ֤¾פ򤷤 "ftp://" ϤǤޤ 2. 󥹥ȡ뤹ޥľ CD-ROM 򥨥ݡȤΤ NFS ʤ顢ޤ (CD-ROM ɥ饤֤Τޥ) /etc/exports ե ˤΤ褦ʥȥɲäޤ /cdrom -ro ziggy.foo.com 󥹥ȡ NFS CD-ROM ޥ "ziggy.foo.com" ľܥޥ ȤǤ褦ˤ뤿ǤCD-ROM Τޥ NFS ФȤ ƤꤵƤʤƤϤʤޤ󡣤󡢤ˡɤʬ ʤСrc.conf(5) ɤŬڤꤹ뵤ˤʤʤ¤ NFS 󥹥ȡϤ餯ŬǤϤʤǤ礦ʬޤ Ȥơޥ򥤥󥹥ȡ뤹 NFS 󥹥ȡΥѥȤ :/cdrom ϤǤޤ 1.2 եåԡǥΥ󥹥ȡ --- ------------------------------------ 󥹥ȡ餬Υϡɥ򥵥ݡȤƤʤȤͳǡ ñˡֿʤǼȤẤˡפȤͳǥեåԡǥ饤 󥹥ȡ뤹뱩ܤˤä硢ޤǽˡ󥹥ȡѤ˲礫 ΥեåԡǥѰդʤƤϤʤޤ ǽˡfloppies/README.TXT ˽֡ȥեåԡǥ1 ޤ LAYOUT.TXT ɤߡ۷פդƤϤɤΥե եåԡǥΤɤФƤΤ񤤤Ƥ 뤫Ǥ ˡʤȤ bin (Хʥۥե) ǥ쥯ȥե뤬 ʬ 1.44MB եåԡǥɬפˤʤޤ⤷ DOS Ķ ǥեåԡǥѰդʤСMS-DOS FORMAT ޥɤǥե ޥåȤʤƤϤޤ󡣤⤷ Windows ȤäƤʤСե ޥ͡ΥեޥåȥޥɤȤȡ ǥեޥåȺѤߤΥեåԡǥѤƤϤޤ󡣻Ż μ¤˿ʤ뤿ˡʬȤǤ⤦٥եޥåȤƤ ޤǥ桼𤵤줿¿ϡøʥեޥåȤΥǥ ȤäƤȤǤ䤬äդ򴭵ΤϤΤ Ǥ ¾ FreeBSD ޥǥեåԡǥ硢եåԡǥ 줾 DOS ե륷ƥɬפϤʤΤǤǤե ޥåȤϰǥǤϤޤ󡣰ʲ˼ϢΥޥɤˤ `disklabel' `newfs' ޥɤѤ뤳Ȥǡեåԡǥ UFS ե륷ƥ뤳ȤǤޤ: fdformat -f 1440 fd0.1440 disklabel -w -r fd0.1440 floppy3 newfs -t 2 -u 18 -l 1 -i 65536 /dev/rfd0 DOS 뤤 UFS ǥեåԡǥեޥåȤǡե 򥳥ԡɬפޤ̾ 1.44MB եåԡǥФ ۥե 5 Ĥ礦褦ˡۥեʬ䤵Ƥޤ ơΥեåԡǥΥեͤǤȤĴ ǡɬפʪ٤Ƥ߽ͤޤǥԡƤʪ ϥեåԡǥб륵֥ǥ쥯ȥˤʤƤϤ 㤨Сa:\bin\bin.inf, a:\bin\bin.aaa:\bin\bin.abȤ Ǥ **: ХʥۥåȤΰܤΥեåԡǥˡbin.inf ե Ƥɬפޤ󥹥ȡϤΥեɤ߹ǡ ۥեϢ뤹ݤˡۥե򤤤ļФ ȽǤ뤿˻Ѥ뤫Ǥۥեեåԡǥ ݤˤϡ.inf ե "ɬ" ơۥåȤΰ ܤΥեåԡǥƤȡ ȡ󥹥ȡˡ֥ǥ̤ãǡ֥եåԡ 򤷤ƻĤ䤤碌˱Ƥ 1.3 DOS ѡƥ󤫤Υ󥹥ȡ --- ------------------------------------ MS-DOS ѡƥ󤫤Υ󥹥ȡνȤɬפʤȤϡ ե򡢴 DOS ѡƥ ("Drive C:") "FREEBSD" Ȥ ǥ쥯ȥñ˥ԡ뤳ȤǤ㤨СCD-ROM ԡեȤ DOS Υ󥹥ȡǡFreeBSD κǾ¤ 󥹥ȡԤʤˤϡʲΤ褦ˤФ褤Ǥ礦: C:\> MD C:\FREEBSD C:\> XCOPY /S E:\BIN C:\FREEBSD\BIN `E:' CD ޥȤɥ饤֤ǤȲꤷƤޤ ʤ󥹥ȡ뤷٤Ƥ 'DISTS' бۥե (ΰ褬¤) `C:\FREEBSD' β˥󥹥ȡ뤷Ƥ Ǥ⡢ܥХʥ(BIN)ۥեɬפǤ **: ˤ뵤ʤ顢嵭򤹤٤ƼʬμǤ뤳Ȥǽ 䡢Τ٤ƤϡRobert Nordier "setup.exe" ץ ȤϤ뤫ưפãǤޤΥץǤϡʪ Υ˥塼ɬפʪϡΰ褬ʬ뤫ɤ ǧξ塢C:\FREEBSD ؤΥԡ򤹤٤ƼưŪˤäƤޤ ǥ쥯ȥΥԡѤ顢뤤 setup.exe ¹ԤƼưǤ ʤä顢install.bat ץȤ¹Ԥ DOS Υ󥹥ȡ 뤬ϤǤޤ (: Ȥޤʤޥ͡⤢ޤ 줬ưƤ褦ʤ餢餫 QEMM EMM386 ߤޤ) 뤤 0.1 ̤˥֡ȥեåԡǥƤ 2.4 QIC/SCSI ơפ饤󥹥ȡ --- ------------------------------- ơפ饤󥹥ȡ뤹Ȥ󥹥ȡץϡե뤬ñ ˥ơ׾ tar եޥåȤǽ񤭹ޤƤȻפǤޤ ǡɬפʪΤ٤ƤΥեꤷǡΤ褦ʥޥɤ Ȥä tar եޥåȤǥơפ˽񤭹Ǥ cd /where/you/have/your/dists tar cvf /dev/rwt0 (or /dev/rst0) dist1 .. dist2 󥹥ȡμ¹Իˤϡɤΰǥ쥯ȥ(ɤΥǥ쥯ȥ 뤫Ǥޤ)ˡʬäơפΡ֤٤ƤΡƤƤ νʬʶΰ褬γǧɬפǤơפˤϥॢ ǤʤȤޤΤǡΥ󥹥ȡˡˤ ̤ΰǥΰ褬ɬפˤʤΤǤ ơפ˽񤭹ޤ줿ΤƱ ̤ΰǥΰ褬ɬפˤʤͽۤƤ٤Ǥ *äդ*: 󥹥ȡ¹Իˡơפ boot floppy ε ư""ɥ饤֤ˤʤФޤ󡣤ʤС󥹥ȡ "probe" ϥơפ򸫤ĤǤޤ ޤǽǤС0.1 ˤäƥ֡ȥեåԡǥ 󥹥ȡ³ԤƤ 1.5 NFS FTP ȤäͥåȥΥ󥹥ȡ --- ------------------------------------------------- ǽˤäƥ֡ȥեåԡǥ顢 3 פ³1ĤȤäͥåȥͳǻĤΥ󥹥ȡ򤪤 ȤǤޤ Serial port: SLIP / PPP Parallel port: PLIP (``laplink'' Υ֥) Ethernet: ɸŪʥͥåȥȥ ( PCCARD ޤ). ꥢݡ -------------- SLIP ݡȤϤޤʤǤޤ󡣴Ūˤϡ㤨2Υԥ塼 ֤Ĥʤꥢ륱֥ʤɤľ³˸¤ޤ³ϡľǤ Фʤޤ󡣤ʤʤ SLIP 󥹥ȡϸǤϥ륢 ׵ǽ󶡤ƤʤǤ⤷³˥ǥˤȯƤʤɡ 󥯤ȤýɬפʤСSLIP PPP 桼ƥƥ 򤪤ᤷޤ ⤷ PPP ȤʤС󥿡ͥåȥӥץХ(ISP) IP 쥹 DNS ξ긵ѰդƤ뤳ȤǧƤ ϥ󥹥ȡᤤʳɬפˤʤޤPPP ưŪʥɥ 򥵥ݡȤƤΤǡISP εǽ򥵥ݡȤƤ硢 PPP ISP ľܼǤΤǤ礦ˤäƤϡʤ IP ɥ쥹ΤäƤȤɬפ⤷ޤ ʤλäƤǥȯƤ뤿ˤϡޤޤ "AT ޥ" λȤΤɬפǤ礦PPP Υ뵡ǽñʥ ʥ륨ߥ졼󶡤Ƥޤ ѥݡ -------------- ¾ FreeBSD ޥ(2.0R ʹ)⤷ Linux ޥȤľ³ǽ ʤС"laplink" Υѥݡȥ֥Ȥä󥹥ȡ ޤѥݡȷͳΥǡž®٤ϡꥢ饤ͳ ǽ®٤٤˹®(50k/äޤ)ǤΤǡ®˥󥹥ȡ 뤬Ǥޤˡ11Υѥ륱֥ȤˤϡΡIP ɥ쥹ȤɬפϤޤ󡣥󥯤νüˤ RFC 1918 Υɥ (Ĥޤ 10.0.0.1, 10.0.0.2, etc)ȤФΤǤ **: PLIP ³Ȥ Linux ޥѤ硢TCP/IP ̤Ρifconfig ؤΤ¾Υץץեɤˡ"link0" ꤷ Ƥɬפޤ ͥå ------------ FreeBSD ɸŪ PC ͥåȥɤʬ򥵥ݡȤƤꡢ ݡȤƤ륫ɤΰɽ (ɬפ) "FreeBSD ϡɥ " ΰȤ󶡤Ƥޤ (֡ȥեåԡǥΡʸ ץ˥塼 CD-ROM κǾ̤Υǥ쥯ȥ򻲾ȤƤ)ݡ ȤƤ PCMCIA ͥåȥɤȤϡåץȥå PC ˡɤƤǧƤFreeBSD ϡ ˤǤϥ󥹥ȡ PCMCIA ɤ "ۥåȥ󥵡" ݡȤƤޤ ͥåȥǤ IP ɥ쥹ȡʬΥɥ쥹饹ǤΥͥåȥޥ ͤȼʬΥޥ̾ΤäƤȤɬפˤʤޤʤ ƥԤʤΥͥåȥФƤɤͤŬǤ뤫 򶵤ƤǤ礦⤷¾ΥۥȤIPɥ쥹ǤϤʤ̾ǻȤ ʤС͡ॵФȤ³뤿Υȥ(PPP Ѥ ʤСץХ IP ɥ쥹Ǥ)Υɥ쥹ɬפˤʤޤ μФ狼ʤʤС餯μΥ󥹥ȡ Ƥߤˡ"ޤǽ"ʤΥȤΥƥԤä ٤Ǥ 򤷤 IP ɥ쥹ͥåȥޥȤäơ ƯƤͥåȥФ³ȡ񤵤뤳ȤϤۤܳμ¤Ǥ ٤ޤǥͥåȥ³ưƤޤȡNFS FTP ͳǤΥ 󥹥ȡ뤬³ǽˤʤޤ 1.5.1 NFS 󥹥ȡΥ ----- ---------------------- NFS 󥹥ȡľŪˡǤ: ɬפ FreeBSD ۥե򥵡ФΤɤñ˥ԡƤNFS ǥ ǤξꤷƤ ⤷ΥФ (Ū Sun Linux ơ ΥǥեȤǤ褦) øݡȡץݡȤ ƤʤʤС󥹥ȡʤ뤿ˤϡ֥ץ ˥塼ǤΥץꤹɬפޤ ⤷ž졼Ȥ٤Ȥ褦ʼΰͥåȥ ɤȤ硢֥ץפŬʥե饰ꤷʤǤ NFS 󥹥ȡǽ뤿ˤϡФ "subdir mounts" ⥵ݡȤʤƤϤޤ󡣤ĤޤꡢFreeBSD 2.2.8 ۥե Υǥ쥯ȥ꤬ ziggy:/usr/archive/stuff/FreeBSD ˤ Сޥ ziggy /usr /usr/archive/stuff Ǥʤ /usr/archive/stuff/FreeBSD ľܥޥȤǤ褦ˤƤ ɬפޤ FreeBSD /etc/exports եǤϤ ``-alldirs'' ץ 椵Ƥޤ¾ NFS ФϡȤ̤λˡ ⤷ޤ󡣥Ф顢`Permission Denied' åĺ פ硢Фγǥ쥯ȥΥޥȵ꤬ ʤȤȤꤽǤ 1.5.2 FTP 󥹥ȡΥ ----- ---------------------- FTP 󥹥ȡϡŬʺǿС FreeBSD äƤ ɤΥߥ顼Ȥ¹ԤƤ⤫ޤޤ󡣥󥹥ȡ FTP ȡץ˥塼ΤˤϡΤۤȤƤξ Ŭڤ褬ޤޤƤޤ ⤷Υ˥塼˽ФƤʤɤ¾ FTP Ȥ饤 ȡ뤹ȤʬΥ͡ॵФ꤬꤭Ǥ ʤȤȤʤС˥塼Ρ֤¾פǼʬȤ URL ꤹǤޤURL ˤϥۥ̾ IP ɥ쥹 ǤޤΤǡʲλϥ͡ॵФʤƤưޤ ftp://192.216.191.11/pub/FreeBSD/2.2.8-RELEASE FTP 󥹥ȡˤϼĤΥ⡼ɤѤǤޤ o FTP: ٤Ƥ FTP žФɸ "Active" ⡼ɤѤ ϡեͳȤۤȤɤξư ޤ󤬡"passive mode" 򥵥ݡȤƤʤŪŤ FTP ФǤϡ褤Ȥ¿Ǥ⤷ "passive mode" Ǥ³ڤƤޤʤС ߤƤ o FTP Passive: ٤Ƥ FTP žФ"Passive"⡼ɤѤޤ ʥݡȥɥ쥹Ǥ³׵ʤե 桼̤뤳Ȥǽˤʤޤ **: active/passive⡼ɤϡ`proxy' ͥƱǤ ޤproxy FTPФϰۤʤݡȤ³׵ԤäƤ ޤ Τ褦ʾˤϡΤ褦 URL ꤷʤƤϤޤ ftp://foo.bar.com:1234/pub/FreeBSD "1234" ϡproxy ftp ФΥݡֹǤ 2.0 DOS 桼 Q&A --- ---------------- 2.1 Help! ʤ! ǽˤ٤ƤʤƤϤޤ? --- ------------------------------------------------------------ ⤷ʤΥޥǴ DOS äƤơξ FreeBSD 򥤥󥹥ȡ 뤹뤿ΥǥζۤȤɤʤޤäʤȤʤС ٤Ƥʤʤ櫓ǤϤޤ! ξ硢"FIPS" 桼ƥƥ ˤͭѤǤ FreeBSD CD-ROM ޤϳ FTP Ȥ tools/ ֥ǥ쥯ȥˤޤ FIPS ˤꡢǤˤ DOS ѡƥĤʬ䤷ơǽΥѡ ƥˤȤȤƤ¸ĤġĤζΰ FreeBSD 󥹥ȡ뤹ǤޤޤǽˡDOS 6.xx "DEFRAG" 桼ƥ ƥ֥ΡȥǥġפʤɤѤơDOS ѡƥ "defrag" Ʋθ FIPS 餻ƤFIPS ɬפʾ ʹƤޤFIPS μ¹Ԥλȡ֡Ȥơѡƥ FreeBSD 򥤥󥹥ȡ뤹뤳ȤǤ褦ˤʤޤFIPS ܤΥѡƥǽΥѡƥΡʣפȤƺ ǡˤϰĤä DOS ץ饤ޥѡƥĤ⤢褦 ߤȤȤˤⵤĤƤۤɬפޤ! ;ʬ DOS ץ饤ޥѡƥ򤿤ñ˺Ф褤Ǥ( Ĵ٤Ǥ뤳ȤǧƤ褦! :) : FIPS ϸ߿С Windows 95 ǻȤƤ FAT32 VFAT ΥѡƥǤưޤ󡣤Υѡƥʬ䤹 ˤϡPartition Magic 3.0 Τ褦ʻΤʤɬפˤʤǤ礦ǰ ǤϥǥΤ Windows ѡƥˤƤơϤᤫ 饤󥹥ȡ뤷ľʤ˺Ǥ 2.2 FreeBSD 鰵 DOS ե륷ƥѤǤޤ --- ------------------------------------------------------- ⤷ Stacker(tm) DoubleSpace(tm) ʤɤΥ桼ƥƥ ƤΤǤСFreeBSD ϥե륷ƥ󰵽̤ǻĤƤʬ ΤߤѤǤȤΤȤǤե륷ƥλĤʬϰ Ĥ礭ʥե (stack / dblspace 줿եǤ) Τ褦 ˸ޤ*Υեʤ褦!* ȡ餯礤 뤳ȤˤʤǤ礦 ⤷ DOS FreeBSD δ֤ΥեžɬפʤС󰵽̤ DOS ĥ ѡƥ̤˺ƻȤ褤Ǥ礦 2.3 DOS ĥѡƥϥޥȤǤޤ --- -------------------------------------------- ϤDOS ĥѡƥϡFreeBSD ˤ¾``饤''θ ֤ޤĤޤꡢD: ɥ饤֤ /dev/sd0s5 ˡE: ɥ饤֤ /dev/sd0s6 ˤȤǤǤϳĥѡƥ SCSI ɥ 0 ˤꤷƤΤǤIDE ɥ饤֤ξϡ ``sd'' ``wd'' ֤Ȥ褤Ǥ礦ΰ㤤̤ˤС ĥѡƥ¾ DOS ɥ饤֤ޥȤΤȤޤäƱ褦 ˥ޥȤǤޤĤޤꡢ mount -t msdos /dev/sd0s5 /dos_d פǤ 2.4 FreeBSD DOS μ¹Է餻Ǥޤ --- --------------------------------------------------- FreeBSD 3.0 BSDI doscmd 桼ƥƥȤƿʹκȤ¸ ŤĤĤޤޤƺʬޤ⤷κȤ˶̣ Τʤ顢freebsd-hackers@FreeBSD.org mail ꡢɽ򤷤 ports 쥯ˡ"pcemu" Ȥ̾ɤǤ桼ƥƥ ⤢ޤ DOS Υƥȥ⡼ɤΥץꥱ¹Ԥ ʬ 8088 BIOS ӥ򥨥ߥ졼ȤƤޤư ˤϡX Window System (XFree86 3.2 Ȥ󶡤) ɬפǤ ---- End of Installation Guide --- # amended by hosokawa@jp.FreeBSD.org 1997/03/30 12:48:18 # amended by kuma@slab.tnr.sharp.co.jp 1997/03/17 11:18:12 # translated by hmiya@el.nec.com # Sat Jul 13 14:54:27 PDT 1996 # Original revision: 1.1.2.1 $Id: install.hlp,v 225.1 1997/11/02 02:20:29 hosokawa Exp $ ܼ ---- 0. ΥɥȤɤ 1. ǥեȥե졼 (GENERIC ͥ) 2. UserConfig Ȥä FreeBSD ͥѹ 3. LINT - ¾βǽʥե졼 4. ݡȤϡɥ ϡɥ˴ؤQ&AˤĤƤ TROUBLE.TXT 򻲾ȤƲ ========================================================================= 0. ΥɥȤɤ -- ------------------------ ԥ塼νϤȥ桼ϤȤ̤뤿ˡ桼Ϥˤ `-' ʸDzդƤޤ 1. ǥե (GENERIC) ե졼 -- ----------------------------------------- ʲ˼ɽˡGENERIC ͥ˴ޤޤƤ뤹٤ƤΥǥХ򼨤 ϡ󥹥ȡˤäƥ롼ȥѡƥ֤륪ڥ졼 ƥ󥰥ƥڤʬǤGENERIC ͥ򰵽̤Τ ȡեåԡǥ DOS ֡ȥ᡼ѤƤޤ ɽˤϡɥ饤ФϡɥȤ̿Ѥ뤵ޤޤʥѥ᥿ ƤޤɽˤϻͤĤΥѥ᥿ޤ٤ƤΥǥХ ѥ᥿Ѥ櫓ǤϤޤ: Port ǥХ I/O ݡȤγϰ֡16 ɽ IOMem ǥХȤκDz () ɥ쥹16 ɽ IRQ ǥХɥ饤Ф˥٥ȤΤ餻Τ˻Ȥֹ 10 ɽ DRQ ǥХᥤȤδ֤ǥǡȤꤹ˻Ȥ DMA (direct memory access) ֹͥ桢10 ɽ ɽ `n/a' ȤʤäƤ륨ȥϡǥХΥѥ᥿Ȥ ̣Ƥޤ`dyn' ϥƥ֡Ȥκݤ˥ͥ뤬 ͤưŪ˷򼨤ΤǤ˵ȤɬפϤޤ FreeBSD GENERIC ͥ: Port IRQ DRQ IOMem Description ---- --- --- ----- --------------------------------- fdc0 3f0 6 2 n/a եåԡǥ ȥ wdc0 1f0 14 n/a n/a IDE/MFM/RLL ǥ ȥ wdc1 170 15 n/a n/a IDE/MFM/RLL ǥ ȥ ncr0 n/a n/a n/a n/a NCR PCI SCSI ȥ bt0 330 dyn dyn dyn Buslogic SCSI ȥ uha0 330 dyn 6 dyn Ultrastore 14f aha0 330 dyn 5 dyn Adaptec 154x/1535 SCSI ȥ ahb0 dyn dyn dyn dyn Adaptec 174x SCSI ȥ ahc0 dyn dyn dyn dyn Adaptec 274x/284x/294x SCSI ȥ aic0 340 11 dyn dyn Adaptec 152x/AIC-6360 SCSI ȥ amd0 n/a n/a n/a n/a Tekram DC-390(T) / AMD 53c974 PCI SCSI ȥ nca0 1f88 10 dyn dyn ProAudioSpectrum sea0 dyn 5 dyn c8000 Seagate ST01/02 8 bit ȥ wt0 300 5 1 dyn Wangtek Archive QIC-02/QIC-36 mse0 23c 5 n/a n/a Microsoft/Logitech/ATI Хޥ psm0 60 12 n/a n/a PS/2 ޥ mcd0 300 10 n/a n/a ߥĥ CD-ROM matcd0 230 n/a n/a n/a /Panasonic CD-ROM scd0 230 n/a n/a n/a ˡ CD-ROM sio0 3f8 4 n/a n/a Serial Port 0 (COM1) sio1 2f8 3 n/a n/a Serial Port 1 (COM2) lpt0 dyn 7 n/a n/a Printer Port 0 lpt1 dyn dyn n/a n/a Printer Port 1 de0 n/a n/a n/a n/a DEC DC21x40 PCI (21140 100BaseT ɤޤ) ed0 280 10 dyn d8000 WD & SMC 80xx; Novell NE1000 & NE2000; 3Com 3C503; HP PC Lan+ eg0 310 5 dyn dyn 3Com 3C505 ep0 300 10 dyn dyn 3Com 3C509 ex0 dyn dyn dyn n/a Intel EtherExpress Pro/10 fe0 300 dyn n/a n/a Allied-Telesis AT1700, RE2000 ٻ FMV-180 ꡼ fxp0 dyn dyn n/a dyn Intel EtherExpress Pro/100B ie0 300 10 dyn d0000 AT&T StarLAN 10 EN100; 3Com 3C507; NI5210 ix0 300 10 dyn d0000 Intel EtherExpress ex0 dyn dyn dyn dyn Intel EtherExpress Pro/10 le0 300 5 dyn d0000 Digital Equipment EtherWorks 2 EtherWorks 3 lnc0 280 10 n/a dyn Lance/PCnet (Isolan, Novell NE2100, NE32-VL) tl0 dyn dyn n/a dyn TI ThunderLAN (Compaq/Olicom) vx0 dyn dyn n/a dyn 3Com 3c59x ((Fast) Etherlink III) xl0 dyn dyn n/a dyn 3Com 3c900, 3c905 3c905B ((Fast) Etherlink XL) ze0 300 5 n/a d8000 IBM/National Semiconductor PCMCIA Ethernet ȥ zp0 300 10 n/a d8000 3Com 3c589 Etherlink III PCMCIA Ethernet ȥ --- End of table --- ʤΥԥ塼ǤΤΥϡɥ꤬ɽȤϤȤʤäƤꡢ ιܤ 'dyn' ǤϤʤˤϡɽ˹碌ƥϡɥ 뤫UserConfig 桼ƥƥȤäƥͥϡɥ 碌뤫Ρɤ餫ɬפǤ(򻲾) ⤷꤬äƤȡͥϥǥХ򸫤Ĥʤäꡢ ưʤäꤹ뤳ȤǤ礦 2. UserConfig Ȥä FreeBSD ͥѹ -- ---------------------------------------------------- 󥹥ȡեåԡǥ FreeBSD ͥϡΥϡ ɥΤΥɥ饤ФޤǤꡢʤΥƥʳΤޤޤ ƥǥ󥹥ȡ뤬ǽȤʤ褦ˤʤäƤޤԹʤ ˡPC ϡɥˤꡢΥǥХΤΤĤ Τǧ뤳ȤǤޤä¾ΥǥХ򸡽нƤޤ ˤϡʺ˴ޤƤޤ⤷ޤ Τ褦ʽñˤ뤿ˡFreeBSD UserConfig 󶡤Ƥ UserConfig ˤäơͥ뤬ɤ˥桼ϥǥХ ɥ饤Фꤷ̵ꤹ뤳ȤǤ褦ˤʤޤ ˤäơŪʥǥХɥ饤Фξͤ䡢ǥեȤΥǥХɥ饤 Ф˹碌ƥϡɥꤹ֤ʤȤǤޤ FreeBSD Υ󥹥ȡκݡUserConfig ˤäꤵ줿ƤϵϿ ޤäơ򤪤ʤΤϰפǤ ǥХɥ饤д֤δĤǾ뤿ᡢƥ˴طʤɥ饤Ф ̵뤳ȤϽפǤΤ褦ʴĤȡ 뤳Ȥˤʤޤ ꥢ륳󥽡桼Τᡢ뤤ϥޥɤáͤΤΥ ޥɥ饤󥤥󥿥եȡᡢġˡ󶡤 륹꡼Ρvisualץ󥿥ե UserConfig 󶡤ޤ ʲˡvisualץ⡼ɤǤ UserConfig Υץ륹꡼󥷥åȤ ޤ ---Active Drivers---------------------------10 Conflicts----Dev--IRQ--Port-- Storage : (Collapsed) Network : NE1000,NE2000,3C503,WD/SMC80xx Ethernet adapters CONF ed0 5 0x280 NE1000,NE2000,3C503,WD/SMC80xx Ethernet adapters CONF ed1 5 0x300 Communications : (Collapsed) Input : (Collapsed) Multimedia : ---Inactive Drivers-----------------------------------------Dev------------- Storage : Network : (Collapsed) Communications : Input : Multimedia : PCI : ---Parameters-for-device-ed0------------------------------------------------ Port address : 0x280 Memory address : 0xd8000 IRQ number : 5 Memory size : 0x2000 Flags : 0x0000 ---------------------------------------------------------------------------- IO Port address (Hexadecimal, 0x1-0x2000) [TAB] Change fields [Q] Save device parameters ꡼ϰʲλͤĤʬʬ䤵Ƥޤ - Active Drivers. ͭƤǥХɥ饤Фȡ δܥѥ᥿󤵤Ƥ - Inactive Drivers. ¸ߤƤ뤬ͭˤʤäƤʤ ɥ饤Ф󤵤Ƥ롣 - ѥ᥿Խꥢ. ɥ饤Хѥ᥿ԽѤ롣 - إץꥢ. ȥΥإפʬɽ 롣 Active Drivers Inactive Drivers Τɤ餫ĤоݤȤʤ ޤơꥹθоݤΥȥ꤬ϥ饤ɽޤ ꥹˤ¿Υȥ꤬С뤹뤳ȤǤޤ ϥ饤ɽƤʬϥ륭ǰư뤳ȤǽǤꡢ ޤĤΥꥹȴ֤ϡTAB ǰư뤳ȤǤޤ Active ΥꥹȤ˵󤲤Ƥɥ饤ФϡCONFפȥޡƤ 礬ޤϡΥǥХ˴ؤġ뤤Ϥʾ ѥ᥿¾ΥǥХȾ (CONFlict) Ƥ뤳Ȥ򼨤Ƥꡢ ֥ŪʸȤʤ뤳Ȥ򼨤Ƥޤͤ꡼ ΰ־ɽޤ Ūʥ롼Ȥơƥ¸ߤƤʤǥХΥɥ饤Ф̵ ꡢ󥹥ȡ뤵Ƥϡɥ˹碌ľ ȤˤäơΤ褦ʾͤϤʤ٤Ǥ ꥹǤϡɥ饤зϤδܵǽˤäƥ롼ײƤ 롼פϡɽñ㲽뤿ˡCollapsed(ޤ줿) ֤ɽ ޤ (ϥ롼פΥǥեȤξ֤Ǥ)롼פޤ ϡ˼褦ˡ(Collapsed)פȥꥹɽޤ ޤƤ륰롼פȤ򳫤Ƹϡϥ饤ɽ򥰥롼 ξ˻äƤơEnter áޤ礦⤦پˤϡ 򤪤ʤäƤ Active ΥꥹΥǥХɥ饤ФιԤϥ饤Ȥξ֤ˤʤäƤ СΤ٤ƤΥѥ᥿ѥ᥿Խꥢɽޤ ٤ƤΥɥ饤Фǽʥѥ᥿򥵥ݡȤƤȤϸ¤ʤ ȡơɥ饤ФݡȤѥ᥿򤹤٤ƤΥϡɥ ǤȤϸ¤ʤȤդƤ ɥ饤Ф̵ˤϡActive ΥꥹȤ˰ưΥɥ饤Ф¸ ߤ륰롼פŸޤơɥ饤Фϥ饤ɽ ȤǡDEL áޤɥ饤Ф Inactive ΥꥹȤ˰ư ޤ(⤷ΰưΥ롼פޤ줿ɽȤʤäƤϡ ˤɽʤǤ礦) ɥ饤ФͭˤϡInactive ΥꥹȤ˰ưΥɥ饤Ф¸ ߤ륰롼פŸޤơɥ饤Фϥ饤ɽ ȤǡEnter áޤϥ饤ɽ Active ΥꥹȤ ưͭ줿ɥ饤Фϥ饤ɽ졢򤪤 ʤȤǤ֤ˤʤޤ ɥ饤Ф򤪤ʤˤϡActive ΥꥹȤ˰ưΥɥ饤Ф ¸ߤ륰롼פŸޤơɥ饤Фϥ饤ɽ ˤȤǡEnter áޤϥѥ᥿Խꥢ˰ư ǥХѥ᥿Խ뤳ȤǤޤ ѥ᥿ԽƤݤϡTAB ȥ륭եɴ֤ΰư Ѥ뤳ȤǤޤۤȤɤο (IRQ ) ϡեɤ ƬΡ0xפǼ 16 ʿϤޤ륨ꥢ˵Ƥ ϡեɤƥ֤ʻ˥إץꥢɽޤ ɥ饤ФλˤϡQפáƤ PCI EISA ǥХϳμ¤˸ФޤΤǡϾΰˤ 줺 UserConfig ѹǤʤȤդƤ 3. LINT - ¾βǽʥե졼 -- ----------------------------------------- Υɥ饤Ф GENERIC ͥˤϴޤޤƤޤ󤬡५ ͥΥѥ򤤤ȤʤͤˤѲǽǤ (FreeBSD.FAQ 6 Ỳ )LINT ե졼ե (/sys/i386/conf/LINT) ϡ FreeBSD ݡȤƤ뤹٤ƤΥǥХΥץȥץȥޤ Ǥꡢ褤ե󥹤ˤʤǤ礦 ǥХ̾ȴñʲ˼ޤΥǥХѤˤϡ оݤΥԥ塼ǤΥϡɥΥɥ쥹Ĵ٤ƥե졼 ե򵭽Ҥ५ͥ򥳥ѥ뤷ʤФʤޤ 󡣤äƥݡֹξϡޤ̣ޤ󤫤鼨Ƥ ޤLINT եˤϡʲΤ٤ƤΥǥХΤΥץȥ ޤޤƤޤʤΥե˥åȥɥڡȤѤƤ (ޤ LINT 򥳥ԡƤԽƤ⹽ޤ) ctx: Cortex-I ե졼॰С cx: Cronyx/Sigma ޥݡ Ʊ/Ʊ cy: Cyclades high-speed ꥢɥ饤 el: 3Com 3C501 fea: DEV DEFEA EISA FDDI ץ fpa: DEC DEFPA PCI FDDI ץ gp: National Instruments AT-GPIB AT-GPIB/TNT ܡ gsc: Genius GS-4500 ϥɥ gus: Gravis Ultrasound - Ultrasound, Ultrasound 16, Ultrasound MAX gusxvi: Gravis Ultrasound 16-bit PCM joy: 祤ƥå labpc: National Instrument Lab-PC Lab-PC+ meteor: Matrox Meteor ե졼॰С bktr: Brooktree Bt848 ١Υե졼॰С mpu: Roland MPU-401 stand-alone mse: Microsoft, Logitech, ATI Хޥݡ mss: Microsoft Sound System nic: Dr Neuhaus NICCY 3008, 3009 & 5000 ISDN opl: Yamaha OPL-2 OPL-3 FM - SB, SB Pro, SB 16, ProAudioSpectrum pas: ProAudioSpectrum PCM MIDI pca: PCM audio ("/dev/audio") through your PC speaker psm: PS/2 ޥݡ rc: RISCom/8 ޥݡȥ sb: SoundBlaster PCM - SoundBlaster, SB Pro, SB16, ProAudioSpectrum sbmidi: SoundBlaster 16 MIDI 󥿥ե sbxvi: SoundBlaster 16 si: Specialix SI/XIO/SX (old and enhanced ISA, PCI, EISA) serial spigot: Creative Labs Video Spigot video-acquisition ܡ uart: Stand-alone 6850 UART (MIDI ) wds: Western Digital WD7000 IDE --- end of list --- 4. ݡȤƤϡɥ -- ---------------------------- FreeBSD ϡISA, VLB, EISA, PCI Х䡢386sx Pentium 饹 ޤǤΤޤޤʼ PC ưޤ (386sx ϤǤϤޤ) IDE, ESDIɥ饤֤䡢ޤޤ SCSI ȥ, ͥåȥ 䥷ꥢ륫ɤˤбƤޤ ʲΥꥹȤǤϡFreeBSD ưǧƤ뤹٤Ƥμյΰ ǤʳιǤưȻפޤǤư𤬤ä Τ򵭺ܤƤޤ 4.1. ǥȥ ---- -------------------- WD1003 ( MFM/RLL) WD1007 ( IDE/ESDI) IDE ATA Adaptec 1535 ISA SCSI ȥ Adaptec 154x ꡼ ISA SCSI ȥ Adaptec 174x ꡼ EISA SCSI ȥ (, ϥ󥹥ɥ⡼) Adaptec 274X/284X/2940/3940 (Narrow/Wide/Twin) ꡼ ISA/EISA/PCI SCSI ȥ Adaptec AIC7850 ܡ SCSI ȥ ޤݡȤǤʤȥ: Adaptec 1510 ꡼ ISA SCSI ȥ (bootable device ѤǤϤʤ) Adaptec 152x ꡼ ISA SCSI ȥ Adaptec AIC-6260 AIC-6360 ١Υܡ (AHA-152x SoundBlaster SCSI ɤޤ) ** : SoundBlaster Υɤˤϥ֡ȥǥХ򥷥ƥ BIOS I/O ٥бդ뤿Υܡ BIOS ʤΤǡΥɤ ֡Ȥ뤳ȤϤǤޤ󡣥ơפ CDROM ʤɤ (֡Ȥʤ) ѤʬˤꤢޤROM ʤ AIC-6x60 ١¾ ɤǤƱ꤬ͤޤĤΥƥǤϥ֡ ROM äƤޤŸ򤤤줿뤤ϥꥻåȤȤ 餫Υåɽޤ. Τ褦ʥǤϤΥǥХ Ǥ֡ȤǤǤ礦ܺ٤ϥƥܡɤΥɥȤ ȤƤ Buslogic 545S & 545c Buslogic 445S/445c VLB SCSI ȥ Buslogic 742A, 747S, 747c EISA SCSI ȥ Buslogic 946c PCI SCSI ȥ Buslogic 956c PCI SCSI ȥ SymBios ( NCR) 53C810, 53C825, 53c860 53c875 PCI SCSI ȥ: ASUS SC-200 Data Technology DTC3130 (all variants) NCR Υ (٤) Symbios Υ (٤) Tekram DC390W, 390U, 390F Tyan S1365 Tekram DC390 DC390T ȥ (餯 AMD 53c974 ١ ¾Υɤ) NCR5380/NCR53400 ("ProAudio Spectrum") SCSI ȥ DTC 3290 EISA SCSI ȥ (1542 ߥ졼) UltraStor 14F, 24F, 34F SCSI ȥ Seagate ST01/02 SCSI ȥ Future Domain 8xx/950 ꡼ SCSI ȥ WD7000 SCSI ȥ FreeBSD 2.2.5 ˤ Future Domain 36C20 / Adaptec AHA2920 ȥ Υɥ饤Ф£°ͽǤ. (ޤ) ˥ݡ ƤϤޤ, Ūˤưޤ. CD-ROM /xperimnt β . ʾΥݡȤƤ SCSI ȥѤ뤳Ȥˤäơ SCSI-I SCSI-II μյФ뤹٤ƤΥݡȤ󶡤ޤ ˤϥǥơץɥ饤 (DAT 8mm Exabyte ޤ)CD-ROM ɥ饤֤ޤޤޤ ߡ CD-ROM ݡȤƤޤ: (cd) SCSI interface (ProAudio Spectrum SoundBlaster SCSI ޤ) (mcd) Mitsumi ѥ󥿥ե (ǥ, ɥ饤ФϤŤ) (matcd) /Panasonic (Creative SoundBlaster) ѥ󥿥ե (562/563 ǥ) (scd) Sony ѥ󥿥ե (ǥ) (wcd) ATAPI IDE 󥿥ե 4.2. ͥåȥ ---- ------------------ Allied-Telesis AT1700 RE2000 AMD PCnet/PCI (79c970 & 53c974 ޤ 79c974) SMC Elite 16 WD8013 ͥåȥ󥿥եƤ¾¿ WD8003E, WD8003EBT, WD8003W, WD8013W, WD8003S, WD8003SBT WD8013EBT ʤɤθߴʡSMC Elite Ultra ⥵ݡȤƤޤ Texas Instruments ThunderLAN PCI NIC, ΤΤޤޤޤ: Compaq Netelligent 10, 10/100, 10/100 Proliant, 10/100 Dual-Port Compaq Netelligent 10/100 TX Embedded UTP, 10 T PCI UTP/Coax, 10/100 TX UTP Compaq NetFlex 3P, 3P Integrated, 3P w/ BNC Olicom OC-2135/2138, OC-2325, OC-2326 10/100 TX UTP DEC EtherWORKS III NIC (DE203, DE204, DE205) DEC EtherWORKS II NIC (DE200, DE201, DE202, DE422) DEC DC21040, DC21041, ޤ DC21140 ١ NIC (SMC Etherpower 8432T, DE245 ) DEC FDDI (DEFPA/DEFEA) NIC Fujitsu MB86960A/MB86965A HP PC Lan+ (27247B 27252A) Intel EtherExpress (ɥ饤Ф԰ʤΤǤᤷޤ) Intel EtherExpress Pro/10 Intel EtherExpress Pro/100B PCI Fast Ethernet Isolan AT 4141-0 (16 bit) Isolink 4110 (8 bit) Novell NE1000, NE2000, NE2100 ͥåȥ󥿥ե 3Com 3C501 3Com 3C503 Etherlink II 3Com 3c505 Etherlink/+ 3Com 3C507 Etherlink 16/TP 3Com 3C509, 3C579, 3C589 (PCMCIA), 3C590/592/595/900/905/905B PCI EISA (Fast) Etherlink III / (Fast) Etherlink XL Toshiba ͥåȥ IBMNational SemiconductorҤ PCMCIA ͥåȥɤ⥵ݡȤ Ƥޤ ߥȡ󥰤ΥɤϰڥݡȤơ֤ޤפ䤿 ïɥ饤ФäƤƤΤԤäƤޤ줫äƤޤ ? 4.3. ¾ΥǥХ ---- ---------------- AST 4 ݡ ꥢ륫 ( IRQ ) ARNET 8 ݡ ꥢ륫 ( IRQ ) ARNET (ߤ Digiboard) Ʊ 570/i ®ꥢ Boca BB1004 4 ݡȥꥢ륫 (Modem ϥݡȤơ֤ޤ) Boca IOAT66 6 ݡȥꥢ륫 (Modem ϥݡȤƤޤ) Boca BB1008 8 ݡȥꥢ륫 (Modem ϥݡȤơ֤ޤ) Boca BB2016 16 ݡȥꥢ륫 (Modem ϥݡȤƤޤ) Cyclades Cyclom-y ꥢܡ STB 4 ݡȥ ( IRQ ) SDL Communications Riscom/8 ꥢܡ SDL Communications RISCom/N2 N2pci high-speed Ʊꥢܡ Specialix SI/XIO/SX ޥݡȥꥢ륫. Ť SIHOST2.x "enhanced" (transputer ١, ̾ JET) ۥȥդ. ISA, EISA, PCI ݡȤޤ. Stallion ޥݡȥꥢܡ: EasyIO, EasyConnection 8/32 & 8/64, Onboard 4/16, Brumby Adlib, SoundBlaster, SoundBlaster Pro, ProAudioSpectrum, Gravis UltraSound Roland MPU-401 ɥ Connectix QuickCam Matrox Meteor Video ե졼॰С Creative Labs Video Spigot ե졼॰С Cortex1 ե졼॰С Brooktree Bt848 åץ١Υե졼॰СƼ HP4020, HP6020, Philips CDD2000/CDD2660 Plasmon CD-R ɥ饤 Хޥ PS/2 ޥ ɸ PC 祤ƥå X-10 power ȥ GPIB Transputer ɥ饤 Genius Mustek ϥɥ եåԡơץɥ饤 (ĤθŤǥ. ɥ饤ФϤŤ) FreeBSD Ǥ IBM Υޥͥ (MCA) ХϥݡȤ ֤ޤס # 1.9.2.14 бؤѹ by motoyuki@st.rim.or.jp # 1.9.2.16 бؤѹ by hosokawa@jp.FreeBSD.org # Original revision: 1.1.2.1 $Id: hardware.hlp,v 225.1 1997/11/02 02:20:29 hosokawa Exp $ README for XFree86[tm] 3.3.3 The XFree86 Project, Inc 7 November 1998 (iwasaki@jp.freebsd.org) ʸ(tsuka@jp.freebsd.org) 3.3.1 ؤб: Ϻ(Yoshio.Mita@isen.fr) 3.3.2 ؤб: ȿ ɧ(NCA03530@niftyserve.or.jp) 3.3.3 ؤб: (iwasaki@jp.freebsd.org) ڤʸ XFree86 3.3.3 αʸ README ܸǤ ʸΤΤȼݤ˺ۤ硢ʸΤΤƤ The XFree86 Project, Inc ΰջפǤ뤳ȤȤޤ ׻ XFree86 Intel ¾Υץåȥեư뤵ޤޤ С Unix Unix 饤Υڥ졼ƥ󥰥ƥ ݡȤ X11R6.3 ܿΤǤΥ꡼ϴ ꡼Ǥꡢ¿ΥХƤꡢXFree86 3.3.2 Ӥ ¿οɤΥݡȤɲäƤޤ ޤX Consortium X11R6.3 XFree86 3.3.2 ꡼Υ ɤФѥåȤǽǤXFree86 3.3.2 Ф Хʥꥢåץ졼ɤޤࡢ¿ΥƥѤΥХʥ ե⤢ޤ 1. XFree86 3.3.3 Ǥѹ Υ꡼Ǥοǽ RELNOTES 򻲾ȤƤ ѹξܺ٤ʰϥۥեˤ CHANGELOG ե򻲾Ȥ 2. XFree86 ƥȺѤߤΥƥ : ˰ˤ٤ƤΥƥˤƸߤΥСƥ 櫓ǤϤޤ SVR4.0: o Esix: 4.0.3A, 4.0.4, 4.0.4.1 o Microport: 2.2, 3.1, 4.1, 4.2 o Dell: 2.1, 2.2, 2.2.1 o UHC: 2.0, 3.6 o Consensys: 1.2 o MST: 4.0.3 (Load 2.07 Load 3.02) o ISC: 4.0.3 o AT&T: 2.1, 4.0 o NCR: MP-RAS README for XFree86[tm] 3.3.3 1 README for XFree86[tm] 3.3.3 2 o SunSoft: Solaris x86 2.1, 2.4, 2.5, 2.5.1, 2.6 o PANIX 5.0 for AT SVR4.2: o Consensys o Novell/SCO UnixWare SVR3: o ISC: 3.0, 4.0, 4.1 Others: o NetBSD 1.0, 1.1, 1.2, 1.2.1, 1.3, 1.3.1, 1.3.2 o OpenBSD 2.0, 2.1 o FreeBSD 2.0.5, 2.1, 2.1.5, 2.1.6, 2.1.7, 2.1.7.1, 2.2, 2.2.1, 2.2.2, 2.2.5, 2.2.6, 2,2,7, 3.0 o Linux (Intel x86, DEC Alpha/AXP, m68k) o LynxOS AT 2.3.0, 2.4.0, 2.5.0 o LynxOS microSPARC 2.4.0, 2.5.0 o LynxOS PowerPC 2.4.0, 2.5.0 o OS/2 Warp 3 FP5/17/22, Warp 4 -/FP1 PC98: o FreeBSD(98) 2.0.5, 2.1, 2.1.5, 2.1.7.1, 2.2, 2.2.1, 2.2.2, 2.2.5, 2.2.6, 2,2,7 o NetBSD/pc98 (NetBSD 1.2, 1.2.1, 1.3, 1.3.1, 1.3.2 ١) o PANIX 5.0 for 98 o Linux/98 3. ݡȤƤӥǥɤΥåץå ߡXFree86 3.3.3 ϼΥåץåȤ򥵥ݡȤƤޤ: README for XFree86[tm] 3.3.3 3 Ark Logic ARK1000PV, ARK1000VL, ARK2000PV, ARK2000MT Alliance AP6422, AT24 ATI 18800, 18800-1, 28800-2, 28800-4, 28800-5, 28800-6, 68800-3, 68800-6, 68800AX, 68800LX, 88800GX-C, 88800GX-D, 88800GX-E, 88800GX-F, 88800CX, 264CT, 264ET, 264VT, 264GT, 264VT-B, 264VT3, 264GT-B, 264GT3 (ΥꥹȤ Mach8, Mach32, Mach64, 3D Rage, 3D Rage II 3D Rage Pro ޤǤޤ) Avance Logic ALG2101, ALG2228, ALG2301, ALG2302, ALG2308, ALG2401 Chips & Technologies 65520, 65525, 65530, 65535, 65540, 65545, 65546, 65548, 65550, 65554, 65555, 68554, 69000, 64200, 64300 Cirrus Logic CLGD5420, CLGD5422, CLGD5424, CLGD5426, CLGD5428, CLGD5429, CLGD5430, CLGD5434, CLGD5436, CLGD5440, CLGD5446, CLGD5462, CLGD5464, CLGD5465, CLGD5480, CLGD6205, CLGD6215, CLGD6225, CLGD6235, CLGD6410, CLGD6412, CLGD6420, CLGD6440, CLGD7541(*), CLGD7543(*), CLGD7548(*), CLGD7555(*) Cyrix MediaGX, MediaGXm Compaq AVGA Digital Equipment Corporation TGA Epson SPC8110 Genoa GVGA IBM 8514/A (ӽߴ), XGA-2 IIT AGX-014, AGX-015, AGX-016 Matrox MGA2064W (Millennium), MGA1064SG (Mystique Mystique 220), MGA2164W (Millennium II PCI AGP), G100, G200 MX MX68000(*), MX680010(*) README for XFree86[tm] 3.3.3 4 NCR 77C22(*), 77C22E(*), 77C22E+(*) NeoMagic 2200, 2160, 2097, 2093, 2090, 2070 Number Nine I128 (series I II), Revolution 3D (T2R) NVidia/SGS Thomson NV1, STG2000, RIVA128, Riva TNT OAK OTI067, OTI077, OTI087 RealTek RTG3106(*) Rendition V1000, V2x00 S3 86C911, 86C924, 86C801, 86C805, 86C805i, 86C928, 86C864, 86C964, 86C732, 86C764, 86C765, 86C767, 86C775, 86C785, 86C868, 86C968, 86C325, 86C357, 86C375, 86C375, 86C385, 86C988, 86CM65, 86C260 SiS 86C201, 86C202, 86C205, 86C215, 86C225, 5597, 5598, 6326 3DLabs GLINT 500TX, GLINT MX, Permedia, Permedia 2, Permedia 2v Tseng ET3000, ET4000AX, ET4000/W32, ET4000/W32i, ET4000/W32p, ET6000, ET6100 Trident TVGA8800CS, TVGA8900B, TVGA8900C, TVGA8900CL, TVGA9000, TVGA9000i, TVGA9100B, TVGA9200CXR, Cyber9320(*), TVGA9400CXi, TVGA9420, TGUI9420DGi, TGUI9430DGi, TGUI9440AGi, TGUI9660XGi, TGUI9680, Pro- Vidia 9682, ProVidia 9685(*), Cyber 9382, Cyber 9385, Cyber 9388, 3DImage975, 3DImage985, Cyber 9397, Cyber 9520 Video 7/Headland Technologies HT216-32(*) Weitek P9000, P9100 Western Digital/Paradise PVGA1 Western Digital WD90C00, WD90C10, WD90C11, WD90C24, WD90C24A, WD90C30, WD90C31, README for XFree86[tm] 3.3.3 5 WD90C33 (*) աΰĤƤåץåȤդΥݡȤǤ뤫 ɥ饤ФޤǮˤݼ餵Ƥޤ 嵭Τ٤ƤΥåץåȤϡ256 ȥΥξ򥵥ݡȤƤޤ ĤϥΥ 16 򥵥ݡȤƤޤޤĤΤΤ ¿򥵥ݡȤƤޤ ΥåץåȤѤ뤦Ǥξܤϡåץåȸͭ README ե򻲾ȤƲ (Ǥ TGA, Matrox, Mach32, Mach64, NVidia, Oak, P9000, S3 (except ViRGE), S3 ViRGE, SiS, Video7, Western Digital, Tseng (W32), Tseng (٤), AGX/XGA, ARK, ATI (SVGA ), Chips and Technologies, Cirrus, Trident, NeoMagic, Rendition, Epson, 3DLabs) ޤΥФ 64k Υ󥰥Х󥯤ΥӥǥѤƤ Ū VGA ɡHercules Υɡ Hyundai HGC1280 Sigma LaserView Visa ΥɡApollo Υ) 򥵥ݡȤƤޤ VGA16 Ф 1MB Υӥǥܤ硢 1600x1200 ʾ ۲ɽǽ ET4000TridentATINCROAK Cirrus 6420 ѤХ󥯤򥵥ݡȤޤ¾ΥåץåȤξϡ̤ 礭 800x600 ¤ޤ 4. ܺپν ɲäΥɥȤ XFree86(1), XF86Config(4/5), XF86_SVGA(1), XF86_Mono(1), XF86_VGA16(1), XF86_Accel(1), XF86Setup(1) xvidtune(1) Υޥ˥奢ڡˤޤˡĤ README եȥ塼ȥꥢ뤬󶡤ƤޤϡХʥ ե /usr/X11R6/lib/X11/docޤեեǤ xc/programs/Xserver/hw/xfree86/doc Υǥ쥯ȥˤޤ XFree86 ФˡˤĤƤ QuickStart.doc README.Config Υե򻲹ͤˤƤXFree86 ˻ٱ Ϣ򤹤ˡ󶡤Ƥ뤹٤ƤΥɥȡޥ˥奢ڡ XFree86 FAQ ɤǤ SVGA ɥ饤ФγȯˤĤƤΥɥȤϡХʥեեǤ /usr/X11R6/lib/Server/VGADriverDocեեǤ xc/programs/Xserver/hw/xfree86/VGADriverDoc ˤޤ ˤꤢξϡXFree86 ݡȥ ϢƤϢȤˡXFree86 κǿ꡼ȤäƤ뤫 ǧƤftp://ftp.xfree86.org/pub/XFree86 ˷ǺܤƤ СĴ٤Ƥ Usenet ˥塼롼פ comp.windows.x.i386unix ǤϡۤȤɤ XFree86 ȴطˤĤƵƤޤǤϤμ䤬 褵Ƥޤ README for XFree86[tm] 3.3.3 6 5. ϼԡ󶡼ԤˤĤ XFree86 γȯϰʲΥСǻϤޤ o David Dawes o Glenn Lai o Jim Tsillas o David Wexelblat X11R6 ʪؤ XFree86 ϰʲΥСǤʤäƤޤ o Stuart Anderson o Doug Anson o Gertjan Akkerman o Mike Bernson o Robin Cutshaw o David Dawes o Marc Evans o Pascal Haible o Matthieu Herrb o Dirk Hohndel o David Holland o Alan Hourihane o Jeffrey Hsu o Glenn Lai o Ted Lemon o Rich Murphey o Hans Nasten o Mark Snitily o Randy Terbush o Jon Tombs README for XFree86[tm] 3.3.3 7 o Kees Verstoep o Paul Vixie o Mark Weaver o David Wexelblat o Philip Wheatley o Thomas Wolfram o Orest Zborowski 386BSD, FreeBSD, NetBSD support by: o Rich Murphey NetBSD, OpenBSD support by: o Matthieu Herrb Original 386BSD port by: o Pace Willison, o Amancio Hasty Jr Mach 386 support by: o Robert Baron Linux support by: o Orest Zborowski SCO Unix support by: o David McCullough Amoeba support by: o Kees Verstoep Minix-386 support by: o Philip Homburg OSF/1 support by: o Marc Evans BSD/OS support by: README for XFree86[tm] 3.3.3 8 o Hans Nasten , o Paul Vixie Solaris support by: o Doug Anson , o David Holland ISC SVR3 support by: o Michael Rohleder LynxOS support by: o Thomas Mueller OS/2 support by: o Holger Veit o Sebastien Marineau Linux shared libraries by: o Orest Zborowski , o Dirk Hohndel PC98 support by: o Toyonori Fujiura , o Hiroyuki Aizu , o Tetsuya Kakefuda , o Takefumi Tsukada , o H.Komatsuzaki, o Naoki Katsurakawa , o Shuichiro Urata , o Yasuyuki Kato , o Michio Jinbo , o Tatsuya Koike , o Koichiro Suzuki , README for XFree86[tm] 3.3.3 9 o Tsuyoshi Tamaki , o Isao Ohishi , o Kohji Ohishi , o Shin'ichi Yairo , o Kazuo Ito , o Jun Sakuma , o Shuichi Ueno , o Ishida Kazuo , o Takaaki Nomura , o Tadaaki Nagao , o Minoru Noda , o Naofumi Honda , o Akio Morita , o Takashi Sakamoto , o Yasuhiro Ichikawa , o Kazunori Ueno , o Yasushi Suzuki , o Satoshi Kimura , o Kazuhiko Uno , o Tomiharu Takigami , o Tomomi Suzuki , o Toshihiko Yagi , o Masato Yoshida (Contributor of PW805i support) Original accelerated code by: o Kevin E. Martin , o Rik Faith , o Jon Tombs README for XFree86[tm] 3.3.3 10 XFree86 Acceleration Architecture (XAA) by: o Harm Hanemaayer , S3 accelerated code by: o Jon Tombs , o Harald Koenig , o David Wexelblat , o David Dawes , o Robin Cutshaw , o Amancio Hasty , o Norbert Distler , o Leonard N. Zubkoff , o Bernhard Bender , o Dirk Hohndel , o Joe Moss S3V accelerated code by: o Harald Koenig , o Kevin Brosius o Berry Dijk o Dirk Hohndel o Huver Hu o Dirk Vangestel Mach32 accelerated code by: o Kevin E. Martin , o Rik Faith , o Mike Bernson , o Mark Weaver , o Craig Groeschel README for XFree86[tm] 3.3.3 11 o Bryan Feir Mach64 accelerated code by: o Kevin E. Martin , Mach8, 8514 accelerated code by: o Kevin E. Martin , o Rik Faith , o Tiago Gons , o Hans Nasten , o Scott Laird Cirrus accelerated code by: o Simon Cooper , o Harm Hanemaayer , o Bill Reynolds , o Corin Anderson Western Digital accelerated code by: o Mike Tierney , o Bill Conn P9000 accelerated code by: o Erik Nygren , o Harry Langenbacher o Chris Mason o Henrik Harmsen AGX accelerated code by: o Henry Worth , Number Nine I128 driver by: o Robin Cutshaw , ET4000/W32 accelerated code by: README for XFree86[tm] 3.3.3 12 o Glenn Lai , ET6000 SVGA and accelerated support (both based on the existing W32 code) by: o Koen Gadeyne , Oak Technologies Inc. accelerated code by: o Jorge Delgado , 16 color VGA server by: o Gertjan Akkerman 2 color VGA and non-VGA mono servers by: o Pascal Haible ATI SVGA driver by: o Per Lindqvist and Doug Evans . o Ported to X11R5 by Rik Faith . o Rewritten by Marc Aurele La France WD90C24 support by: o Brad Bosch Trident SVGA driver by: o Alan Hourihane SiS SVGA driver by: o Alan Hourihane o Xavier Ducoin DEC 21030 (TGA) server by: o Alan Hourihane o Harald Koenig NCR SVGA driver by: o Stuart Anderson with the permission of NCR Corporation Cirrus SVGA driver by: README for XFree86[tm] 3.3.3 13 o Bill Reynolds , o Hank Dietz , o Simon Cooper , o Harm Hanemaayer , o Corin Anderson Cirrus CL64xx driver by: o Manfred Brands o Randy Hendry o Jeff Kirk Compaq SVGA driver by: o Hans Oey o Ming Yu o Gerry Toll Oak SVGA driver by: o Steve Goldman o Jorge Delgado ARK Logic SVGA driver by: o Harm Hanemaayer o Leon Bottou AL2101 SVGA driver by: o Paolo Severini Avance Logic ``ali'' SVGA driver by: o Ching-Tai Chiu Chips & Technologies SVGA driver by: o Regis Cridlig o Jon Block o Mike Hollick README for XFree86[tm] 3.3.3 14 o Nozomi Ytow o Egbert Eich o David Bateman o Xavier Ducoin MX SVGA driver by: o Frank Dikker Video7 SVGA driver by: o Craig Struble RealTek SVGA driver by: o Peter Trattler Apollo Mono driver by: o Hamish Coleman Matrox SVGA driver by: o Guy Desbief o Radoslaw Kapitan o Andrew Vanderstock o Angsar Hockmann o Michael Will o Andrew Mileski o Stephen Pitts o Dirk Hohndel o Leonard N. Zubkoff ViRGE SVGA driver by: o Sebastien Marineau , o Harald Koenig Linux/m68k Frame Buffer Device driver by: o Martin Schaller README for XFree86[tm] 3.3.3 15 o Geert Uytterhoeven o Andreas Schwab o Guenther Kelleter Tseng ET4000 and ET6000 SVGA driver by: o [Unknown authors] o Dirk Hohndel o Koen Gadeyne o ... and others P9100 accelerated code by: o Joerg Knura Rendition code by: o Tim Rowley o Marc Langenbach Cyrix accelerated code by: o Annius Groenink o Dirk Hohndel Epson code by: o Thomas Mueller 3DLabs accelerated code by: o Alan Hourihane o Dirk Hohndel o Stefan Dirsch o Helmut Fahrion XFree86-VidModeExtension and xvidtune client by: o Kaleb S. Keithley o David Dawes o Jon Tombs README for XFree86[tm] 3.3.3 16 o Joe Moss XFree86-Misc extension by: o Joe Moss o David Dawes XFree86-DGA extension by: o Jon Tombs o Mark Vojkovich o Harm Hanemaayer , o David Dawes XInput integration, devices and clients by: o Frederic Lepied (XInput integration, Wacom tablet, Joystick and extended mouse devices, xsetpointer and xsetmode clients) o Patrick Lecoanet (Elographics touch- screen device) o Steven Lang (Summagraphics tablet device) Other contributors: o Joerg Wunsch (ET3000 banked mono), o Thomas Dickey (xterm "new" model ANSI col- ors and VT220, VT520 emulation). o Eric Raymond (new video mode documen- tation), o and an entire horde of beta-testers around the world! 6. Ϣ ȯײȥݡȤ XFree86 बǥ͡ȤƤޤ ߡϡΥСǹƤޤ (ե٥åȽ): o Robin Cutshaw o David Dawes o Marc Evans README for XFree86[tm] 3.3.3 17 o Harm Hanemaayer o Dirk Hohndel o Harald Koenig o Rich Murphey o Jon Tombs o David Wexelblat Ƥ줿᡼ϥϤޤ ݡȤ˴ؤ Ƥ˥᡼ ȤդƤ 7. The XFree86 Project, Inc. XFree86 Project, Inc, Ĥ礭ɸ뤲뤿ˡΩ ޤ 1. X Window System ߷סȯ󶡤ǤΤǤ X Consortium ˤ XFree86 ɽŪʤΤȤʤ뤳Ȥˤ ãμʤ󶡤뤳 2. XFree86 γȯʤ뤿εĴãȤƿ video ɤΥϡɥȴŪʥԥ塼ꤹ뤿Ρ 餫δܤȤʤ󶡤뤳 ܤɸưǤ䤿ϡˤ䤫ȿ줿ե꡼ եȥץȤ X Consortium ȯƤ褦 ʤϤʤΤȡ³Ū˵ŤͤƤޤConsortium 괾ǤϡΤ褦ȿȯǧޤ󡣺ǽδ⿳θ塢 Consortium 괾׵Ŭ礹ɬפȯεĤ󶡤뤿ᡢ 䤿ˡͤη֤뤳Ȥꤷޤ ˡͲȤǡX11R6 Υ١ƥȤ˻äǽȤʤꡢXFree86 ʬ X11R6 X11R6.1 ꡼˴£뤳ȤǤޤ ǽ X11R6 Υ꡼ˤ XFree86 ΥС 3.0Ǥ ߤ X11R6.3 release XFree86 ϥС 3.2 Ǥ ˡȿȤȤˤ¾ϡXFree86 Project, Inc 䤿 ŻΤγλˤޤˤäơ ޤФäѶŪ˿ video ɤΥϡɥǤ 褦ˤʤꡢ褤ʤ®꡼Ǥ褦ˤʤ뤫Ȼפޤ 䤿ưɬפʤΤ졢Ƥȯβǽʿ͡ 󶡤뤳ȤǽȤʤ뤫Ǥ ߤ XFree86 Project, Inc, μȴϡʲ̤ꡣ o David Dawes, President and Secretary o Dirk Hohndel, Vice-President README for XFree86[tm] 3.3.3 18 o Glenn Lai, Director o Rich Murphey, Treasurer o Jim Tsillas, Director o Jon Tombs, Director o David Wexelblat, Director ƤΥ᡼ϼϤޤ 䤿괾ϡXFree86 ߤ⾭˥ե꡼եȥץ Ǥ³뤳Ȥݾڤ褦ʷǵ𤵤Ƥޤ СޤϤ¾ XFree86 طԤïˤȤäƤ⡢ĿŪʶŪ פϤޤˡͤΤ٤Ƥλ񻺤ˡͤ˵°򻶤λˤ ٤Ƥλ񻺤 X Consortium, Inc ذܴɤͽǤ򤪤ʤ Ȥˤꡢˡͤ˿ϤȤ⡢䤿 γưñ˷ΤȤʤ뤳ȤԤޤ 1997ǯ 3 XFree86 ץȤϥӥХʥΥ ˤѹޤˤμϼ̤Ǥ o ָХʥΤߤΥ١꡼̸Ϥޤ ǯ֤ 4 Ǥΰ̸䤹褦˷ײ褷ޤ o ؤΥѤˤĤƻĤʬ򤪤ʤޤ ʬϼ̤ꡣ o ɥ桼ɥ桼ϴǤΥΤߥǽ ޤ¤μ礿ͳϳȯѤΥϤФпʤ 齸ޤäƤ륽Ǥ¨¤˰̸ǤΤǤϤ Ǥ o ȯ (XFree86 ֳȯפΥ)ȯԤϸɼ ̵ XFree86 ץȤΥФǤꡢγȯѥ ͳ˥ǽǤФ (Ĵˤ) ФδָХʥǤΥƥˤΥƥȤ ˺ǽȤޤ o ѥСѥФɼ̵ XFree86 ץȤΥФǤꡢǯ US$5000 ץȤ˴ ФǤǯϡȯ¿ʹ׸򤷤 ȤɽƤޤѥФϥץγȯ ХʥǤΤʤȤ󶡤Ǥʤ ٤ƤΥݡǤ󶡼ԤǤȤ餤ޤʤ ``XFree86'' ̾äƤϤޤ (ʤ̤ʸ˵ ˤĤʸɬפΤǤ)䤿ΥݡȤ OS ѤΥХʥǤˤĤơγȯѥ礭ղ ̵ˤΤޤޥѥ뤷褦ʤǧǤޤ README for XFree86[tm] 3.3.3 19 ˡXFree86 Project, Inc, Υݥ󥵡Ȥʤꡢ󶡤ޤϵ 񸻤󶡤򤷤ƤäȿȸĿͤפޤXFree86 Project, Inc, Ѵդ󥿡ͥåȼҲΤβΰ٤ ʼΥե꡼եȥ³ƥ꡼뤳ȤǡδԤ 褨뤳ȤäƤޤ o UUNET Communications Services, Inc. UUNET Communications Services, Inc ϡ̤̾󤲤Ȼפޤ ΤѶŪˡ᤯1994 ǯ X Consortium ǯƤ Ƥޤΰλ󶡤ˤꡢX11R6 XFree86 μ¤ˤʤäΤǤ o GUUG -- 1st German Linux Congress ޤ̤̾󤲤٤ϥϥ֥륰dzŤ줿裱ɥ Linux (1st German Linux Congress) γżԤȻüԤγǤ ¿λ XFree86 ץȤ˲Ĥμ󶡤Ƥޤ o AIB Software Corporation , Herndon, VA o Roland Alder, Armin Fessler, Patrick Seemann, Martin Wunderli o American Micro Group o ATI Technologies Inc o Andrew Burgess o Berkeley Software Design, Inc , Colorado Springs, CO o Caldera, Inc. o Delix Computer GmbH , Stuttgart, Germany o The Destek Group, Inc. , Nashua, NH (formerly Synergytics) o Diamond Multimedia Systems, Inc. o Digital Equipment Corporation o Elsa GmbH , Aachen, Germany o Genoa Systems Corporation o Helius, Inc. o Hercules Computer Technology, Inc. o Ralf Hockens README for XFree86[tm] 3.3.3 20 o Dirk Hohndel o InfoMagic , Flagstaff, AZ o Daniel Kraemer o Epoch Networks, Inc. , Irvine, CA o Frank & Paige McCormick o Internet Labs, Inc. o Linux International o Linux Support Team, Erlangen, Germany o LunetIX Softfair , Berlin, Germany o Morse Telecommunications , Long Beach, NY o MELCO, Inc o MIRO Computer Products AG, Braunschweig, Germany o Rich & Amy Murphey o NCR Corp o Brett Neumeier o Number Nine, Lexington, MA o Kazuyuki Okamoto, Japan o Prime Time Freeware , San Bruno, CA o Red Hat Software , Chapel Hill, NC o Norbert Reithinger o SPEA Software AG, Starnberg, Germany o STB Systems o Clifford M Stein o Joel Storm o S.u.S.E. GmbH , Fuerth, Germany o Tekelec Airtronic GmbH , Muenchen, Germany o Jim Tsillas README for XFree86[tm] 3.3.3 21 o Trans-Ameritech Enterprises, Inc., Santa Clara, CA o Unifix Software GmbH, Braunschweig, Germany o Vixie Enterprises , La Honda, CA o Walnut Creek CDROM , Concord, CA o Xtreme s.a.s. , Livorno, Italy XFree86 Project, Inc, ϴȵࡢޤϤɤ餫ɲô£򴿷פ ޤΤ褦ʴ£ϡǤιоݤȤʤ*Ϥ*Ǥ (ޤ Ƥޤ)䤿۸ΤȤ򽪤衢ϤϤäꤹ Ǥ礦ܺ٤ XFree86 Project, Inc, ޤǡ 8. ȥХʥեΤ륵 X Consortium (ߤ The Open Group) X11R6.3 PL2 XFree86 3.3.3 ؤΥΥС󥢥åѥѥåѲǽǤؤΥѥå ͡ OS ѤΥХʥϰʲ FTP Ȥޤ o ftp://ftp.XFree86.org/pub/XFree86 ޤΥߥ顼ȤѲǽǤ: o North America: o ftp://ftp2.XFree86.org/pub/XFree86 (source and binaries) o ftp://ftp.infomagic.com/pub/mirrors/XFree86-current (source and bina- ries) o ftp://ftp.rge.com/pub/X/XFree86 and http://www.rge.com/pub/X/XFree86 (source and binaries) o ftp://ftp.varesearch.com/pub/mirrors/xfree86 (source and binaries) o ftp://ftp.cs.umn.edu/pub/XFree86 (source and binaries) o ftp://ftp.kernel.org/pub/mirrors/xfree86 (source and binaries) o Europe: o ftp://fvkma.tu-graz.ac.at/pub/XFree86 (source and binaries) o ftp://gd.tuwien.ac.at/hci/X11/XFree86 and http://gd.tuwien.ac.at/hci/X11/XFree86 (source and binaries) o ftp://ftp.fee.vutbr.cz/pub/XFree86 (source patches and binaries) o ftp://ftp.gwdg.de/pub/xfree86/XFree86 (source and binaries) README for XFree86[tm] 3.3.3 22 o ftp://ftp.mpi-sb.mpg.de/pub/X/mirror/ftp.xfree86.org (source and binaries) o ftp://ftp.cs.tu-berlin.de/pub/X/XFree86 (source and binaries) o ftp://ftp.uni-erlangen.de/pub/Linux/MIRROR.xfree86 (source and Linux binaries) o ftp://ftp.uni-stuttgart.de/pub/X11/Xfree86 (source and binaries) o ftp://ftp.funet.fi/pub/X11/XFree86 (source and binaries) o ftp://ftp.ibp.fr/pub/X11/XFree86 (source and binaries) o ftp://ftp.unina.it/pub/XFree86 (source and binaries) o ftp://ftp.pvv.unit.no/pub/XFree86 (source and binaries) o ftp://sunsite.doc.ic.ac.uk/packages/XFree86 (source and binaries) o Asia/Australia: o ftp://x.physics.usyd.edu.au/pub/XFree86 (source and binaries) o ftp://ftp.netlab.is.tsukuba.ac.jp/pub/XFree86 (source and binaries) o ftp://ftp.iij.ad.jp/pub/X/XFree86/XFree86 (source and binaries) o ftp://ftp.kreonet.re.kr/pub/Linux/xfree86 (source and binaries) ꤷ XFree86 3.3.3 褯ǧƤĤΥȤϡŤ ꡼ XFree86 ǼƤ뤳Ȥ褯ޤ Ǽ꤫ꤹɬפΤեˤĤƤϡRELNOTES ǧ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml,v 3.75.2.40 1998/11/08 10:03:41 hohndel Exp $ $XConsortium: README.sgml /main/31 1996/10/28 05:43:24 kaleb $ README for XFree86[tm] 3.3.3 23 CONTENTS 1. What's new in XFree86 3.3.3 .............................................. 1 2. Systems XFree86 has been tested on ....................................... 1 3. Supported video-card chip-sets ........................................... 2 4. Where to get more information ............................................ 5 5. Credits .................................................................. 6 6. Contact information ..................................................... 16 7. The XFree86 Project, Inc. ............................................... 17 8. Source and binary archive sites ......................................... 21 i # Original revision: 1.1.2.1 $Id:$ MFS Filesystem had better STOP here 00C0C1C@1h@l1B1C1C1C2CH2Ct2@2C2C27$3CT3C3C3C3C4CD4Cp4C4C4C44C 5XCL5}x5}5A7@5C5}(6CT6C6C6C7C07C\7C8x@1KIizipiHJ ... ...Z\Ф  `pHJt6Kpd 4 8=K\??PZjbKw`I`Z$lJwII IpII}~tr$~~prI~~$~0~L~d~l~x~trprIJ#vx,yԂyd ~~0~L~d~8x~#'UffffffЉ% "SfsfffMPtu n SfSfsfZ!fF!!!!!  %-=ffff؉] f"f3f؎Ўf[؎Ў f"fsȎ؎Ўgff$ƟŸˤǤĤtlܨhԩ<дp0~L~d~x~@#жs#Cf6V<88D8,clk0 irqnnrtc0 irqnnpci irqnnpci irqnnpci irqnnpci irqnnfdc0 irqnnfdc1 irqnnwdc0 irqnnwdc1 irqnnwdc2 irqnnwdc3 irqnnaic0 irqnnnin0 irqnnspc0 irqnnncv0 irqnnstg0 irqnnsc0 irqnnsio0 irqnnsio1 irqnnsio2 irqnnsio3 irqnnsio4 irqnnlpt0 irqnnlpt1 irqnnpsm0 irqnned0 irqnned1 irqnnep0 irqnnep1 irqnnfe0 irqnnfe1 irqnnsn0 irqnnsn1 irqnnpcic0 irqnnpcic0 irqnnpcic1 irqnnpcic1 irqnnnpx0 irqnnapm0 irqnnstray irq0stray irq1stray irq2stray irq3stray irq4stray irq5stray irq6stray irq7stray irq8stray irq9stray irq10stray irq11stray irq12stray irq13stray irq14stray irq15 44444444444444444444444444444444 i3864-& JJggJ(  \...//20~L~d~32.#p4 f0dhgfeedd0tt0ts0t0tss0tss0ts0ts0t0t0tzs^sPs9s ssrrrrrI>JDJFJHJStorage : Network : Communications : Input : Multimedia : PCI : Miscellaneous : dptDPT RAID, Caching SCSI HBAbtBuslogic SCSI controllerahcAdaptec 274x/284x/294x SCSI controllerahbAdaptec 174x SCSI controllerahaAdaptec 154x SCSI controlleruhaUltrastor 14F/24F/34F SCSI controlleraicAdaptec 152x SCSI and compatible sound cardsncaProAudio Spectrum SCSI and compatiblesseaSeagate ST01/ST02 SCSI and compatiblesspcFujitsu MB89352A (SPC) SCSI controllerncvNCR/Symbios 53C500/53C406 SCSI controllerstgFuture Domain TMC18C30/18C50 SCSI controllerwdsWestern Digitial WD7000 SCSI controllerncrNCR/Symbios 53C810/15/25/60/75 SCSI controller|wdcIDE/ESDI/MFM disk controllerfdcFloppy disk controller|mcdMitsumi CD-ROMscdSony CD-ROMmatcdcMatsushita/Panasonic/Creative CDROMwtWangtek/Archive QIC-02 Tape driveamdTekram DC-390(T) / AMD 53c974 based PCI SCSI|csIBM EtherJet, CS89x0-based Ethernet adaptersedNE1000,NE2000,3C503,WD/SMC80xx Ethernet adaptersel3C501 Ethernet adapterep3C509 Ethernet adapterexIntel EtherExpress Pro/10 Ethernet adapterfeFujitsu MD86960A/MB869685A Ethernet adaptersfeaDEC DEFEA EISA FDDI adapterfxpIntel EtherExpress Pro/100B Ethernet adapterieAT&T Starlan 10 and EN100, 3C507, NI5210 Ethernet adaptersixIntel EtherExpress Ethernet adapterleDEC Etherworks 2 and 3 Ethernet adapterslncIsolan, Novell NE2100/NE32-VL Ethernet adapterstlTI ThunderLAN PCI Ethernet adaptertxSMC 9432TX Ethernet adaptervx3COM 3C590/3C595 Ethernet adaptersxl3COM 3C90x/3C90xB/3C980 Ethernet adapterssnSMC/Megahertz Ethernet adapterswlpAT&T GIS WaveLANzeIBM/National Semiconductor PCMCIA Ethernet adapterzp3COM PCMCIA Etherlink III Ethernet adapterdeDEC DC21040 Ethernet adapter|fpaDEC DEFPA PCI FDDI adapter|sio8250/16450/16550 Serial portcxCronyx/Sigma multiport sync/async adapterrcRISCom/8 multiport async adaptercyCyclades multiport async adaptercyyCyclades Ye/PCI multiport async adapterdgbDigiboard PC/Xe, PC/Xi async adaptersiSpecialix SI/XIO async adapterstlStallion EasyIO/Easy Connection 8/32 async adapterstliStallion intelligent async adapterlptParallel printer portgpNational Instruments AT-GPIB/TNT drivermseMicrosoft Bus MousepsmPS/2 MousejoyJoystick|vtPCVT console driver|scSyscons console driver|bktrBrooktree BT848 based frame grabber/tuner cardpcmNew Luigi audio driver for all supported sound cardssbSoundblaster PCM (SB, SBPro, SB16, ProAudio Spectrum)sbxviSoundblaster 16sbmidiSoundblaster MIDI interfacepasProAudio Spectrum PCM and MIDIgusGravis Ultrasound, Ultrasound 16 and Ultrasound MAXgusxviGravis Ultrasound 16-bit PCMgusmaxGravis Ultrasound MAXmssMicrosoft Sound SystemoplOPL-2/3 FM, Soundblaster, SBPro, SB16, ProAudio SpectrummpuRoland MPU401 MIDIuart6850 MIDI UARTpcaPC speaker PCM audio driver|ctxCoretex-I frame grabberspigotCreative Labs Video Spigot video capturesccIBM Smart Capture CardgscGenius GS-4500 hand scannerascAmiScan scannerqcamQuickCam parallel port cameraapmAdvanced Power Management|labpcNational Instruments Lab-PC/Lab-PC+npxMath coprocessorlkmLoadable PCI driver supportvgaCatchall PCI VGA driverchipPCI chipset supportpiixIntel 82371 Bus-master IDE controllerpcicPC Card controller-------------------------------------------------------------------------------- ɩs1d6"ۧT Ǧj!ݥP2ʤUʣ?ʢt.p JйJT J8J޴ڴJִJӴhJѴδJʴȴƴm2@,Ph(hI4)B8PRt  R lP@ lP` T Rh. P@.  PP *(PR P@  Rh. P@.  PP #(P@HhID l!@,T--$@~ J#  C@CHCCDDpIhD\@C   @THIS is A memory TEST patternwwwwpwwx zTzpI@@$LpIpa yp,  HpI@й`0Pp @`0Pp h@ ~0~L~d~8x~@U߿ @#%&2`x|UU @dhId8:8p>@ BBB CDCxCDE4FFFDml|mlnmndSXYG4Z\x_~b0~L~d~lx~G:L1L&LL LLK<(<(dP#Posio<`!J$TXȔ(L~Hx~`!J%2 Kn[@,X`@` 0% K`!J0ԀdI00PhI|l0ԬȬ0l1!1!32@2@3#3#34$4$35%5%36^6^7&7&38*8*39(9(30)0)3-_-_=+=+3  wqQqQwWwWeEeErRrRtTtTyYyYuUuUiI iI oOoOpPpP[{[{]}]} aAaAsSsSdDdDfFfFgGgGhHhHjJ jJ kK kK lL lL ;:;:3'"'"3`~`~3\|\|zZzZxXxXcCcCvVvVbBbBnNnNmM mM ,<,<3.>.>3/?/?3** ** 3 '3?  (4@  )5A  *6B+7C ,8D!-9E".:F#/;G$0J //////// KKKKKKKKLLLLLLLLMMMMMMMMOOOOOOOOQQQQQQQQSSSSSSSSTTTTTTTTUUUUUUUUVVVVVVVVWWWWWWWXXXXXXXXYYYYYYYYZZZZZZZZ`aAeEiIoOuUaAeEiIoOuUyY^aAeEiIoOuU~aAnNoOaAeEiIoOuUyaAcC[@[[[\[][^[_[`[{-+[~[}pp`@`px|~h h0~L~HP9  pq! #"%SVQ0h@r[|r(t sQdJQRRTShI#L}d(~(Je4hPE|EEEE F:(88|EGG(H0V`VVVVWDWxW <p=>[0]^d|}H0I88h8888 949:bz|4679:4GZ`a`@l|0  >K 4K( 3K5IB ?KL(SRXJ[Ic 4Kl 7KuXJ~ H?K $7K 7KKJ 0>K Q 41KJJzJ TK UKI `QKI <>K J \QK! p?K(@I1 ?K; |UK@ oKI TKO 0KW 3K`Je(Jn KJwXLkh| l J J JI$  JJ>!|=* J7 JF JT^Id\Ii1t| JD9?> JmeT #D:K\<rP{K0|e<~8 tp,O H,L"9PM8\ jrKJ JDz dL JD42 J HDO8N+t2;(G|[L5jIdKDj J!,h4l^=`LDWjb JmpLulfh<KJ$J\ n(62:JAiKd[(b,mjpQ{ %m2,Pp:@I"I94=FPKJ]hZl4hxlI48 JfgIHĒLJ   ( T)7 LJO tRW pxe LJv ~ : J MJ  MJ H*  I    J ,  J* (/5 >G <U |S^ Fo KJw  PF n  J  ^  | Y K   T! - 5 @A P й\ `h Kq dE  MJ d" H 09    t% 0  |I$ 0 < L U *` Ku I 8  xC  I ~ L @L A l p $ $MJ; H |V /a 1s Ԉ{ PK ' = K  8 I 0 $K (K p=J "n6 /Hܽ[XAj0MJyP,PMJpd!JxIiki&08 ,KD0N] 4KflvI 8KJ 8K <K`MJ Kh(y,<IEMlMJdpNx ,KT@6``JJ+p4=P0XHdl,6idXcxiT t.KX XKo4D|NUd\et#sȩ4 t/KMJd x/KYI dK'4JJCYPR^Ir:JDI\ |/K^G  /K$ +Ld7?tIСQ M_kw /KzMJ(& /KD /K T0T II+,;E(6XdrZ~D*lim8LI:4{)@O^kv4$39Bd~%Г /K8%I(AG(8OJU(\Zc(u(t(@(@(}((|( (w(PL(b(# )\).)h;)L)N`)~n)Y|))7)hR)k)xj)tj))() 5K) **h"*XC-*P 9* $5KC*Y*\g*du** (5K* ,5K*pI**k*DI**(*s*Ph*"+R +Dn+&+4+$c<+C+OJO+,N[+ f+v++p+PN+ ,6K++++ 06K+P++L~,E,,d(,<1, 46K>,F,LV,b,%p,!z,,,(8,JJ,f,,,,!, ,A- t6K!-ܬ5-pJ- |6K[-wh-Pu-$I- --I-\`--d-P--Xf .|G.'#.D7.IF.xT.(ba.prk.v.PY.h.JJ....0. 6K.hC..h..Ȇ//8#/(W// 6K9/@5C/ 7K\/\ f/(s/ؖ/X=//X//,J//e/P7/Pn/L/040W0,0L<0 kG0 X0(Il0|${0000 D7K0 J00<0 d7K00(0X00E11D{#1 h7K/1l&911D1n1pZ11112d2 b"2 l7K22(B21W2xb20t2o2N22,2 t7K2l_2!2222)373#3+3lP93E3dIP3b34s3C3 x7K3X=3233$3` J3$-33 7K 44Pe4`?(454pG4(U4P`4hh4tt4K}4n4 4i4 7K4JJ44d44{484l45 5L55@05A5xN5:[5$~d5,Ip5.585p5|655h?5.5lJ5555 7K6 8K6 8K66)6(N56?6OJH6ġW6OJj6~6OJ66HK6k6 8K66xD6\#6t6hm7 8K7I&7?27>70S7,d7 8Kn76y7i7`H7<77D77l7 8K7TW77J8d8T 8,Y&8.8 78_H8 X8܌c8 n8z8H=8dK8888@8$8@]8H89HJ9JJ&9419T6C9K9\Q9_9Bj9rs99J}9ti9m99L99i9 8K9$09909l%:4:?(: 0>*>6@> 9X>hi>iw>D(><>>PV>7>4>X> >C>>:??0#?HPJ0?9?BPJB $>KBT Bp B (>KBtuB:BB~B(jB`BCC"Cp4C}CCKCJJTCe^CLsgCtC\nC,ZCIC 4>KC 8>KCCJCJJCCkC DD0DID SDfcDmD0~uD7D5DDDmDDpADD|D0ECEo6EEEdMEUEl~_E`PiErEI}EdcE @>KEIEIE(EPJE `>KEJE d>KF FFx"F*F`L8F h>KJFTFk\FhrFF l>KFF$FEFF}FtF@FH4F8G4G >KGD,GHy9GnBGYGdbGlGuG2GG >KGYGGGL4G >KGpG( HlIHP$HP.HY6HAJFHONHDi[HL4fHpH{HqH.H\H\/HH@HTHqHoI\IH+IPJ8IGIPI[IT3lIwIIFI0&I,nI|cIjIIxI I|IpIԩJgJ4SJJ1J ?KDJxOJ0YJ ~aJ0hJxJJ ?KJ ?KJJJJ07JJcJ ?KJ $?KK:KLK"KT)K7KLAK (?KHK&RKd[KhKxKGKKK TLET0WRTN`T XQKmTtT,>TqT0TJRYC]YmY}uYDfYY TKY)YIY`YtYDY@YhYXYNY ZIZz$ZQJ4Z&HZmTZp$]ZKJcZ 0qZ{Z0ZZZCJZ|Z%ZZZ TKZFZ[9J[ TK[ TK[,&[JJ,[ J7[>B[6U[ TKh[@ s[|[[[[ TK[6[@[L#[KJ[d[ [p4[[A\\ TK\"\#J.\89\4oH\HX\ )m\ TK\(\p'\(\lK\sDsDsDs4GtDG%tPG2tPGLtxG~t>tXt ?t?t$HtHtHtI uJuL+uZLu ZZu`Zlu^vu^}u[u`u`u `u `uaua v av av$a%vpa-va5va=v(bEvdbKvbRvbYvbevipvivlvRJvmvDov`tv uvvvvv@v"wH?3wDvSwtvwL?wvwXJwww?wx$xx0xVJ7xVJAxVJHxVJSx\WJ[xWJex @vxzxzx @xH{xL{x4@y`{0yd{;yH@Oyp{yy{y\@y{y{yp@y<|z@)zD|7z@|\z|hz@sz~z~z~z Kz~z~z$K{~{~P{(K]{~y{({XJ{XJ{l{؁{{0K{|(|hK4|pK>|tKL|YJS|YJZ|XJd|XJo|\||Ў||p|K|@}4 }0&}YJ0}Xa}Ds}}Ԥ}ؤ}~~0N~Kg~4x~K~h~p~K~p~K%=ȥlKtX YJĴKKYJ0LL"L/<9D\O]\JcYJkyˀ܀ (Nt@LDL΁ہpdLt(8E,O@]pLlDv@\J <bo 4ރ8<\0`Tddڄ2^m ͅ8<hHl_І0 ^{<@ŇdhCZՈ6@eDwhl"Q0Jy ׊l$>oɋ@DD^lpތ/O0׍4\`8iَ )\|LPҏ|']}ѐ<P@jhlxF|ْ0 _J&.?Qeؓ0 4%XZ\`0d$<pĖ ԖQޖ _J_J_J_JD Q( B v Q PʗRӗ0ܗ! %R' S l0('Q$SZ'o''2˜2ԘD20S2<39h4N4e446@6D6"H697M7c77ƚ8К 99959K:c::̛;ߛ<@`J`>=>*L`J3`JADMtKYPSaKlN|`SNhSҜN0PaJ Y),a3c?p_Nd\Pdk`JuchcdfSffȝfѝh۝haJSiS#iJjUS]Sg`mpkxxw$n,aJ8aJ0xyS˞yٞ^/@,;V>e^n^xyJyJyJyJyJyJ^Ű_ϰ`԰aٰNyJyJN`YL`YVyJd\o(zJyJ]`HbbyJϱyJܱj~~ `@&44DUdv4,Pb²bϲ\``,(:0I<YHgTu0cT`ɳ|ڳ@0|>Mx\\lz4cx\˴ ܴ4 tc6dPtdеݵdlT d$8M<{@d̶h pd0dGD`hlηطd$*05p>p`o~19eGR<_jd}@zJDe4zJ8zJǺ0zJԺ,,zJ"/@WDWtWxW WF iL iV|{J[|Jd$il4czhta^T^4i^aagXgJJx{Jmdi+ĂJ4pn@PwR0` yl}x~JJiiiiNi[~܏iGRħaq ii3qii  0K0^j@v@hl4iCdi%i2iF,jVcs4LlDt .<<KXZj\|40X\!anjx8j<dIhfjJt0jPx9jH|i  DjW@jj` h j8BRjjЅJxJ4j\PJJ,P8#0AJMJZmjj  ( 0$8?@YTsh|/0K`fkkkk k0k4k8k.X?JP|]$f4r~    JJ    Pkhk 83lkCpkTduJ& 0k9kGkV0 dX s,  ĉJ 8!!d"ԉJЉJX$ |()(̉J7BEȉJUh?d,.p܉J؉JJ4J55$6ll < 0<t<2<F<]=p0===JLClCtClE4m$E0E*Pm:LIjY(Jh8ExE4QUYT\_tcd4i ii"pj0j>jKdmWlbdln,Jykxmtl|l0Jplmll4JlAlImXmhlwllmm>I @U@@_|l ;I4J8Je0ox\JXJ`JpJhJdJlJptJxJ(. CXkvI|1$c(X\Dd *:P'FP'[JgJxJJ|J1+t4JJ=>34IMJXJdJuJJJFHLPZ`IjlI\Z=ID$lOJWIjlZpZZZZ7ZIP^m`IakJliIJPmI(I1J;pEJPprZIetrqI|DIJHILIvPIvvw,y#Ԃ9Oyd}v~~x؃Id .I=FpJQhJs܍$\ԎTl0hJI)=|JHtJVLkIyIx( Ld*4?ITaIr0@II .@IU(I^sHP@IJlJ "J:Kد]JoJJJJ@PII<дp H ؕJ) t] ܕJf ԕJn J} J J T  J J J   J* I> жJ IZ       s   #  C  f   % / 69 C VM IW <_ g 8s ,{ I 4 I                      X) q3 ? H 2U b )o Pz P x | J  LI @ $ / |J> $J 8U d u    l     L @ I  @0DC`XJJJJ+TG|}+MJIJI p p#0=JWekH'q4x*(,''&!#hD<  xT. 7 IYgv`I (p(-(),!!""#8#"d%+%6&A\.KIY.}.I../232JHILIp4PI494E,5W4`5q@5xpI 8aJHJhJ\J`JlJDJ@JdJ Jd8*t:;:ME\pAkl@JpJC`DLJHPJIXJTJdJK-LPMaJsRI\^pc0dIIeeddeJeYe oe7e@eGdgXfagwWgthahTh,iiijkpj=k km m,o4I=IHISko\Moc/ojoo=pxpopoppIHdQJjIsIIxJ|JJJ|J |l J4!x*3; I4U`cirzЍ Ď,T|Ԑ@JJ|J 8 8,5A(JK0Wl_nJzJ J0J@JpйT8 0h@NaltlT<DJ JHJ$'`J=dJOhJ[TJePJmLJlJHXJ\J4J@J,TJXJ(P5hGxJPJZc(rlJpJ`D0t '3@LPTJ] JhPuJJJ\JxJJ|JtJJ 8 L $( : M [ 8v   X !6!J! Jl!x!J!L!!`J!@!pJ!J!J!H!!!D!% "J"D "l!%"J0",8"T-A"-M"$@V"Ja"Hj"r"*y"")""D""J"'"t("("`)"@/#/#=#0+#|34#1<#>F#0JZ# Cf#4Jv#4C#@C#PJ#HC#C#DD#DC#J#U$ V$hD"$\1$|J?$JQ$Jc$8Ft$0N$U$& zI&TzT&wu&@J&x&z&@{&&8J&&X&&ă&''̋' 'Ȕ/'07'0J'8Y'c'n'Du't}'0J''$'L''J'4'b't'(((-(;(L(̗^(n(Ԙ|(((((.((LJ((aJ))J )HJ6)ت@)J)W)a)j)z)),)d))$) )8)h)Է)PJ)̴)* *J**,(*J1*?*I*HW*x*J*J*J*d*J***0**l*++ J*+a+Jk+@Ju++++++J+J+J+J+J+0J ,,J,,;,S,m,, ,,t-F---J-J--8-p--<-.L.%.@+.5.h@.0JL.U._.i.s.D.hJ.jJ.PJ.4..D. ....J. J/|J/$/J5/\/b/Jm/Jy//`/x/J/<J/\J/hJ//@/d/0J%0<10J@0JG0JX0TJb0Jl0J|080d80:080@80J0D80xJ1X81J61tJB1lJU1p9`1hJl1|Jw1dJ1p>1J1@1 B1B1B1 C1DC1xC1D2E24F12FG2F]2t>{2>2G2J2Dm2l2|m2ln2m2n2dS3XY3p J34Z%3\/3x_83bB3lM3 JV3(Gf3Gw3$H3$I3I38J3J34K3tK3 J 4K4 J!4TL-4LA4hMU4Nc4Jn4|Qv4 J4!J4,^4a4b4 !J4l4,!J45!J4?!J4D!J5Po!5H!J25oY5oj5Jx5J5xJ5o5J5J5q5J5~5~6`!J66<&6t!J26$;6TE6XN6X6Ȕb6(k6x6!J6!J6~6!J6L"J6~6J6 6 7(B7\"JL70U7Ԁ`7k7,7J77|J7J7J7|7777d88$8J08;8JH8J`8m8D|88<808"J8"J8"J8P88849#J9J,9J590?9lK9|V9Ha9o9Ԭ|9Ȭ999L9D9x9d99 9 :<:h$:0:?:|O:tY:g:ht:~:@#J:B-J:l3J:9J:9J:9J:9J:9J:9J:9J:9J;9J#;9J6;9JI;9JT;9J[;9Ja;9Jg;9Jm;9Jt;9J};:J;:J;:J;:J;;:J;:J;:J;:J; :J;8:J<X:J<x:J'<3<|:JB<K<T<^<:Jg<ho<x<<<<<P9<<<J<?<X<l!<hJ<TJ=PJ =J=D0=<=d:I=\AW=Ja=H%q=$}=XJ====x%=x= J=*==l(=TN=:J >:J>E$>hH5>ID>PKQ>Ia>Jq>K>XJ>>P>>|J>,>xJ>p>9?P??J(?J9?E?lV?<c?Ku?O?:J? ?p9?J?<&?\J?@?$?8P?;J@%@(&@()7@)J@;JX@;Je@;Jn@;J~@>@$;J@A@B@d;J@h;J@G@F@F@0Q AQAp;JAS#AV-A;J8A0h@A@rIA[UA|r^A(tfA snAdJyA;JARARATSAQA;JA;JA;JAlSAJBJBJByBj)B|1B;JFBJVBJcBnnB{yBJBJB\BJHp&HJ/H:HTGHRHJZH@>JbHJrHF>J|HJHHHHHL>JHPHHHIJIIIp)Ip.I>J6I`>I0GI>JQIYI`I iI@ rIp {I I I I@ I` I I IJI< IT I< I I  JJL&J>J3JJ?J8 dJmJuJ~JJJ_IdlePTD_PTD_atdevbase_avail_end_avail_start_averunnable_boottime_ccpu_cp_time_curpcb_dk_busy_dk_seek_dk_time_dk_wds_dk_wpms_dk_xfer_dumpdev_dumplo_dumpmag_dumpsize_filehead_fscale_icmpstat_ifnet_ipstat_kstack_maxslp_mbstat_msgbufp_nfiles_nswap_panicstr_rawcb_swapdev_swaplist_tcb_tcpstat_time_tk_nin_tk_nout_udb_udpstat_version_is_physical_memory_log_copyin_scsi_scsi_cmd_addlog_timer0_prescaler_count_dup_dmmax_vfs_unmountroot_ldt_doforce_at_shutdown_issetugid_nswbuf_sodropablereq_npxsave_kmem_object_sec_intr_unit_ffs_fifoop_p_ttychars_cold_cpl_spec_read_scsi_low_free_ccb_getnewfsid_open_buf_rm_at_exit_spec_close_bgetvp_in_pcbdetach_in_pcbconnect_zeroin_addr__mrt_ioctl_bcopyb_vm_map_protect_read_aux_data_no_wait_read_kbd_data_no_wait_ffs_reallocblks_scsi_start_unit_scsi_test_unit_ready_vmmeter_nprocs_fork_unregister_intr_ttyclose_fillw_vm_map_submap_catq_ffree_nxopen_boot_getpbuf_apm_hook_establish_config_intrhook_establish_vmapbuf_ogethostid_panicifcpuunsupported_vm_page_deactivate_spec_strategy_vm_map_clean_cnputc_sysctl__sysctl_next_vnode_free_list_vattr_null_m_copym_getpgrp_bowrite_getsock_acct_process_bdevsw_vop_symlink_desc_vop_fsync_desc_clean_sva_lstat_bind_vm_page_free_zero_vop_ioctl_desc_isofntrans_vnode_pager_umount_vop_lock_desc_vm_swapping_enabled_chroot_getpid_ffs_realloccg_writedisklabel_bus_dma_tag_create_gettimeofday_msdosfs_lookup_scsi_low_get_ccb_write_aux_command_kinfo_vgetfailed_l_noread_setgroups_bdevvp_wdstart_ufsfifo_write_rtrequest_tablefull_tickdelta_oquota_readlink_cd9660_reclaim_generic_bcopy_vfs_unmountall_fill_eproc_kernel_sysctl_sysctl__machdep_checkio_groupmember_fdcdriver_ostat_getuid_cpu_wait_vm_pager_deallocate_sorflush_sc_user_ioctl_fastmove_finishidentcpu_flock_cdinit_exec_elf_imgact_uiomove_copystr_vop_mmap_desc_send_aux_command_and_data_send_kbd_command_and_data_bcd2bin_data_getvfs_msync_spec_pathconf_scsi_low_msgin_vm_page_queue_zero_vm_pageout_page_count_in_pcbladdr_ttyblock_sysinit_set_pmap_pageable_inetdomain_reassignbuf_mb_map_pfctlinput_PTDpde_spec_lock_scr_rmap_bcopy_copyout_sendsig_bcopy_vector_sbflush_ufs_mkdir_ttyflush_netisr_set_rm_at_shutdown_donice_semexit_fifo_pathconf_sysctl__net_link_ether_accept_doscheckpath_sysctl__machdep_access_spec_advlock_clean_eva_sysctl__sysctl_name_sysctl__kern_proc_uid_in_fdc_lock_read_apm_cs_entry_ttylclose_calcru___divdi3_safepri_getppid_scsi_4btou_mclrefcnt_mi_switch_pmap_swapin_proc_ufsfifo_read_wdc_pci_pmap_growkernel_ostype_ep_intr_adjtime___bb_init_func_Xfastintr4_font_8_Xfastintr5_shutdown_Xfastintr6_ufs_mknod_iftovt_tab_ncv_debug_Xfastintr7_cpu_rootconf_scsi_low_target_open_Xfastintr0_isdisk_Xfastintr1_sc_print_addr_Xfastintr2_Xfastintr3_ipintrq_vm_page_unqueue_nowakeup_nxdump_sysctl__kern_proc_pid_read_ack_count_ep_free_pci_unmap_int_siocnprobe_lock_init_ufs_remove_igmp_fasttimo_Xfastintr8_ttsetcompat_CMAP1_Xfastintr9_sccncheckc_hex2ascii_data_timeout_sleepinit_i586_ctr_multiplier_apm_flags_spec_bmap_rn_inithead_sbappend_trapsignal_clean_map_nxclose_send_aux_command_osethostid_ogetkerninfo_scsi_low_activate_ScsiPortFreeLogicalUnit_ttyinput_sysctl__kern_proc_tty_cdevsw_make_ufsspec_read_spec_open_vop_getattr_desc_getblk_time_offset_roundrobin_npxdna_npxproc_ufs_ioctl_pci_cfgwrite_io_map_ufs_rename_msdosfs_vnodeop_p_rootvnode_vfs_unbusy_pages_stgfuncs_ufs_symlink_postsig_vm_pager_get_pages_pci_register_lkm_ifa_ifwithdstaddr_socantrcvmore_sysctl__debug_Ns3RunPhase_Xmchk_sysctl__net_inet_igmp_faultin_siodriver_ncvprobe_CADDR1_bounds_check_with_label_getgroups_ip_fw_chk_ptr_pciroots_ip_mcast_src_vm_map_pageable_execsigs_getgid_pidhashtbl_cpu_high_scsi_do_ioctl_ep_unit_vfs_busy_pages_intrnames_font_16_npxdriver_mountrootvfsops_atapitab_sysctl__machdep_checkmem_font_14_vm_bounce_init_Xintr4_osigstack_haveseen_isadev_Xintr5_tcp_ctloutput_ip_ctloutput_vm_bounce_free_physmem_Xintr6_sysctl__net_inet_icmp_pru_listen_notsupp_ncvprint_Xintr7_sn_softc_Xintr0_getfsstat_Xintr1_vop_valloc_desc_Xintr2_soo_stat_Xintr3_vm_map_user_pageable_ufs_select_scsi_tinit_ttymodem_rip_input_ufs_islocked_vop_readdir_desc_pccard_alloc_intr_Xintr8_winChkName_Xintr9_vm_object_collapse_legal_vif_num_ifa_ifwithaddr_vm_map_delete_edintr_sc_register_intr_ip_mforward_detrunc_setpriority_ffs_update_hostname_writev_rtalloc1_timevalsub_vm_pager_unmap_page_ether_ifattach_ufs_ihashlookup_DELAY_APTDpde_Ns3BurstRead_lock_sleepable_getnewvnode_numvnodes_sysctl__kern_proc_ruid_lkmdispatch_getegid_default_pager_convert_to_swap_ffs_specop_p_truncate_eintrnames_rtalloc_ign_sbdroprecord_siocncheckc_maxprocperuid_lease_check_vm_page_bits_vm_page_queue_free_pccard_insert_beep_cpu_halt_scdriver_lptintr_cons_unavail_tcp_respond_selwait_scsi_low_msgout_isa_dmadone_setsockopt_elf_remove_brand_entry_statclock_disable_shutdown_nice_i486_bzero_rtprio_cpu_exit_ptrace_vm_page_free_cdevsw_add_nin_attach_ffs_vnodeop_p_ufs_vfsops_sysctl__kern_ntp_pll_fifo_read_scsi_3btoi_domains_geteblk_wall_cmos_clock_socketops_vop_create_desc_tcp_close_kernel_map_userconfig_from_boot_tcp_setpersist_mprotect_vop_pathconf_desc_scsi_2btou_tcp_template_elf_execsw_tsleep_ip_mrouter_set__ip_mrouter_set_seltrue_isa_dma_release_defaultpagerops_pci_get_function_cluster_callback_vfs_bio_awrite_vslock_apm_standby_ufs_quotactl_apm_hook_disestablish_config_intrhook_disestablish_vn_writechk_vunmapbuf_vop_inactive_desc_vop_seek_desc_in_pcbbind_soreserve_nodevtotty_Xprot_ureadc_scsi_uto4b_ip_protox_igmp_leavegroup_m_mballoc_sccnprobe_buffer_map_timevaladd_semconfig_vm_map_check_protection_scsi_uto3b_in_cksum_dkcksum_chrtoblk_strcat_cpu_class_cpu_fork_pci_mechanism_lock_try_read_scsi_uto2b_pbgetvp_unmount_i586_ctr_comultiplier_cpu_boot_scsi_3btou_pio32_datain_sowakeup_rt_missmsg_tk_cancc_pio32_dataout_cache_enterdoreti_iret_fault_bin2bcd_data_ufs_unlock_ttyselect_kmemlimit_stat_imask_pmap_change_wiring_ufsspec_close_strcmp_vm_map_lookup_entry_sbinsertoob_vn_close_apm_power_off_m_freem_vop_abortop_desc_relpbuf_intr_nesting_level___sysctl_npxinit_deupdat_lock_done_resetpriority_callfree_getpriority_startrtclock_sysctl__kern_proc_pgrp_getlogin_cd9660_rrip_analyze_intr_unit_vfs_msync_scsi_low_deactivate_tcp_output_sosetopt_pv_freelist_vm_set_page_size_vfs_update_interval_strlen_swi_vm_utimes_strcpy_spcdriver_in_pcballoc_uniqdosname_tickadj_setsigvec_vfsconf_cd9660_vnodeop_p_nxioctl_bus_dmamap_load_dos2unixfn_Xfastintr12_mrt_ioctl_unix2dosfn_dosetrlimit_callout_ogetrlimit_Xfastintr13_vop_lookup_desc_Xfastintr10_kernel_pmap_Xfastintr11_vm_page_cache_sigprocmask_elink_idseq_lockcount_ufs_checkpath_Xfastintr14_elf_insert_brand_entry_isa_dmacascade_Xfastintr15_termioschars_fifo_write_epdriver_npxintr_enterpgrp_inferior_geteuid_snreset_scsi_probe_busses_ogetsockname_orecvfrom_sysctl__kern_suword_npxexit_vm_page_zero_idle_mfs_vnodeop_p_mfs_vfsops_freeclusterchain_vm_object_page_clean_needsbuffer_stg_adapter_info_scsi_low_reselected_atapi_intr_scr_map_sb_max_dupfdopen_ptvmmap_etherbroadcastaddr_Xrsvd_tprintf_close_dsioctl_pgsignal_setdomainname_getdomainname_pmap_is_modified_inet_ntoa_eintrcnt_in_inithead_igmp_joingroup_socreate_rand_initialize_fdshare_vm_page_zero_count_vm_map_lookup_done_vm_page_wire_vm_bounce_kva_alloc_free_pci_cfgread__ip_mcast_src_inflate_FastestMode_clist_free_cblocks_ep_boards_pmap_clear_modify_sysctl__machdep_pccard_proc_reparent_vop_rename_desc_isa_dmainit_dead_vnodeop_p_setreuid_pffindproto_apm_current_gdt_pdesc_ipending_pmap_new_proc_sprintf_setrlimit_statfs_fragtbl_subyte_rtredirect_ufs_bmaparray_osendmsg_orecvmsg_ScsiPortGetLogicalUnit_contigmalloc_ip_mrouter_get__ip_mrouter_get_sysctl__net_inet_udp_stathz_Xpage_spec_vnodeop_p_bqrelse_Ns3ResetScsiBus_nullopen_sysent_Ns3ProcessReselection_vn_open_pccard_event_rtinit_unp_connect2_cd9660_tstamp_conv7_wcdattach_rtfree_utrace_trapwrite_Ns3Initialize_sysctl__net_inet_tcp_vprint_copyout_vector_tcp_ccgen_msdosfs_reclaim_printf_procfs_read_regs_time_maxerror_nowrite_ttread_cpu_switch_b_to_q_tprintf_open_Xalign_vfs_busy_vfinddev_ufs_dirremove_vm_mmap_vm_page_alloc_swapon_vmspace_fork_raw_attach_clusteralloc_useracc_profhz_vop_print_desc_mb_map_full_cninit_finish_pager_map_size_cd9660_inactive_curproc_delaycount_random_select_vm_pager_map_page_default_pager_convert_to_swapq_mclfree_madvise_clusterfree_fifo_vnodeop_p_kentry_data_size_tcp_mssopt_cd9660_lookup_pccard_alloc_slot_osetrlimit_scrn_blanked_swapdev_vp_swap_pager_dmzspace_rsvp_on_tcp_drain_cvtstat_vm_pages_needed_kmem_map_nchstats_itimerdecr_gdt_segs_pccard_remove_driver_sysctl__net_link_generic_system_time_state_apm_ds_limit_sysctl__vm_scsi_configure_start_vfs_lock_vm_fork_setregid_cd9660_tstamp_conv17_Ns3SetTransferMode_susword_atapi_debug_nin_done_ffs_init_bswlist_profil_ip_defttl_ip_mrouter_tcp_init_oaccept_in_setsockaddr_osreldate_vop_mkdir_desc_pmap_kremove_Xintr12_vm_fault_unwire_domainname_Xintr13_ether_ioctl_Xintr10_Xintr11_ffs_alloc_rip_ctloutput__default_ldt_osrelease_atapi_request_wait_ffs_balloc_video_mode_ptr_Xintr14_bio_imask_lf_advlock_getsockopt_ninja3_precommand_Xintr15_scsi_low_init_ccbque_ncallout_lock_try_read_to_write_lock_read_to_write_ffs_fhtovp_vttoif_tab_stg_dev_ufs_readdir_fdcloseexec_rt_ifmsg_tcp_drop_getrlimit_nchrdev_vop_select_desc__ip_mforward_pru_accept_notsupp_kvprintf_cyrix_did_nullclose_sysctl__hw_ip_output_vnode_pager_alloc_socantsendmore_ttcompat_ufs_abortop_m_copyback_intr_mptr_net_imask_isa_defaultirq_ip_init_vmspace_free_vop_rmdir_desc_PMAP1_scsi_configure_finish_sigpending_sndriver_vm_fault_additional_pages_ttspeedtab_uihashtbl_pru_rcvd_notsupp_spec_getpages_Xmissing_Crtat_sb_lock_sysctl__user_kinfo_vdebug_ncv_adapter_info_scsi_probe_bus_scsi_read_capacity_dos2unixtime_vnode_pager_freepage_m_copydata_nxselect_strncpy_msgbufinit_icmp_error_ip_drain_ffs_unmount_pccard_configure_ip_freemoptions_isa_dmastop_scsi_attachdevs_pru_rcvoob_notsupp_atapi_attach_pru_oldstyle_lkm_nullcmd_pmap_map_ufs_reclaim_pci_max_burst_len_tcp_recvspace_tcp_sendspace_ifaof_ifpforaddr_ffs_vget_max_hdr_sc_print_start_vm_fault_empty_kbd_buffer_sbrelease_oftruncate_initproc_swap_pager_swp_alloc_ttycheckoutq_procfs_sstep_ffs_isblock_zombproc_speclisth_vnodepagerops_lock_write_to_read_suswintr_machine_shmsys_kmem_alloc_wait_setuse_extendfile_sofree_dsclose_ip_rsvp_vif_init_kernacc_raw_ctlinput_wdintr_PTmap_pcibus_set_icmp_input_tcp_input_vfs_bio_clrbuf_vfs_mountedon_swap_pager_freespace_winLenFixup_psratio_vwakeup__bus_dmamap_sync_kmem_init_ihashtbl_sigaction_kmem_free_noreset_pmap_release_pcic_attach_atapi_start_vn_rdwr_ncv_statics_sninit_raw_disconnect_rn_addmask_sodisconnect_solisten_gsignal_sysbeep_cancel_vfs_op_descs_scsi_dinit_fillinusemap_snwatchdog_stg_sequencer_add_scrn_saver_igmp_input_raw_detach_sbwait_swap_pager_un_object_list_lock_set_recursive_set_controller_info_disable_rtc_set_read_random_ufs_getattr_vm_page_array_strncmp_isa_configure_vm_pageout_algorithm_lru_pmap_ts_referenced_tcp_mtudisc_bus_dmamem_alloc_dscheck_ether_input_i586_bcopy_ufs_getlbns_phashinit_scsi_low_bus_reset_copyin_vector_ufs_readlink_getsockname_setquota_untimeout_pmap_zero_page_ffs_clrblock_scsi_cinit_procfs_domem_snintr_setsid_intr_mask_vm_page_insert_ftruncate_i586_copyout_symlink_scsi_reset_target_pcic_probe_nchinit_cfreecount_dk_names_pmap_pte_vm_pageout_pages_needed_inittodr_apm_suspend_scsi_close_soisconnected_vgoneall_setuid_scsi_low_twiddle_wait_vm_wait_vcount_i586_bzero_spec_select_ip_rsvp_vif_done_vn_stat_APTmap_extend_get_pmap_copy_scsi_dev_lookup_scsi_stop_unit_ttyprintf_isa_dma_acquire_vm_page_array_size_Ns3BurstWrite_ifmedia_init_alltraps_wcdtab_fedriver_vm_fault_wire_shmctl_rootvp_vm_fault_copy_entry_tcp_canceltimers_ip_input_setidt_vm_page_unqueue_ttioctl_rlist_free_bogus_page_ffs_sync_ncv_dev___semctl_rn_refines_vm_page_set_validclean_scsi_low_disconnected_soisdisconnected_vm_map_insert_setjmp_pmap_page_exists_ndflush_read_controller_data_write_controller_data_vm_map_create_tcp_slowtimo_ip_slowtimo_vm_object_list_vm_object_init_vm_object_pmap_copy_vn_bwrite_vop_default_desc_pager_cache_socket_vflush_pci_configure_stg_debug_pmap_is_referenced_sobind_getdirentries_ogetdirentries_read_kbd_data_cd9660_mountroot_vop_vfree_descdoreti_iret_unputc_load_palette_arpresolve_tty_imask_earlysetcpuclass_sc_print_finish_sbappendrecord_mountlist_pmap_swapout_proc_vop_read_desc_atapi_detach_reconfig_isadev_psmdriver_wakeup_vfs_export_lookup_busdma_swi_pending_vclean_readbad144_copyright_stghw_check_Xint0x80_syscall_m_copypacket_pipe_stat_shmget_kmem_alloc_nblkdev_quotaon_pci_conf_write_tcp_backoff_timedelta_hz_scsi_device_attach_ifqmaxlen_revoke_ufs_root_spec_unlock_suibyte_Ns3MessageDecode_memname_ttywait_bus_dmamap_create_tcp_gettaocache_ffs_blkfree_pci_get_bus_noioctl_first_page_procfs_findtextvp_setgid_apm_cpu_busy_soshutdown_test_controller_in_pcbdisconnect_wakeup_one_eddriver_ffs_vfree_udp_init_spcintr_qs_kernel_object_tz_ukinit_cpu_coredump_winSlotCnt_Debugger_sysctl__ufs_makeinode_sysctl__kern_proc_empty_both_buffers_sysctl__net_routetable_vfs_mountroot_time_status_fusword_curpriority_ufs_advlock_vm_page_lookup_pio8_dataout_Xfpusegm_copyinstr_mmbfree_apm_init_image_size_sonewconn1_checkalias_kmem_alloc_pageable_scsi_extend_get_hw_float_pmap_init_tcp_mssdflt_pmap_destroy_ffs_truncate_rip_usrreq_in_pcbrehash_ufs_seek_ip_rsvp_init_desiredvnodes_sendto_isa_dmastart_setdisklabel_if_index_rename_pmap_kernel_pgfind_mincore_ufs_dirbadentry_cpu_initclocks_statclock_getrusage_vfs_export_soisconnecting_time_esterror_ncv_sequencer_busdma_swi_ep_attach_scsi_ioctl_soaccept_vm_pageout_flush_kmem_suballoc_dblfault_handler_isa_devtab_null_nmbclusters_microtime_vop_advlock_desc_snstop_Xbnd_apm_cpu_idle_sbreserve_sysarch_crtc_vga_ip_mrouter_done__ip_mrouter_done_Xdbg_sbcreatecontrol_Xdiv_tcp_keepidle_slpque_bootinfo_kbdc_data_ready_srandom_Ns3SpotRead_remove_scrn_saver_vm_page_startup_max_datalen_Ns3IrqPolling_iso_iget_vm_map_lookup_vm_map_find_m_pullup_vm_object_allocate_unix2winfn_sdinit_recvit_sendit_select_szsigcode_nin_probe_pathconf_in_pcblookuphash_vm_object_coalesce_swap_pager_free_count_semget_fifo_advlock_tk_rawcc_vm_map_findspace_test_kbd_port_iso_iput_ifafree_vfs_object_create_fstatfs_fill_regs_apm_version_psmintr_Xdna_bootstrap_gdt_random_rawwrite_bouncepages_ether_delmulti_insmntque_limcopy_Xill_ip_rsvp_done_sbdrop_count_lock_queue_m_free_vprintf_psignal_vop_close_desc_pccarddrv_set_dk_ndrive_sigaltstack_maxbkva_sysctl__net_link_generic_rtioctl_pmap_remove_pages_kernelname_Ns3DataOutPhase_apm_ds_base_igmp_slowtimo_empty_aux_buffer_scsi_detachdev_rn_init_suser_Xofl_Xbpt_sogetopt_vop_unlock_desc_Ns3StartExecution_sysctl_handle_opaque_ptrace_set_pc_readdisklabel_semsys_cd9660_defattr_Ns3Status_reboot_initializecpu_sysbeep_getdtablesize_pccard_remove_controller_vop_open_desc_cpu_vendor_send_kbd_command_vop_reallocblks_desc_nbigpipe_pmap_extract_ip_stripoptions_tcp_keepinit_in_localaddr_soisdisconnecting_nlinesw_vop_strategy_desc_vop_readlink_desc_scsi_unit_use_killproc_ufs_bmap_update_intr_masks_vm_object_page_remove_syscall_Xnmi_sysctl__net_ncvintr_ncvdriver_snread_bouncememory_aicunload_Xfpu_vnode_pager_lock_ffs_blkpref_sosend_getinoquota_readde_ufs_open_pcbmap_procfs_dofpregs_has_f00f_bug_Ns3SlowWrite_sysctl__net_link_mbtypes_pcidevice_set_vm_object_madvise_cluster_wbuild_lock_clear_recursive_ip_rsvpd_ttstart_write_bus_dmamap_destroy_softclock_scsi_prevent_ifmedia_match_vinvalbuf_time_precision_readep_pffindtype_addupc_intr_unlink_cd9660_deftstamp_Ns3FifoTest_vmspace_alloc_ogetpagesize_get_pci_pcic_slots_ttyopen_fifo_lookup_qsync_stg_statics_m_clalloc_physio_cd9660_init_proc0paddr_scintr_pmap_mapdev_APTD_no_queue_pmap_enter_fifo_printinfo_osigsetmask_vm_map_init_vrele_proc0_printcpuinfo_vm_pager_allocate_procfs_validregs___qdivrem_spec_print_soconnect2_scsi_low_free_ti_in_delmulti_tcp_rtlookup_unix2dostime_domain_set_vm_object_cache_max_ruadd_m_retryhdr_mono_time_dqinit_pmap_kenter_wcddetach_noclose_uprintf_qsort_epintr_vm_map_madvise_cluster_write_ldisc_deregister_rlist_destroy_lchown_maxproc_arpintrq_bufinit_ufs_setattr_ip_rsvp_force_done_vm_page_alloc_contig_pqcnt_kmembase_mountroot_ufsfifo_close_in_rtqdrain_maxfilesperproc_rtcin_pci_maxdevice_startprofclock_scsi_low_start_write_kbd_command_atapi_request_immediate_Xsyscall_ufs_dirrewrite_issignal_nostop_vop_getpages_desc_vop_islocked_desc_scsi_user_done_minphys_vm_pager_bufferinit_swap_pager_putpages_mfs_doio_ldisc_register_Xtss_scsi_alloc_bus_vm_page_remove_vm_pager_object_lookup_read_aux_data_malloc_olstat_noselect_ufs_init_ninintr_apmdriver_ogetpeername_iso_nchstats_apm_cs32_base_apm_cs16_base_scsi_free_unit_get_sysctl__net_inet_pgrphash_aout_sysvec_cd9660_fifoop_p_Xstk_incore_scsi_link_get_dsinit_maxlockdepth_timer0_max_count_munmapfd_fubyte_scsi_device_register_ifmedia_ioctl_va_null_bdevsw_add_find_display_vm_page_rename_pccard_add_driver_ufs_access_ttyinfo_scsi_low_print_spec_write_vfs_unbusy_vm_object_shadow_swbuf_scsi_low_done_addupc_task_longjmp_pccard_add_controller_ttwrite_setlogin_init386_vm_object_pmap_remove_raw_usrreq_log_open_dsisopen_ifunit_vm_bounce_kva_alloc_Ns3WaitForAckOff_void_vfsconf_cd9660_bmap_scsi_low_reset_nexus_cam_imask_ifmedia_set_ufs_lock_dsname_isa_biotab_wdc_listen_i586_copyin_iszerodev_ufs_link_dounmount_trypbuf_procfs_doregs_find_isadev_Ns3MessageOut_rip_init_ifa_ifwithnet_vm_page_test_dirty_add_interrupt_randomness_setrunqueue_write_controller_command_tcp_newtcpcb_sysctl__vfs_vm_map_remove_stgintr_ufs_vinit_vop_remove_desc_ncvattach_vfs_unlock_vm_page_select_cd9660_rrip_getname_ipip_input_sockargs_tprintf_vfork_bwrite_otruncate_rlist_alloc_ncvhw_check_siocnputc_memcpy_dsgone_olseek_get_pci_pcic_info_vfs_update_wakeup_isodirino_procinit_noreadtmpstk_Ns3FindAdapter_shmat_ifnet_addrs__ucodesel_ufs_mmap_ifioctl_lkmexists_vop_truncate_desc_raw_input_procfs_write_regs_apm_addr_swap_pager_full_pci_get_device_m_devget_shmdt_rmdir_ffs_blkatoff_gbincore_wddma_hashinit_okillpg_ifmedia_add_vm_fault_quick_sbcompress_selwakeup_set_regs_virtual_avail_ifa_ifwithroute_tcp_ctlinput_deextend_allocbuf_runtime_Ns3DataInPhase_l_nowrite_recvfrom_PADDR1_rtalloc_procfs_write_fpregs_ssdtosd_vnode_pager_setsize_inetsw_rt_newaddrmsg_m_prepend_cncheckc_pccard_driver_init_sysctl__sysctl_oidfmt_netisrs_intrcnt_scsi_goaway_iskmemdev_dsopen_pio8_datain_ufs_ihashinit_realitexpire_ogethostname_ovadvise_rip_output_i586_ctr_bias_fchflags_tcp_now_vop_mknod_desc_rt_setgate_userland_sysctl_setpgid_in_canforward_wdcdriver_uk_switch_bus_dma_tag_destroy_reinsert_isa_biotab_fdc_sccnputc_sysctl__net_inet_ip_in_pcblookup_currentldt_pmap_dispose_proc_rsvpdebug_soo_ioctl_kentry_data___moddi3_test_aux_port_pci_map_port_spec_lookup_scsi_inquire_win2unixfn_vm_pager_init_scsi_sense_print_reset_kbd_siopoll_vfs_opv_descs__vgone_adjkerntz_localdomain_setregs_sigcode_scsi_minphys_ufs_rmdir_ether_addmulti_ticks_generic_copyout_internbad144_want_resched_swaponvp_sysctl__net_link_generic_ifdata_rforkdoreti_popl_es_swap_pager_copy_cache_purgevfs_itimerfixdoreti_popl_ds_swappagerops_udp_input_pru_connect2_notsupp_ffs_fragacct_pmap_object_init_pt_remrq_vm_pager_has_page_tcp_timers_connect_pfind_inside_udp_ctlinput_tcp_iss_createde_fdavail_if_attach_cd9660_specop_p_Maxmem_ep_alloc_vm_map_reference_udp_usrreq_umask_isa_irq_pending_readv_vop_bmap_desc_vm_map_inherit_pru_control_notsupp_stopprofclock_crtc_type_ufs_inactive_sysctl__net_inet_ip_portrange_savectx_nommap_set_controller_command_byte_get_controller_command_byte_clist_alloc_cblocks_tcp_mss_ocreat_vnops_fuswintr_lease_updatetime_pmath_emulate_brelvp_m_gethdr_wait4_lock_write_linesw_panic_semop_scsi_low_timeout_unp_dispose_hardupdatedoreti_popl_ds_fault_cd9660_rrip_getsymname_iso_blkatoff_ttysleep_fpathconf_breadn_time_tolerance_iso_ilock_intr_countp_pmap_remove_nmbufs_quotactl_osethostname_iso_ihead_cur_console_vm_page_unwire_prtactive_obreak_exec_extract_strings_swapout_procs_m_get_nodump_fifo_badop_fifo_select_in_losing_i586_ctr_freq_siginit_virtual_end_pci_conf_read_splz_vfssw_m_adj___umoddi3_ep_board_stat_ed_attach_NE2000_pci_m_cat_ctty_cdevsw_msdosfs_init_max_linkhdr_scanc_set_border_add_keyboard_randomness_scsi_open_pcicdriver_getvnode_cache_lookup_isa_nmi_brelse_scsi_unit_unuse_in_pcbnotify_crcopy_ofstat_ufs_ihashrem_findwin95_uname_igmp_init_netisr_in_addmulti_bdwrite_ttselect_biowait_cpu_id_siocninit_vput_ioctl_etext_cache_purge_ffs_setblock_pmap_qenter_rtqs_fifo_close_spec_fsync_Ns3SendCDB_pccard_remove_beep_quotaoff_bdevsw_add_generic_vref_vop_putpages_desc_scsi_low_reset_boothowto__bus_dmamap_unload_pmap_phys_address_sstk_execve_m_retry_hostid_ip_nat_ctl_ptr_trap_ufs_dirbad_m_getclr_q_to_b_ufs_start_ip_nat_ptr_soreceive_exit1_setitimer_elink_reset_kmemusage_bzero_around_rn_addroute_pmap_page_protect_fuword_read_random_unlimited_putc_getpeername_isa_devtab_tty_inmem_crfree_relookup_msdosfs_inactive_sync_pmap_mincore_osigblock_ufs_ihashins_sigreturn_vn_default_error_vm_page_queue_active_dssize_rcr0_vm_page_list_find_sysctl_handle_string_release_timer0_ufsspec_write_rcr3_vop_access_desc_nindriver_scsi_done_out_fdc_release_timer2_namei_vfs_set_lbolt_bus_dmamem_free_index_kbdc_open_nextgennumber_socketpair_sigexit_unsleep_mkfifo_dqrele_ufs_print_procfs_validfpregs_Ns3Select_isa_devtab_bio_copy_font_vm_map_startup_noopen_transbad144_skpc_allproc_Ns3SlowRead_ihandlers_m_split_sccninit_selrecord_in_setpeeraddr_ttwakeup_chflags_ufs_ihashget_setstatclockrate_apm_init_image_removede_sysctl__sysctl_cd9660_rrip_offset_rsvp_input_soabort_sccs_Ns3MessageIn_looutput_pipe_mount_read_isa_devtab_cam_ufs_check_export_nosys_scsi_low_scsi_minphys_vm_fault_user_wire_tcbinfo_sbappendcontrol_shmfork_crtc_addr_ihash_ip_id_lookup_tick_lptdriver_elf_trace_vop_blkatoff_desc_vm_page_max_wired___udivdi3_ufs_create_arp_ifinit_vntblinit_scsi_low_attach_t_idt_spec_ioctl_ttsetwater_mlock_rootdev_nextc_fsync_in_broadcast_vget_pmap_pinit_trace_req_idelayed_setegid_spc_switch_hardclock_vm_pager_sync_pmap_reference_vm_object_reference_sec_intr_handler_crdup_isofncmp_acquire_timer0_time_freq_bremfree_msgrcv_acquire_timer2_rn_match_constty_u_map_in_control_kernel_vm_end_devicepagerops_ptrace_single_step_pidhash_timer0_overflow_threshold_siocngetc_pcicintr_tcp_maxidle_vm_page_set_invalid_updatepri_bootdev_scsi_low_alloc_ti_vm_page_queue_inactive_ovbcopy_sbrk_cninit_ffs_flushfiles_fdinit_execsw_set_fdfree_exec_new_vmspace_vop_reclaim_desc_in_ifaddr_isa_devtab_net_msgsnd_mkdir_getitimer_pmap_copy_page_vop_bwrite_desc_vop_update_desc_lkmnosys_iso_iunlock_sdtossd_pccard_beep_select_nin_timeout_winChksum_nxread_set_mode_leavepgrp_timer_freq_ip_srcroute_fatentry_msgsys_crget_bread_setconfdoreti_popl_es_fault_link_fdintr_route_cb_nbuf_pmap_clear_reference_phys_avail_at_fork_vop_write_desc_lidt_mknod_nullop_vm_pager_put_pages_minherit_pmap_prefault_aicdriver_ufs_pathconf_ip_savecontrol_settimeofday_aicintr_tcp_usrreqs_ptrace_write_u_tputchar_resettodr_mbutl_cpu_reset_kmem_malloc_btext_fdc_data_ufs_strategy_sysctl__net_link_ether_inet_soo_select__udatasel_stgprobe_register_netisr_pci_map_mem_soclose_fifo_ioctl_pmap_bootstrap_vm_object_cached_list_ufs_direnter_feintr_kmemstats_kbdc_lock_vsunlock_apm_setup_loif_generic_bzero_logwakeup_fchdir_sccngetc_pci_map_int_nxwrite_lldt_diskerr_uipc_usrreq_max_protohdr_fstat_ommap_kproc_start_soconnect_kbdc_set_device_mask_kbdc_get_device_mask_ifpromisc_mmap_exit_getquota_cpu_feature_munmap_main_stgprint_scsi_sense_desc_eopnotsupp_stgattach_phys_map_swap_pager_swap_init_ffs_valloc_info_chkdq_unp_externalize_edintr_maxfiles_msgget_sbappendaddr_fchown_pbrelvp_free_imen_owait_grow_atapi_request_callback_pccard_failure_beep_scsi_low_restart_fonts_loaded_bufqdisksort_pmap_qremove_lseek_sysctl_handle_int_reset_aux_dev_ffs_statfs_seteuid_close_fc_purge_lgdt_at_exit_ip_fw_ctl_ptr_exec_map_ktrace_Ns3DecodeSynchronousRequest_ufs_dirempty_iptime_vnode_pager_uncache_rawread_scsi_low_scsi_cmd_Ns3SpotWrite_vm_page_queue_cache_vm_bounce_alloc_kmem_free_wakeup_sigsuspend_kill_procfs_read_fpregs_pageproc_idqs_ufs_lookup_raw_init_msgctl_tcp_quench_bawrite_edata_kvtop_generic_copyin_pru_sense_null_chmod_siointr_chkiq_fixjobc_userconfig_if_down_chdir_pgrphashtbl_vop_link_desc_stgdriver_pccard_success_beep_chgproccnt_cpu_dumpconf_cngetc_shmexit_Ns3WaitForReqOff_tcp_fasttimo_rm_at_fork_orecv_osend_fcntl_ltr_load_cr0_time_constant_munlock_if_up_apm_cs16_limit_apm_cs32_limit_bootverbose_end_load_cr3_acct_bcmp_snstart_biodone_deget_gdt_ncv_funcs_apm_bios_call_inetctlerrmap_vm_swap_size_chown_scsi_strategy_osigvec___main_vop_setattr_desc_cnt_isa_dmastatus_ifmedia_list_add_vm_page_is_valid_pagedaemon_wakeup_fdalloc_cmask_rt_tables_endtsleep_get_e_idt_dirchk_route_init_sohasoutofband_vm_map_deallocate_vm_object_deallocate_closef_cpu_scsi_low_calcf_ntp_adjtime_pmap_protect_pager_map_spec_badop_setrunnable_ufs_close_dup2_getc_vfs_opv_init_fdcopy_falloc_palette_ffs_mountfs_scsi_target_mode_fchmod_sendmsg_recvmsg_fifo_bmap_ether_output_cluster_read_vm_page_activate_securelevel_cdevsw_vm_map_simplify_entry_ffs_vptofh_schedcpu_vm_page_queues_ttwwakeup_fifo_open_hzto_intr_handler_ovbcopy_vector_lock_try_write_dosdiremptylocore.o_KERNendphysfreep0upap0upt_KPTphysrecover_bootinfoidentify_cpucreate_pagetablesbegin_esigcodeolddiskbootnewbootgot_bi_sizegot_common_bi_sizetry486trynexgentrycpuidtrycyrixmap_read_writevnode_if.o_vop_lookup_vp_offsets_vop_create_vp_offsets_vop_mknod_vp_offsets_vop_open_vp_offsets_vop_close_vp_offsets_vop_access_vp_offsets_vop_getattr_vp_offsets_vop_setattr_vp_offsets_vop_read_vp_offsets_vop_write_vp_offsets_vop_ioctl_vp_offsets_vop_select_vp_offsets_vop_mmap_vp_offsets_vop_fsync_vp_offsets_vop_seek_vp_offsets_vop_remove_vp_offsets_vop_link_vp_offsets_vop_rename_vp_offsets_vop_mkdir_vp_offsets_vop_rmdir_vp_offsets_vop_symlink_vp_offsets_vop_readdir_vp_offsets_vop_readlink_vp_offsets_vop_abortop_vp_offsets_vop_inactive_vp_offsets_vop_reclaim_vp_offsets_vop_lock_vp_offsets_vop_unlock_vp_offsets_vop_bmap_vp_offsets_vop_print_vp_offsets_vop_islocked_vp_offsets_vop_pathconf_vp_offsets_vop_advlock_vp_offsets_vop_blkatoff_vp_offsets_vop_valloc_vp_offsets_vop_reallocblks_vp_offsets_vop_vfree_vp_offsets_vop_truncate_vp_offsets_vop_update_vp_offsets_vop_getpages_vp_offsets_vop_putpages_vp_offsets_vop_strategy_vp_offsets_vop_bwrite_vp_offsetscd9660_bmap.ocd9660_lookup.ocd9660_node.o_cd9660_chars2uicd9660_rrip.o_cd9660_rrip_attr_cd9660_rrip_defattr_cd9660_rrip_slink_cd9660_rrip_altname_cd9660_rrip_defname_cd9660_rrip_pclink_cd9660_rrip_reldir_cd9660_rrip_tstamp_cd9660_rrip_deftstamp_cd9660_rrip_device_cd9660_rrip_idflag_cd9660_rrip_cont_cd9660_rrip_stop_cd9660_rrip_extref_cd9660_rrip_loop_rrip_table_analyze_rrip_table_getname_rrip_table_getsymname_rrip_table_extrefcd9660_util.ocd9660_vfsops.o_cd9660_vfsops_cd9660_mount_cd9660_start_cd9660_unmount_cd9660_root_cd9660_quotactl_cd9660_statfs_cd9660_sync_cd9660_vget_cd9660_fhtovp_cd9660_vptofh__fs_vfsconf___set_vfs_set_sym__fs_vfsconf_iso_get_ssector_iso_mountfs_iso_doforcecd9660_vnops.o_cd9660_setattr_cd9660_open_cd9660_close_cd9660_access_cd9660_getattr_cd9660_read_cd9660_ioctl_cd9660_select_cd9660_mmap_cd9660_seek_iso_uiodir_iso_shipdir_cd9660_readdir_cd9660_readlink_cd9660_abortop_cd9660_lock_cd9660_unlock_cd9660_islocked_cd9660_strategy_cd9660_print_cd9660_enotsupp_cd9660_vnodeop_entries_cd9660_vnodeop_opv_desc___set_vfs_opv_descs__sym_cd9660_vnodeop_opv_desc_cd9660_specop_entries_cd9660_specop_opv_desc___set_vfs_opv_descs__sym_cd9660_specop_opv_desc_cd9660_fifoop_entries_cd9660_fifoop_opv_desc___set_vfs_opv_descs__sym_cd9660_fifoop_opv_descimgact_aout.o_exec_aout_imgact_aout_execsw___set_execsw_set_sym_aout_execswimgact_elf.o_sysctl___debug_elf_trace___set_sysctl__debug_sym_sysctl___debug_elf_trace_elf_freebsd_sysvec_elf_freebsd_fixup_freebsd_brand_info_elf_brand_list_map_pages_unmap_pages_elf_check_permissions_elf_check_header_elf_load_section_elf_load_file___set_execsw_set_sym_elf_execswimgact_gzip.o_exec_gzip_imgact_NextByte_Flush_do_aout_hdr_gzip_execsw___set_execsw_set_sym_gzip_execswimgact_shell.o_exec_shell_imgact_shell_execsw___set_execsw_set_sym_shell_execswinflate.o_qflag_border_cplens_cplext_cpdist_cpdext_mask_lbits_dbits_huft_build_huft_free_inflate_codes_inflate_stored_l.128_inflate_fixed_inflate_dynamic_inflate_block_xinflateinit_main.o_sysctl___kern_boottime___set_sysctl__kern_sym_sysctl___kern_boottime_shutdowntimeout_sysctl___kern_shutdown_timeout___set_sysctl__kern_sym_sysctl___kern_shutdown_timeout_placeholder_sys_init___set_sysinit_set_sym_placeholder_sys_init_init_framep_print_caddr_t_announce_sys_init___set_sysinit_set_sym_announce_sys_init_proc0_init_pgrp0_session0_cred0_filedesc0_limit0_vmspace0_p0init_sys_init___set_sysinit_set_sym_p0init_sys_init_proc0_post_p0post_sys_init___set_sysinit_set_sym_p0post_sys_init_sched_setup_sched_setup_sys_init___set_sysinit_set_sym_sched_setup_sys_init_root_conf_root_conf_sys_init___set_sysinit_set_sym_root_conf_sys_init_xxx_vfs_mountroot_mountroot_sys_init___set_sysinit_set_sym_mountroot_sys_init_xxx_vfs_root_fdtab_retrofit_sys_init___set_sysinit_set_sym_retrofit_sys_init_init_sys_init_kthread_init___set_sysinit_set_sym_init_sys_init_start_init_initpathsinit_sysent.oinit_sysvec.okern_acct.o_acctsuspend_sysctl___kern_acct_suspend___set_sysctl__kern_sym_sysctl___kern_acct_suspend_acctresume_sysctl___kern_acct_resume___set_sysctl__kern_sym_sysctl___kern_acct_resume_acctchkfreq_sysctl___kern_acct_chkfreq___set_sysctl__kern_sym_sysctl___kern_acct_chkfreq_acctp_savacctp_acctwatch_encode_comp_tkern_clock.o_clocks_sys_init_initclocks___set_sysinit_set_sym_clocks_sys_init_time_phase_time_adj_time_reftime_pscnt_psdiv_calltodo_profprocs_sysctl_kern_clockrate_sysctl___kern_clockrate___set_sysctl__kern_sym_sysctl___kern_clockratekern_conf.okern_descrip.o_fildesc_cdevsw_fdopen_finishdup_sysctl___debug_fdexpand_fdexpand___set_sysctl__debug_sym_sysctl___debug_fdexpand_sysctl_kern_file_sysctl___kern_file___set_sysctl__kern_sym_sysctl___kern_file_sysctl___kern_maxfilesperproc___set_sysctl__kern_sym_sysctl___kern_maxfilesperproc_sysctl___kern_maxfiles___set_sysctl__kern_sym_sysctl___kern_maxfiles_fildesc_devsw_installed_fildesc_drvinit_fildescdev_sys_init___set_sysinit_set_sym_fildescdev_sys_initkern_exec.o_ps_strings_sysctl___kern_ps_strings___set_sysctl__kern_sym_sysctl___kern_ps_strings_usrstack_sysctl___kern_usrstack___set_sysctl__kern_sym_sysctl___kern_usrstack_execsw_exec_check_permissions_exec_copyout_stringskern_exit.o_exit_list_wait1kern_fork.o_fork1_nextpid_pidchecked.226_fork_listkern_ktrace.okern_lkm.o_lkm_v_lkm_state_lkmc_cdevsw_lkmcopen_lkmcclose_lkmcioctl_lkmunreserve_curp_lkmods__lkm_syscall__lkm_vfs__lkm_dev__lkm_exec_lkm_exec_dummy1_lkm_exec_dummy2_lkm_exec_dummy3_lkm_exec_dummy4___set_execsw_set_sym_lkm_exec_dummy1___set_execsw_set_sym_lkm_exec_dummy2___set_execsw_set_sym_lkm_exec_dummy3___set_execsw_set_sym_lkm_exec_dummy4_lkm_devsw_installed_lkm_drvinit_lkmdev_sys_init___set_sysinit_set_sym_lkmdev_sys_initkern_lockf.o_lf_setlock_lf_clearlock_lf_getlock_lockstr.220_lf_getblock_lf_addblock_lf_findoverlap_lf_wakelock_lf_splitkern_malloc.o_kmem_sys_init_kmeminit___set_sysinit_set_sym_kmem_sys_init_bucketkern_mib.o_sysctl___sysctl___set_sysctl__sym_sysctl___sysctl___set_sysctl__sysctl_sym_sysctl___sysctl_sysctl___kern___set_sysctl__sym_sysctl___kern___set_sysctl__kern_sym_sysctl___kern_sysctl___vm___set_sysctl__sym_sysctl___vm___set_sysctl__vm_sym_sysctl___vm_sysctl___vfs___set_sysctl__sym_sysctl___vfs___set_sysctl__vfs_sym_sysctl___vfs_sysctl___net___set_sysctl__sym_sysctl___net___set_sysctl__net_sym_sysctl___net_sysctl___debug___set_sysctl__sym_sysctl___debug___set_sysctl__debug_sym_sysctl___debug_sysctl___hw___set_sysctl__sym_sysctl___hw___set_sysctl__hw_sym_sysctl___hw_sysctl___machdep___set_sysctl__sym_sysctl___machdep___set_sysctl__machdep_sym_sysctl___machdep_sysctl___user___set_sysctl__sym_sysctl___user___set_sysctl__user_sym_sysctl___user_sysctl___kern_osrelease___set_sysctl__kern_sym_sysctl___kern_osrelease_sysctl___kern_osrevision___set_sysctl__kern_sym_sysctl___kern_osrevision_sysctl___kern_version___set_sysctl__kern_sym_sysctl___kern_version_sysctl___kern_ostype___set_sysctl__kern_sym_sysctl___kern_ostype_sysctl___kern_osreldate___set_sysctl__kern_sym_sysctl___kern_osreldate_sysctl___kern_maxproc___set_sysctl__kern_sym_sysctl___kern_maxproc_sysctl___kern_maxprocperuid___set_sysctl__kern_sym_sysctl___kern_maxprocperuid_sysctl___kern_argmax___set_sysctl__kern_sym_sysctl___kern_argmax_sysctl___kern_posix1version___set_sysctl__kern_sym_sysctl___kern_posix1version_sysctl___kern_ngroups___set_sysctl__kern_sym_sysctl___kern_ngroups_sysctl___kern_job_control___set_sysctl__kern_sym_sysctl___kern_job_control_sysctl___kern_saved_ids___set_sysctl__kern_sym_sysctl___kern_saved_ids_sysctl___kern_bootfile___set_sysctl__kern_sym_sysctl___kern_bootfile_sysctl___hw_ncpu___set_sysctl__hw_sym_sysctl___hw_ncpu_sysctl___hw_byteorder___set_sysctl__hw_sym_sysctl___hw_byteorder_sysctl___hw_pagesize___set_sysctl__hw_sym_sysctl___hw_pagesize_machine_arch_sysctl___hw_machine_arch___set_sysctl__hw_sym_sysctl___hw_machine_arch_sysctl___kern_hostname___set_sysctl__kern_sym_sysctl___kern_hostname_sysctl_kern_securelvl_sysctl___kern_securelevel___set_sysctl__kern_sym_sysctl___kern_securelevel_sysctl___kern_domainname___set_sysctl__kern_sym_sysctl___kern_domainname_sysctl___kern_hostid___set_sysctl__kern_sym_sysctl___kern_hostid_sysctl___user_cs_path___set_sysctl__user_sym_sysctl___user_cs_path_sysctl___user_bc_base_max___set_sysctl__user_sym_sysctl___user_bc_base_max_sysctl___user_bc_dim_max___set_sysctl__user_sym_sysctl___user_bc_dim_max_sysctl___user_bc_scale_max___set_sysctl__user_sym_sysctl___user_bc_scale_max_sysctl___user_bc_string_max___set_sysctl__user_sym_sysctl___user_bc_string_max_sysctl___user_coll_weights_max___set_sysctl__user_sym_sysctl___user_coll_weights_max_sysctl___user_expr_nest_max___set_sysctl__user_sym_sysctl___user_expr_nest_max_sysctl___user_line_max___set_sysctl__user_sym_sysctl___user_line_max_sysctl___user_re_dup_max___set_sysctl__user_sym_sysctl___user_re_dup_max_sysctl___user_posix2_version___set_sysctl__user_sym_sysctl___user_posix2_version_sysctl___user_posix2_c_bind___set_sysctl__user_sym_sysctl___user_posix2_c_bind_sysctl___user_posix2_c_dev___set_sysctl__user_sym_sysctl___user_posix2_c_dev_sysctl___user_posix2_char_term___set_sysctl__user_sym_sysctl___user_posix2_char_term_sysctl___user_posix2_fort_dev___set_sysctl__user_sym_sysctl___user_posix2_fort_dev_sysctl___user_posix2_fort_run___set_sysctl__user_sym_sysctl___user_posix2_fort_run_sysctl___user_posix2_localedef___set_sysctl__user_sym_sysctl___user_posix2_localedef_sysctl___user_posix2_sw_dev___set_sysctl__user_sym_sysctl___user_posix2_sw_dev_sysctl___user_posix2_upe___set_sysctl__user_sym_sysctl___user_posix2_upe_sysctl___user_stream_max___set_sysctl__user_sym_sysctl___user_stream_max_sysctl___user_tzname_max___set_sysctl__user_sym_sysctl___user_tzname_maxkern_ntptime.o_ntp_sysctl_sysctl___kern_ntp_pll___set_sysctl__kern_sym_sysctl___kern_ntp_pll___set_sysctl__kern_ntp_pll_sym_sysctl___kern_ntp_pll_sysctl___kern_ntp_pll_gettime___set_sysctl__kern_ntp_pll_sym_sysctl___kern_ntp_pll_gettimekern_opt.okern_physio.o_physwakeupkern_proc.o_uihash_pgdelete_orphanpg_zpfind_sysctl_out_proc_sysctl_kern_proc_sysctl___kern_proc___set_sysctl__kern_sym_sysctl___kern_proc___set_sysctl__kern_proc_sym_sysctl___kern_proc_sysctl___kern_proc_all___set_sysctl__kern_proc_sym_sysctl___kern_proc_all_sysctl___kern_proc_pgrp___set_sysctl__kern_proc_sym_sysctl___kern_proc_pgrp___set_sysctl__kern_proc_pgrp_sym_sysctl___kern_proc_pgrp_sysctl___kern_proc_tty___set_sysctl__kern_proc_sym_sysctl___kern_proc_tty___set_sysctl__kern_proc_tty_sym_sysctl___kern_proc_tty_sysctl___kern_proc_uid___set_sysctl__kern_proc_sym_sysctl___kern_proc_uid___set_sysctl__kern_proc_uid_sym_sysctl___kern_proc_uid_sysctl___kern_proc_ruid___set_sysctl__kern_proc_sym_sysctl___kern_proc_ruid___set_sysctl__kern_proc_ruid_sym_sysctl___kern_proc_ruid_sysctl___kern_proc_pid___set_sysctl__kern_proc_sym_sysctl___kern_proc_pid___set_sysctl__kern_proc_pid_sym_sysctl___kern_proc_pidkern_prot.okern_resource.okern_shutdown.o_waittime_shutdown_list1_shutdown_list2_shutdown_list3_dumppcb_dumpsys_dodump_sysctl___machdep_do_dump___set_sysctl__machdep_sym_sysctl___machdep_do_dump_dump_conf_dump_conf_sys_init___set_sysinit_set_sym_dump_conf_sys_initkern_sig.o_sigprop_killpg1_stop_coredumpkern_subr.o_primeskern_synch.o_runqueue_sys_init_rqinit___set_sysinit_set_sym_runqueue_sys_init_quantum_sysctl_kern_quantum_sysctl___kern_quantum___set_sysctl__kern_sym_sysctl___kern_quantumkern_sysctl.o_sysctl_order_cmp_sysctl_order_sysctl_sys_init___set_sysinit_set_sym_sysctl_sys_init_sysctl_sysctl_debug_dump_node_sysctl_sysctl_debug_sysctl___sysctl_debug___set_sysctl__sysctl_sym_sysctl___sysctl_debug_sysctl_sysctl_name_sysctl___sysctl_name___set_sysctl__sysctl_sym_sysctl___sysctl_name___set_sysctl__sysctl_name_sym_sysctl___sysctl_name_sysctl_sysctl_next_ls_sysctl_sysctl_next_sysctl___sysctl_next___set_sysctl__sysctl_sym_sysctl___sysctl_next___set_sysctl__sysctl_next_sym_sysctl___sysctl_next_name2oid_sysctl_sysctl_name2oid_sysctl___sysctl_name2oid___set_sysctl__sysctl_sym_sysctl___sysctl_name2oid_sysctl_sysctl_oidfmt_sysctl___sysctl_oidfmt___set_sysctl__sysctl_sym_sysctl___sysctl_oidfmt___set_sysctl__sysctl_oidfmt_sym_sysctl___sysctl_oidfmt_sysctl_old_kernel_sysctl_new_kernel_memlock_sysctl_root_sysctl_old_user_sysctl_new_user_bsdi_si_bsdi_stringskern_time.o_timevalfix_bigadjkern_xxx.osubr_autoconf.o_intr_config_hook_list_run_interrupt_driven_config_hooks_intr_config_hooks_sys_init___set_sysinit_set_sym_intr_config_hooks_sys_initsubr_diskslice.o_ds_debug_dsiodone_fixlabel_set_ds_bad_free_ds_label_set_ds_label_set_ds_wlabel_name.230_slice_info_partition_infosubr_dkbad.osubr_log.o_log_cdevsw_logopen_logclose_logread_logioctl_logselect_logsoftc_log_devsw_installed_log_drvinit_logdev_sys_init___set_sysinit_set_sym_logdev_sys_initsubr_prf.o_v_putc_consintr_putchar_logpri_msglogchar_ksprintn_buf.150_msgbufmappedsubr_prof.osubr_rlist.o_rlist_count_rlist_malloc_rlfreesubr_xxx.osys_generic.o_nselcoll_selscan_flag.136sys_pipe.o_pipeops_pipe_read_pipe_write_pipe_ioctl_pipe_select_pipe_close_pipeinit_pipeclose_pipespace_amountpipekva_pipe_build_write_buffer_pipe_destroy_write_buffer_pipe_clone_write_buffer_pipe_direct_writesys_process.osys_socket.o_soo_read_soo_write_soo_closesysv_ipc.o_sysv_nosystty.o_ttydefchars_char_type_ttypend_ttyoutput_ttyecho_ttyretype_ttyrub_ttnread_ttywflush_ttyunblock_ttyrubo_proc_comparetty_compat.o_ttydebug_sysctl___debug_ttydebug___set_sysctl__debug_sym_sysctl___debug_ttydebug_compatspeeds_compatspcodes_ttcompatspeedtab_ttcompatsetflags_ttcompatgetflags_ttcompatsetlflagstty_conf.o_l_nullioctl_l_noopen_l_noclose_l_norint_l_nostart_nodisctty_pty.o_pts_cdevsw_ptsopen_ptsclose_ptsread_ptswrite_ptyioctl_ptsstop_ptydevtotty_ptc_cdevsw_ptcopen_ptcclose_ptcread_ptcwrite_ptcselect_npty_pt_tty_ptcwakeup_pt_ioctl_ptsstart_ptc_devsw_installed_ptc_drvinit_ptcdev_sys_init___set_sysinit_set_sym_ptcdev_sys_inittty_subr.o_clist_sys_init_clist_init___set_sysinit_set_sym_clist_sys_init_cfreelist_cslushcount_cblock_alloc_cblocks_ctotcount_cblock_free_cblockstty_tty.o_cttyopen_cttyread_cttywrite_cttyioctl_cttyselect_ctty_devsw_installed_ctty_drvinit_cttydev_sys_init___set_sysinit_set_sym_cttydev_sys_inituipc_domain.o_splimp_sys_init_kludge_splimp_x_save_spl___set_sysinit_set_sym_splimp_sys_init_domain_sys_init_domaininit___set_sysinit_set_sym_domain_sys_init_splx_sys_init_kludge_splx___set_sysinit_set_sym_splx_sys_init_pffasttimo_pfslowtimouipc_mbuf.o_mbuf_sys_init_mbinit___set_sysinit_set_sym_mbuf_sys_init_m_reclaim_MCFail_MPFailuipc_proto.o_localswuipc_socket.o_somaxconn_sysctl___kern_somaxconn___set_sysctl__kern_sym_sysctl___kern_somaxconnuipc_socket2.o_sysctl___kern_maxsockbuf___set_sysctl__kern_sym_sysctl___kern_maxsockbuf_sb_efficiency_sysctl___kern_sockbuf_waste_factor___set_sysctl__kern_sym_sysctl___kern_sockbuf_waste_factor_rnd.140_old_mono_secs.141_cur_cnt.142_old_cnt.143_old_abort_old_accept_old_attach_old_bind_old_connect_old_connect2_old_control_old_detach_old_disconnect_old_listen_old_peeraddr_old_rcvd_old_rcvoob_old_send_old_sense_old_shutdown_old_sockaddruipc_syscalls.o_accept1_getsockname1_getpeername1uipc_usrreq.o_sun_noname_unp_attach_unp_detach_unp_bind_unp_connect_unp_disconnect_unp_internalize_unp_shutdown_unp_drop_unp_ino_unpst_sendspace_unpst_recvspace_unpdg_sendspace_unpdg_recvspace_unp_rights_unp_gc_unp_discard_unp_gcing_unp_defer_unp_mark_unp_scanvfs_bio.o_up_kp_vfs_update_updateproc_update_sys_init___set_sysinit_set_sym_update_sys_init_invalhash_bufhashtbl_bufqueues_maxbufspace_maxvmiobufspace_maxbufmallocspace_bogus_offset_bfreekva_vfs_setdirty_vfs_clean_pages_vfs_vmio_release_bufspace_vmiospace_getnewbuf_bufmallocspace_vm_hold_free_pages_vm_hold_load_pages_vfs_buf_set_valid_vfs_page_set_valid_sysctl_kern_updateinterval_sysctl___kern_update___set_sysctl__kern_sym_sysctl___kern_updatevfs_cache.o_doingcache_sysctl___debug_vfscache___set_sysctl__debug_sym_sysctl___debug_vfscache_nchash_nchashtbl_nclruhead_nchENOENT_numcache_nextvnodeid.224vfs_cluster.o_cluster_rbuild_totreads_totreadblocksvfs_conf.ovfs_init.o_vfs_sys_init_vfsinit___set_sysinit_set_sym_vfs_sys_init_vfs_opv_numops_vfs_op_init_sysctl_vfs_vfsconf_sysctl___vfs_vfsconf___set_sysctl__vfs_sym_sysctl___vfs_vfsconfvfs_lookup.ovfs_subr.o_freevnodes_sysctl___kern_maxvnodes___set_sysctl__kern_sym_sysctl___kern_maxvnodes_xxxfs_mntid.236_typename_sysctl_vnode_vfs_hang_addrlist_vfs_free_netcred_vfs_free_addrlistvfs_syscalls.o_change_dirvfs_vnops.o_vn_read_vn_write_vn_ioctl_vn_select_vn_closefiledead_vnops.o_dead_vnodeop_entries_dead_lookup_dead_badop_dead_open_dead_ebadf_dead_read_dead_write_dead_ioctl_dead_select_dead_lock_dead_bmap_dead_strategy_dead_print_dead_vnodeop_opv_desc___set_vfs_opv_descs__sym_dead_vnodeop_opv_desc_chkvnlockfifo_vnops.o_fifo_vnodeop_entries_fifo_ebadf_fifo_lock_fifo_unlock_fifo_print_fifo_vnodeop_opv_desc___set_vfs_opv_descs__sym_fifo_vnodeop_opv_desc_openstr.220procfs_fpregs.oprocfs_mem.o_procfs_rwmemprocfs_regs.ospec_vnops.o_spec_vnodeop_entries_spec_ebadf_spec_getattr_spec_vnodeop_opv_desc___set_vfs_opv_descs__sym_spec_vnodeop_opv_desc_spec_getpages_iodonemsdosfs_conv.o_regyear_leapyear_lasttime_lastdtime_lastday_lastddate_lastdosdate_lastseconds_unix2dos_dos2unix_u2l_l2umsdosfs_denode.o_dehash_dehashtbl_msdosfs_hashget_msdosfs_hashins_msdosfs_hashrem_dehash_slockmsdosfs_fat.o_fatblock_fc_bmapcalls_fc_lookup_fc_largedistance_fc_lmdistance_updatefats_fatchain_chainlength_chainalloc_fc_fileextends_fc_lfcemptymsdosfs_lookup.omsdosfs_vfsops.o_update_mp_msdosfs_root_msdosfs_mount_mountmsdosfs_msdosfs_statfs_msdosfs_unmount_msdosfs_start_msdosfs_quotactl_msdosfs_sync_msdosfs_fhtovp_msdosfs_vptofh_msdosfs_vget_msdosfs_vfsops__fs_vfsconf___set_vfs_set_sym__fs_vfsconfmsdosfs_vnops.o_msdosfs_create_msdosfs_mknod_msdosfs_mkdir_msdosfs_open_msdosfs_ioctl_msdosfs_select_msdosfs_mmap_msdosfs_seek_msdosfslockdebug_msdosfs_lock_msdosfs_unlock_msdosfs_readlink_msdosfs_islocked_msdosfs_advlock_msdosfs_reallocblks_msdosfs_close_msdosfs_access_msdosfs_getattr_msdosfs_setattr_msdosfs_read_msdosfs_write_msdosfs_fsync_msdosfs_remove_msdosfs_link_msdosfs_rename_dosdirtemplate_msdosfs_rmdir_msdosfs_symlink_msdosfs_readdir_msdosfs_abortop_msdosfs_bmap_msdosfs_strategy_msdosfs_print_msdosfs_pathconf_msdosfs_vnodeop_entries_msdosfs_vnodeop_opv_desc___set_vfs_opv_descs__sym_msdosfs_vnodeop_opv_descif.o_interfaces_sys_init_ifinit___set_sysinit_set_sym_interfaces_sys_init_if_slowtimo_if_indexlim.130_link_rtrequest_if_qflush_ifconf_sysctl___net_link___set_sysctl__net_sym_sysctl___net_link___set_sysctl__net_link_sym_sysctl___net_link_sysctl___net_link_generic___set_sysctl__net_link_sym_sysctl___net_link_generic___set_sysctl__net_link_generic_sym_sysctl___net_link_genericif_ethersubr.o_ether_ipmulticast_min_ether_ipmulticast_max_sysctl___net_link_ether___set_sysctl__net_link_sym_sysctl___net_link_ether___set_sysctl__net_link_ether_sym_sysctl___net_link_etherif_loop.o_ps_sys_init_loopattach___set_sysinit_set_sym_ps_sys_init_loioctl_lortrequestif_media.oif_mib.o_sysctl___net_link_generic_system___set_sysctl__net_link_generic_sym_sysctl___net_link_generic_system___set_sysctl__net_link_generic_system_sym_sysctl___net_link_generic_system_sysctl___net_link_generic_system_ifcount___set_sysctl__net_link_generic_system_sym_sysctl___net_link_generic_system_ifcount_sysctl_ifdata_sysctl___net_link_generic_ifdata___set_sysctl__net_link_generic_sym_sysctl___net_link_generic_ifdata___set_sysctl__net_link_generic_ifdata_sym_sysctl___net_link_generic_ifdataradix.o_normal_chars_rn_search_rn_search_m_rn_lookup_rn_satsifies_leaf_rn_ones_rn_newpair_rn_insert_last_zeroed.136_max_keylen_addmask_key_mask_rnhead_rn_lexobetter_rn_new_radix_mask_rn_mkfreelist_rn_delete_rn_walktree_from_rn_walktree_rn_zerosraw_cb.o_raw_sendspace_raw_recvspaceraw_usrreq.oroute.o_rtable_init_rtstat_rttrash_rt_fixdelete_rt_maskedcopy_rt_fixchangertsock.o_route_dst_route_src_sa_zero_route_proto_route_usrreq_route_output_rt_xaddrs_rt_setmetrics_rt_msg2_rt_msg1_sysctl_dumpentry_sysctl_iflist_sysctl_rtsock_sysctl___net_routetable___set_sysctl__net_sym_sysctl___net_routetable___set_sysctl__net_routetable_sym_sysctl___net_routetable_routesw_routedomain___set_domain_set_sym_routedomainif_ether.o_sysctl___net_link_ether_inet___set_sysctl__net_link_ether_sym_sysctl___net_link_ether_inet___set_sysctl__net_link_ether_inet_sym_sysctl___net_link_ether_inet_arpt_prune_arpt_keep_arpt_down_sysctl___net_link_ether_inet_prune_intvl___set_sysctl__net_link_ether_inet_sym_sysctl___net_link_ether_inet_prune_intvl_sysctl___net_link_ether_inet_max_age___set_sysctl__net_link_ether_inet_sym_sysctl___net_link_ether_inet_max_age_sysctl___net_link_ether_inet_host_down_time___set_sysctl__net_link_ether_inet_sym_sysctl___net_link_ether_inet_host_down_time_arp_maxtries_useloopback_arp_proxyall_sysctl___net_link_ether_inet_maxtries___set_sysctl__net_link_ether_inet_sym_sysctl___net_link_ether_inet_maxtries_sysctl___net_link_ether_inet_useloopback___set_sysctl__net_link_ether_inet_sym_sysctl___net_link_ether_inet_useloopback_sysctl___net_link_ether_inet_proxyall___set_sysctl__net_link_ether_inet_sym_sysctl___net_link_ether_inet_proxyall_arptimer_llinfo_arp_arptfree_null_sdl.130_arpinit_done.131_arp_rtrequest_arprequest_arp_inuse_arp_allocated_arplookup_arpintr_in_arpinput_mod_nit___set_netisr_set_sym_mod_nit_sin.144igmp.o_sysctl___net_inet_igmp_stats_igmpstat___set_sysctl__net_inet_igmp_sym_sysctl___net_inet_igmp_stats_igmp_all_hosts_group_igmp_all_rtrs_group_igmp_timers_are_running_router_alert_Head_find_rti_igmp_sendpkt_igmprtin.o_subnetsarelocal_sysctl___net_inet_ip_subnets_are_local___set_sysctl__net_inet_ip_sym_sysctl___net_inet_ip_subnets_are_local_in_socktrim_in_interfaces_in_ifinit_in_ifscrub_in_mkin_pcb.o_ipport_lowfirstauto_ipport_lowlastauto_ipport_firstauto_ipport_lastauto_ipport_hifirstauto_ipport_hilastauto_sysctl_net_ipport_check_sysctl___net_inet_ip_portrange___set_sysctl__net_inet_ip_sym_sysctl___net_inet_ip_portrange___set_sysctl__net_inet_ip_portrange_sym_sysctl___net_inet_ip_portrange_sysctl___net_inet_ip_portrange_lowfirst___set_sysctl__net_inet_ip_portrange_sym_sysctl___net_inet_ip_portrange_lowfirst_sysctl___net_inet_ip_portrange_lowlast___set_sysctl__net_inet_ip_portrange_sym_sysctl___net_inet_ip_portrange_lowlast_sysctl___net_inet_ip_portrange_first___set_sysctl__net_inet_ip_portrange_sym_sysctl___net_inet_ip_portrange_first_sysctl___net_inet_ip_portrange_last___set_sysctl__net_inet_ip_portrange_sym_sysctl___net_inet_ip_portrange_last_sysctl___net_inet_ip_portrange_hifirst___set_sysctl__net_inet_ip_portrange_sym_sysctl___net_inet_ip_portrange_hifirst_sysctl___net_inet_ip_portrange_hilast___set_sysctl__net_inet_ip_portrange_sym_sysctl___net_inet_ip_portrange_hilast_in_pcbinshash_in_rtchangein_proto.o___set_domain_set_sym_inetdomain_sysctl___net_inet___set_sysctl__net_sym_sysctl___net_inet___set_sysctl__net_inet_sym_sysctl___net_inet_sysctl___net_inet_ip___set_sysctl__net_inet_sym_sysctl___net_inet_ip___set_sysctl__net_inet_ip_sym_sysctl___net_inet_ip_sysctl___net_inet_icmp___set_sysctl__net_inet_sym_sysctl___net_inet_icmp___set_sysctl__net_inet_icmp_sym_sysctl___net_inet_icmp_sysctl___net_inet_udp___set_sysctl__net_inet_sym_sysctl___net_inet_udp___set_sysctl__net_inet_udp_sym_sysctl___net_inet_udp_sysctl___net_inet_tcp___set_sysctl__net_inet_sym_sysctl___net_inet_tcp___set_sysctl__net_inet_tcp_sym_sysctl___net_inet_tcp_sysctl___net_inet_igmp___set_sysctl__net_inet_sym_sysctl___net_inet_igmp___set_sysctl__net_inet_igmp_sym_sysctl___net_inet_igmpin_rmx.o_in_addroute_in_matroute_rtq_reallyold_sysctl___net_inet_ip_rtexpire___set_sysctl__net_inet_ip_sym_sysctl___net_inet_ip_rtexpire_rtq_minreallyold_sysctl___net_inet_ip_rtminexpire___set_sysctl__net_inet_ip_sym_sysctl___net_inet_ip_rtminexpire_rtq_toomany_sysctl___net_inet_ip_rtmaxcache___set_sysctl__net_inet_ip_sym_sysctl___net_inet_ip_rtmaxcache_in_clsroute_in_rtqkill_rtq_timeout_last_adjusted_timeout.136_in_rtqtimoip_icmp.o_sysctl___net_inet_icmp_stats___set_sysctl__net_inet_icmp_sym_sysctl___net_inet_icmp_stats_icmpmaskrepl_sysctl___net_inet_icmp_maskrepl___set_sysctl__net_inet_icmp_sym_sysctl___net_inet_icmp_maskrepl_icmpbmcastecho_sysctl___net_inet_icmp_bmcastecho___set_sysctl__net_inet_icmp_sym_sysctl___net_inet_icmp_bmcastecho_icmp_reflect_icmpsrc_icmpdst_icmpgw_ip_next_mtu_icmp_send_mtutab.138ip_input.o_ipforwarding_sysctl___net_inet_ip_forwarding___set_sysctl__net_inet_ip_sym_sysctl___net_inet_ip_forwarding_ipsendredirects_sysctl___net_inet_ip_redirect___set_sysctl__net_inet_ip_sym_sysctl___net_inet_ip_redirect_sysctl___net_inet_ip_ttl___set_sysctl__net_inet_ip_sym_sysctl___net_inet_ip_ttl_ip_dosourceroute_sysctl___net_inet_ip_sourceroute___set_sysctl__net_inet_ip_sym_sysctl___net_inet_ip_sourceroute_ip_acceptsourceroute_sysctl___net_inet_ip_accept_sourceroute___set_sysctl__net_inet_ip_sym_sysctl___net_inet_ip_accept_sourceroute_ipqmaxlen_sysctl___net_inet_ip_intr_queue_maxlen___set_sysctl__net_inet_ip_sym_sysctl___net_inet_ip_intr_queue_maxlen_sysctl___net_inet_ip_intr_queue_drops___set_sysctl__net_inet_ip_sym_sysctl___net_inet_ip_intr_queue_drops_sysctl___net_inet_ip_stats___set_sysctl__net_inet_ip_sym_sysctl___net_inet_ip_stats_nipq_ip_nhops_ipq_maxnipq_ipaddr_ip_dooptions_ip_forward_ip_freef_ip_reass_ipintr_mod_nit___set_netisr_set_sym_mod_nit_ip_deq_ip_enq_save_rte_ip_rtaddr_ipforward_rt_ip_srcrt_ip_rsvp_onip_mroute.o_ip_mrtproto_mrtstatip_output.o_ip_insertoptions_ip_mloopback_ip_optcopy_ip_pcbopts_ip_setmoptions_ip_getmoptionsraw_ip.o_ripcb_ripcbinfo_ripsrc_rip_sendspace_rip_recvspacetcp_input.o_tcprexmtthresh_sysctl___net_inet_tcp_stats___set_sysctl__net_inet_tcp_sym_sysctl___net_inet_tcp_stats_log_in_vain_sysctl___net_inet_tcp_log_in_vain___set_sysctl__net_inet_tcp_sym_sysctl___net_inet_tcp_log_in_vain_no_local_slowstart_sysctl___net_inet_tcp_no_local_slowstart___set_sysctl__net_inet_tcp_sym_sysctl___net_inet_tcp_no_local_slowstart_tcp_reass_tcp_dooptions_tcp_xmit_timer_tcp_pulloutofbandtcp_output.o_tcp_outflagstcp_subr.o_sysctl___net_inet_tcp_mssdflt___set_sysctl__net_inet_tcp_sym_sysctl___net_inet_tcp_mssdflt_tcp_rttdflt_sysctl___net_inet_tcp_rttdflt___set_sysctl__net_inet_tcp_sym_sysctl___net_inet_tcp_rttdflt_tcp_do_rfc1323_sysctl___net_inet_tcp_rfc1323___set_sysctl__net_inet_tcp_sym_sysctl___net_inet_tcp_rfc1323_tcp_do_rfc1644_sysctl___net_inet_tcp_rfc1644___set_sysctl__net_inet_tcp_sym_sysctl___net_inet_tcp_rfc1644_tcp_cleartaocache_tcp_notifytcp_timer.o_sysctl___net_inet_tcp_keepinit___set_sysctl__net_inet_tcp_sym_sysctl___net_inet_tcp_keepinit_sysctl___net_inet_tcp_keepidle___set_sysctl__net_inet_tcp_sym_sysctl___net_inet_tcp_keepidle_tcp_keepintvl_sysctl___net_inet_tcp_keepintvl___set_sysctl__net_inet_tcp_sym_sysctl___net_inet_tcp_keepintvl_always_keepalive_sysctl___net_inet_tcp_always_keepalive___set_sysctl__net_inet_tcp_sym_sysctl___net_inet_tcp_always_keepalive_tcp_keepcnt_tcp_maxpersistidle_tcp_totbackofftcp_usrreq.o_tcp_usr_attach_tcp_attach_tcp_usr_detach_tcp_disconnect_tcp_usr_bind_tcp_usr_listen_tcp_usr_connect_tcp_connect_tcp_usr_disconnect_tcp_usr_accept_tcp_usr_shutdown_tcp_usrclosed_tcp_usr_rcvd_tcp_usr_send_tcp_usr_abort_tcp_usr_sense_tcp_usr_rcvoob_tcp_usr_sockaddr_tcp_usr_peeraddr_tcp_usr_control_sysctl___net_inet_tcp_sendspace___set_sysctl__net_inet_tcp_sym_sysctl___net_inet_tcp_sendspace_sysctl___net_inet_tcp_recvspace___set_sysctl__net_inet_tcp_sym_sysctl___net_inet_tcp_recvspaceudp_usrreq.o_udpcksum_sysctl___net_inet_udp_checksum___set_sysctl__net_inet_udp_sym_sysctl___net_inet_udp_checksum_log_in_vain_sysctl___net_inet_udp_log_in_vain___set_sysctl__net_inet_udp_sym_sysctl___net_inet_udp_log_in_vain_sysctl___net_inet_udp_stats___set_sysctl__net_inet_udp_sym_sysctl___net_inet_udp_stats_udp_in_udbinfo_udp_notify_udp_output_udp_sendspace_sysctl___net_inet_udp_maxdgram___set_sysctl__net_inet_udp_sym_sysctl___net_inet_udp_maxdgram_udp_recvspace_sysctl___net_inet_udp_recvspace___set_sysctl__net_inet_udp_sym_sysctl___net_inet_udp_recvspace_udp_detachpccard.o_sysctl___machdep_pccard___set_sysctl__machdep_sym_sysctl___machdep_pccard___set_sysctl__machdep_pccard_sym_sysctl___machdep_pccard_pcic_resume_reset_sysctl___machdep_pccard_pcic_resume_reset___set_sysctl__machdep_pccard_sym_sysctl___machdep_pccard_pcic_resume_reset_cont_list_crd_cdevsw_crdopen_crdclose_crdread_crdwrite_crdioctl_crdselect_already_configured.124_nullfunc_build_freelist_already_configured.131_pccard_slots_find_driver_drivers_remove_device_unit.138_inserted_disable_slot_s_hook_r_hook_really_power_off_slot_unregister_device_interrupt_slot_irq_handler_slot_suspend_slot_resume_allocate_driver_pccard_mem_pccard_kmem_invalid_io_memory_crd_devsw_installed_crd_drvinit_crddev_sys_init___set_sysinit_set_sym_crddev_sys_initpccard_beep.o_pccard_insert_beep_type0_pccard_remove_beep_type0_pccard_success_beep_type0_pccard_failure_beep_type0_pccard_insert_beep_type1_pccard_remove_beep_type1_pccard_success_beep_type1_pccard_failure_beep_type1_pccard_insert_beep0_type2_pccard_insert_beep_type2_pccard_remove_beep0_type2_pccard_remove_beep_type2_pccard_success_beep1_type2_pccard_success_beep0_type2_pccard_success_beep_type2_pccard_failure_beep1_type2_pccard_failure_beep0_type2_pccard_failure_beep_type2_insert_remove_success_failure_allow_beep_enable_beeppcic.o_pcic_irq_pcic_slotnum_pcic_unit_pcic_isa_probe_pcic_isa_attach_controller_info_pcic_memory_pcic_io_pcic_ioctl_pcic_power_pcic_mapirq_pcic_reset_pcic_disable_pcic_resume_pcic_imask_pcic_slots_getb1_putb1_cirrus_hack_pcictimeoutpcic_p.o_found_get_pci_pcic_addr_info_list_set_pci_pcic_info_pcic_pci_count_pcic_pci_driver_pcic_pci_probe_pcic_pci_attach___set_pcidevice_set_sym_pcic_pci_driver_ti1xxx_pci_init_clpd683x_pci_init_rl5c4xx_init_setup_generic_cardbus_attach_print_cardbus_registers_pci_legacy_attach_iobase.152if_ed_p.o_pci_ids_ed_pci_count_ed_pci_driver_ed_pci_probe_ed_pci_attach___set_pcidevice_set_sym_ed_pci_driverpci.o_pcibus_pci_register_io_pci_register_memory_pci_memalloc_pci_bridge_config_pcicb_pcibusmax_pci_attach_pci_mfdev_pci_bus_config_pci_info_done_pci_remember_pci_conf_count_not_supported_pci_rescan_pci_dev_list_count_pci_dev_list_pci_lkm_head_pci_int_pci_int_desc_getirq_getintdescbytag_getintdescbymptr_pci_mask0_VendorTable_old_subclasses_storage_subclasses_network_subclasses_display_subclasses_multimedia_subclasses_memory_subclasses_bridge_subclasses_subclasses_majclasses_pci_dev_list_size_pci_open_pci_close_pci_ioctl_pcicdev_pci_cdevinit_pcidev_sys_init___set_sysinit_set_sym_pcidev_sys_initpcisupport.o_chipset_device_chipset_probe_chipset_attach_chipset_count___set_pcidevice_set_sym_chipset_device_generic_pci_bridge_conf82425ex_conf82424zx_conf82434lx_conf82378_conf82437fx_conf82437vx_conf82371fb_conf82371fb2_confread_writeconfig_config_orion_config_i1225_config_Ross_vga_device_vga_probe_vga_attach_vga_count___set_pcidevice_set_sym_vga_device_lkm_device_lkm_probe_lkm_attach_lkm_count___set_pcidevice_set_sym_lkm_device_ign_device_ign_probe_ign_attach_ign_count___set_pcidevice_set_sym_ign_devicewdc_p.o_wdc_pci_count_wdc_pci_driver_wdc_pci_probe_wdc_pci_attach___set_pcidevice_set_sym_wdc_pci_drivercd.o_cd_bdevsw_cdopen_cdclose_cdstrategy_cdioctl_cd_cdevsw_cdunit_cdsetunit_cd_switch_cdminphys_cdstart_cdattach_cd_open_cd_ioctl_cd_close_cd_strategy_cd_get_parms_cd_getdisklabel_cdstrats_cdqueues_cd_get_mode_cd_set_mode_cd_play_tracks_cd_play_msf_cd_play_cd_read_subchannel_cd_read_toc_cd_pause_cd_reset_cd_size_cd_devsw_installed_cd_drvinit_cddev_sys_init___set_sysinit_set_sym_cddev_sys_initscsi_base.o_get_xs_next_free_xs_free_xs_sc_err1_sizes.156_sc_done_scsi_interpret_sense_sense_key_text.163_sc_printing_id_putscsi_driver.oscsi_ioctl.o_scsistrategy_scsierrscsi_sense.o_tabscsiconf.o_extend_alloc_extend_free_extend_new_extend_set_extend_release_unknowndev_mode_tandberg3600_mode_tandberg4200_mode_archive2525_mode_archive150_mode_wangtek5525_mode_wangdat1300_mode_unktape_knowndevs_probe_switch_next_free_type_device_list_scsi_device_lookup_scsi_device_lookup_by_name_done.142_scsi_init_scbusses_free_bus_scsi_bus_conf_scsi_assign_unit_scsi_alloc_unit_scsi_free_unit_scsi_probedev_make_readable_scsi_selectdev_matchsd.o_sdunit_sdsetunit_sd_bdevsw_sdopen_sdclose_sdstrategy_sdioctl_sddump_sdsize_sd_cdevsw_sd_switch_sdminphys_sd_sense_handler_sdstart_sdattach_sd_open_sd_ioctl_sd_close_sd_strategy_sd_get_parms_sdstrategy1_sdstrats_sdqueues_sd_size_sd_reassign_blocks_sddoingadump.176_sx_sd_devsw_installed_sd_drvinit_sddev_sys_init___set_sysinit_set_sym_sddev_sys_inituk.o_uk_cdevsw_ukopen_ukclose_ukioctl_ukminphys_ukstrategy_uk_devsw_installed_uk_drvinit_ukdev_sys_init___set_sysinit_set_sym_ukdev_sys_initffs_alloc.o_ffs_alloccg_ffs_hashalloc_ffs_fserr_ffs_fragextend_doasyncfree_sysctl___debug_doasyncfree___set_sysctl__debug_sym_sysctl___debug_doasyncfree_ffs_dirpref_ffs_nodealloccg_ffs_alloccgblk_ffs_mapsearch_ffs_clusteracctffs_balloc.offs_inode.o_ffs_indirtruncffs_subr.offs_tables.o_fragtbl124_fragtbl8ffs_vfsops.o_ffs_mount__fs_vfsconf___set_vfs_set_sym__fs_vfsconf_ffs_reload_ffs_sbupdate_ffs_oldfscompat_ffs_inode_hash_lockffs_vnops.o_ffs_vnodeop_entries_ffs_read_ffs_write_ffs_fsync_ffs_getpages_ffs_vnodeop_opv_desc_ffs_specop_entries_ffs_specop_opv_desc_ffs_fifoop_entries_ffs_fifoop_opv_desc___set_vfs_opv_descs__sym_ffs_vnodeop_opv_desc___set_vfs_opv_descs__sym_ffs_specop_opv_desc___set_vfs_opv_descs__sym_ffs_fifoop_opv_descmfs_vfsops.o_mfs_mount_mfs_start_mfs_statfs_mfs_init__fs_vfsconf___set_vfs_set_sym__fs_vfsconf_mfs_root_end_mfs_root_mfs_rootbase_mfs_rootsize_mfs_minor_mfs_primfs_vnops.o_mfs_vnodeop_entries_mfs_badop_mfs_open_mfs_close_mfs_ioctl_mfs_inactive_mfs_reclaim_mfs_bmap_mfs_strategy_mfs_print_mfs_vnodeop_opv_desc___set_vfs_opv_descs__sym_mfs_vnodeop_opv_descufs_bmap.oufs_disksubr.oufs_ihash.oufs_inode.o_first.218ufs_lookup.oufs_quota.o_quotatypes_dqget_chkdqchg_chkiqchg_dqflush_dqsync_dqback_dqfreel_desireddquot_dqhash_dqhashtbl_numdquotufs_vfsops.oufs_vnops.o_ufs_chown_ufs_chmod_mastertemplate_omastertemplatedefault_pager.o_default_pager_alloc_default_pager_dealloc_default_pager_getpages_default_pager_putpages_default_pager_haspagedevice_pager.o_dev_pager_init_dev_pager_alloc_dev_pager_dealloc_dev_pager_getpages_dev_pager_putpages_dev_pager_haspage_dev_pager_object_list_dev_pager_fakelist_dev_pager_alloc_lock_want_dev_pager_alloc_lock_dev_pager_putfake_dev_pager_getfakekern_lock.oswap_pager.o_no_swap_space_swp_qs_swap_pager_object_list_swap_pager_init_swap_pager_alloc_swap_pager_dealloc_swap_pager_getpages_swap_pager_haspage_swap_pager_sync_npendingio_swap_pager_inuse_swap_pager_done_swap_pager_free_dmmin_swcleanlist_swap_pager_setvalid_swap_pager_getswapspace_swap_pager_freeswapspace_swap_pager_free_swap_reclaims.256_in_reclaim.257_swap_pager_reclaim_swap_pager_freepage_swap_pager_ridpages_swap_pager_iodone1_swap_pager_needflags_swap_pager_iodone_swap_pager_finish_nswiodonevm_fault.ovm_glue.o_vm_limits_sys_init_vm_init_limits___set_sysinit_set_sym_vm_limits_sys_init_scheduler_sys_init_scheduler___set_sysinit_set_sym_scheduler_sys_init_swapoutvm_init.o_vm_mem_sys_init_vm_mem_init___set_sysinit_set_sym_vm_mem_sys_initvm_kern.ovm_map.o_kmap_free_kentry_free_kentry_count_mapvmpgcnt_mapvm_mapvm_start_mapvmmax_vm_map_entry_dispose_mappool_mappoolcnt_vm_map_entry_create__vm_map_clip_start__vm_map_clip_end_vm_map_entry_unwire_vm_map_entry_delete_vm_map_copy_entryvm_meter.o_cexp_loadav_sysctl___vm_v_free_min___set_sysctl__vm_sym_sysctl___vm_v_free_min_sysctl___vm_v_free_target___set_sysctl__vm_sym_sysctl___vm_v_free_target_sysctl___vm_v_free_reserved___set_sysctl__vm_sym_sysctl___vm_v_free_reserved_sysctl___vm_v_inactive_target___set_sysctl__vm_sym_sysctl___vm_v_inactive_target_sysctl___vm_v_cache_min___set_sysctl__vm_sym_sysctl___vm_v_cache_min_sysctl___vm_v_cache_max___set_sysctl__vm_sym_sysctl___vm_v_cache_max_sysctl___vm_v_pageout_free_min___set_sysctl__vm_sym_sysctl___vm_v_pageout_free_min_sysctl___vm_loadavg___set_sysctl__vm_sym_sysctl___vm_loadavg_vmtotal_sysctl___vm_vmmeter___set_sysctl__vm_sym_sysctl___vm_vmmetervm_mmap.o_cvtbsdprot.240vm_object.o__vm_object_allocate_next_index_vm_object_count_kernel_object_store_kmem_object_store_vm_object_cached_vm_object_cache_trim_vm_object_terminate_vm_object_qcollapse_object_collapses_object_bypassesvm_page.o_vm_page_queue_init_vm_page_dev_bsize_chunks_page_mask_page_shift_vm_page_buckets_vm_page_bucket_count_vm_page_hash_mask_last_page_vm_page_select_free_vm_page_freechk_and_unqueuevm_pageout.o_page_kp_vm_pageout_pagedaemon_sys_init___set_sysinit_set_sym_pagedaemon_sys_init_vm_kp_vm_daemon_vmproc_vmdaemon_sys_init___set_sysinit_set_sym_vmdaemon_sys_init_sysctl___vm_pageout_algorithm___set_sysctl__vm_sym_sysctl___vm_pageout_algorithm_sysctl___vm_swapping_enabled___set_sysctl__vm_sym_sysctl___vm_swapping_enabled_vm_pageout_clean_vm_pageout_object_deactivate_pages_vm_pageout_map_deactivate_pages_cache_rover.240_vm_pageout_scan_vm_req_vmdaemon_vm_pageout_req_swapout_vm_pageout_free_page_calc_lastrun.249_vm_daemon_neededvm_pager.o_pagertab_npagers_swapbkva_initpbuf_bswneededvm_swap.o_sw_bdevsw_swstrategy_sw_cdevsw_swdevt_should_be_malloced_nswdev_sw_devsw_installed_sw_drvinit_swdev_sys_init___set_sysinit_set_sym_swdev_sys_initvm_unix.ovnode_pager.o_vnode_pager_dealloc_vnode_pager_getpages_vnode_pager_putpages_vnode_pager_haspage_vnode_pager_addr_vnode_pager_iodone_vnode_pager_input_smlfs_vnode_pager_input_old_vnode_pager_leaf_getpages_vnode_pager_leaf_putpagesapm.o_apm_cdevsw_apmopen_apmclose_apmioctl_setup_apm_gdt_apm_bios_busy_apm_int_apm_errno_apm_enable_disable_pm_apm_softc_apm_driver_version_apm_engage_disengage_pm_apm_getevent_apm_suspend_system_apm_display_apm_battery_low_apm_add_hook_apm_del_hook_apm_execute_hook_hook_apm_no_clock_adjust_apm_default_resume_diff_time_suspend_time_apm_default_suspend_apm_standbys_apm_op_inprog_apm_do_standby_apm_processevent_apm_lastreq_notify_apm_resume_apm_get_info_apm_timeout_apm_event_enable_apm_event_disable_apm_halt_cpu_apm_not_halt_cpu_apmprobe_apmattach_apm_devsw_installed_apm_drvinit_apmdev_sys_init___set_sysinit_set_sym_apmdev_sys_initapm_setup.o3c5x9.oautoconf.o_configure_sys_init_configure___set_sysinit_set_sym_configure_sys_init_try_cdrom_find_cdrom_root_configure_start_configure_finish_setroot_setdumpdev_devname_sysctl_kern_dumpdev_sysctl___kern_dumpdev___set_sysctl__kern_sym_sysctl___kern_dumpdevbusdma_machdep.o_bounce_lowaddr_total_bpages_alloc_bounce_pages_nobounce_dmamap_reserve_bounce_pages_bounce_map_waitinglist_add_bounce_page_free_bounce_page_bounce_page_list_bounce_map_callbacklist_free_bpages_reserved_bpages_active_bpagescons.o_constab_cn_cdevsw_cnopen_cnclose_cnread_cnwrite_cnioctl_cnselect_sysctl___machdep_consdev_cn_dev_t___set_sysctl__machdep_sym_sysctl___machdep_consdev_cn_mute_cn_tab_cn_phys_close_cn_phys_open_cn_tp_cnuninit_sysctl_kern_consmute_cn_is_open_openmode_openflag_sysctl___kern_consmute___set_sysctl__kern_sym_sysctl___kern_consmute_cn_phys_is_open_cn_devsw_installed_cn_drvinit_cndev_sys_init___set_sysinit_set_sym_cndev_sys_initexception.o_doretialltraps_with_regs_pushedcalltrapXresume0Xresume1Xresume2Xresume3Xresume4Xresume5Xresume6Xresume7Xresume8Xresume9Xresume10Xresume11Xresume12Xresume13Xresume14Xresume15ihandlersswi_ttyswi_netdummycamisrswi_astimasksdummynetisrvecvec0vec1vec2vec3vec4vec5vec6vec7vec8vec9vec10vec11vec12vec13vec14vec15doreti_nextdoreti_unpenddoreti_exitdoreti_swiswi_ast_phantomsplz_nextsplz_unpendsplz_swiswi_net_doneswi_net_moreswi_net_nextidentcpu.o_sysctl___hw_machine___set_sysctl__hw_sym_sysctl___hw_machine_sysctl___hw_model_cpu_model___set_sysctl__hw_sym_sysctl___hw_model_i386_cpus_do_cpuid_print_AMD_info_bluetrap6_trap_by_rdmsr_bluetrap13_identblue_identifycyrix_print_AMD_associn_cksum.oinitcpu.o_init_bluelightning_init_486dlc_init_cy486dx_init_5x86_init_6x86_init_6x86MX_init_ppromachdep.o_cpu_sys_init_cpu_startup___set_sysinit_set_sym_cpu_sys_init_sysctl_hw_physmem_sysctl___hw_physmem___set_sysctl__hw_sym_sysctl___hw_physmem_sysctl_hw_usermem_sysctl___hw_usermem___set_sysctl__hw_sym_sysctl___hw_usermem_setup_netisrs_buffer_eva_buffer_sva_pager_eva_pager_sva_sysctl_machdep_adjkerntz_sysctl___machdep_adjkerntz___set_sysctl__machdep_sym_sysctl___machdep_adjkerntz_sysctl___machdep_disable_rtc_set___set_sysctl__machdep_sym_sysctl___machdep_disable_rtc_set_sysctl___machdep_bootinfo___set_sysctl__machdep_sym_sysctl___machdep_bootinfo_sysctl___machdep_wall_cmos_clock___set_sysctl__machdep_sym_sysctl___machdep_wall_cmos_clock_dblfault_tss_ldt_segs_dblfault_stack_f00f_hack_sys_init_f00f_hack___set_sysinit_set_sym_f00f_hack_sys_initmath_emulate.o_get_fs_byte_get_fs_word_get_fs_long_put_fs_byte_put_fs_word_put_fs_long_math_emulate___st_ftst_fpush_frndint_Fscale_fucom_fpop_fcom_fadd_fmul_fdiv_fxchg_put_short_real_ea_put_long_int_get_temp_real_put_temp_real_put_long_real_put_short_int_get_BCD_get_longlong_int_put_BCD_put_longlong_int_get_short_real_get_long_int_get_long_real_get_short_int___regoffset_sib_short_to_temp_long_to_temp_int_to_real_temp_to_short_temp_to_long_real_to_int_shift_mul64_shift_left_shift_right_try_sub_div64_signify_unsignify_normalize_fpu_init_fpu_sys_init___set_sysinit_set_sym_fpu_sys_initmem.o_mem_cdevsw_mmopen_mmclose_mmrw_mmioctl_mmselect_memmmap_zbuf_interrupt_allowed.142_mem_devsw_installed_mem_drvinit_memdev_sys_init___set_sysinit_set_sym_memdev_sys_initmicrotime.opentium_microtimeoverflowcommon_microtimepmap.o_pmap_initialized_get_ptbase_i386_protection_init_kernel_pmap_store_nkpt_CADDR2_CMAP2_ptmmap_msgbufmap_pgeflag_vm_first_phys_pv_table_init_pv_entries_pmap_pte_quick_pmap_page_alloc_pmap_page_lookup_pmap_allocpte_pmap_unuse_pt__pmap_unwire_pte_hold_pdstackptr_pdstack_pmap_release_free_page__pmap_allocpte_nkpg_get_pv_entry_pv_freelistcnt_pmap_alloc_pv_entry_npvvapg_pvva_pmap_remove_entry_pmap_insert_entry_pmap_remove_pte_pmap_remove_page_pmap_remove_all_protection_codes_pmap_enter_quick_pmap_prefault_pageorder_pmap_testbit_pmap_changebitprocfs_machdep.osupport.okernel_fpu_lockjtabdo0do1do2do3intreg_i586_bzeroi586_bz1i586_bz2fpureg_i586_bzero_loopi586_bz3bcopybsmall_i586_bcopyi586_bc1large_i586_bcopy_loopi586_bc2copyout_faultdone_copyoutslow_copyoutcopyin_faultslow_copyindone_copyinfastmove_tailfastmove_faultfastmove_loopfastmove_tail_faultfusufaultcpystrfltcpystrflt_xswtch.o_whichqs_whichrtqs_whichidqsset_nortset_idset_rtset2rem_nortrem_idrem1rtrem3rtrem2rtrem1idrem3idrem2idrem1rem3rem2_idleidle_loopsw1anortqridqrsw1rt3swtch_comid3badswsw0sys_machdep.otrap.o_trap_msg_trap_pfault_trap_fataluserconfig.o_next.120_getchar_userconfig_boot_parsing_devtabs_devclass_names_device_info_active_inactive_lines_spaces_setdev_getdevs_scratch_devinfo_insdev_addev_findspot_movedev_initlist_savelist_isa_devlist_nukelist_prevent_nextent_ofsent_findconflict_expandlist_collapselist_bold_inverse_normal_clear_move_putxyl_erase_txtbox_putmsg_puthelp_masterhelp_pad_drawline_drawlist_redrawactive_conflicts_alist_redrawinactive_ilist_redraw_yesnocancel_showparams_editval_editparams_helptext_helpscreen_dolist_visuserconfig_addr_parms_int_parms_dev_parms_string_arg_CmdList_helpfunc_set_device_disable_set_device_drq_set_device_enable_quitfunc_set_device_flags_introfunc_set_device_mem_set_device_iosize_set_device_irq_list_devices_set_device_ioaddr_list_scsi_cngets_parse_cmd_parse_args_strtoul_find_device_lineno_lsdevtab_save_dev_center_choices.233_search_devtable_errno_type_text_id_put_lsscsivm_machdep.o_vm_bounce_page_find_bounceallocarraysize_bounceallocarray_bouncefree_bouncepa_bpwait_vm_bounce_kva_free_kvasfreecnt_kvaf_vm_bounce_kva_bmwait_vm_bounce_page_free_bmfreeing_free_rover.268aic6360.o_aic_debug_aicprobe_aicattach_aicunit_aic_switch_aic_scsi_cmd_aic_minphys_aic_adapter_info_aic_dev_aic_info_aicinit_aic_card_intr___set_pccarddrv_set_sym_aic_info_already_aicinit.132_aicdetach_aicdata_aic_find_aic_scsi_reset_aic_init_aic6360_reset_aic_timeout_aic_done_aic_sched_aic_poll_aic_msgin_aic_msgout_aic_dataout_aic_datainclock.o_beeping_clk_imask_daysinmonth_rtc_statusa_rtc_statusb_timer_func_clkintr_timer0_state_hardclock_max_count_new_rate_new_function_old_rate.122_timer2_state_rtcintr_getit_set_timer_freq_sysbeepstop_calibrate_clocks_set_i586_ctr_freq_findcpuspeed_sysctl_machdep_i8254_freq_sysctl___machdep_i8254_freq___set_sysctl__machdep_sym_sysctl___machdep_i8254_freq_sysctl_machdep_i586_freq_sysctl___machdep_i586_freq___set_sysctl__machdep_sym_sysctl___machdep_i586_freqdiskslice_machdep.o_historical_bogus_partition_table_check_part_dsi_debug_extendedelink.o_x.100fd.o_fd_types_fifo_threshold_ye_info_yeinit_yeunload_yeintr___set_pccarddrv_set_sym_ye_info_yeattach_fd_data_fdprobe_fdattach_fd_bdevsw_Fdopen_fdclose_fdstrategy_fdioctl_fd_cdevsw_fdc_err_fd_cmd_fd_in_enable_fifo_fdc_reset_fd_sense_drive_status_fd_sense_int_fd_read_status_fdcdevs_set_motor_fd_turnoff_fd_motor_on_fd_turnon_fdstart_fd_timeout_retrier_fd_pseudointr_fdstate_fdcpio_fdformat_fd_devsw_installed_fd_drvinit_fddev_sys_init___set_sysinit_set_sym_fddev_sys_initif_ed.o_ed_info_edinit_edunload_card_intr___set_pccarddrv_set_sym_ed_info_ed_softc_ed_probe_pccard_ed_attach_pccard_ed_probe_ed_attach_isa_ed_intr_mask_ed_790_intr_mask_ed_hpp_intr_mask_ed_probe_WD80x3_ed_probe_3Com_ed_probe_Novell_ed_probe_HP_pclanp_ed_probe_generic8390_ed_get_Linksys_test_pattern.144_ed_probe_Novell_generic_ed_pio_writemem_ed_pio_readmem_ed_attach_ed_hpp_set_physical_link_ed_stop_ed_start_ed_ioctl_ed_watchdog_ed_init_ed_reset_ed_setrcr_ed_pio_write_mbufs_ed_get_packet_ed_hpp_readmem_ed_hpp_write_mbufs_ds_getmcaf_ds_crcif_ep.o_ep_current_tag_ep_conn_type_ep_isa_probe_ep_isa_attach_ep_info_ep_pccard_init_ep_unload_card_intr___set_pccarddrv_set_sym_ep_info_ep_softc_ep_pccard_attach_eeprom_rdy_ep_look_for_board_at_get_eeprom_data_ep_attached.150_epstart_epioctl_epwatchdog_epinit_ep_setmcast_padmap_epread_epstop_ep_countmcastif_fe.o_fe_filter_nothing_fe_filter_all_fe_probe_fe_attach_inblk_outblk_fe_info_feinit_feunload_fe_card_intr___set_pccarddrv_set_sym_fe_info_fe_softc_fe_stop_fe_fmv_addr_fe_ati_addr_fe_probe_list_fe_probe_fmv_fe_probe_ati_fe_probe_mbh_fe_probe_tdk_fe_simple_probe_fe_strobe_eeprom_fe_read_eeprom_baseaddr.146_irqmap.147_probe_table.148_baseaddr.151_irqmaps.152_probe_table.153_fe_init_ati_probe_table.158_fe_probe_gwy_probe_table.161_fe_init_mbh_probe_table.166_already_ifattach.169_fe_start_fe_ioctl_fe_watchdog_fe_reset_fe_init_fe_emptybuffer_fe_setmode_fe_xmit_fe_write_mbufs_fe_droppacket_fe_tint_fe_rint_fe_get_packet_fe_loadmar_fe_dump_padding.198_fe_hash_fe_mcafif_sn.o_chip_ids_snprobe_snattach_sn_info_sn_card_init_snunload_sn_card_intr___set_pccarddrv_set_sym_sn_info_sn_pccard_sn_import_macaddr_sn_pccard_macaddr_smc_probe_alredy_ifatch.136_snioctl_sn_setmcast_snresume_sn_getmcf_smc_crcisa.o_sysctl___machdep_intr_inuse_intr_inuse___set_sysctl__machdep_sym_sysctl___machdep_intr_inuse_fastintr_slowintr_conflict_haveseen_config_isadev_register_imask_config_isadev_c_dma_bounced_dma_busy_dma_inuse_dma_auto_mode_dmapageport_dma_bouncebufsize_isa_dmarangecheck_dma_bouncebuf_isa_strayintr_sysctl_machdep_checkio_sysctl___machdep_checkio___set_sysctl__machdep_sym_sysctl___machdep_checkio___set_sysctl__machdep_checkio_sym_sysctl___machdep_checkio_sysctl_machdep_checkmem_sysctl___machdep_checkmem___set_sysctl__machdep_sym_sysctl___machdep_checkmem___set_sysctl__machdep_checkmem_sym_sysctl___machdep_checkmemkbdio.o_kbdc_softc_verbose_addq_removeq_wait_while_controller_busy_wait_for_data_wait_for_kbd_data_wait_for_kbd_ack_wait_for_aux_data_wait_for_aux_acklpt.o_lptprobe_lptattach_lpt_cdevsw_lptopen_lptclose_lptwrite_lptioctl_lpt_port_test_next_bios_lpt.140_testbyte.141_lpt_sc_lpattach_lptout_pushbytes_lpintr_lpioctl_lpoutput_lpinittables_txmith_ctxmith_lpt_devsw_installed_lpt_drvinit_lptdev_sys_init___set_sysinit_set_sym_lptdev_sys_initnin.o_SyncTable_nin_switch_nin_scsi_cmd_nin_minphys_nin_adapter_info_nin_dev_TestPat_DefaultOk_pcc_nin_info_nin_crdinit_nin_unload_card_intr___set_pccarddrv_set_sym_pcc_nin_info_nin_data_nin_detach_versprobe.142_table_luExtension.165_TestLoad_TestSave_FifoTestResultnpx.o_npxprobe_npxattach_sysctl___hw_floatingpoint___set_sysctl__hw_sym_sysctl___hw_floatingpoint_npx0_imask_probeintr_npx_intrs_while_probing_probetrap_npx_traps_while_probing_npx_intrno_npx_idt_probeintr_npxprobe1_npx_exists_npx_irq13_npx_ex16pcibus.o_i386pci_pcibus_setup_pcibus_tag_pcibus_ftag_pcibus_bus_pcibus_device_pcibus_function_pcibus_read_pcibus_write_pcibus_ihandler_attach_pcibus_ihandler_detach_pcibus_imask_include_pcibus_imask_exclude___set_pcibus_set_sym_i386pci_pcibus_checkpsm.o_vendortype_enable_gmouse_enable_groller_enable_aglide_enable_mmanplus_enable_kmouse_enable_msintelli_psmprobe_psmattach_psm_cdevsw_psmopen_psmclose_psmread_psmioctl_psmselect_verbose_enable_aux_dev_disable_aux_dev_get_mouse_status_get_aux_id_set_mouse_sampling_rate_set_mouse_scaling_set_mouse_resolution_set_mouse_mode_get_mouse_buttons_valid_ids.142_is_a_mouse_models.145_model_name_recover_from_error_restore_controller_reinitialize_psm_softc_doopen_butmapps2.164_butmapmsc.165_tame_mouse_block_mouse_data_unblock_mouse_data_butmap.176_mouse_id_proc1_rate.189_res.192_rate.195_psm_devsw_installed_psm_drvinit_psmdev_sys_init___set_sysinit_set_sym_psmdev_sys_initrandom_machdep.o_random_state_random_pool_random_wait_add_timer_randomness_keyboard_timer_state_irq_timer_state_MD5Transform_extract_timer_statesio.o_error_desc_driver_name_sioprobe_sioattach_sio_cdevsw_sioopen_sioclose_sioread_siowrite_sioioctl_siostop_siodevtotty_comconsole_comdefaultrate_nsio_tty_comspeedtab_likely_com_ports_sysctl_machdep_comdefaultrate_p_com_addr_comparam_sysctl___machdep_conspeed___set_sysctl__machdep_sym_sysctl___machdep_conspeed_sio_info_sioinit_siounload_card_intr___set_pccarddrv_set_sym_sio_info_pccard_mode_siointr1_already_init.132_siocniobase_sio_tty_comstart_commctl_disc_optim_siosettimeout_comhardclose_siodtrwakeup_siobusycheck_com_events_comwakeup_sio_timeout_sio_timeouts_until_log_siocntxwait_siocngetspeed_siocnopen_siocnclosespc.o_spc_unit_spc_dev_spc_info_spc_card_init_spc_card_unload_spc_card_intr___set_pccarddrv_set_sym_spc_info_probing_pccard_already_spcinit.134_spcdata_spc_init_spc_attach_spc_probe_spcdetach_spc_scsi_cmd_spc_minphys_spc_adapter_info_spc_poll_spc_selection_spc_complete_spc_reselection_spc_command_spc_cleanup_spc_sel_sub_spc_next_phase_spc_byte_out_spc_byte_in_spc_progtx_spc_progrx_spc_free_rsns_spc_alloc_rsns_spc_done_spc_pollport_spc_dumpregsyscons.o_key_map_accent_map_fkey_tab_user_default_kernel_default_flags_sc_port_sc_kbdc_init_done_shutdown_in_progress_font_loading_in_progress_switch_in_progress_write_in_progress_blink_in_progress_blinkrate_shfts_ctls_alts_agrs_metas_accents_nlkcnt_clkcnt_slkcnt_alkcnt_n_fkey_tab_delayed_next_scr_scrn_blank_time_rows_offset_mouse_level_mouse_status_mouse_and_mask_mouse_or_mask_extra_history_size_none_saver_current_saver_nsccons_scprobe_scattach_scdevsw_scopen_scclose_scread_scwrite_scioctl_scdevtotty_scmmap_scvidprobe_sckbdprobe_vgaregs_read_vgaregs_scresume_scinit_console_cut_buffer_size_cut_buffer_sc_buffer_set_destructive_cursor_scrn_timer_update_leds_dump_vgaregs_vgaregs2_get_mode_param_scshutdown_sccons_scmousestart_scstart_scparam_alloc_scp_get_scr_stat_cur_tty.154_scgetc_get_scr_num_get_fstr_remove_mouse_image_butmap.159_swapb.160_set_mouse_pos_mouse_cut_start_mouse_cut_end_mouse_paste_mouse_cut_word_mouse_cut_line_mouse_cut_extend_scrn_time_stamp_wait_scrn_saver_stop_remove_cutmarking_clear_screen_old_scp_exchange_scr_new_scp_switch_scr_set_keyboard_do_bell_ansi_put_kernel_console_current_default_sccnupdate_stop_scrn_saver_scrn_update_draw_mouse_image_draw_cutmarking_ansi_col.201_scan_esc_mask2attr_main_console_init_scp_mode_map_comp_vgaregs_map_mode_table_save_palette_mode_map.212_map_mode_num_history_to_screen_history_up_line_history_down_line_esc_flag.229_compose.230_chr.231_xlate_leds.240_set_vgaregs_params.251_set_font_mode_set_normal_mode_last_xpos.264_last_ypos.265_mouse_cut_skip_spc_right_skip_spc_left_blink_screenwd.o_wdtest_wdprobe_wdattach_wd_bdevsw_wdopen_wdclose_wdstrategy_wdioctl_wddump_wdsize_wd_cdevsw_wdinfo_wdinit_wdunload_card_intr___set_pccarddrv_set_sym_wdinfo_static_init_lunit_in_use_ctrlr_in_use_wdprobe_pccard_wddrives_wdtab_eide_quirks_wdreset_wdcommand_wdwait_once_registered.146_old_dkunit.147_drive_queue_wdgetctlr_wdtimeout_atapictrlr_wdutab_wdustart_wdsleep_wdstrategy1_wdcontrol_wdunwedge_wderror_wdsetctlr_wdsetmulti_wddoingadump.178_wdflushirq_timeouts.189_min_retries_wd_devsw_installed_wd_drvinit_wddev_sys_init___set_sysinit_set_sym_wddev_sys_initatapi.o_atapi_probe_buf.128_cmdname_bswap_btrim_atapi_wait_atapi_alloc_atapi_free_atapi_enqueue_atapi_done_atapi_start_cmd_atapi_wait_cmd_atapi_send_cmd_atapi_io_atapi_io_errorwcd.o_wcd_bdevsw_wcdbopen_wcdbclose_wcdstrategy_wcdioctl_wcd_cdevsw_wcdropen_wcdrclose_wcd_unit_use_wcd_dump_wcd_describe_wcd_open_wcd_read_toc_wcd_request_wait_wcd_start_wcd_done_wcd_error_wcd_eject_wcd_setchan_wcd_devsw_installed_wcd_drvinit_wcddev_sys_init___set_sysinit_set_sym_wcddev_sys_initncr53c500.o_ncv_template_ncv_world_start_ncvhw_bus_reset_ncvhw_start_selection_ncvhw_attention_ncv_synch_ncvhw_reset_ncvhw_init_ncvhw_synch_ncvhw_power_ncv_pio_read_ncv_pio_writencr53c500if.o_ncv_template_ncv_info_ncv_card_init_ncv_card_unload_ncv_card_intr___set_pccarddrv_set_sym_ncv_info_ncv_ncv_card_resume_ncvdata_ncvdetachtmc18c30.o_stg_world_start_stghw_bus_reset_stghw_start_selection_stghw_attention_stg_synch_stghw_reset_stghw_init_stghw_synch_stg_pio_read_stg_pio_write_stg_xfer_stg_reselected_stghw_select_targ_waittmc18c30if.o_stg_info_stg_card_init_stg_card_unload_stg_card_intr___set_pccarddrv_set_sym_stg_info_stg_stg_card_resume_stgdata_stgdetach_stghw_probescsi_low.o_ccbque_ss_cmd_unit_ready_cmd_tw_chars_tw_pos_scsi_low_synch_scsi_low_msgin_ext_scsi_low_msgin_error_scsi_low_msg_reject_phasescsi_low_pisa.obcd.odivdi3.oinet_ntoa.o_buf.120index.omoddi3.oqdivrem.o_shl_zero.4qsort.orandom.o_randseedscanc.oskpc.ostrcat.ostrcmp.ostrcpy.ostrlen.ostrncmp.ostrncpy.oudivdi3.oumoddi3.owd82371.o_mkcookie_softc_piix_probe_piix_attach_piix_candma_piix_dmasetup_piix_dmastart_piix_dmadone_piix_status_piix_device_piix_count___set_pcidevice_set_sym_piix_deviceioconf.oparam.oconfig.overs.oswapkernel.o