From owner-FreeBSD-users-jp@jp.freebsd.org  Mon Jul  8 17:33:23 1996
Received: by mail.jp.freebsd.org (8.7.3+2.6Wbeta5/8.7.3) id RAA26489
	Mon, 8 Jul 1996 17:33:23 +0900 (JST)
Received: by mail.jp.freebsd.org (8.7.3+2.6Wbeta5/8.7.3) with SMTP id RAA26484
	for <FreeBSD-users-jp@jp.freebsd.org>; Mon, 8 Jul 1996 17:33:21 +0900 (JST)
Received: from sonygw.sony.co.jp ([43.0.1.249]) by sonyinet.sony.co.jp (8.6.10/3.4W4-96030410) with ESMTP id RAA18718; Mon, 8 Jul 1996 17:33:18 +0900
Received: from s64.saskg.semicon.sony.co.jp ([43.0.234.82]) by sonygw.sony.co.jp (8.7.5+2.6Wbeta6/3.4W-96060508) with ESMTP id RAA24169; Mon, 8 Jul 1996 17:33:01 +0900 (JST)
Received: from s64 by s64.saskg.semicon.sony.co.jp (8.7.4+2.6Wbeta6/3.4W5-Mimoric1.2-MX)
	id RAA24578; Mon, 8 Jul 1996 17:33:12 +0900 (JST)
Message-Id: <199607080833.RAA24578@s64.saskg.semicon.sony.co.jp>
To: FreeBSD-users-jp@jp.freebsd.org, suehiro@csl.cl.nec.co.jp
cc: saeki@saskg.semicon.sony.co.jp
Date: Mon, 08 Jul 1996 17:33:12 +0900
From: Takashi Saeki <saeki@saskg.semicon.sony.co.jp>
Reply-To: FreeBSD-users-jp@jp.freebsd.org
X-Distribute: distribute [version 2.1 (Alpha) patchlevel=19]
X-Sequence: FreeBSD-users-jp 2843
Subject: [FreeBSD-users-jp 2843] 3-MODE FDD patch with auto RPM selection
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org

$B:4Gl!w%=%K!<$G$9!#(B

