Path: utzoo!utgpu!news-server.csri.toronto.edu!bonnie.concordia.ca!thunder.mcrcim.mcgill.edu!snorkelwacker.mit.edu!usc!cs.utexas.edu!uunet!munnari.oz.au!bruce!cechew From: cechew@bruce.cs.monash.OZ.AU (Earl Chew) Newsgroups: comp.os.minix Subject: Re: Using Minix with three (yes, three) hard drives? Message-ID: <3550@bruce.cs.monash.OZ.AU> Date: 7 Jan 91 22:04:34 GMT References: <19sDV2w164w@mudos.ann-arbor.mi.us> <29183@usc> Organization: Monash Uni. Computer Science, Australia Lines: 85 In <29183@usc> kjh@pollux.usc.edu (Kenneth J. Hendrickson) writes: >In article <19sDV2w164w@mudos.ann-arbor.mi.us> mju@mudos.ann-arbor.mi.us (Marc Unangst) writes: >>My question is, will this even work? >If you can get the two disk controllers working, then it will work just >fine. Make sure that the Minix HD is either disk 0 and/or disk 1. >MS-DOS will ignore any disk/partition that is not of MS-DOS type. Just >make your ST-225 with Minix-only partitions. >If you can get two disk controller cards working in one machine, please >post here how you did it. I'm sure that others would like to know. There has been a lot of traffic along the lines of `Can I get two disk controller cards to co-exist in my PC?' in comp.*.ibm.*. There appear to be very few definitive answers. I am glad to report that the answer to the above question is a qualified `Yes'. I originally had a Miniscribe 8051A 40Mb disk in my system which I partitioned into two 20Mb partitions --- one for Dog and one for Minix. I then acquired a Rodime 3065 50Mb disk. It was only after I acquired the 3065 that I realised that it would daisy chain off my existing controller because the 8051A is an IDE drive :-( In order to run two controllers, you must ensure that: 1. the IO ports do not overlap 2. the IRQ lines do not overlap Condition (1) can be satisfied by ensuring that one of the controllers can be switched to the secondary port address. I got hold of a WD1003-WA2 controller which can control two hard disks and two floppies. For this particular controller, you have to remember to switch both hard disk and floppy to the secondary port address since one of the hard disk ports lies in the floppy range :-( [or so I was told --- I haven't experimented with this]. Condition (2) may be harder to fulfill. Some controllers allow you to select IRQ lines --- some don't. Mine didn't. AT hard disk controllers will use IRQ14. I was told that IRQ15 is the `standard' secondary hard disk IRQ line. Bruce tells me that other choices would have been better for to avoid glitches. If you look at the bus signal lines, you will find that the `finger' for IRQ15 is adjacent to IRQ14. So if you don't have a controller with a selectable IRQ, you can cut a leg off a dead chip, and solder it slanted across from IRQ14 to IRQ15. Then get some adhesive tape and tape over the IRQ14 `finger'. Thus when you insert the card, it will effectively use IRQ15 instead. Strangely, the floppy doesn't suffer from this problem. Can anyone shed light on this? Before doing any of this, I first made an MSDOS boot floppy, removed my 8051A and controller card, and used the WA2 and 3065 to format and test the hard disk and controller card. Once everything seemed ok, I switched the WA2 over to the secondary address and IRQ and reinstalled my 8051A. Now, the catch is that your BIOS will probably not know anything about the second controller. My AMI BIOS doesn't. This means Dog won't know anything either. This doesn't worry me greatly since I wanted to use the 3065 for Minix exclusively. I have thought of some ways around this, but they require too much work for the time being. I'd be interested to hear about other people's experiences. As far as I know, the second drive that the BIOS talks about is the second drive on the *first* controller --- not the first drive on the *second* controller. Be careful. If you are running two drives from separate controllers, and you tell the BIOS that you have two drives, you may find that your machine won't boot --- like mine :-(. You may have some anxious moments trying to recover. As for Minix, the fastest way to get a driver for the second hard disk would be to clone at_wini.c to at2_wini.c changing the port and IRQ numbers. You will have to add a cim_* routine and set the vector in kernel/main.c and kernel/protect.c (I think --- from memory). You will also have to add another task. I chose not to do it this way, since it requires another task. I rewrote at_wini.c to handle two controllers. I have patches three short additions to kernel/*.[ch] plus at_wini.c and win2.x. Oh yes, plus a patch to fs/*.c to allow an ioctl() call to the driver to configure the hard disk using entries from /etc/disktab [extended from shoelace] (because it won't be listed in the BIOS cmos configuration). Earl -- Earl Chew, Dept of Computer Science, Monash University, Australia 3168 EMAIL: cechew@bruce.cs.monash.edu.au PHONE: 03 5655447 FAX: 03 5655146 ----------------------------------------------------------------------