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 ---------------------------------