$BBgJQ$*BT$?$;$7$^$7$?!#<+F0@Z$jBX$(BP1~$N(B 2HD(98) $B%Q%C%A(B for PC $B$G$9!#(B
SMC $B$N(B FDC37C665 $B$H(B DENSEL $B%T%s$G2sE>B.EY$r@Z$jBX$($i$l$k(B 3 $B%b!<%I(B
3.5 $B%$%s%A(B FDD $B$NAH9g$;$K$*$$$F2sE>?t$N<+F0@ZBX$($,2DG=$K$J$j$^$7$?!#(B
# $B<+J,$G$O(B $B$"$^$jI,MW@-$,L5$/$J$C$F$-$?$N$G$D$$J|CV$7$F$7$^$$!"(B
# $B<+F0@Z$jBX$($rBT$C$F$/$@$5$C$F$$$?J}$K$O?=$7Lu$J$$$3$H$r$7$^$7$?!#(B(^_^;

$B$*4j$$!'(B
	FDC37C665 $B0J30$N(B FDC $B$r;HMQ$7$F$$$k%^%6!<%\!<%I$r$*;}$A$NJ}$O(B
	FDC $B$N%a!<%+!<$H7?HV$r65$($F$/$@$5$$!#(B
	$B$G$-$l$P%F%9%H$K$b6(NO$7$F$$$?$@$1$k$H$"$j$,$?$$$N$G$9$,!D!D(B


$B@hF|(B FreeBSD 2.1.0(98) RELEASE $B$,%j%j!<%9$5$l$^$7$?$,!"$3$l$K$O(B
$(FreeBSD98)/tools98/src/mtools $B$K(B 1KB/Sect $B$N07$($k(B mtools $B$,4^$^$l$F$$$^$9!#(B
$B$3$N(B mtools $B$rMxMQ$9$l$P!"(Bfd $B%G%P%$%9$K>/$7<j$r2C$($k$@$1$G(B
PC-98 $B$N(B 2HD MSDOS $B%G%#%9%/!J(B 1KB/Sect, 1232Sect/Disk $B!K$r(B
$B%"%/%;%9$9$k$3$H$,$G$-$^$9!#6=L#$N$"$kJ}$O%F%9%H$7$F$_$F$/$@$5$$!#(B
$B:#%P!<%8%g%s$+$i(B SMC $B$N(B FDC37C665 $B$H(B DENSEL $B%T%s$G2sE>B.EY$r@Z$jBX$($i$l$k(B
3 $B%b!<%I(B 3.5 $B%$%s%A(B FDD $B$NAH9g$;$K$*$$$F2sE>?t$N<+F0@Z$jBX$($,(B
$B2DG=$K$J$j$^$7$?!#(B

$B$J$*!"F0:n3NG'$O(B 2.1.0-RELEASE $B$G$N$_9T$C$F$$$^$9$,!"Ev%Q%C%A$K4XO"$9$kItJ,$K(B
$BBg$-$JJQ99$O9T$o$l$F$$$^$;$s$N$G!"(B2.1-960627-SNAP/2.2-960612-SNAP $BEy$G$b(B
$BE,MQ2DG=$@$H;W$o$l$^$9!#(B


$B$3$l$O%F%9%H7k2L%&%'%"(B (^_^; $B$H$7$^$9$N$G!"%F%9%H$7$F2<$5$kJ}$O(B
$BF0:n$9$k!?$7$J$$$K4X$o$i$:7k2L%l%]!<%H$r$*4j$$$7$^$9!#(B

$B;d$,%F%9%H$r9T$C$?4D6-$O0J2<$NDL$j$G$9!#(B
$B:#$^$G$N$H$3$mFI$_=q$-$H$b$KLdBj$"$j$^$;$s$,!"(B
$B$4<+J,$N@UG$$K$*$$$F;HMQ$7$F$/$@$5$$!#(B(^_^;

	$B<+:n(B AT $B8_495!(B	ASUS P/I-P55TP4XE(Pentium/166MHz)
	FreeBSD-2.1.0-RELEASE (+ od-driver-2.1.0R-PL3)
	3.5 $B%$%s%A%I%i%$%V!'%_%D%_(B   D353T5
	5   $B%$%s%A%I%i%$%V!'F|K\EE5$(B FD-1155C


$B!{(B 2.1.0-RELEASE $B$G(B PC-98 $B$N(B 2HD MSDOS $B%G%#%9%/$r%"%/%;%9$9$kJ}K!(B

 $BCm!'%Q%C%A$NEv$FJ}$d%+!<%M%k$N%j%3%s%U%#%0J}K!$K$D$$$F$O@bL@$7$^$;$s$N$G(B
     $B$o$+$i$J$$J}$OB>$N%I%-%e%a%s%H$r;29M$K$7$F$/$@$5$$!#!JL5@UG$(B (^_^; $B!K(B

 1. /usr/src/sys $B$N2<$G(B kernel $B$N%Q%C%A$rEv$F$F$/$@$5$$!#(B

 2. /usr/src/sys/i386/conf $B$GE,Ev$J(B config $B%U%!%$%k$r:n@.$7!"(B
    $B0J2<$N$h$&$J(B options $B9T$rDI2C$7$^$9!#(B
    $B"((B FreeBSD-user@ibbsal.or.jp (FreeBSD-user 1672) $B$G8x3+$7$?$b$N$H$O(B
       $B%*%W%7%g%sL>$,0[$J$C$F$$$^$9$N$G$4Cm0U2<$5$$!#(B

options		"USE_PC98FD"		#Use NEC PC98's 1KB*1232 2HD floppy
options		"FDC37C665"		#Auto rpm select in USE_PC98FD

    $B8@$&$^$G$b$J$$$H;W$$$^$9$,!"(BFDC37C665 $B0J30$N(B FDC $B$r$*;H$$$NJ}$O(B
    options "FDC37C665" $B$rDj5A$7$J$$$G2<$5$$!#(B

 3. config $B%3%^%s%I$r<B9T$7!"%+!<%M%k$N%3%s%Q%$%k!"%$%s%9%H!<%k$r9T$$$^$9!#(B

 4. /dev/MAKEDEV $B$r(B /usr/src/etc/etc.i386/MAKEDEV $B$KF~$lBX$($^$9!#(B
    /dev $B$G(B sh ./MAKEDEV fd0 fd1 $B$r<B9T$7!"(Bfd $B%G%P%$%9%U%!%$%k$r(B
    $B:n$jD>$7$F$*$-$^$9!#(B
    rfd0.1232 $B$H$$$&%G%P%$%9%U%!%$%kEy$,=PMh$F$$$k$O$:$G$9!#(B
    $B"((B rfd[01].1232 $B$N(B minor number $B$,A02s$H$O0[$J$C$F$$$^$9$N$G(B
       $BI,$::n$jD>$7$F$*$$$F2<$5$$!#(B

 5. $B0lC6(B shutdown $B$7!"?7$7$$%+!<%M%k$,@5>o$KF0:n$9$k$3$H$r3NG'$7$^$9!#(B

 6. mtools $B$N%=!<%9$rMQ0U$7$^$9!#(B
    FreeBSD-2.1.0-RELEASE(98) $B$N(B $(FREEBSD98)/tools98/src/mtools $B$r(B
    $B;HMQ$7$F$/$@$5$$!#(B

 7. mtools $B$N%Q%C%A$rEv$F!"(Bmake $B$7$^$9!#(B
    /usr/local/bin $B$K%$%s%9%H!<%k$9$kA0$K%F%9%H$r9T$C$?J}$,NI$$$G$7$g$&!#(B
    ./mdir A: $B$G(B PC-98 $B$N(B 2HD $B%G%#%9%/$,%"%/%;%9$G$-$k$O$:$G$9!#(B
    mtools $B$N%3%s%Q%$%k;~$K(B AB_MODE $B$r;XDj$7$F$"$j$^$9$N$G!"(B
    $B%G%#%9%/$N%U%)!<%^%C%H$K$h$i$:(B A:, B: $B$G%"%/%;%92DG=$G$9!#(B
    $B<+F0@Z$jBX$($,2DG=$J4D6-$G$"$l$P!"%U%)!<%^%C%H$r0U<1$9$kI,MW$O(B
    $BA4$/$"$j$^$;$s!#(B\(^_^)/

 8. $B?7$7$$(B mtools $B$r(B make install $B$7$^$9!#(B
    mtools $B$N%Q%C%1!<%8$r;HMQ$7$F$$$kJ}$O(B pkg_delete $B$d(B pkg_manage $B$G(B
    mtools $B$N%Q%C%1!<%8$r:o=|$7$F$*$$$?$[$&$,NI$$$G$7$g$&!#(B

$B:G8e$K$J$j$^$7$?$,!"(BFreeBSD(98) $B0\?"%A!<%`$NEXNO$,$J$1$l$P(B
$B$3$N%Q%C%A$r:n@.$9$k$3$H$O$G$-$^$;$s$G$7$?!#0\?"%A!<%`$K46<U$7$^$9!#(B
$B$^$?!"%l%]!<%H$r$*4s$;2<$5$C$?>>ED!w:eBg$5$s$K$b46<U$$$?$7$^$9!#(B

--------------------------------------------------------------------
    $B:4GlN4;J(B  $B%=%K!<3t<02q<R!!%;%_%3%s%@%/%?%+%s%Q%K!<(B
              $BBh#1#L#S#IItLg!!@_7W5;=QIt!!5;=Q?d?J2]!!O@M}#C#A#D78(B
              E-mail : saeki@saskg.semicon.sony.co.jp
--------------------------------------------------------------------

kernel $B$N%Q%C%A(B --------------------------------
diff -u etc/etc.i386/MAKEDEV.00 etc/etc.i386/MAKEDEV
--- MAKEDEV.00	Fri Nov 10 13:42:37 1995
+++ MAKEDEV	Sun Jul  8 00:00:00 1996
@@ -366,6 +366,9 @@
 		# ln ${name}${unit}.360 ${name}${unit}48ds9
 		# ln r${name}${unit}.360 r${name}${unit}48ds9
 
+		mknod ${name}${unit}.1232  b $blk `expr $unit '*' 64 + 15`
+		mknod r${name}${unit}.1232 c $chr `expr $unit '*' 64 + 15`
+
 		chgrp operator ${name}${unit}* r${name}${unit}*
 		chmod 640 ${name}${unit}* r${name}${unit}*
 		;;
diff -u sys/i386/isa/fd.c.00 sys/i386/isa/fd.c
--- fd.c.00	Mon Jun 12 04:31:19 1995
+++ fd.c	Sun Jul  8 00:00:00 1996
@@ -173,8 +173,13 @@
 #define FD_NOT_VALID -2
 #define FDC_ERRMAX	100	/* do not log more */
 
+#ifdef USE_PC98FD
+#define NUMTYPES 15
+#define NUMDENS  (NUMTYPES - 7)
+#else /* USE_PC98FD */
 #define NUMTYPES 14
 #define NUMDENS  (NUMTYPES - 6)
+#endif /* USE_PC98FD */
 
 /* These defines (-1) must match index for fd_types */
 #define F_TAPE_TYPE	0x020	/* bit for fd_types to indicate tape */
@@ -195,6 +200,9 @@
 #define FD_720in5_25    13
 #define FD_360in5_25    14
 
+#ifdef USE_PC98FD
+#define FD_1232         15
+#endif /* USE_PC98FD */
 
 struct fd_type fd_types[NUMTYPES] =
 {
@@ -213,6 +221,9 @@
 { 10,2,0xFF,0x10,80,1600,1,FDC_300KBPS,2,0x2E,1 }, /*  800K in HD 5.25in */
 {  9,2,0xFF,0x20,80,1440,1,FDC_300KBPS,2,0x50,1 }, /*  720K in HD 5.25in */
 {  9,2,0xFF,0x23,40, 720,2,FDC_300KBPS,2,0x50,1 }, /*  360K in HD 5.25in */
+#ifdef USE_PC98FD
+{  8,3,0xFF,0x35,77,1232,1,FDC_500KBPS,2,0x74,1 }, /* 1.25M in HD 1KB/sec 5.25/3.5 */
+#endif /* USE_PC98FD */
 };
 
 #define DRVS_PER_CTLR 2		/* 2 floppies */
@@ -236,6 +247,9 @@
 #define	FD_ACTIVE	0x02	/* it's active		*/
 #define	FD_MOTOR	0x04	/* motor should be on	*/
 #define	FD_MOTOR_WAIT	0x08	/* motor coming up	*/
+#ifdef USE_PC98FD
+#define	FD_360rpm	0x10	/* 360rpm mode		*/
+#endif /* USE_PC98FD */
 	int	skip;
 	int	hddrv;
 #define FD_NO_TRACK -2
@@ -983,8 +997,15 @@
 	fdc = fd_data[fdu].fdc;
 	if ((fdc == NULL) || (fd_data[fdu].type == NO_TYPE))
 		return(ENXIO);
+#ifdef USE_PC98FD
+	if ((type > NUMDENS) && (type != FD_1232))
+#else /* USE_PC98FD */
 	if (type > NUMDENS)
+#endif /* USE_PC98FD */
 		return(ENXIO);
+#ifdef USE_PC98FD
+	fd_data[fdu].flags &= ~FD_360rpm;
+#endif /* USE_PC98FD */
 	if (type == 0)
 		type = fd_data[fdu].type;
 	else {
@@ -1006,6 +1027,10 @@
 				case FD_1440:
 					type = FD_1440in5_25;
 					break;
+#ifdef USE_PC98FD
+				case FD_1232:
+					break;
+#endif /* USE_PC98FD */
 				case FD_820:
 					type = FD_820in5_25;
 					break;
@@ -1025,12 +1050,19 @@
 			case FD_1440:
 				if (   type != FD_1720
 				    && type != FD_1480
+#ifdef USE_PC98FD
+				    && type != FD_1232
+#endif /* USE_PC98FD */
 				    && type != FD_1200
 				    && type != FD_820
 				    && type != FD_800
 				    && type != FD_720
 				    )
 					return(ENXIO);
+#ifdef USE_PC98FD
+				if ( type == FD_1232 || type == FD_1200 )
+					fd_data[fdu].flags |= FD_360rpm;
+#endif /* USE_PC98FD */
 				break;
 			}
 		}
@@ -1303,6 +1335,26 @@
 		fd->skip = 0;
 		fdc->fd = fd;
 		fdc->fdu = fdu;
+#ifdef USE_PC98FD
+#ifdef FDC37C665
+		/* rpm change sequence for SMC FDC76C665 */
+		disable_intr();
+		outb(fdc->baseport, 0x55);
+		DELAY(10);
+		outb(fdc->baseport, 0x55);
+		enable_intr();
+		DELAY(10);
+		outb(fdc->baseport, 0x05);
+		DELAY(10);
+		if(fd->flags & FD_360rpm)
+			outb(fdc->baseport + FDCFG, 0x18);	/* DENSEL on */
+		else
+			outb(fdc->baseport + FDCFG, 0x00);
+		DELAY(10);
+		outb(fdc->baseport, 0xaa);
+		DELAY(10);
+#endif /* FDC37C665 */
+#endif /* USE_PC98FD */
 		outb(fdc->baseport+FDCTL, fd->ft->trans);
 		TRACE1("[0x%x->FDCTL]", fd->ft->trans);
 		/*******************************************************\
diff -u sys/i386/isa/fdreg.h.00 sys/i386/isa/fdreg.h
--- fdreg.h.00	Mon Sep 26 08:37:38 1994
+++ fdreg.h	Sun Jul  8 00:00:00 1996
@@ -51,6 +51,11 @@
 #define	FDO_MOEN2	0x40	/*  motor enable drive 2 */
 #define	FDO_MOEN3	0x80	/*  motor enable drive 3 */
 
+#ifdef USE_PC98FD
+#ifdef FDC37C665
+#define FDCFG	1	/* SMC FDC37C665 Configration Register */
+#endif /* FDC37C665 */
+#endif /* USE_PC98FD */
 #define	FDSTS	4	/* NEC 765 Main Status Register (R) */
 #define	FDDATA	5	/* NEC 765 Data Register (R/W) */
 #define	FDCTL	7	/* Control Register (W) */

mtools $B$N%Q%C%A(B --------------------------------
--- Makefile.00	Tue Apr 23 12:27:37 1996
+++ Makefile	Mon Jul  8 00:00:00 1996
@@ -14,13 +14,15 @@
 #CFLAGS = -O -M2e -DINT16 -DXENIX -DLOCKF
 #LDFLAGS = -s -M2e -i -f 5000
 
-CFLAGS	= -O -DBSD -DMULTISECTORSIZE -DPC98 -DSAFEABORT -DRELYTABLE -DSMARTNAME \
-	-DDEV_OD	# -DAB_MODE
-LDFLAGS	= -static
+CFLAGS	= -O2 -DBSD -DMULTISECTORSIZE -DPC98 -DUSE_PC98FD -DSAFEABORT -DRELYTABLE -DSMARTNAME \
+	-DDEV_OD -DAB_MODE
+#LDFLAGS	= -static
 LD	= $(CC)
 LINT	= lint
 SHLIB	=
 SHAR	= shar -a
+GZIP	= gzip
+PREFIX  = /usr/local
 BINDIR	= ${PREFIX}/bin
 MANEXT	= 1
 MANDIR	= ${PREFIX}/man/man$(MANEXT)
@@ -29,10 +31,10 @@
 #SHOBJ	= /lib/crt0s.o /lib/shlib.ifile
 #LD	= ld
 
-#PROGS	= mattrib mcd mcopy mdel mdir mformat mlabel mmd mrd mread mren \
-#	mtype mwrite mkmanifest
+PROGS	= mattrib mcd mcopy mdel mdir mformat mlabel mmd mrd mread mren \
+	mtype mwrite mkmanifest
 # for tools98
-PROGS	= mcd mdir mread 
+#PROGS	= mcd mdir mread 
 
 MATTRIB	= mattrib.o buf_read.o buf_write.o devices.o dir_read.o \
 	dir_write.o expand.o fat_read.o init.o match.o parse.o subdir.o
@@ -126,6 +128,8 @@
 	install -c -m 644 Mtype.1 $(MANDIR)/mtype.$(MANEXT)
 	install -c -m 644 Mwrite.1 $(MANDIR)/mwrite.$(MANEXT)
 	install -c -m 644 Mkmanifest.1 $(MANDIR)/mkmanifest.$(MANEXT)
+	for man in $(PROGS) mtools; do $(GZIP) $(MANDIR)/$$man.$(MANEXT); done
 
 clean:
 	rm $(PROGS) *.o core a.out tags TAGS
--------------------------------
