nemossan@uitec.ac.jp (Sakurao NEMOTO) (04/09/91)
The following is a portation from NIKKEI-MIX, Japanese commercial-BBS. If
you want to contact with original author, please post here, comp.os.minix
or e-mail me, nemossan@uitec.ac.jp.
91.04.09 (Tu) 12:00 nemossan@mix, nemossan@uitec.ac.jp
------------------------------------------------------------------------
==========
minix/fixes No.575, From: n.nonaka, 2551-chars, Tue Apr 9 00:43:52 1991
----------
title: MacMinix raw floppy V0.1
In MacMinix, block-devices such as FD/HD are accessed as File-systems on
MacOS. I made a device driver which directly access FDs. Its minor numbers
are
16: for internal-FDD
17: for external-FDD,
thus, please made devices, for example
# mknod /dev/rfd0 b 2 16 1440
There may be no-use if you are using conventional-FDD, (I mead *NOT* super-
drive), but if you are using super-drive, you can access 3.5-inched 720kB/
1440kB FDs. I suppose this device-driver is mountable on ST-Minix, but I
have not checked.
n.nonake@mix
(translated by nemossan@mix)
------------------------------- cut here -------------------------
Andrew Tanenbaum, MINIX, (C)1987. Reproduced by permission of
Prentice Hall, Englewood Cliffs, New Jersey.
*** floppy.c.old Thu Nov 1 23:29:14 1990
--- floppy.c Tue Apr 9 00:11:54 1991
***************
*** 102,107 ****
--- 102,108 ----
{
/* Carry out a read or write request from the disk. */
int r, device, errors = 0;
+ int raw = 0;
register struct floppy *f;
IOParam *pbio;
message m;
***************
*** 110,115 ****
--- 111,120 ----
/* Decode the f_message parameters. */
device = m_ptr->DEVICE;
+ if (device >= 16) {
+ device -= 16;
+ raw = 1;
+ }
if (device < 0 || device >= NR_DEVICES)
return(EIO);
if (m_ptr->COUNT != BLOCK_SIZE)
***************
*** 124,134 ****
f = &floppy[device];
/* check for eof */
if ((m_ptr->POSITION / BLOCK_SIZE) > f->nblocks)
return(0);
pbio = &f->pb.ParamBlkType.ioParam;
f->pb.ioCompletion = (char *)f_int;
! pbio->ioRefNum = f->fref;
pbio->ioActCount = 0;
pbio->ioBuffer = (char *)user_phys;
pbio->ioReqCount = m_ptr->COUNT;
--- 129,148 ----
f = &floppy[device];
/* check for eof */
+ if (raw) {
+ f->nblocks = 1440;
+ }
if ((m_ptr->POSITION / BLOCK_SIZE) > f->nblocks)
return(0);
pbio = &f->pb.ParamBlkType.ioParam;
f->pb.ioCompletion = (char *)f_int;
! if (raw) {
! pbio->ioRefNum = -5;
! f->pb.ioVRefNum = device + 1;
! }
! else {
! pbio->ioRefNum = f->fref;
! }
pbio->ioActCount = 0;
pbio->ioBuffer = (char *)user_phys;
pbio->ioReqCount = m_ptr->COUNT;
------------------------------- cut here -------------------------
91.04.09 (Tu) 12:08 nemossan@mix, nemossan@uitec.ac.jp