Newsgroups: fj.os.linux
From: sengoku@sdl.hitachi.co.jp (Hiroaki Sengoku)
Subject: Dynabook 1.44M/1.2M floppy disk drive
Message-ID: <CECMsq.Cqy@sdl99m.sdl.hitachi.co.jp>
Organization: Systems Development Lab., Hitachi Ltd., JAPAN
Distribution: fj
Date: Mon, 4 Oct 1993 10:29:13 JST

$B@g@P!wF|N)$G$9!#(B

  $B3'$5$s$4B8CN$N$h$&$K!"(BDynabook $B$N(B floppy disk drive $B$O!"(BDOS $B$G$O(B 1.2M
<-> 1.44M $B$N<+F0@ZBX$,=PMh$k$N$K!"(Blinux $B$G$O=PMh$^$;$s!#;d$OIaCJ(B 1.44M
boot $B$N@_Dj$K$7$F$$$k$N$G!"(B 1.2M $B$N(B disk $B$,FI$a$:ITJX$G$7$?!#$=$3$G$A$g$C(B
$B$H(B kernel $B$K(B patch $B$r$"$F$FFI$a$k$h$&$K$7$^$7$?!#(B

# $B$9$G$KC/$+$,$d$C$F$$$k$+$J(B ? $B>/$J$/$H$b(B linux ML $B$H(B fj.os.linux $B$G$O=q(B
# $B$+$l$F$$$J$$$H;W$$$^$9$,!"$A$g$C$H?4G[!#(B^^;)

  $B;d$O(B mtools $B$G(B B: $B$r(B 1.2M drive $B$N@_Dj$K$7$F;H$C$F$^$9!#$J$+$J$+JXMx!#(B
  $B$b$A$m$s(B mount -t msdos /dev/fd0h1200 /mnt $B$b;H$($^$9!#(B

----- $B$-$C$A$g$s$J(B -----8<----- $B$-$C$A$g$s$J(B -----
--- kernel/chr_drv/keyboard.c.org	Sun Aug 15 03:52:34 1993
+++ kernel/chr_drv/keyboard.c	Sat Oct  2 18:29:00 1993
@@ -731,3 +731,9 @@
 	mark_bh(KEYBOARD_BH);
 	return kmem_start;
 }
+
+void switch_fd(short x) {
+	kb_wait();
+	outb(0xBB,0x64);
+	send_data(x);
+}
--- kernel/blk_drv/floppy.c.org	Sun Aug 15 20:24:36 1993
+++ kernel/blk_drv/floppy.c	Sat Oct  2 18:48:50 1993
@@ -989,6 +989,8 @@
     }
 }
 
+void switch_fd(short x);
+
 static void redo_fd_request(void)
 {
 	unsigned int block;
@@ -1091,6 +1093,13 @@
 		seek = 1;
 	sector++;
 	del_timer(motor_off_timer + current_drive);
+	/* change floppy mode. by sengoku@sdl.hitachi.co.jp */
+	if( floppy->size % 1200 ) {	/* only for TOSHIBA j-3100 */
+		switch_fd(0x00);	/* 1.44 Mbytes mode */
+	} else {
+		switch_fd(0x10);	/* 1.2  Mbytes mode */
+	}
+	/* end of change */
 	floppy_on(current_drive);
 }
 
----- $B$-$C$A$g$s$J(B -----8<----- $B$-$C$A$g$s$J(B -----

  $B$J$*!"(Bdrive $B$N(B mode $B@ZBX$($NJ}K!$OEl<G$N%F%/%K%+%k%^%K%e%"%k$K5-:\$5$l(B
$B$F$$$J$$$N$G!";n9T:x8m(B :-) $B$7$F8+$D$1$^$7$?!#$=$N$?$a2?$+JQ$J$3$H$r$7$F(B
$B$$$k$+$bCN$l$^$;$s!#$=$N>l9g$O8f;XE&D:$1$l$P9,$$$G$9!#(B
--
				$B@g@P9@L@!w%7%9%F%`3+H/8&5f=j!%F|N)@=:n=j(B
					sengoku@sdl.hitachi.co.jp (105u)
-------------------------------------------------------------------------------
Newsgroups: fj.os.linux
From: sengoku@sdl.hitachi.co.jp (Hiroaki Sengoku)
Subject: Re: Dynabook 1.44M/1.2M floppy disk drive
In-Reply-To: sengoku@sdl.hitachi.co.jp's message of Mon, 4 Oct 1993 01:29:13 GMT
Message-ID: <CHyK7D.3o9@sdl99m.sdl.hitachi.co.jp>
Followup-To: fj.os.linux
Organization: Systems Development Lab., Hitachi Ltd., JAPAN
References: <CECMsq.Cqy@sdl99m.sdl.hitachi.co.jp>
Distribution: fj
Date: Mon, 13 Dec 1993 14:21:12 JST

$B@g@P!wF|N)$G$9!#(B

$B;d(B:
|   $B3'$5$s$4B8CN$N$h$&$K!"(BDynabook $B$N(B floppy disk drive $B$O!"(BDOS $B$G$O(B 1.2M
| <-> 1.44M $B$N<+F0@ZBX$,=PMh$k$N$K!"(Blinux $B$G$O=PMh$^$;$s!#;d$OIaCJ(B 1.44M
| boot $B$N@_Dj$K$7$F$$$k$N$G!"(B 1.2M $B$N(B disk $B$,FI$a$:ITJX$G$7$?!#$=$3$G$A$g$C(B
| $B$H(B kernel $B$K(B patch $B$r$"$F$FFI$a$k$h$&$K$7$^$7$?!#(B

  $B$H$$$&(B patch $B$r0JA0N.$7$?$N$G$9$,!"(Bfloppy $B$NFI$_=q$-$,CY$/$J$k$H$$$&(B 
($BCWL?E*$J(B) $BI{:nMQ$,$"$j$^$7$?!#%P%0Js9p$O0l7o$7$+Mh$J$+$C$?$N$G!"$_$J$5(B
$B$sE,Ev$K=$@5$5$l$?$N$@$H;W$$$^$9$,!"G0$N$?$a(B patchlevel 14 $B$KBP$9$k(B 
patch $B$r8x3+$7$^$9!#(B

# $BC/$b;H$C$F$J$+$C$?$j$7$F!#(B

----- $B$-$C$A$g$s$J(B -----8<----- $B$-$C$A$g$s$J(B -----
--- drivers/char/keyboard.c.org	Tue Nov 23 21:51:04 1993
+++ drivers/char/keyboard.c	Fri Dec 10 23:38:50 1993
@@ -781,3 +781,11 @@
 	mark_bh(KEYBOARD_BH);
 	return kmem_start;
 }
+
+/* change floppy mode. patched by sengoku@sdl.hitachi.co.jp */
+/* NOTICE: This routine is only for TOSHIBA J-3100          */
+void switch_fd(short x) {
+	kb_wait();
+	outb(0xBB,0x64);
+	send_data(x);
+}
--- drivers/block/floppy.c.org	Tue Nov 23 03:47:46 1993
+++ drivers/block/floppy.c	Sat Dec 11 01:16:55 1993
@@ -991,6 +991,23 @@
     }
 }
 
+/* change floppy mode. patched by sengoku@sdl.hitachi.co.jp */
+/* NOTICE: This routine is only for TOSHIBA J-3100          */
+void switch_fd(short x);
+static void change_floppy_mode(void) {
+	static int prev_mode = -1;
+	int mode;
+	mode = floppy->size % 1200;
+	if( mode != prev_mode ) {
+		if( mode ) {
+			switch_fd(0x00);	/* 1.44 Mbytes mode */
+		} else {
+			switch_fd(0x10);	/* 1.2  Mbytes mode */
+		}
+		prev_mode = mode;
+	}
+}
+
 static void redo_fd_request(void)
 {
 	unsigned int block;
@@ -1036,6 +1053,7 @@
 				floppy++;
 		}
 	}
+	change_floppy_mode();	/* added by sengoku@sdl.hitachi.co.jp */
 	if (format_status != FORMAT_BUSY) {
 		if (current_drive != CURRENT_DEV) {
 			current_track = NO_TRACK;
----- $B$-$C$A$g$s$J(B -----8<----- $B$-$C$A$g$s$J(B -----
--
				$B@g@P9@L@!w%7%9%F%`3+H/8&5f=j!%F|N)@=:n=j(B
					sengoku@sdl.hitachi.co.jp (105u)
