Return to BSD News archive
Path: euryale.cc.adfa.oz.au!newshost.carno.net.au!harbinger.cc.monash.edu.au!nntp.coast.net!news.sprintlink.net!news-peer.sprintlink.net!news.mathworks.com!uunet!news-in2.uu.net!van-bc!unixg.ubc.ca!umelba.Triumf.CA!felawka From: felawka@umelba.Triumf.CA (L. Felawka) Newsgroups: comp.unix.bsd.freebsd.misc Subject: Re: hardware woes: SCSI tape, floppy, and controllers Date: 30 Sep 1996 19:39:05 GMT Organization: TRIUMF Lines: 113 Distribution: world Message-ID: <52p7kp$abm@nntp.ucs.ubc.ca> References: <DyJFpt.5DL@midway.uchicago.edu> NNTP-Posting-Host: umelba.triumf.ca In article <DyJFpt.5DL@midway.uchicago.edu> Tim Pierce <twpierce+usenet@mail.bsd.uchicago.edu> writes: >Hi. [ ... stuff deleted ... ] > >SCSI problems > [ ... stuff deleted ... ] Sorry, can't help here ... > >Floppy problems > > This is probably my more serious immediate problem. I have not > had occasion to use the floppy drive (3.5", high density) in a > very long time. When trying to write a boot floppy: > > % /usr/sbin/fdwrite -f boot.flp > > ... the following messages appear on the console: > > fdc0: input ready timeout > fd0c: hard error writing fsbn 0 (No status) > fdc0: direction bit not set > fdc0: cmd c5 failed at out byte 1 of 9 > fd0c: hard error writing fsbn 0 of 0-17 (ST0 40<abnrml> ST1 > 4<sec_not_fnd> ST2 10<wrong_cyl> cyl 0 hd 0 sec 1) > > According to an article of J\"org Wunsch's in Deja News, the `no > status' bit means that the drive doesn't recognize the floppy, > and either the drive has ceased to generate index pulses or > something equally catastrophic has occurred. Is this an > accurate summary of the problem? Will it suffice to say that if > I take the machine into the shop? I had a similar problem with FreeBSD 2.1.0-RELEASE on a Pentium 133 (FreeBSD 2.1.0-RELEASE on a 486 gave me no floppy-related problems). Does the drive work under DOS/Windows? If so, it is probably usable under FreeBSD. The following fix worked for me (although J\"org says that it probably just masks an underlying hardware problem). _____ Larry ---------------------------------- cut here --------------------------------- *** /sys/i386/isa/fd.c.orig Sun Jun 11 12:31:19 1995 --- /sys/i386/isa/fd.c Sat Aug 31 10:45:31 1996 *************** *** 896,902 **** in_fdc(fdcu_t fdcu) { int baseport = fdc_data[fdcu].baseport; ! int i, j = 100000; while ((i = inb(baseport+FDSTS) & (NE7_DIO|NE7_RQM)) != (NE7_DIO|NE7_RQM) && j-- > 0) if (i == NE7_RQM) --- 896,902 ---- in_fdc(fdcu_t fdcu) { int baseport = fdc_data[fdcu].baseport; ! int i, j = 500000; while ((i = inb(baseport+FDSTS) & (NE7_DIO|NE7_RQM)) != (NE7_DIO|NE7_RQM) && j-- > 0) if (i == NE7_RQM) *************** *** 919,925 **** fd_in(fdcu_t fdcu, int *ptr) { int baseport = fdc_data[fdcu].baseport; ! int i, j = 100000; while ((i = inb(baseport+FDSTS) & (NE7_DIO|NE7_RQM)) != (NE7_DIO|NE7_RQM) && j-- > 0) if (i == NE7_RQM) --- 919,925 ---- fd_in(fdcu_t fdcu, int *ptr) { int baseport = fdc_data[fdcu].baseport; ! int i, j = 500000; while ((i = inb(baseport+FDSTS) & (NE7_DIO|NE7_RQM)) != (NE7_DIO|NE7_RQM) && j-- > 0) if (i == NE7_RQM) *************** *** 946,957 **** int i; /* Check that the direction bit is set */ ! i = 100000; while ((inb(baseport+FDSTS) & NE7_DIO) && i-- > 0); if (i <= 0) return fdc_err(fdcu, "direction bit not set\n"); /* Check that the floppy controller is ready for a command */ ! i = 100000; while ((inb(baseport+FDSTS) & NE7_RQM) == 0 && i-- > 0); if (i <= 0) return fdc_err(fdcu, "output ready timeout\n"); --- 946,957 ---- int i; /* Check that the direction bit is set */ ! i = 500000; while ((inb(baseport+FDSTS) & NE7_DIO) && i-- > 0); if (i <= 0) return fdc_err(fdcu, "direction bit not set\n"); /* Check that the floppy controller is ready for a command */ ! i = 500000; while ((inb(baseport+FDSTS) & NE7_RQM) == 0 && i-- > 0); if (i <= 0) return fdc_err(fdcu, "output ready timeout\n"); ---------------------------------- cut here ---------------------------------