Return to BSD News archive
Received: by minnie.vk1xwt.ampr.org with NNTP id AA6643 ; Mon, 11 Jan 93 19:03:53 EST Newsgroups: comp.unix.bsd Path: sserve!manuel.anu.edu.au!dubhe.anu.edu.au!csis!munnari.oz.au!spool.mu.edu!caen!hellgate.utah.edu!fcom.cc.utah.edu!cs.weber.edu!terry From: terry@cs.weber.edu (A Wizard of Earth C) Subject: Re: 386BSD install problem -- can't mount / Message-ID: <1993Jan13.042201.28353@fcom.cc.utah.edu> Sender: news@fcom.cc.utah.edu Organization: Weber State University (Ogden, UT) References: <1993Jan11.022758.10164@cs.wright.edu> <1993Jan11.224035.2823@fcom.cc.utah.edu> <1993Jan12.005906.13693@Princeton.EDU> Date: Wed, 13 Jan 93 04:22:01 GMT Lines: 762 In article <1993Jan12.005906.13693@Princeton.EDU> bkc@ernie.Princeton.EDU (Bruce Caruthers) writes: >In article <1993Jan11.224035.2823@fcom.cc.utah.edu> terry@cs.weber.edu (A Wizard of Earth C) writes: >> >>386BSD asks the controller about the drive geometry instead of believing >>the CMOS settings. If your CMOS settings don't match what the controller >>says, you have "translated drive" problems. > >Is there any way to tell 386BSD what the drive is set for? The settings >for my drive are significantly different (manually configured long ago) >from what Seagate reports when you call their number. It does, however, >still fit a "type" listed in the BIOS (42, if I remember correctly). I >am fairly certain that the current settings are *not* what the IDE >controller reports. If I were to change the settings, it would require a >lot of work re-doing the DOS partition and such. > >Thanks for any help (at least I know what is probably the problem, now, and can >change it if I get desperate enough), OK... I am going to put ide_conf.exe on ref.tfs.com; in the meanwhile, for those of you who can't wait, I am reposting the original article by Frank Maclachlan (Message-ID: <1992Oct18.153007.28120@crash>) > Given the numerous inquiries about untranslated geometry on various > IDE hard drives, I wrote a quickie program which can be used under > MSDOS to report the "default" drive geometry. The command used to > query the drive (identify drive, 0xec) is the same command used by > the 386BSD 0.1 wd.c driver. > > The program does the following: > > 1. Reports the drive configuration as reported by the system ROM BIOS. > 2. Queries the drive for its configuration and prints the geometry > given by the configuration. > 3. Resets the drive/controller and delays approximately 1 second. > 4. Again queries the drive for its configuration and prints the > geometry given by the configuration. > 5. Asks user to reboot system since translation may have changed. > > Steps 3 and 4 were added because I wanted to know if the identify > drive command would return the sames values after the controller/drive > was reset. I tested the program on a Fujitsu M2612ET IDE drive (90 mb, > 1334 cyls, 4 hds, 33 sec/trk) and found that the "default" geometry > was 667 cyls, 8 hds, 33 sec/trk. Note that some (albeit simple) trans- > lation occurs on this drive in the "default" state; this was no doubt > done to avoid exceeding the 1024 cylinder limit imposed by the system > BIOS. Also, the "default" geometry didn't change after a reset (it > really shouldn't); the drive's translation mode, however, did change > after a reset (see below). > > I noticed some other things while playing with the Fujitsu drive. > The drive is installed in a system w/ an old Mylex 386/20 MB. > The AMI BIOS does not support a type 47 user configurable drive > type, so I chose a drive type having 1024 cyls, 9 hds, 17 sec/trk. > I didn't really believe that the translation was performed in > software (most IDE interface boards don't have an on-board ROM), > so I wrote a program which scanned the disk by talking directly > to the controller registers. The drive looked like it had 9 heads, > 17 secs/trk and 1150 cyls. The drive's notion of its geometry > (translation) is determined by the 'Initialize Drive Parameters' > command (0x91). This command sets the number of sectors from the > sector count register and the number of heads from the head > address field in the SDH register. The drive then computes how > many translated cylinders it can support with the specified head > and sector count (that's why I could read 1150 cyls even though the > BIOS configuration indicated 1024 cyls). The translation was cleared > after a controller/drive reset; the drive then behaved as though it > had 667 cyls, 8 hds, 33 secs/trk. > > Also, data transfers from this drive averaged about 300 kb/sec when > the drive was set up in translated mode and about 660 kb/sec when > set up in its "default" mode. This was probably partially caused > by the use of 17 secs/trk rather than the native 33 secs/trk; the > 80C31 microprocessor has to work harder to translate addresses. > > For those IDE drive users with a modern BIOS supporting user configurable > drive types (type 47 on an AMI BIOS), I suggest configuring the drive > or drives to the default geometry given by step 4 above. This results > in the geometry remaining constant throughout the 386BSD's handling of > an IDE drive and possibly better performance. > > I am enclosing the program (a .c file and a .h file) and an .exe file > (for those of you who don't have an MSDOS C compiler) in a shell archive. > > Hope this helps! > #!/bin/sh # shar: Shell Archiver (v1.22) # # Run the following text with /bin/sh to create: # ide_conf.c # wddefs.h # ide_conf.exe # sed 's/^X//' << 'SHAR_EOF' > ide_conf.c && X/*------------------------------------------------------+ X| | X| Name: | X| ide_conf | X| | X| Usage: | X| ide_conf [drive number] | X| | X| Description: | X| Displays IDE drive configuration under MSDOS. | X| Optional drive parameter selects drive for query. | X| Legal values are 0..3 where 0 and 1 are drives 0 | X| and 1 attached to a primary controller while 2 and | X| 3 are drives 0 and 1 attached to a controller at | X| the alternate controller address (0x170 - has not | X| been tested). If omitted, drive 0 is checked. | X| | X| Author: | X| Frank P. MacLachlan | X| | X| Date: | X| 18-Oct-92 | X| | X| Compilation using MSC 6.0: | X| cl ide_conf.c | X| | X+------------------------------------------------------*/ X X#include <stdio.h> X#include <sys/types.h> X#include "wddefs.h" X X#define TPS 18 /* ticks/second (really 18.2) */ X Xtypedef unsigned long ulong; Xtypedef unsigned int uint; Xtypedef unsigned short ushort; Xtypedef unsigned char uchar; X X/* X** The following structure corresponds to the ROM BIOS X** disk parameter table: X*/ X#pragma pack(1) Xtypedef struct parms { X uint ncyls; X uchar nheads; X uint res0; X uint wpc; X uchar ebl; X uchar ctlb; X uchar res1[3]; X uint lzc; X uchar nsecs; X uchar res2; X} BIOS_PARMS; X#pragma pack() X X/* X** The following structure corresponds to the values as returned X** by the ESDI/IDE identify drive command. X*/ Xtypedef struct { X ushort gcfg; /* general configuration */ X ushort fcyl; /* number of fixed cyls */ X ushort rcyl; /* number of removable cyls */ X ushort hds; /* number of heads */ X ushort bpt; /* bytes/track */ X ushort bps; /* bytes/sector */ X ushort spt; /* sectors/track */ X ushort isg; /* inter-sector gap */ X ushort plo; /* PLO sync field */ X ushort vsw; /* vendor status word */ X} ID_PARMS; X X/* X** Used to manipulate identify drive data. X*/ Xunion { X ID_PARMS id_parms; X unsigned short id_data[256]; X} id_buf; X X/* pointer to low word of system time value at 0040:006c */ Xushort far *TimePtr = (ushort far *)0x0040006cL; X Xint drive = 0; /* drive number */ Xint wd_base = WDP_BASE0; /* base I/O port addr of HDC */ Xchar *my_name; X Xvoid reboot(void); Xvoid chk_drv(void); Xvoid dsp_bios_cfg(void); Xvoid dsp_hw_cfg(void); Xvoid reset_hdc(void); Xvoid delay(int); Xvoid sel_drv(uint, uint); Xvoid bsy_chk(void); Xvoid usage(void); Xvoid io_delay(void); Xvoid test_hdc(uint, uint, uint); X X X/*----------------------------------------------- X | X | Main program X | X +----------------------------------------------*/ Xmain(argc, argv) Xint argc; Xchar *argv[]; X{ X my_name = argv[0]; X if (argc > 1) { X if ( sscanf(argv[1], "%d", &drive) < 1 X || drive < 0 X || drive > 3) X usage(); X if (drive > 1) { X drive &= 1; X wd_base = WDP_BASE1; X } X } X chk_drv(); /* make sure controller, drive present */ X dsp_bios_cfg(); /* display BIOS drive config */ X dsp_hw_cfg(); /* display H/W drive config */ X reset_hdc(); /* reset the controller */ X dsp_hw_cfg(); /* display H/W drive config */ X reboot(); /* ask user to reboot system */ X} X X/*----------------------------------------------- X | X | Ask user to reboot system. X | X +----------------------------------------------*/ Xvoid reboot() X{ X fprintf(stderr, "Please reboot system!\n"); X while (1) X ; X} X X/*----------------------------------------------- X | X | Check if controller, drive present. X | X +----------------------------------------------*/ Xvoid chk_drv() X{ X#define MASK (WDM_BSY|WDM_RDY|WDM_WTF|WDM_SKC) X#define EXP (WDM_RDY|WDM_SKC) X X test_hdc(wd_base+WDP_CL, 0x55, 0xff); X test_hdc(wd_base+WDP_CL, 0xaa, 0xff); X test_hdc(wd_base+WDP_CH, 0x55, 0x01); X test_hdc(wd_base+WDP_CH, 0xaa, 0x01); X sel_drv(drive, 0); X if ((inp(wd_base+WDP_CSR) & MASK) != EXP) { X fprintf(stderr, "Drive missing or status hosed\n"); X exit(2); X } X} X X/*----------------------------------------------- X | X | Display BIOS configuration info for this drive. X | X +----------------------------------------------*/ Xvoid dsp_bios_cfg() X{ X /* X * Array of pointers to HD parameter table entries indexed X * by drive number X */ X static BIOS_PARMS far * far *dskptr[2] = { X (BIOS_PARMS far * far *)(4*0x41L), X (BIOS_PARMS far * far *)(4*0x46L) X }; X BIOS_PARMS far *bpp = *dskptr[drive]; X X printf("BIOS reports drive has %u cyls, %u hds, %u secs/trk\n\n", X bpp->ncyls, bpp->nheads, bpp->nsecs); X} X X X/*----------------------------------------------- X | X | Ask the drive to identify itself. X | X +----------------------------------------------*/ Xvoid dsp_hw_cfg() X{ X int n; X X /* select drive */ X sel_drv(drive, 0); X X /* Issue Get Drive Parameters cmd */ X outp(wd_base+WDP_CSR, WDC_GDP); X X /* Wait for Busy status to be asserted */ X for (n = 1000; n > 0 && (inp(wd_base+WDP_CSR) & WDM_BSY) == 0; n--) X ; X X /* Now wait for Busy status to be negated */ X bsy_chk(); X X /* Print error msg and bail out if error */ X if ((n = inp(wd_base+WDP_CSR)) & WDM_HER) { X fprintf(stderr, X "Identify drive cmd failed: csr=0x%02x, err=0x%02x\n", X n, inp(wd_base+WDP_ERR) ); X reboot(); X } X X /* Wait for Data request to be asserted */ X while ((inp(wd_base+WDP_CSR) & WDM_DRQ) == 0) X ; X X /* Input parameter info from controller */ X for (n = 0; n < sizeof(id_buf.id_data)/sizeof(id_buf.id_data[0]); n++) X id_buf.id_data[n] = inpw(wd_base+WDP_DAT); X X /* Print parameter info */ X printf("Controller reports drive has %u cyls, %u hds, %u secs/trk\n\n", X id_buf.id_parms.fcyl, id_buf.id_parms.hds, id_buf.id_parms.spt); X} X X/*----------------------------------------------- X | X | Reset hard disk controller (or drive if IDE). X | X +----------------------------------------------*/ Xvoid reset_hdc() X{ X printf("Resetting controller/drive\n\n"); X outp(wd_base+WDP_DCR, WDM_RSTGO); X delay(2); X outp(wd_base+WDP_DCR, WDM_RSTNO|WDM_HS3); X delay(1*TPS); X} X X/*----------------------------------------------- X | X | Delay n system timer ticks. 18.2 ticks = 1 sec. X | X +----------------------------------------------*/ Xvoid delay(n) Xint n; X{ X int cur_lsb = *TimePtr & 1; X X while (n-- > 0) { X while ((*TimePtr & 1) == cur_lsb) X ; X cur_lsb = 1 - cur_lsb; X } X} X X/*----------------------------------------------- X | X | Select drive. X | X +----------------------------------------------*/ Xvoid sel_drv(drv, head) Xuint drv, head; X{ X outp(wd_base+WDP_SDH, WDM_ECC|WDM_512|(drv<<4)|head); X bsy_chk(); X} X X/*----------------------------------------------- X | X | Wait for Busy status to be reset. X | X +----------------------------------------------*/ Xvoid bsy_chk() X{ X while (inp(wd_base+WDP_CSR) & WDM_BSY) X ; X} X X/*----------------------------------------------- X | X | Display usage message, abort. X | X +----------------------------------------------*/ Xvoid usage() X{ X static char msg[] = X "Usage: %s [drive]\n" X "Drive may be 0..3 (2,3 => drives on alternate controller)\n" X "Default is 0\n"; X X fprintf(stderr, msg, my_name); X exit(2); X} X X/*----------------------------------------------- X | X | Delay a bit between back to back I/O operations. X | The delay results from the call/return overhead. X | X +----------------------------------------------*/ Xvoid io_delay() X{ X} X X/*----------------------------------------------- X | X | Check if hard disk controller is present and X | probably register compatible with the standard X | AT controller. Abort if not. X | X +----------------------------------------------*/ Xvoid test_hdc(reg, pat, msk) Xuint reg; Xuint pat; Xuint msk; X{ X outp(reg, pat); X io_delay(); X io_delay(); X io_delay(); X io_delay(); X io_delay(); X io_delay(); X if ((inp(reg)&msk) != (pat&msk)) { X fprintf(stderr, X "Non-compatible or missing Hard Disk Controller!\n"); X exit(2); X } X} SHAR_EOF chmod 0644 ide_conf.c || echo "restore of ide_conf.c fails" sed 's/^X//' << 'SHAR_EOF' > wddefs.h && X/*------------------------------------------------------+ X | Definitions for WD100x hard disk controllers | X +------------------------------------------------------*/ X X/* X** Port definitions: X*/ X#define WDP_BASE0 0x1f0 /* base address of primary controller */ X#define WDP_BASE1 0x170 /* base address of alternate controller */ X#define WDP_DAT 0 /* offset to data reg (R/W) */ X#define WDP_ERR 1 /* offset to error reg (R) */ X#define WDP_WPC 1 /* offset to write precompensation reg (W) */ X#define WDP_SC 2 /* offset to sector count reg (R/W) */ X#define WDP_SEC 3 /* offset to sector address reg (R/W) */ X#define WDP_CL 4 /* offset to cyl addr reg - low byte (R/W) */ X#define WDP_CH 5 /* offset to cyl addr reg - high byte (R/W) */ X#define WDP_SDH 6 /* offset to size/drive/head reg (R/W) */ X#define WDP_CSR 7 /* offset to control/status reg (R/W) */ X#define WDP_ASR 0x206 /* offset to alternate status reg (R) */ X#define WDP_DCR 0x206 /* offset to device control reg (W) */ X#define WDP_DAR 0x207 /* offset to device addr reg (R) */ X X/* X** Controller command definitions: X*/ X#define WDC_HOM 0x10 /* restore drv to trk 0 */ X#define WDC_SEK 0x70 /* seek */ X#define WDC_RD 0x20 /* read sectors */ X#define WDC_WRT 0x30 /* write sectors */ X#define WDC_RVS 0x40 /* read verify sectors */ X#define WDC_FMT 0x50 /* format track */ X#define WDC_TST 0x90 /* perform self test */ X#define WDC_IDP 0x91 /* init drive parms */ X#define WDC_GDP 0xec /* get drive parameters */ X#define WDC_SDP 0x91 /* set drive parameters */ X X/* X** SDH register mask definitions: X*/ X#define WDM_ECC 0x80 /* enable ECC */ X#define WDM_128 0x60 /* 128 bytes/sector */ X#define WDM_256 0x00 /* 256 bytes/sector */ X#define WDM_512 0x20 /* 512 bytes/sector */ X#define WDM_1024 0x40 /* 1024 bytes/sector */ X X/* X** Command/status register mask definitions: X*/ X#define WDM_HER 0x01 /* hard error (R) */ X#define WDM_IDX 0x02 /* index pulse status from drive (R) */ X#define WDM_CER 0x04 /* corrected error (R) */ X#define WDM_DRQ 0x08 /* data request (R) */ X#define WDM_SKC 0x10 /* seek complete (R) */ X#define WDM_WTF 0x20 /* write fault (R) */ X#define WDM_RDY 0x40 /* ready (R) */ X#define WDM_BSY 0x80 /* busy (R) */ X#define WDM_DRT 0x01 /* disable retries (W) */ X X/* X** Error register mask definitions: X*/ X#define WDM_DAE 0x01 /* data address mark not found */ X#define WDM_T0E 0x02 /* track 0 error */ X#define WDM_CAE 0x04 /* aborted command */ X#define WDM_NIE 0x10 /* ID not found */ X#define WDM_ICE 0x20 /* CRC error - ID field */ X#define WDM_DCE 0x40 /* CRC error - data field */ X#define WDM_BBE 0x80 /* bad block detected */ X X#define WDM_HS3 0x08 /* use reduced write current line for HS3 */ X#define WDM_RSTGO 0x04 /* start controller reset */ X#define WDM_RSTNO 0x00 /* end controller reset */ X#define WDM_IEN 0x02 /* interrupt enable */ X SHAR_EOF chmod 0644 wddefs.h || echo "restore of wddefs.h fails" sed 's/^X//' << 'SHAR_EOF' > s2_temp_.tmp && Xbegin 600 ide_conf.exe XM35K!`10`!0`@`,(`__^>`@`(^\MB`P``'@````$`#@!,`G`#``!)!`````#X XM`?\!_0$````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM````````````````````````````````````````````58OL,\#H^`6+7@:+ XM!Z-`"(-^!`%^.+A*`%"Y0@!1_W<"Z#X>B^4]`0!\#H,^2@``?`>#/DH``WX# XMZ)P"@SY*``%^"X,F2@`!QP9,`'`!Z"D`Z+X`Z/4`Z+P!Z.\`Z`0`B^5=PS/` XMZ)<%N$X`4+AX`E#HK`B#Q`3K_I`SP.B!!;C_`%"Y50!1BQ9,`(/"!%+H;@*# XMQ`:X_P!0N*H`4(L.3`"#P011Z%@"@\0&N`$`4+E5`%&+#DP`@\$%4>A"`H/$ XM!K@!`%"XJ@!0H4P`!04`4.@M`H/$!BO`4/\V2@#HN`&#Q`2A3``%!P!0Z*\= XM@\0")?``/5``=!BX90!0N'@"4.@="(/$!+@"`%#H_0.#Q`+#D%6+[+@$`.CE XM!(L>2@#1X]'CQ)^Z`":+!R:+5P*.PHO8)HI/#BKM42:*3P)1)O\WN(0`4.@. XM"(OE7<-5B^RX`@#HJP0KP%#_-DH`Z#D!@\0$N.P`4*%,``4'`%#H.AV#Q`3' XM1O[H`^L#_T[^@W[^`'X1H4P`!0<`4.@/'8/$`JB`=.;H*0&A3``%!P!0Z/L< XM@\0"B4;^J`%T(*%,`$!0Z.D<@\0"4/]V_KC"`%"X>`)0Z%L'@\0(Z)G^H4P` XM!0<`4.C''(/$`J@(=._'1OX``/\V3`#H_AR#Q`*+7O[1XXF'0`;_1OZ!?OX` XM`7+C_S9,!O\V1@;_-D(&N/4`4.A%!XOE7<.0,\#HY0.X,0%0Z#0'@\0"N`0` XM4*%,``4&`E#H=QR#Q`2X`@!0Z!\`@\0"N`@`4*%,``4&`E#H7!R#Q`2X$@!0 XMZ`0`@\0"PU6+[+@$`.B;`\0>1@`FB@<E`0#K%I#$'D8`)HH')0$`.T;^=/&X XM`0`K1OZ)1OZ+1@3_3@0+P'_>B^5=PU6+[#/`Z&`#L02+1@0,"M/@"T8&4*%, XM``4&`%#H\QN+Y>@$`(OE7<,SP.@[`Z%,``4'`%#HS1N#Q`*H@'7OPY`SP.@C XM`_\V0`BX3@%0N'@"4.@T!H/$!K@"`%#H%`*#Q`+#,\#H`0/#58OL,\#H^`+_ XM=@;_=@3HF1N+Y>CD_^CA_^C>_^C;_^C8_^C5__]V!.AQ&XOE(T8(BTX((TX& XM.\%T%+BH`5"X>`)0Z-L%B^6X`@!0Z+P!B^5=P[0PS2$\`G,%,\`&4,N_^0&+ XM-@(`*_>!_@`0<@.^`!#ZCM>!Q$X*^W,0%A_H6@(SP%#HZP2X_TS-(8O&L033 XMX$@VH]X!N^`!-HP7@^3^-HEG!+C^_U`VB6<*]]!0-HEG!C:)9P@VB2;:`0/W XMB38"`(S#*][WV[1*S2$VC!X:`A8'_+\R!KE0"BO/,\#SJA8?BPXP!>,"_]'H XMW`/H2P(S[>A(`!8?_S8[`O\V.0+_-C<"Z/O[4.@!`<,NH4D$CMBX`P`VQP;< XM`1H%4.B\`>A0!#:!/C(%UM9U!UA0-O\6-@6X_P!0_Q;<`?D!`+@`-<TAB1X& XM`HP&"`(.'[@`);H:!,TA%A^#/D(%`'0VC`Y$!8P.3`6.!AH")HLV+`#%!D8% XMC-HSVS;_'D(%<P46'^EY`3;%!DH%C-J[`P`V_QY"!18?C@8:`B:+#BP`XSZ. XMP3/_)H`]`'0TN0T`OO@!\Z9T"[G_?S/`\JYU(>OE!AX''XOWOR,"L02L+$%R XM#=+@DJPL07(%"L*JZ^X6'[L$`("G(P*_N`!$S2%R"O;"@'0%@(\C`D!+>>>^ XM3@6_3@7HQP"^3@6_3@7HKP##58OL,\GK&E6+[+D!`.L258OL5E>Y``'K"%6+ XM[%97N0$!40K)=1Z^.@:_.@;H?P"^3@6_4`7H=@"!/C(%UM9U!/\6.`6^4`6_ XM4`7H80"^4`6_4`7H9P#HM0`+P'016`KD4'4+@WX$`'4%QT8$_P#H$`!8"N1U XM!XM&!+1,S2%?7EW#BPY$!>,'NP(`_QY"!1[%%@8"N``ES2$?@#Y$`@!T#1Z@ XM10+%%D8"M"7-(1_#._=S"D]/BPWC]O_1Z_+#._=S#H/O!(L%"T4"=/+_'>ON XMPU6+[+C\`%#HC0*#/DH"`'0$_Q9*`KC_`%#H>P*+Y5W#N`(`Z1K^68O<*]AR XM"CL>3@)R!(OC_^%1,\#I`_X`5C/VN4(`,N3\K#+@XON`]%5T#>BL_[@!`%#H XM/`*X`0!>PX\&4`*T,,TAHQP"N@$`/`)T*8X&&@(FC@8L`(P&/P(SP)FY`(`S XM__*NKG7[1T>)/CT"N?__\J[WT8O1OP$`OH$`CAX:`JP\('3[/`ET]SP-=&\* XMP'1K1TZL/"!TZ#P)=.0\#71<"L!T6#PB="0\7'0#0NOD,\E!K#Q<=/H\(G0$ XM`]'KTXO!T>D3T:@!=<KK`4ZL/`UT*PK`="<\(G2Z/%QT`T+K[#/)0:P\7'3Z XM/")T!`/1Z]N+P='I$]&H`772ZY<6'XD^-P(#UT?1YP/70H#B_BOBB\2C.0*+ XMV`/[%@<VB3]#0\4V/0*LJ@K`=?HVCAX:`KZ!`.L#,\"JK#P@=/L\"73W/`UT XM?`K`='@VB3]#0TZL/"!TX3P)=-T\#71B"L!T7CPB="<\7'0#JNOD,\E!K#Q< XM=/H\(G0&L%SSJNO1L%S1Z?.J<P:P(JKKQ4ZL/`UT+@K`="H\(G2W/%QT`ZKK XM[#/)0:P\7'3Z/")T!K!<\ZKKV;!<T>GSJG.6L"*JZ\TSP*H6'\<'``#_)E`" XM58OL'HX&&@(FBQXL`([#,\`S]C/_N?__"]MT#B:`/@```'0&\JY&KG7ZB\=` XM)/Y&B_[1YKD)`.BD`%"+QNB>`*,[`@8>!Q^+SXO8,_9?2>,FBP0V.P;X`740 XM4597O_@!N08`\Z=?7EET!2:)/T-#K*H*P'7ZXMHFB0\?7<,`58OL5E<>!XM6 XM!+Y8!:T[PG000)9T#)<SP+G___*NB_?KZY9?7HOE7<("`%6+[%?_=@3HR_\+ XMP'0@DHOZ,\"Y___RKO?12;L"`($^,@76UG4$_Q8T!;1`S2%?B^5=P@(`4P91 XMN0`$APX:!%%0Z,D36X\&&@19C-H+P'0#!UO#B\'I4?L`<A4SP(OE7<-S^%#H XM&@!8,N2+Y5W#<P?H#@"X__^9B^5=PS+DZ`$`PZ(?`@KD=2*`/AP"`W(,/")S XM##P@<@2P!>L&/!-V`K`3NU("UYBC%`+#BL3K]P!5B^R#[`175HMV!%;H&0*# XMQ`*+^(U&"%#_=@96Z%4+@\0&B4;\5E?H;P*#Q`2+1OQ>7XOE7<-5B^R#[`17 XM5KYP`E;HXP&#Q`*+^(U&!E#_=@2X<`)0Z!P+@\0&B4;\N'`"4%?H,P*#Q`2+ XM1OQ>7XOE7<-5B^Q65XMV!(I$!JB#=%BH0'54J`)U00P!B$0&B_Z![V@"@<<( XM`Z@,=0KV!0%U!5;H00%8BT0$B03_=0)0,]N*7`=3Z&P0@\0&"\!T$3W__W4: XM@$P&(.L*@$P&(.L)@$P&$,=$`@``N/__ZR2*OR,"@.>"@/^"=0N*?`;VQX)U XM`X`-($B)1`*+'#/`B@=#B1Q?7EW#58OL5E>+=@:*1`:H@G1HJ$!U9,=$`@`` XMJ`%T"Z@0=%>+3`2)#"3^#`(D[XA$!HO^@>]H`H''"`,SVXI<!Z@(=4RH!'4> XM]@4!=4.!_G`"=`R!_G@"=`:!_H@"=23VAR,"0'0=N0$`48U^!%=3Z)D0@\0& XMN0$`ZSZX__^`3`8@ZUQ35NA;`%M;]D0&"'36BPR+5`0KRD*)%(M5`DJ)5`+C XM(%%1_W0$4^A?$(/$!EF+?`2+5@2(%3O!=;XSP(I&!.L<,\#VAR,"('3DN0(` XM45!04^C1#H/$"#/`B\CKT5]>7<-5B^Q6BW8$N``"4.AJ$5F+WH'K:`*!PP@# XM"\!T"X!,!@C'1P(``NL,@$P&!,='`@$`C4<!B02)1`3'1`(``%Y=PP!5B^Q6 XM5XMV!+NJ`X'^<`)T$KNL`X'^>`)T";NN`X'^B`)U2(O^@>]H`H''"`/V1`8, XM=3CV!0%U,XL'"\!T&XE$!(D$QT0"``+'10(``H!,!@+&!1&X`0#K%%.X``)0 XMZ-406UL+P'0$B0?KTS/`7UY=PU6+[%97BW8&B_Z![V@"@<<(`_8%$'0C,]N* XM7`?VAR,"0'075N@8`%B#?@0`=`PSP(@%B44"B02)1`1?7EW#`%6+[(/L`E=6 XM*_\Y?@1U"2O`4.AE`.M5D(MV!(I$!HO()`,\`G4Z]L$(=0V+WH'K:`+VAP@# XM`70HBP0K1`2)1OX+P'X<4/]T!(I,!RKM4>CE#H/$!CE&_G0'@$P&(+___XM$ XM!(D$QT0"``"+QUY?B^5=P[@!`%#H`0##58OL@^P"5U:^:`(K_XE^_NL(QT;^ XM__^#Q@@Y-J@#<A3V1`:#=/%6Z%S_@\0"0'3B1^ODD(-^!`%U!(O'ZP.+1OY> XM7XOE7<("`)!5B^RXK@'H._E75L9&N@`KP(E&ZHE&R(M>!H`_`'4#Z08'BA\J XM__:'+P0(="7_3NJ-1NI0_W8$Z&P'4/]V!.A-!_]&!HM>!HH?*O_VAR\$"'7O XMBUX&@#\E=`/IIP;&1L(`*L"(1L"(1KB(1O2(1OB(1O"(AE3^*\")1NR)1KR) XM1OZ)1L:)1L3K8Y#_1@:+7@:*!RKDB_CVA2\$!'0;_T:\BT;^B\C1X-'@`\'1 XMX`/'+3``B4;^ZS60/6P`=!AW*3Q,=`]_&RPJ=!$L''4;_D;`ZQK^1OC^1OCK XM$OY&\.L-D"Q.=`@L&G0$_H94_H"^5/X`=)>`?O``=2J`?L``=!6+7@B#1@@$ XMBP>+5P*)1OJ)5OSK$)"+7@B#1@@"BP>)1OJ,7OS&AE3^`(M>!HH'#"`JY(OX XM@_]N="&#_V-T$8/_>W0,C4;J4/]V!.A:!NL)_T;J_W8$Z`T&B_"#?KP`=`F# XM?OX`=0/I*06+Q^E-!9"#?KP`=0;_1KS_1O['1KZV`^L=D,=&OK`#ZQ60_T8& XMBUX&B5Z^@#]>=0F-1P&)1K[^3KBX(`!0*\!0C4;*4.A-$(/$!H/_>W0#Z:P` XMBUZ^@#]==`/IH0#&1L)=_T:^QD;5(.F3`)"*!XA&]O]&OCPM=0Z`?L(`=`B+ XM7KZ`/UUU(HI>]HA>PK`!BLN`X0>+T8K*TN"Q`]+K*O^-3LH#V0@'ZU;_1KZ* XM!XA&]CI&PG8%B$;RZPR*1L*(1O**1O:(1L**1L*(1O;K((I>]K`!BLN`X0>+ XMT8K*TN"Q`]+K*O^-3LH#V0@'_D;VBD;RF(I.]BKM.\%]TXANPHM>OH`_770# XMZ6/_@#\`=0/IKP2#_WMU!8O#B48&BT;ZBU;\B896_HF66/Z#?KP`=`J+1O[_ XM3OX+P'1+@_[_=$:+WK$#T_N-1LH#V(H',D:XF+H!`(O.B]F`X0?3XH7"="6` XM?O``=0V+QL1>^O]&^B:(!^L$_X96_O]&ZO]V!.A]!(OPZZ:0_T[J5O]V!.B8 XM!(M&^HM6_#F&5OYU"3F66/YU`^D=!(!^\`!T`^GH`_]&R(/_8W4#Z=T#CL*+ XMV";&!P#IT@._9`"#_BUU!OY&].L&D(/^*W4<_T[^=0R#?KP`=`;^AE3^ZPO_ XM1NK_=@3H#02+\(/^,'0#Z3T!_T;J_W8$Z/H#B_`\>'0$/%AU$O]&ZO]V!.CG XM`XOPOW@`Z1D!D/]&[(/_>'0&OV\`Z0H!_T[J5O]V!.CP`[XP`.GZ`(!^^`!T XM`[]&`(/^+74&_D;TZPF0@_XK=`/IW@#_3OYT`^F1`(-^O`!U`^F(`/Z&5/[I XMQ@"#_WAT"H/_<'0%@_]&=7_VA"\$@'04L`10C4;$4.B:#E;H2@.+\.LWD)"# XM_T9U+(-^[`!T)H/^.G4<BT;$B4;N*\")1L:)1L3'1NS__[]P`+XP`.L*D,=& XM[```_H94_H"^5/X`=5;_1NR-1-"9`4;$$5;&@WZ\`'0(_T[^=0/I>/__1NK_ XM=@3H`@.+\.LX]H0O!`1TQH/_;W42@_XX?;RP`U"-1L10Z!$.Z[20N`H`F5)0 XMC4;$4.CA#>NDD/].ZE;_=@3H\`*`OE3^`'4#Z3#_@_]P=0^`?O@`=`F+1NZ+ XM3L2)1L:`?O0`=`KW7L2#5L8`]U[&@_]&=07'1NP``(-^[`!U`^E)`H!^\`!T XM`^D4`O]&R(!^^`!T$XM&Q(M6QL1>^B:)!R:)5P+I^`&+1L3$7OHFB0?I[`&+ XM1NJ9B4;$B5;&Z\^-AEK^B4:^@_XM=0[&AEK^+8V&6_Z)1K[K!8/^*W4._T[^ XM_T;J_W8$Z!T"B_"#?KP`=`>!?OY=`7XJQT;^70'K(Y"+1O[_3OX+P'0?_T;L XMB\:+7K[_1KZ(!_]&ZO]V!.CF`8OP]H0O!`1UUX/^+G4_BT;^_T[^"\!T-8M> XMOO]&OL8'+NL8D(M&_O]._@O`=!__1NR+QHM>OO]&OH@'_T;J_W8$Z*(!B_#V XMA"\$!'77@W[L`'1VB\8\970$/$5U;(M&_O]._@O`=&*+7K[_1K[&!V7_1NK_ XM=@3H;0&+\(/^+74,BUZ^_T:^Q@<MZP:0@_XK=3&+1O[_3OX+P'4<_T;^ZR*+ XM1O[_3OX+P'0?_T;LB\:+7K[_1KZ(!_]&ZO]V!.@F`8OP]H0O!`1UU_].ZE;_ XM=@3H/0&#?NP`=0/IS@"`?O``=`/IF0#_1LB+7K[&!P"-AEK^4/]V_/]V^HI& XM^)A0_Q8@!(/$".MWD(M>!HH'*N0[QG0-_T[J5O]V!.CS`.F*`/Y.NH!^\`!U XM58!^P`!T!X-N"`3K29"#;@@"ZT(M8P`]&`!WQ-'@DR[_IY83.@YY$.@1Z!'H XM$5(3]@]2$U(34A-2$]P1>1!P$%(34A-.#E(3>1!2$U(3^0]2$U(35@[^1KK_ XM1@;K'/]&ZO]V!.A7`(OPBUX&_T8&B@<JY#OP=`/I<?^#_O]T`^GO^(/^_W4, XM@W[(`'4&@'ZZ`'0%BT;(ZP*+QEY?B^5=PU6+[(M>!/:'+P0$=`6+P^L(D(O# XM)-\M!P!=P@(`D%6+[(/L`E:+=@3_3`)X#8L$_P2+V(H'*N3K")!6Z%+U@\0" XM7HOE7<("`%6+[(-^!O]T"?]V!/]V!N@.!8OE7<($`%6+[%=6BW8&_P3_=@3H XMKO^+^/:%+P0(=>]>7XOE7<($`)#Z%`45&15-%7D5@16J%=P558OLN'$!Z&/Q XM5E<SP(E&^(A&^XMV!JR)=@:(1OX*P'0&@W[X`'T&BT;XZ:($N[@#+"`\6'<% XMUR0/ZP*P`+$#TN`"1OO7_L'2Z(A&^YB+V-'C+O^GE!2*5OZY`0#H(P3KLC/` XMB4;PB4;VB4;NB4;\2(E&].N>BD;^/"UU!H!._`3KD3PK=0:`3OP!ZX<\('4' XM@$[\`NE\_SPC=0>`3OR`Z7'_@$[\".EJ_XI._H#Y*G4/Z%8#"\!Y%_?8@$[\ XM!.L/@.DP,NV+1O:["@#WXP/!B4;VZ3[_QT;T``#I-O^*3OZ`^2IU#.@B`PO` XM>12X___K#X#I,#+MBT;TNPH`]^,#P8E&].D-_XI&_CQL=0:`3OP0ZR(\1G4& XM@$[\(.L8/$YU!H!._1#K#CQ,=0:`3OT$ZP2`3OT(Z=O^BD;^/&1U`^F.`3QI XM=0/IAP$\=74#Z80!/%AU`^F#`3QX=0/I@@$\;W4#Z9P!/&-T&CQS="<\;G11 XM/'!T8#Q%=`<\1W0#Z;L`Z;4`Z(0"C;Z/_A8'JD^Y`0#IZP'HAP(+_W42C,`+ XMP'4,'@>_$02+#A<$Z=(!5XM.].,',L#RKG4!3UDK^8?/Z;T!Z%D"BT;XJ_9& XM_!!T`S/`J^D^_O9&_#!U!>@L`NLYZ"\"]D;]&'4PQD;_![D0`!8'4C/2C;Z7 XM_KX$`.B?`KD0`(V^DOY8,]*^!`#HCP+&AI/^.KD)`.L8QD;_![D0`!8',]*- XMOI+^O@0`Z'`"N00`C;Z/_NE'`?]&[H!._$"*1OX,()B+\(-^]`!_$W0'QT;T XM!@#K"CUG`'4%QT;T`0"-OH_^_W;N_W;T5E?_=@CV1OT$=`K_%B8$@T8("NL( XM_Q8<!(-&"`B#Q`KV1OR`=`Z#?O0`=0A7_Q8B!(/$`H/^9W4/]T;\@`!U"%?_ XM%AX$@\0"%@<F@#TM=05'@$[]`;G__U>P`/*N3UDK^8?/Z:\`@$[\0,9&^@KK XM-<9&_P?K!,9&_R?V1OR`=!''1O`"`,9&\C"R40)6_XA6\\9&^A#K#O9&_(!T XM!(!._0+&1OH(]D;\$'0%Z/H`ZP[H[0#V1OQ`=`.9ZP(STO9&_$!T#PO2?0N` XM3OT!]]B#T@#WVH-^]`!]!\=&]`$`ZP2`9OSWB]@+VG4%QT;P``"-?NL6!XI. XM^C+MBW;TZ#4!]D;]`G0.XP8F@#TP=`9/)L8%,$'K`/9&_$!T,?9&_0%T"\9& XM\BW'1O`!`.L@]D;\`70+QD;R*\=&\`$`ZP_V1OP"=`G&1O(@QT;P`0"+1O8K XMP2M&\'T",\`&5U'V1OP,=0>+R+(@Z+``4!8'C7[RBT[PZ(8`6/9&_`AT#?9& XM_`1U!XO(LC#HD`!97P=0Z&L`6/9&_`1T!XO(LB#H>P#I"?R+=@BMB78(PXMV XM"*V+T*V2B78(P_9&_"!T".CK_X["B_C#Z-O_B_@+P'4#CL##'@?#F%>+7@3_ XM3P)X"HL__P>(!3/`7\,&45)34.@[\8/$!%I9!SW__W7IZ^GC&XOW`4[X5S/_ XM)JSHR/\+^.+W"_]?=`7'1OC__\/C&0%.^%<S_XK"Z*S_"_CB]PO_7W0%QT;X XM___#_5>3"_9_"@O;=08+TG4"ZQJ2,]+W\9/W\9*'TP0P/#EV`P)&_ZJ+PD[K XMV%DKST?\PU]>B^5=PP!5B^Q75HMV!(M^!H/^_W02]D4&`742]D4&@'0&]D4& XM`G0&N/__ZS*0@WT$`'4'5^AJ\8/$`HL%.44$=0B#?0(`=>#_!?]%`HO&_PV+ XM'8@'@&4&[X!-!@$JY%Y?B^5=PY!5B^R#[`2+7@0['B$"<@6X``GK*O=&"`"` XM=$B#?@H`=!HSR8O1N`%"S2%R2_=&"@(`=0X#1@835@AY*+@`%OGK-HE6_HE& XM_(O1N`)"S2$#1@835@AY#8M._HM6_+@`0LTAZ]B+5@:+3@B*1@JT0LTA<@6` XMIR,"_>F;[E6+[(/L`HM>!#L>(0)R!OFX``GK:#/`BTX(XV'VAR,"`G5:@3XR XM!=;6=03_%C0%BTX(BU8&M#_-(7,$M`GK/O:'(P*`=#>`IR,"^U97_(ORB_J+ XMR.,EM`V`/`IU!8"/(P($K#K$=!D\&G4'@(\C`@+K!8@%1^+KB\<KPE]>Z1ON XM@_D!=`>`/`ITZ^OF]H<C`D!T&+@`1,TA]\(@`'4)C5;_M#_-(7+4L`KK+,9& XM_P"-5O^T/\TA<L,+P'09@WX(`70?N?__B]&X`4+-(;D!`(!^_PIT![`-BU8& XMZY:+5@;KE(!^_PIUV^N^`%6+[(/L"(M>!#L>(0)R![@`"?GIF^V!/C(%UM9U XM!/\6-`7VAR,"('0+N`)",\F+T<TA<M_VAR,"@'1NBU8&'@<SP(E&_HE&_/Q7 XM5HOZB_*)9OB+3@CC.+`*\JYU2NC>`#VH`'9&@^P"B]RZ``(]*`)S`[J``"OB XMB]2+^A8'BTX(K#P*=`P[^W09JN+TZ"(`ZVJP#3O[=0/H%P"JL`K_1OSKX^@, XM`.OB7E_K7KC\_^@AZE!348O/*\KC$E&+7@2T0,TA67(-`4;^.\AW!EE;6(OZ XMPY^#Q`B#?OX`=1^><P2T">L>]H<C`D!T"XM>!H`_&G4#^.L,^;@`'.L&BT;^ XM*T;\BV;X7E_IJ.R+3@@+R74%B\'IG.R+5@:T0,TA<P2T">OD"\!UX/:'(P)` XM=`J+VH`_&G4#^.O/^;@`'.O)`%FA3@([Q',&*\3WV/_A,\#K^NDB``!5B^Q6 XMBUX$ON`!.5P&<PU+2X`/`3E<"'8#B5P(7HOE7<-5B^Q65XM.!(/YZ'<2N^`! XMZ!8`<P_HC0!R!>@,`',%,\"9ZP!?7EW#`$&`X?Y3_(MW"(M?"C/_ZR.+PUNH XM`75"4XMW!HM?"#O>=#9+,__K#)"-5/X[TW/A`_!R(ZVH`73PB_Y(.\%S(P/P XM<A.+T*VH`73>`\(%`@"+]XE$_NODB\!;BT<&B4<(^>L96XE,_G0)`_DKP4B) XM!2OY`_F)?PB+QHS:^,-15_9'`@%T8^C2`(O^BP2H`70#*\A)04&+=P0+]G1, XM`\YS"3/`NO#_XS#K/Q8')J$:!#T`('06N@"`.]!R!M'J=?CK(H/Z"'(=T>*+ XMPDB+T`/!<P(SP/?2(\)2Z"X`6G,-@_KP=`6X$`#KXOGK&XO0*U<$B4<$B7\( XMBW<*2HD40@/RQP3^_XEW"E]9PXO0]D<"!'0/2HMW!$X[UG(%.5?^<S9"4U&, XMWH[&L033Z'4#N``0]D<"!'0*`\:+'AH"*\..PXO8M$K-(5E;<A"+PO9'`@1T XM!$J)5_[XZP'YPU>+=P@[=PIU`XMW!JT]_O]T"(O^)/X#\.OR3T^+]U_#`%6+ XM[(O7C-B.P(M^!#/`N?__\J[WT4F1B_I=PP!5B^R#[`175HMV!,8&.`9)B38V XM!K\R!HDU5NC'_X/$`J,T!HU&"%#_=@:X,@90Z"GN@\0&7E^+Y5W#58OLBU8$ XM[#+DB^5=PP!5B^R+5@2*1@;NM`!=PU6+[(O7C-B.P(M^!(O?BTX(XQ6*1@:* XMX/?'`0!T`JI)T>GSJQ/)\ZJ+^I-=PP!5B^R+5@3M7<,`58OLBT8&BTX*"\B+ XM3@AU"8M&!/?A7<((`%/WX8O8BT8$]V8*`]B+1@3WX0/36UW""``R[>,&T>#1 XMTN+ZPP!5B^Q3BUX$_W8(_W8&_W<"_S?HK?^)!XE7`EM=P@8``%6+[%.+7@2+ XM!XM7`HM.!NC"_XD'B5<"6UW"!`````````#Y`0`````````````````````` XM``````!-4R!2=6XM5&EM92!,:6)R87)Y("T@0V]P>7)I9VAT("AC*2`Q.3DP XM+"!-:6-R;W-O9G0@0V]R<!@`)60``&P`0````/`!4&QE87-E(')E8F]O="!S XM>7-T96TA"@!$<FEV92!M:7-S:6YG(&]R('-T871U<R!H;W-E9`H`0DE/4R!R XM97!O<G1S(&1R:79E(&AA<R`E=2!C>6QS+"`E=2!H9',L("5U('-E8W,O=')K XM"@H`!`$``!@!``!)9&5N=&EF>2!D<FEV92!C;60@9F%I;&5D.B!C<W(],'@E XM,#)X+"!E<G(],'@E,#)X"@!#;VYT<F]L;&5R(')E<&]R=',@9')I=F4@:&%S XM("5U(&-Y;',L("5U(&AD<RP@)74@<V5C<R]T<FL*"@!297-E='1I;F<@8V]N XM=')O;&QE<B]D<FEV90H*`%5S86=E.B`E<R!;9')I=F5="D1R:79E(&UA>2!B XM92`P+BXS("@R+#,@/3X@9')I=F5S(&]N(&%L=&5R;F%T92!C;VYT<F]L;&5R XM*0I$969A=6QT(&ES(#`*`$YO;BUC;VUP871I8FQE(&]R(&UI<W-I;F<@2&%R XM9"!$:7-K($-O;G1R;VQL97(A"@`````A!0`````%```````````````````` XM````````7T-?1DE,15])3D9//0`````````````````````````````````` XM```4`(&!@0$!````````````````````````````00+Y`0`````````````` XM__]0"P```!8"`A@-"0P,#`<(%A;_`@T2`O\``$((``!""`$``````````@$` XM```````"`@```````(0#`````````@0````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````!```"```````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM``````````````````````````````````````````````,````````@"2T- XM70!=``8```8``0``$``#!@`&`A`$145%!04%!04U,`!0`````"`@,%!8!P@` XM,#`P5U`'```@(```````"&!@8&!@8```<'!X>'AX"`<(```'``@("```"``( XM```(*&YU;&PI!@```"`*!@H&"@8*!@H&"@8`````````("`@("`@("`@*"@H XM*"@@("`@("`@("`@("`@("`@("!($!`0$!`0$!`0$!`0$!`0A(2$A(2$A(2$ XMA!`0$!`0$!"!@8&!@8$!`0$!`0$!`0$!`0$!`0$!`0$!`1`0$!`0$(*"@H*" XM@@("`@("`@("`@("`@("`@("`@("$!`0$"`````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM````````````````````````````````&009!!D$`````/@!```````````` XM``````!Z##P\3DU31SX^``!2-C`P,`T*+2!S=&%C:R!O=F5R9FQO=PT*``,` XM4C8P,#,-"BT@:6YT96=E<B!D:79I9&4@8GD@,`T*``D`4C8P,#D-"BT@;F]T XM(&5N;W5G:"!S<&%C92!F;W(@96YV:7)O;FUE;G0-"@#\``T*`/\`<G5N+71I XM;64@97)R;W(@``(`4C8P,#(-"BT@9FQO871I;F<M<&]I;G0@<W5P<&]R="!N XM;W0@;&]A9&5D#0H``0!2-C`P,0T*+2!N=6QL('!O:6YT97(@87-S:6=N;65N X'=`T*`/___V5D X` Xend SHAR_EOF uudecode < s2_temp_.tmp && rm -f s2_temp_.tmp && chmod 0644 ide_conf.exe || echo "restore of ide_conf.exe fails" exit 0 > -- > UUCP: {hplabs!hp-sdd ucsd nosc}!crash!fpm > ARPA: crash!fpm@nosc.mil > INET: fpm@crash.cts.com Terry Lambert terry@icarus.weber.edu terry_lambert@novell.com --- Any opinions in this posting are my own and not those of my present or previous employers. -- ------------------------------------------------------------------------------- "I have an 8 user poetic license" - me Get the 386bsd FAQ from agate.berkeley.edu:/pub/386BSD/386bsd-0.1/unofficial -------------------------------------------------------------------------------