summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkato <kato@FreeBSD.org>1999-12-28 07:38:38 +0000
committerkato <kato@FreeBSD.org>1999-12-28 07:38:38 +0000
commit0f669b4213e06a9194ddc05e8a3a40de7372937d (patch)
treeb5930876b943c1cb3a5c14abb2601aca57657b77
parent901351ff0de17a88861ad2abdd63aed4644eea3a (diff)
downloadFreeBSD-src-0f669b4213e06a9194ddc05e8a3a40de7372937d.zip
FreeBSD-src-0f669b4213e06a9194ddc05e8a3a40de7372937d.tar.gz
Added following modes:
5in HD 2 heads, 77 cylinders, 8 sectors/track, 1024 bytes/sector 5/3.5in DD 2 heads, 80 cylinders, 8 sectors/track, 512 bytes/sector Meanings of the rogrammer-readeble fd name were explained by Brian Fundakowski Feldman and Peter Wemm in hackers list and NOKUBI Hirotaka. Reviewed by: nyan
-rw-r--r--etc/MAKEDEV14
-rw-r--r--sys/dev/fdc/fdc.c29
-rw-r--r--sys/isa/fd.c29
3 files changed, 56 insertions, 16 deletions
diff --git a/etc/MAKEDEV b/etc/MAKEDEV
index 381dafb..a206140 100644
--- a/etc/MAKEDEV
+++ b/etc/MAKEDEV
@@ -502,6 +502,20 @@ fd*)
# ln -f ${name}${unit}.360 ${name}${unit}48ds9
# ln -f r${name}${unit}.360 r${name}${unit}48ds9
+ mknod ${name}${unit}.640 c $chr `expr $unit '*' 64 + 9`
+ mknod r${name}${unit}.640 c $chr `expr $unit '*' 64 + 9`
+ # ln -f ${name}${unit}.640 ${name}${unit}96ds8
+ # ln -f r${name}${unit}.640 r${name}${unit}96ds8
+ # ln -f ${name}${unit}.640 ${name}${unit}135ds8
+ # ln -f r${name}${unit}.640 r${name}${unit}135ds8
+
+ mknod ${name}${unit}.1232 c $chr `expr $unit '*' 64 + 10`
+ mknod r${name}${unit}.1232 c $chr `expr $unit '*' 64 + 10`
+ # ln -f ${name}${unit}.1232 ${name}${unit}96ds8
+ # ln -f r${name}${unit}.1232 r${name}${unit}96ds8
+ # ln -f ${name}${unit}.1232 ${name}${unit}135ds8
+ # ln -f r${name}${unit}.1232 r${name}${unit}135ds8
+
chgrp operator ${name}${unit}* r${name}${unit}*
;;
*)
diff --git a/sys/dev/fdc/fdc.c b/sys/dev/fdc/fdc.c
index 7b44573..e33bd75 100644
--- a/sys/dev/fdc/fdc.c
+++ b/sys/dev/fdc/fdc.c
@@ -106,8 +106,8 @@
#define FD_NOT_VALID -2
#define FDC_ERRMAX 100 /* do not log more */
-#define NUMTYPES 14
-#define NUMDENS (NUMTYPES - 6)
+#define NUMTYPES 17
+#define NUMDENS (NUMTYPES - 7)
/* These defines (-1) must match index for fd_types */
#define F_TAPE_TYPE 0x020 /* bit for fd_types to indicate tape */
@@ -120,13 +120,16 @@
#define FD_800 6
#define FD_720 7
#define FD_360 8
+#define FD_640 9
+#define FD_1232 10
-#define FD_1480in5_25 9
-#define FD_1440in5_25 10
-#define FD_820in5_25 11
-#define FD_800in5_25 12
-#define FD_720in5_25 13
-#define FD_360in5_25 14
+#define FD_1480in5_25 11
+#define FD_1440in5_25 12
+#define FD_820in5_25 13
+#define FD_800in5_25 14
+#define FD_720in5_25 15
+#define FD_360in5_25 16
+#define FD_640in5_25 17
static struct fd_type fd_types[NUMTYPES] =
@@ -139,6 +142,8 @@ static struct fd_type fd_types[NUMTYPES] =
{ 10,2,0xFF,0x10,80,1600,1,FDC_250KBPS,2,0x2E,1 }, /* 800K in HD 3.5in */
{ 9,2,0xFF,0x20,80,1440,1,FDC_250KBPS,2,0x50,1 }, /* 720K in HD 3.5in */
{ 9,2,0xFF,0x2A,40, 720,1,FDC_250KBPS,2,0x50,1 }, /* 360K in DD 5.25in */
+{ 8,2,0xFF,0x2A,80,1280,1,FDC_250KBPS,2,0x50,1 }, /* 640K in DD 5.25in */
+{ 8,3,0xFF,0x35,77,1232,1,FDC_500KBPS,2,0x74,1 }, /* 1.23M in HD 5.25in */
{ 18,2,0xFF,0x02,82,2952,1,FDC_500KBPS,2,0x02,2 }, /* 1.48M in HD 5.25in */
{ 18,2,0xFF,0x02,80,2880,1,FDC_500KBPS,2,0x02,2 }, /* 1.44M in HD 5.25in */
@@ -146,6 +151,7 @@ static struct fd_type fd_types[NUMTYPES] =
{ 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 */
+{ 8,2,0xFF,0x2A,80,1280,1,FDC_300KBPS,2,0x50,1 }, /* 640K in HD 5.25in */
};
#define DRVS_PER_CTLR 2 /* 2 floppies */
@@ -1377,6 +1383,7 @@ Fdopen(dev_t dev, int flags, int mode, struct proc *p)
case FD_720:
if ( type != FD_820
&& type != FD_800
+ && type != FD_640
)
return (ENXIO);
break;
@@ -1388,6 +1395,8 @@ Fdopen(dev_t dev, int flags, int mode, struct proc *p)
case FD_1440:
type = FD_1440in5_25;
break;
+ case FD_1232:
+ break;
case FD_820:
type = FD_820in5_25;
break;
@@ -1397,6 +1406,9 @@ Fdopen(dev_t dev, int flags, int mode, struct proc *p)
case FD_720:
type = FD_720in5_25;
break;
+ case FD_640:
+ type = FD_640in5_25;
+ break;
case FD_360:
type = FD_360in5_25;
break;
@@ -1411,6 +1423,7 @@ Fdopen(dev_t dev, int flags, int mode, struct proc *p)
&& type != FD_820
&& type != FD_800
&& type != FD_720
+ && type != FD_640
)
return(ENXIO);
break;
diff --git a/sys/isa/fd.c b/sys/isa/fd.c
index 7b44573..e33bd75 100644
--- a/sys/isa/fd.c
+++ b/sys/isa/fd.c
@@ -106,8 +106,8 @@
#define FD_NOT_VALID -2
#define FDC_ERRMAX 100 /* do not log more */
-#define NUMTYPES 14
-#define NUMDENS (NUMTYPES - 6)
+#define NUMTYPES 17
+#define NUMDENS (NUMTYPES - 7)
/* These defines (-1) must match index for fd_types */
#define F_TAPE_TYPE 0x020 /* bit for fd_types to indicate tape */
@@ -120,13 +120,16 @@
#define FD_800 6
#define FD_720 7
#define FD_360 8
+#define FD_640 9
+#define FD_1232 10
-#define FD_1480in5_25 9
-#define FD_1440in5_25 10
-#define FD_820in5_25 11
-#define FD_800in5_25 12
-#define FD_720in5_25 13
-#define FD_360in5_25 14
+#define FD_1480in5_25 11
+#define FD_1440in5_25 12
+#define FD_820in5_25 13
+#define FD_800in5_25 14
+#define FD_720in5_25 15
+#define FD_360in5_25 16
+#define FD_640in5_25 17
static struct fd_type fd_types[NUMTYPES] =
@@ -139,6 +142,8 @@ static struct fd_type fd_types[NUMTYPES] =
{ 10,2,0xFF,0x10,80,1600,1,FDC_250KBPS,2,0x2E,1 }, /* 800K in HD 3.5in */
{ 9,2,0xFF,0x20,80,1440,1,FDC_250KBPS,2,0x50,1 }, /* 720K in HD 3.5in */
{ 9,2,0xFF,0x2A,40, 720,1,FDC_250KBPS,2,0x50,1 }, /* 360K in DD 5.25in */
+{ 8,2,0xFF,0x2A,80,1280,1,FDC_250KBPS,2,0x50,1 }, /* 640K in DD 5.25in */
+{ 8,3,0xFF,0x35,77,1232,1,FDC_500KBPS,2,0x74,1 }, /* 1.23M in HD 5.25in */
{ 18,2,0xFF,0x02,82,2952,1,FDC_500KBPS,2,0x02,2 }, /* 1.48M in HD 5.25in */
{ 18,2,0xFF,0x02,80,2880,1,FDC_500KBPS,2,0x02,2 }, /* 1.44M in HD 5.25in */
@@ -146,6 +151,7 @@ static struct fd_type fd_types[NUMTYPES] =
{ 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 */
+{ 8,2,0xFF,0x2A,80,1280,1,FDC_300KBPS,2,0x50,1 }, /* 640K in HD 5.25in */
};
#define DRVS_PER_CTLR 2 /* 2 floppies */
@@ -1377,6 +1383,7 @@ Fdopen(dev_t dev, int flags, int mode, struct proc *p)
case FD_720:
if ( type != FD_820
&& type != FD_800
+ && type != FD_640
)
return (ENXIO);
break;
@@ -1388,6 +1395,8 @@ Fdopen(dev_t dev, int flags, int mode, struct proc *p)
case FD_1440:
type = FD_1440in5_25;
break;
+ case FD_1232:
+ break;
case FD_820:
type = FD_820in5_25;
break;
@@ -1397,6 +1406,9 @@ Fdopen(dev_t dev, int flags, int mode, struct proc *p)
case FD_720:
type = FD_720in5_25;
break;
+ case FD_640:
+ type = FD_640in5_25;
+ break;
case FD_360:
type = FD_360in5_25;
break;
@@ -1411,6 +1423,7 @@ Fdopen(dev_t dev, int flags, int mode, struct proc *p)
&& type != FD_820
&& type != FD_800
&& type != FD_720
+ && type != FD_640
)
return(ENXIO);
break;
OpenPOWER on IntegriCloud