From owner-freebsd-bugs@FreeBSD.ORG Thu May 9 02:00:02 2013 Return-Path: Delivered-To: freebsd-bugs@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 09D1B32A for ; Thu, 9 May 2013 02:00:02 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx1.freebsd.org (Postfix) with ESMTP id DAFA31529 for ; Thu, 9 May 2013 02:00:01 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.7/8.14.7) with ESMTP id r49201MX013762 for ; Thu, 9 May 2013 02:00:01 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.7/8.14.7/Submit) id r49201hq013761; Thu, 9 May 2013 02:00:01 GMT (envelope-from gnats) Date: Thu, 9 May 2013 02:00:01 GMT Message-Id: <201305090200.r49201hq013761@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org Cc: From: Eitan Adler Subject: Re: bin/174711: [fdc] Floppy drive 5.25" 360Kb bug. X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: Eitan Adler List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 May 2013 02:00:02 -0000 The following reply was made to PR bin/174711; it has been noted by GNATS. From: Eitan Adler To: bug-followup Cc: Subject: Re: bin/174711: [fdc] Floppy drive 5.25" 360Kb bug. Date: Wed, 8 May 2013 21:54:47 -0400 ---------- Forwarded message ---------- From: Emil Mamedov Date: 7 May 2013 11:30 Subject: Re: bin/174711: [fdc] Floppy drive 5.25" 360Kb bug. To: freebsd-bugs@freebsd.org The following reply was made to PR bin/174711; it has been noted by GNATS. From: Emil Mamedov To: FreeBSD-gnats-submit@FreeBSD.org, freebsd-i386@FreeBSD.org Cc: Subject: Re: bin/174711: [fdc] Floppy drive 5.25" 360Kb bug. Date: Tue, 7 May 2013 08:26:57 -0700 (PDT) My previous tarball has been corrupted and I've attached floppy-diff files to message body: --- fdc.c.org 2012-03-03 06:15:13.000000000 +0000 +++ fdc.c 2013-01-21 23:18:14.000000000 +0000 @@ -136,33 +136,35 @@ */ static struct fd_type fd_searchlist_360k[] = { - { FDF_5_360 }, + { FDD_5_360 | FL_AUTO}, + { FDD_5_180 | FL_AUTO}, { 0 } }; static struct fd_type fd_searchlist_12m[] = { - { FDF_5_1200 | FL_AUTO }, - { FDF_5_360 | FL_2STEP | FL_AUTO}, + { FHD_5_1200 | FL_AUTO }, + { FHD_5_360 | FL_2STEP | FL_AUTO}, + { FHD_5_180 | FL_2STEP | FL_AUTO}, { 0 } }; static struct fd_type fd_searchlist_720k[] = { - { FDF_3_720 }, + { FHD_3_720 }, { 0 } }; static struct fd_type fd_searchlist_144m[] = { - { FDF_3_1440 | FL_AUTO}, - { FDF_3_720 | FL_AUTO}, + { FHD_3_1440 | FL_AUTO}, + { FHD_3_720 | FL_AUTO}, { 0 } }; static struct fd_type fd_searchlist_288m[] = { - { FDF_3_1440 | FL_AUTO }, + { FHD_3_1440 | FL_AUTO }, #if 0 - { FDF_3_2880 | FL_AUTO }, /* XXX: probably doesn't work */ + { FHD_3_2880 | FL_AUTO }, /* XXX: probably doesn't work */ #endif - { FDF_3_720 | FL_AUTO}, + { FHD_3_720 | FL_AUTO}, { 0 } }; @@ -297,7 +299,7 @@ fdprinttype(struct fd_type *ft) { - printf("(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,0x%x)", + printf("(%d,%d,0x%x,0x%x,%d,%d,%d,%d,0x%x,%d,%d,0x%x)\n", ft->sectrac, ft->secsize, ft->datalen, ft->gap, ft->tracks, ft->size, ft->trans, ft->heads, ft->f_gap, ft->f_inter, ft->offset_side2, ft->flags); @@ -856,7 +858,8 @@ return (fdc_biodone(fdc, ENXIO)); /* Check if we lost our media */ - if (fdin_rd(fdc) & FDI_DCHG) { + if ((fdin_rd(fdc) & FDI_DCHG) && + !(device_get_flags(fd->dev) & FD_NO_CHLINE)) { if (debugflags & 0x40) printf("Lost disk\n"); mtx_lock(&fdc->fdc_mtx); @@ -884,7 +887,7 @@ mfm = (fd->ft->flags & FL_MFM)? NE7CMD_MFM: 0; steptrac = (fd->ft->flags & FL_2STEP)? 2: 1; - i = fd->ft->sectrac * fd->ft->heads; + i = fd->ft->sectrac * fd->ft->heads; //sectors per cyl cylinder = bp->bio_pblkno / i; descyl = cylinder * steptrac; sec = bp->bio_pblkno % i; @@ -928,6 +931,22 @@ * Enhanced controllers do implied seeks for read&write as long as * we do not need multiple steps per track. */ + /* But if DD diskette in HD FDD then disable do implied seek */ + if (fdc->fdct == FDC_ENHANCED) { + int imp_seek; + if (fd->ft->flags & FL_2STEP) imp_seek = 0x00; + else imp_seek = 0x40; + if (fdc_cmd(fdc, 4, + I8207X_CONFIG, + 0, + imp_seek | /* Disable/Enable Implied Seek */ + 0x10 | /* Polling disabled */ + (fifo_threshold - 1), /* Fifo threshold */ + 0x00, /* Precomp track */ + 0)) + device_printf(fdc->fdc_dev, + " CONFIGURE failed\n"); + } if (cylinder != fd->track && ( fdc->fdct != FDC_ENHANCED || descyl != cylinder || @@ -1229,7 +1248,9 @@ if (fdc_sense_int(fdc, &st0, &cyl) == FD_NOT_VALID) goto done; /* XXX */ *recal |= (1 << fd->fdsu); - if (fdin_rd(fdc) & FDI_DCHG) { + + if ((fdin_rd(fdc) & FDI_DCHG) && + !(device_get_flags(fd->dev) & FD_NO_CHLINE)) { if (debugflags & 0x40) printf("Empty in probe\n"); mtx_lock(&fdc->fdc_mtx); @@ -1238,8 +1259,8 @@ } else { if (fdc_sense_drive(fdc, &st3) != 0) goto done; - if (debugflags & 0x40) - printf("Got disk in probe\n"); +// if (debugflags & 0x40) +// printf("Got disk in probe\n"); mtx_lock(&fdc->fdc_mtx); fd->flags &= ~FD_EMPTY; if (st3 & NE7_ST3_WP) @@ -1341,37 +1362,61 @@ * Stepping to cylinder 2 has the side-effect of clearing the * unit attention bit. */ - oopts = fd->options; + oopts = fd->options; //Saving drive options fd->options |= FDOPT_NOERRLOG | FDOPT_NORETRY; - for (; fdtp->heads; fdtp++) { - fdsettype(fd, fdtp); + for (; fdtp->heads; fdtp++) { //increment drive type from search list + fdsettype(fd, fdtp); //set drive type id.cyl = id.head = 0; - rv = fdmisccmd(fd, BIO_RDID, &id); - if (rv != 0) - continue; - if (id.cyl != 0 || id.head != 0 || id.secshift != fdtp->secsize) + rv = fdmisccmd(fd, BIO_RDID, &id); //reading cyl0, head0 + if (rv != 0) //if error -> next iteration continue; + if (id.cyl != 0 || id.head != 0 || + id.secshift != fdtp->secsize) + continue; //if unexpected type -> next iteration id.cyl = 2; - id.head = fd->ft->heads - 1; + id.head = fd->ft->heads - 1; //get max head number for + // expected media type(0 or 1) rv = fdmisccmd(fd, BIO_RDID, &id); - if (id.cyl != 2 || id.head != fdtp->heads - 1 || + if (id.cyl != 2 || id.head != fdtp->heads - 1 || id.secshift != fdtp->secsize) - continue; - if (rv == 0) + continue; //if unexpected type -> next iteration + if (rv == 0) //if no errors -> exit from cycle break; } - fd->options = oopts; + /* trying get sectors per track + searching max sector number */ + int i ; + int spt = 0; + for (i=1; i <= fd->ft->sectrac; i++) { + id.cyl = id.head = 0; + rv = fdmisccmd(fd, BIO_RDID, &id); //reading cyl0, head0 + if (rv != 0) //if error -> next iteration + continue; + if (id.sec > spt) + spt=id.sec; + } + if (debugflags & 0x40) { + if (spt == 0) + device_printf(fd->dev, "No media in drive or media without format\n"); + else + device_printf(fd->dev, "Sectors per track = %d\n", spt); + } + + fd->options = oopts; //Restoring drive options if (fdtp->heads == 0) { if (debugflags & 0x40) device_printf(fd->dev, "autoselection failed\n"); fdsettype(fd, fd_native_types[fd->type]); return (-1); } else { + fd->ft->sectrac = spt; + fd->ft->size = spt * fd->ft->heads * fd->ft->tracks ; if (debugflags & 0x40) { device_printf(fd->dev, - "autoselected %d KB medium\n", fd->ft->size / 2); + "autoselected %d KB medium\n", + (128 << fd->ft->secsize) * fd->ft->size / 1024 ); fdprinttype(fd->ft); } return (0); @@ -1710,8 +1755,7 @@ break; case 0x81: case 0x90: - device_set_desc(dev, - "Enhanced floppy controller"); + device_set_desc(dev, "Enhanced floppy controller"); fdc->fdct = FDC_ENHANCED; break; default: --- fdcio.h.org 2012-03-03 06:15:13.000000000 +0000 +++ fdcio.h 2012-01-17 21:23:37.000000000 +0000 @@ -181,46 +181,53 @@ * XXX: should have been done 20 years ago to make sense. */ #ifdef PC98 -#define FDF_3_1722 21,2,0xFF,0x04,82,0,2,2,0x0C,2,0,FL_MFM -#define FDF_3_1476 18,2,0xFF,0x1B,82,0,2,2,0x54,1,0,FL_MFM -#define FDF_3_1440 18,2,0xFF,0x1B,80,0,2,2,0x54,1,0,FL_MFM -#define FDF_3_1200 15,2,0xFF,0x1B,80,0,0,2,0x54,1,0,FL_MFM -#define FDF_3_820 10,2,0xFF,0x10,82,0,1,2,0x30,1,0,FL_MFM -#define FDF_3_800 10,2,0xFF,0x10,80,0,1,2,0x30,1,0,FL_MFM -#define FDF_3_720 9,2,0xFF,0x20,80,0,1,2,0x50,1,0,FL_MFM -#define FDF_3_360 9,2,0xFF,0x20,40,0,1,2,0x50,1,0,FL_MFM|FL_2STEP -#define FDF_3_640 8,2,0xFF,0x2A,80,0,1,2,0x50,1,0,FL_MFM -#define FDF_3_1230 8,3,0xFF,0x35,77,0,0,2,0x74,1,0,FL_MFM -#define FDF_3_1280 8,3,0xFF,0x35,80,0,0,2,0x74,1,0,FL_MFM -#define FDF_3_1480 9,3,0xFF,0x35,82,0,0,2,0x47,1,0,FL_MFM -#define FDF_3_1640 10,3,0xFF,0x1B,82,0,2,2,0x54,1,0,FL_MFM -#define FDF_5_1200 15,2,0xFF,0x1B,80,0,0,2,0x54,1,0,FL_MFM -#define FDF_5_820 10,2,0xFF,0x10,82,0,1,2,0x30,1,0,FL_MFM -#define FDF_5_800 10,2,0xFF,0x10,80,0,1,2,0x30,1,0,FL_MFM -#define FDF_5_720 9,2,0xFF,0x20,80,0,1,2,0x50,1,0,FL_MFM -#define FDF_5_360 9,2,0xFF,0x20,40,0,1,2,0x50,1,0,FL_MFM|FL_2STEP -#define FDF_5_640 8,2,0xFF,0x2A,80,0,1,2,0x50,1,0,FL_MFM -#define FDF_5_1230 8,3,0xFF,0x35,77,0,0,2,0x74,1,0,FL_MFM -#define FDF_5_1280 8,3,0xFF,0x35,80,0,0,2,0x74,1,0,FL_MFM +#define FHD_3_1722 21,2,0xFF,0x04,82,0,2,2,0x0C,2,0,FL_MFM +#define FHD_3_1476 18,2,0xFF,0x1B,82,0,2,2,0x54,1,0,FL_MFM +#define FHD_3_1440 18,2,0xFF,0x1B,80,0,2,2,0x54,1,0,FL_MFM +#define FHD_3_1200 15,2,0xFF,0x1B,80,0,0,2,0x54,1,0,FL_MFM +#define FHD_3_820 10,2,0xFF,0x10,82,0,1,2,0x30,1,0,FL_MFM +#define FHD_3_800 10,2,0xFF,0x10,80,0,1,2,0x30,1,0,FL_MFM +#define FHD_3_720 9,2,0xFF,0x20,80,0,1,2,0x50,1,0,FL_MFM +#define FHD_3_360 9,2,0xFF,0x20,40,0,1,2,0x50,1,0,FL_MFM|FL_2STEP +#define FHD_3_640 8,2,0xFF,0x2A,80,0,1,2,0x50,1,0,FL_MFM +#define FHD_3_1230 8,3,0xFF,0x35,77,0,0,2,0x74,1,0,FL_MFM +#define FHD_3_1280 8,3,0xFF,0x35,80,0,0,2,0x74,1,0,FL_MFM +#define FHD_3_1480 9,3,0xFF,0x35,82,0,0,2,0x47,1,0,FL_MFM +#define FHD_3_1640 10,3,0xFF,0x1B,82,0,2,2,0x54,1,0,FL_MFM +#define FHD_5_1200 15,2,0xFF,0x1B,80,0,0,2,0x54,1,0,FL_MFM +#define FHD_5_820 10,2,0xFF,0x10,82,0,1,2,0x30,1,0,FL_MFM +#define FHD_5_800 10,2,0xFF,0x10,80,0,1,2,0x30,1,0,FL_MFM +#define FHD_5_720 9,2,0xFF,0x20,80,0,1,2,0x50,1,0,FL_MFM +#define FHD_5_360 9,2,0xFF,0x20,40,0,1,2,0x50,1,0,FL_MFM|FL_2STEP +#define FHD_5_640 8,2,0xFF,0x2A,80,0,1,2,0x50,1,0,FL_MFM +#define FHD_5_1230 8,3,0xFF,0x35,77,0,0,2,0x74,1,0,FL_MFM +#define FHD_5_1280 8,3,0xFF,0x35,80,0,0,2,0x74,1,0,FL_MFM #else /* PC98 */ -#define FDF_3_2880 36,2,0xFF,0x1B,80,0,FDC_1MBPS,002,0x4C,1,1,FL_MFM|FL_PERPND -#define FDF_3_1722 21,2,0xFF,0x04,82,0,FDC_500KBPS,2,0x0C,2,0,FL_MFM -#define FDF_3_1476 18,2,0xFF,0x1B,82,0,FDC_500KBPS,2,0x6C,1,0,FL_MFM -#define FDF_3_1440 18,2,0xFF,0x1B,80,0,FDC_500KBPS,2,0x6C,1,0,FL_MFM -#define FDF_3_1200 15,2,0xFF,0x1B,80,0,FDC_500KBPS,2,0x54,1,0,FL_MFM -#define FDF_3_820 10,2,0xFF,0x10,82,0,FDC_250KBPS,2,0x2e,1,0,FL_MFM -#define FDF_3_800 10,2,0xFF,0x10,80,0,FDC_250KBPS,2,0x2e,1,0,FL_MFM -#define FDF_3_720 9,2,0xFF,0x20,80,0,FDC_250KBPS,2,0x50,1,0,FL_MFM -#define FDF_5_1480 18,2,0xFF,0x02,82,0,FDC_500KBPS,2,0x02,2,0,FL_MFM -#define FDF_5_1440 18,2,0xFF,0x02,80,0,FDC_500KBPS,2,0x02,2,0,FL_MFM -#define FDF_5_1230 8,3,0xFF,0x35,77,0,FDC_500KBPS,2,0x74,1,0,FL_MFM -#define FDF_5_1200 15,2,0xFF,0x1B,80,0,FDC_500KBPS,2,0x54,1,0,FL_MFM -#define FDF_5_820 10,2,0xFF,0x10,82,0,FDC_300KBPS,2,0x2e,1,0,FL_MFM -#define FDF_5_800 10,2,0xFF,0x10,80,0,FDC_300KBPS,2,0x2e,1,0,FL_MFM -#define FDF_5_720 9,2,0xFF,0x20,80,0,FDC_300KBPS,2,0x50,1,0,FL_MFM -#define FDF_5_640 8,2,0xFF,0x2A,80,0,FDC_300KBPS,2,0x50,1,0,FL_MFM -#define FDF_5_360 9,2,0xFF,0x23,40,0,FDC_300KBPS,2,0x50,1,0,FL_MFM -/* XXX: 0x2a ? */ + + /* HD floppy drive */ +#define FHD_3_2880 36,2,0xFF,0x1B,80,0,FDC_1MBPS,002,0x4C,1,1,FL_MFM|FL_PERPND +#define FHD_3_1722 21,2,0xFF,0x04,82,0,FDC_500KBPS,2,0x0C,2,0,FL_MFM +#define FHD_3_1476 18,2,0xFF,0x1B,82,0,FDC_500KBPS,2,0x6C,1,0,FL_MFM +#define FHD_3_1440 18,2,0xFF,0x1B,80,0,FDC_500KBPS,2,0x6C,1,0,FL_MFM +#define FHD_3_1200 15,2,0xFF,0x1B,80,0,FDC_500KBPS,2,0x54,1,0,FL_MFM +#define FHD_3_820 10,2,0xFF,0x10,82,0,FDC_250KBPS,2,0x2e,1,0,FL_MFM +#define FHD_3_800 10,2,0xFF,0x10,80,0,FDC_250KBPS,2,0x2e,1,0,FL_MFM +#define FHD_3_720 9,2,0xFF,0x20,80,0,FDC_250KBPS,2,0x50,1,0,FL_MFM +#define FHD_5_1480 18,2,0xFF,0x02,82,0,FDC_500KBPS,2,0x02,2,0,FL_MFM +#define FHD_5_1440 18,2,0xFF,0x02,80,0,FDC_500KBPS,2,0x02,2,0,FL_MFM +#define FHD_5_1230 8,3,0xFF,0x35,77,0,FDC_500KBPS,2,0x74,1,0,FL_MFM +#define FHD_5_1200 15,2,0xFF,0x1B,80,0,FDC_500KBPS,2,0x54,1,0,FL_MFM +#define FHD_5_820 10,2,0xFF,0x10,82,0,FDC_300KBPS,2,0x2e,1,0,FL_MFM +#define FHD_5_800 10,2,0xFF,0x10,80,0,FDC_300KBPS,2,0x2e,1,0,FL_MFM +#define FHD_5_720 9,2,0xFF,0x20,80,0,FDC_300KBPS,2,0x50,1,0,FL_MFM +#define FHD_5_640 8,2,0xFF,0x2A,80,0,FDC_300KBPS,2,0x50,1,0,FL_MFM +#define FHD_5_360 9,2,0xFF,0x23,40,0,FDC_300KBPS,2,0x50,1,0,FL_MFM|FL_2STEP +#define FHD_5_180 9,2,0xFF,0x23,40,0,FDC_300KBPS,1,0x50,1,0,FL_MFM|FL_2STEP + /* DD floppy drive */ +#define FDD_5_360 9,2,0xFF,0x2A,40,0,FDC_250KBPS,2,0x50,1,0,FL_MFM +#define FDD_5_180 9,2,0xFF,0x2A,40,0,FDC_250KBPS,1,0x50,1,0,FL_MFM +#define FDD_5_320 8,2,0xFF,0x2A,40,0,FDC_250KBPS,2,0x50,1,0,FL_MFM +#define FDD_5_160 8,2,0xFF,0x2A,40,0,FDC_250KBPS,1,0x50,1,0,FL_MFM #endif #endif /* !_MACHINE_IOCTL_FD_H_ */ --- fdcontrol.c.org 2012-03-03 06:15:13.000000000 +0000 +++ fdcontrol.c 2013-01-23 22:41:34.000000000 +0000 @@ -41,7 +41,7 @@ #include "fdutil.h" -static int format, verbose, show = 1, showfmt; +static int format = 0, verbose =0 , show = 1, showfmt = 0; static char *fmtstring; static void showdev(enum fd_drivetype, const char *); @@ -51,7 +51,7 @@ usage(void) { errx(EX_USAGE, - "usage: fdcontrol [-F] [-d dbg] [-f fmt] [-s fmtstr] [-v] device"); + "usage: fdcontrol [-F] [-f fmt] [-s fmtstr] [-v] device"); } void @@ -72,14 +72,11 @@ enum fd_drivetype type; struct fd_type ft, newft, *fdtp; const char *name, *descr; - int fd, i, autofmt; + int fd, i; - autofmt = 0; - while((i = getopt(argc, argv, "aFf:s:v")) != -1) + while((i = getopt(argc, argv, "Ff:s:v")) != -1) switch(i) { - case 'a': - autofmt = 1; case 'F': showfmt = 1; show = 0; @@ -121,19 +118,12 @@ if (ioctl(fd, FD_GDTYPE, &type) == -1) err(EX_OSERR, "ioctl(FD_GDTYPE)"); - if (ioctl(fd, FD_GTYPE, &ft) == -1) - err(EX_OSERR, "ioctl(FD_GTYPE)"); - + if (show) { showdev(type, argv[0]); return (0); } - if (autofmt) { - memset(&newft, 0, sizeof newft); - ft = newft; - } - if (format) { getname(type, &name, &descr); fdtp = get_fmt(format, type); @@ -149,6 +139,14 @@ ft = newft; } + if (format || fmtstring) { + if (ioctl(fd, FD_STYPE, &ft) == -1) + err(EX_OSERR, "ioctl(FD_STYPE)"); + } + + if (ioctl(fd, FD_GTYPE, &ft) == -1) + err(EX_OSERR, "ioctl(FD_GTYPE)"); + if (showfmt) { if (verbose) { const char *s; @@ -159,7 +157,7 @@ print_fmt(ft); if (ft.datalen != 0xff && ft.datalen != (128 << ft.secsize)) - printf("\tData length:\t%d\n", ft.datalen); + printf("\tData length:\t0x%x\n", ft.datalen); printf("\tSector size:\t%d\n", 128 << ft.secsize); printf("\tSectors/track:\t%d\n", ft.sectrac); printf("\tHeads/cylinder:\t%d\n", ft.heads); @@ -170,8 +168,8 @@ case 2: printf("\tTransfer rate:\t250 kbps\n"); break; case 3: printf("\tTransfer rate:\t1 Mbps\n"); break; } - printf("\tSector gap:\t%d\n", ft.gap); - printf("\tFormat gap:\t%d\n", ft.f_gap); + printf("\tSector gap:\t0x%x\n", ft.gap); + printf("\tFormat gap:\t0x%x\n", ft.f_gap); printf("\tInterleave:\t%d\n", ft.f_inter); printf("\tSide offset:\t%d\n", ft.offset_side2); printf("\tFlags\t\t<"); @@ -196,14 +194,7 @@ } else { print_fmt(ft); } - return (0); - } - - if (format || fmtstring) { - if (ioctl(fd, FD_STYPE, &ft) == -1) - err(EX_OSERR, "ioctl(FD_STYPE)"); - return (0); } - return 0; + return (close(fd)); } --- fdcontrol.8.org 2012-03-03 06:15:13.000000000 +0000 +++ fdcontrol.8 2013-01-20 20:33:45.000000000 +0000 @@ -34,7 +34,6 @@ .Sh SYNOPSIS .Nm .Op Fl F -.Op Fl d Ar dbg .Op Fl f Ar fmt .Op Fl s Ar fmtstr .Op Fl v @@ -93,30 +92,6 @@ .Fl v , some more text will be returned, including the total capacity of the density settings in kilobytes. -.Ss Debug Control -If the -.Xr fdc 4 -driver was configured with the -.Dv FDC_DEBUG -option, by default, device debugging information is still disabled -since it could produce huge amounts of kernel messages. -It needs to -be turned on using -.Nm -together with -.Dq Fl d Li 1 , -usually immediately before starting an operation on the respective -device the debug information is wanted for, and later turned off again -using -.Dq Fl d Li 0 . -Note that debugging levels are a driver's global option that will -affect any drives and controllers using the -.Xr fdc 4 -driver, regardless which -.Ar device -was specified on the -.Nm -command line. .Ss Density Control The .Xr fdc 4 @@ -206,8 +181,9 @@ .It Ar sectrac The number of sectors per track. .It Ar secsize -The sector size code, 0 = 128 bytes (or less), 1 = 256 bytes, 2 = 512 -bytes, 3 = 1024 bytes. +The sector size in bytes. Previously was sector size code: + 0 = 128 bytes (or less), 1 = 256 bytes, 2 = 512 bytes, + 3 = 1024 bytes. .It Ar datalen The actual sector size if the size code is 0, or the (ignored) value 0xFF for larger size codes. --- fdformat.c.org 2012-03-03 06:15:13.000000000 +0000 +++ fdformat.c 2013-01-20 10:21:27.000000000 +0000 @@ -112,27 +112,7 @@ usage (void) { errx(EX_USAGE, - "usage: fdformat [-F fill] [-f fmt] [-s fmtstr] [-nqvy] device"); -} - -static int -yes (void) -{ - char reply[256], *p; - - reply[sizeof(reply) - 1] = 0; - for (;;) { - fflush(stdout); - if (!fgets (reply, sizeof(reply) - 1, stdin)) - return (0); - for (p=reply; *p==' ' || *p=='\t'; ++p) - continue; - if (*p=='y' || *p=='Y') - return (1); - if (*p=='n' || *p=='N' || *p=='\n' || *p=='\r') - return (0); - printf("Answer `yes' or `no': "); - } + "usage: fdformat [-F fill] [-f fmt] [-s fmtstr] [-nqv] device"); } int @@ -191,10 +171,6 @@ verify_only = 1; break; - case 'y': /* confirm */ - confirm = 1; - break; - default: usage(); } @@ -281,16 +257,7 @@ fdt.tracks * fdt.heads * bytes_per_track / 1024, device); } - else if(!quiet && !confirm) { - printf("Format %dK floppy `%s'? (y/n): ", - fdt.tracks * fdt.heads * bytes_per_track / 1024, - device); - if(!yes()) { - printf("Not confirmed.\n"); - return (EX_UNAVAILABLE); - } - } - + /* * Formatting. */ --- fdformat.1.org 2012-03-03 06:15:13.000000000 +0000 +++ fdformat.1 2013-01-20 10:32:30.000000000 +0000 @@ -35,7 +35,7 @@ .Op Fl F Ar fill .Op Fl f Ar fmt .Op Fl s Ar fmtstr -.Op Fl nqvy +.Op Fl nqv .Ar device .Sh DESCRIPTION The @@ -84,9 +84,6 @@ .Ar device . .It Fl v Do not format, verify only. -.It Fl y -Do not ask for confirmation whether to format the floppy disk but -still report formatting status. .El .Pp For non-autoselecting subdevices, neither --- fdutil.c.org 2012-03-03 06:15:13.000000000 +0000 +++ fdutil.c 2013-01-22 22:42:21.000000000 +0000 @@ -90,93 +90,97 @@ static struct fd_type fd_types_auto[1] = { { 0,0,0,0,0,0,0,0,0,0,0,FL_AUTO } }; - static struct fd_type fd_types_288m[] = { #if 0 - { FDF_3_2880 }, + { FHD_3_2880 }, #endif - { FDF_3_1722 }, - { FDF_3_1476 }, - { FDF_3_1440 }, - { FDF_3_1200 }, - { FDF_3_820 }, - { FDF_3_800 }, - { FDF_3_720 }, + { FHD_3_1722 }, + { FHD_3_1476 }, + { FHD_3_1440 }, + { FHD_3_1200 }, + { FHD_3_820 }, + { FHD_3_800 }, + { FHD_3_720 }, { 0,0,0,0,0,0,0,0,0,0,0,0 } }; static struct fd_type fd_types_144m[] = { #ifdef PC98 #if 0 - { FDF_3_1722 }, - { FDF_3_1476 }, + { FHD_3_1722 }, + { FHD_3_1476 }, #endif - { FDF_3_1440 }, - { FDF_3_1200 }, + { FHD_3_1440 }, + { FHD_3_1200 }, #if 0 - { FDF_3_820 }, - { FDF_3_800 }, + { FHD_3_820 }, + { FHD_3_800 }, #endif - { FDF_3_720 }, - { FDF_3_360 }, - { FDF_3_640 }, - { FDF_3_1230 }, + { FHD_3_720 }, + { FHD_3_360 }, + { FHD_3_640 }, + { FHD_3_1230 }, #if 0 - { FDF_3_1280 }, - { FDF_3_1480 }, - { FDF_3_1640 }, + { FHD_3_1280 }, + { FHD_3_1480 }, + { FHD_3_1640 }, #endif { 0,0,0,0,0,0,0,0,0,0,0,0 } +//end of PC98 #else - { FDF_3_1722 }, - { FDF_3_1476 }, - { FDF_3_1440 }, - { FDF_3_1200 }, - { FDF_3_820 }, - { FDF_3_800 }, - { FDF_3_720 }, + { FHD_3_1722 }, + { FHD_3_1476 }, + { FHD_3_1440 }, + { FHD_3_1200 }, + { FHD_3_820 }, + { FHD_3_800 }, + { FHD_3_720 }, { 0,0,0,0,0,0,0,0,0,0,0,0 } #endif }; static struct fd_type fd_types_12m[] = { #ifdef PC98 - { FDF_5_1200 }, + { FHD_5_1200 }, #if 0 - { FDF_5_820 }, - { FDF_5_800 }, + { FHD_5_820 }, + { FHD_5_800 }, #endif - { FDF_5_720 }, - { FDF_5_360 }, - { FDF_5_640 }, - { FDF_5_1230 }, + { FHD_5_720 }, + { FHD_5_360 }, + { FHD_5_640 }, + { FHD_5_1230 }, #if 0 - { FDF_5_1280 }, + { FHD_5_1280 }, #endif { 0,0,0,0,0,0,0,0,0,0,0,0 } +//end of PC98 #else - { FDF_5_1200 }, - { FDF_5_1230 }, - { FDF_5_1480 }, - { FDF_5_1440 }, - { FDF_5_820 }, - { FDF_5_800 }, - { FDF_5_720 }, - { FDF_5_360 | FL_2STEP }, - { FDF_5_640 }, + { FHD_5_1200 }, + { FHD_5_1230 }, + { FHD_5_1480 }, + { FHD_5_1440 }, + { FHD_5_820 }, + { FHD_5_800 }, + { FHD_5_720 }, + { FHD_5_360 | FL_2STEP }, + { FHD_5_640 }, { 0,0,0,0,0,0,0,0,0,0,0,0 } #endif }; static struct fd_type fd_types_720k[] = { - { FDF_3_720 }, + { FHD_3_720 }, { 0,0,0,0,0,0,0,0,0,0,0,0 } }; static struct fd_type fd_types_360k[] = { - { FDF_5_360 }, + { FDD_5_360 }, + { FDD_5_180 }, + { FDD_5_320 }, + { FDD_5_160 }, { 0,0,0,0,0,0,0,0,0,0,0,0 } }; _______________________________________________ freebsd-bugs@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscribe@freebsd.org" -- Eitan Adler