Subject: Re: 720K floppy params?
To: Bill Sommerfeld <sommerfeld@orchard.medford.ma.us>
From: None <Mark_Weaver@brown.edu>
List: current-users
Date: 12/12/1993 14:04:42
> I occasionally need to read 720K dos floppies.
This patch was posted to the list a couple weeks ago. I never tested
it (since I don't have any 720K floppies), but I keep my kernel
patched with it anyway. Please let me (us) know if it works. The
poster seemed to think it worked fine.
diff -c ./sys/arch/i386/isa/fd.c.mhw1 ./sys/arch/i386/isa/fd.c
*** ./sys/arch/i386/isa/fd.c.mhw1 Sun Nov 7 04:07:12 1993
--- ./sys/arch/i386/isa/fd.c Mon Dec 6 23:50:52 1993
***************
*** 83,89 ****
{ 15,2,0xFF,0x1B,80,2400,1,0,2 }, /* 1.2 meg HD floppy */
{ 9,2,0xFF,0x23,40,720,2,1,2 }, /* 360k floppy in 1.2meg drive */
{ 9,2,0xFF,0x2A,40,720,1,1,2 }, /* 360k floppy in DD drive */
! { 9,2,0xFF,0x2A,80,1440,1,0 }, /* 720K drive. PROBABLY WRONG */
};
#define DRVS_PER_CTLR 2
--- 83,89 ----
{ 15,2,0xFF,0x1B,80,2400,1,0,2 }, /* 1.2 meg HD floppy */
{ 9,2,0xFF,0x23,40,720,2,1,2 }, /* 360k floppy in 1.2meg drive */
{ 9,2,0xFF,0x2A,40,720,1,1,2 }, /* 360k floppy in DD drive */
! { 9,2,0xFF,0x2A,80,1440,1,2,2 },/* 720K drive. PROBABLY WRONG */
};
#define DRVS_PER_CTLR 2
***************
*** 338,344 ****
fd = &fd_data[fdu];
fdc = fd->fdc;
fdcu = fdc->fdcu;
! /*type = FDTYPE(minor(bp->b_dev));*/
if ((fdu >= NFD) || (bp->b_blkno < 0)) {
printf("fdstrat: fdu = %d, blkno = %d, bcount = %d\n",
--- 338,344 ----
fd = &fd_data[fdu];
fdc = fd->fdc;
fdcu = fdc->fdcu;
! fd->ft = &fd_types[FDTYPE(minor(bp->b_dev))];
if ((fdu >= NFD) || (bp->b_blkno < 0)) {
printf("fdstrat: fdu = %d, blkno = %d, bcount = %d\n",
***************
*** 485,496 ****
int flags;
{
fdu_t fdu = FDUNIT(minor(dev));
! /*int type = FDTYPE(minor(dev));*/
int s;
/* check bounds */
if (fdu >= NFD) return(ENXIO);
! /*if (type >= sizeof(fd_types)/sizeof(fd_types[0]) ) return(ENXIO);*/
fd_data[fdu].flags |= FD_OPEN;
return 0;
--- 485,496 ----
int flags;
{
fdu_t fdu = FDUNIT(minor(dev));
! int type = FDTYPE(minor(dev));
int s;
/* check bounds */
if (fdu >= NFD) return(ENXIO);
! if (type >= sizeof(fd_types)/sizeof(fd_types[0]) ) return(ENXIO);
fd_data[fdu].flags |= FD_OPEN;
return 0;
--------------------------------------------------------------------
Email: Mark_Weaver@brown.edu | Brown University
PGP Key: finger mhw@cs.brown.edu | Dept of Computer Science
------------------------------------------------------------------------------