Return to BSD News archive
Path: sserve!manuel!munnari.oz.au!uunet!mcsun!sunic!chalmers.se!dtek.chalmers.se!dxper From: dxper@dtek.chalmers.se (Per Anders Olausson) Newsgroups: comp.unix.bsd Subject: 386BSD: 720Kb floppy driver + mtools patches Keywords: 386bsd floppy 720kb Message-ID: <13817@chalmers.se> Date: 29 Aug 92 17:20:08 GMT Sender: news@chalmers.se Organization: Chalmers University of Technology, Gothenburg Sweden Lines: 201 Since people seem to like the idea of putting 720kb floppy disks into 1.44Mb drives and I myself had need for it I went through the floppy driver and uncommented all the floppy type code which was already there + added an entry for 720kb floppies. This works for me and hopefully for all you netpeople out there but I'm naturally wondering why it was all commented. Hmmmm . . . I also changed the device specification to mtools so that it uses the correct device names. I didn't remove the 320kb entry in mtools however, even though there is no support for it in the device driver. After you have recompiled the kernel and mtools all you need to do is: $ cd /dev $ MAKEDEV fd0 $ MAKEDEV fd1 if you haven't patched the kernel to support #! stuff you have to run $ sh MAKEDEV fd0 instead. Now back to our favorite What's-the-name-of-the-group-flame-contest... pao # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # fd.patch # mtools.patch # echo x - fd.patch sed 's/^X//' >fd.patch << 'END-of-fd.patch' X*** fd.c.orig Sat Aug 29 18:22:39 1992 X--- fd.c Sat Aug 29 18:24:56 1992 X*************** X*** 60,66 **** X #define b_cylin b_resid X #define b_step b_resid X #define FDBLK 512 X! #define NUMTYPES 4 X X struct fd_type { X int sectrac; /* sectors per track */ X--- 60,66 ---- X #define b_cylin b_resid X #define b_step b_resid X #define FDBLK 512 X! #define NUMTYPES 5 X X struct fd_type { X int sectrac; /* sectors per track */ X*************** X*** 76,81 **** X--- 76,82 ---- X struct fd_type fd_types[NUMTYPES] = { X { 18,2,0xFF,0x1B,80,2880,1,0 }, /* 1.44 meg HD 3.5in floppy */ X { 15,2,0xFF,0x1B,80,2400,1,0 }, /* 1.2 meg HD floppy */ X+ { 9,2,0xFF,0x20,80,1440,1,2 }, /* 720k floppy in HD drive */ X { 9,2,0xFF,0x23,40,720,2,1 }, /* 360k floppy in 1.2meg drive */ X { 9,2,0xFF,0x2A,40,720,1,1 }, /* 360k floppy in DD drive */ X }; X*************** X*** 211,218 **** X int unit, type, s; X X unit = FDUNIT(minor(bp->b_dev)); X! /*type = FDTYPE(minor(bp->b_dev));*/ X! type = fd_unit[unit].type; X X #ifdef FDTEST X printf("fdstrat%d, blk = %d, bcount = %d, addr = %x|", X--- 212,219 ---- X int unit, type, s; X X unit = FDUNIT(minor(bp->b_dev)); X! type = FDTYPE(minor(bp->b_dev)); X! /*type = fd_unit[unit].type;*/ X X #ifdef FDTEST X printf("fdstrat%d, blk = %d, bcount = %d, addr = %x|", X*************** X*** 281,288 **** X int unit; X { X fd_unit[unit].motor = 0; X! if (unit) set_motor(0,0); X! else set_motor(1,0); X } X X fd_turnon(unit) X--- 282,288 ---- X int unit; X { X fd_unit[unit].motor = 0; X! set_motor(unit,0); X } X X fd_turnon(unit) X*************** X*** 327,339 **** X int flags; X { X int unit = FDUNIT(minor(dev)); X! /*int type = FDTYPE(minor(dev));*/ X int s; X X fdopenf = 1; X /* check bounds */ X if (unit >= NFD) return(ENXIO); X! /*if (type >= NUMTYPES) return(ENXIO);*/ X X /* Set proper disk type, only allow one type */ X return 0; X--- 327,339 ---- X int flags; X { X int unit = FDUNIT(minor(dev)); X! int type = FDTYPE(minor(dev)); X int s; X X fdopenf = 1; X /* check bounds */ X if (unit >= NFD) return(ENXIO); X! if (type >= NUMTYPES) return(ENXIO); X X /* Set proper disk type, only allow one type */ X return 0; X*************** X*** 442,449 **** X dp = &fd_unit[fd_drive].head; X bp = dp->b_actf; X read = bp->b_flags & B_READ; X! /*ft = &fd_types[FDTYPE(bp->b_dev)];*/ X! ft = &fd_types[fd_unit[fd_drive].type]; X X switch (fd_state) { X case 1 : /* SEEK DONE, START DMA */ X--- 442,449 ---- X dp = &fd_unit[fd_drive].head; X bp = dp->b_actf; X read = bp->b_flags & B_READ; X! ft = &fd_types[FDTYPE(bp->b_dev)]; X! /*ft = &fd_types[fd_unit[fd_drive].type];*/ X X switch (fd_state) { X case 1 : /* SEEK DONE, START DMA */ END-of-fd.patch echo x - mtools.patch sed 's/^X//' >mtools.patch << 'END-of-mtools.patch' X*** devices.c.0_1 Sat Jun 27 23:05:01 1992 X--- devices.c Sat Aug 29 18:59:22 1992 X*************** X*** 20,34 **** X #ifdef __386BSD__ X struct device devices[] = { X {'A', "/dev/rfd0a", 0L, 12, 0, (int (*) ()) 0, 80, 2, 18}, /* 1.44m */ X! {'A', "/dev/rfd0a", 0L, 12, 0, (int (*) ()) 0, 80, 2, 15}, /* 1.2m */ X! {'A', "/dev/rfd0a", 0L, 12, 0, (int (*) ()) 0, 80, 2, 9}, /* 720k */ X! {'A', "/dev/rfd0a", 0L, 12, 0, (int (*) ()) 0, 40, 2, 9}, /* 360k */ X! {'A', "/dev/rfd0a", 0L, 12, 0, (int (*) ()) 0, 40, 2, 8}, /* 320k */ X {'B', "/dev/rfd1a", 0L, 12, 0, (int (*) ()) 0, 80, 2, 18}, /* 1.44m */ X! {'B', "/dev/rfd1a", 0L, 12, 0, (int (*) ()) 0, 80, 2, 15}, /* 1.2m */ X! {'B', "/dev/rfd1a", 0L, 12, 0, (int (*) ()) 0, 80, 2, 9}, /* 720k */ X! {'B', "/dev/rfd1a", 0L, 12, 0, (int (*) ()) 0, 40, 2, 9}, /* 360k */ X! {'B', "/dev/rfd1a", 0L, 12, 0, (int (*) ()) 0, 40, 2, 8}, /* 320k */ X {'\0', (char *) NULL, 0L, 0, 0, (int (*) ()) 0, 0, 0, 0} X }; X #endif /* __386BSD__ */ X--- 20,36 ---- X #ifdef __386BSD__ X struct device devices[] = { X {'A', "/dev/rfd0a", 0L, 12, 0, (int (*) ()) 0, 80, 2, 18}, /* 1.44m */ X! {'A', "/dev/rfd0b", 0L, 12, 0, (int (*) ()) 0, 80, 2, 15}, /* 1.2m */ X! {'A', "/dev/rfd0c", 0L, 12, 0, (int (*) ()) 0, 80, 2, 9}, /* 720k */ X! {'A', "/dev/rfd0d", 0L, 12, 0, (int (*) ()) 0, 40, 2, 9}, /* 360k */ X! {'A', "/dev/rfd0e", 0L, 12, 0, (int (*) ()) 0, 40, 2, 9}, /* 360k */ X! {'A', "/dev/rfd0f", 0L, 12, 0, (int (*) ()) 0, 40, 2, 8}, /* 320k */ X {'B', "/dev/rfd1a", 0L, 12, 0, (int (*) ()) 0, 80, 2, 18}, /* 1.44m */ X! {'B', "/dev/rfd1b", 0L, 12, 0, (int (*) ()) 0, 80, 2, 15}, /* 1.2m */ X! {'B', "/dev/rfd1c", 0L, 12, 0, (int (*) ()) 0, 80, 2, 9}, /* 720k */ X! {'B', "/dev/rfd1d", 0L, 12, 0, (int (*) ()) 0, 40, 2, 9}, /* 360k */ X! {'B', "/dev/rfd1e", 0L, 12, 0, (int (*) ()) 0, 40, 2, 9}, /* 360k */ X! {'B', "/dev/rfd1f", 0L, 12, 0, (int (*) ()) 0, 40, 2, 8}, /* 320k */ X {'\0', (char *) NULL, 0L, 0, 0, (int (*) ()) 0, 0, 0, 0} X }; X #endif /* __386BSD__ */ END-of-mtools.patch exit -- -------------------------------Andrew Olausson-------------------------------- --------------------------Unemployed Unix Specialist-------------------------- ------------------------------pao@cd.chalmers.se------------------------------ -------------------------------pa-ola@proxxi.se-------------------------------