Richard_Conto@um.cc.umich.edu (03/05/89)
Greetings... Two things, the first is a problem report with the Supra 60 Meg hard disk system; the second is to mention some fiddling I did to upgrade Minix-ST 1.1 using V1.2->V1.3 upgrade kit. Supra 60 Meg problems: I've got what I hope is a NEW Supra disk system, a Supra 60 Meg disk that I ordered at the end of November '88, and got sometime in mid December. (I went to a local dealer, who happened to be out of stock at the time; and at the time Supra happened to be doing inventory, and was then out of stock, and ... so it goes.) My problem with the Supra disk is that if I do not do any I/O on the disk, I'll get an "Unexpected DMA" error (I forget the exact message now) after about 15 minutes. It's like there's an idle-timer in the disk that goes off every 15 minutes. I was able to get around this (and do the work I describe below) by putting this script in the background. (I did it from "/etc/rc", until I had Minix 1.3 and "cron" running.) $ while true $ do $ ls $i >/dev/null $ sleep 300 $ done (I put a copy of "true" in "/bin") Of course, now that I'm running 1.3 and have "cron" reading "/usr/lib/crontab" every minute, I don't need this kludge, but it was handy at the time. This is on a Mega 4, and "Supfmt" claims that the hard disk is a Seagate ST277, and the controller is a Seagate ST277. The disk works fine under TOS. Minix 1.3 (ST): Just after I posted this (to the wrong name, argh!) I went through my backlog of electronic mail and discovered that Johan was already working on applying V1.4 to Minix. I don't want to imply any contest here... I did this just because I wanted some relief from work (I really don't like monopolizing a CPU on an IBM 3090-600E for 8 hours, just for network statistics!) I don't have "diffs" yet, but the work I've done was to see about upgrading Minix-ST to a more modern Minix. As it turned out, I had to apply most of the diffs by hand, since Minix-ST is almost at 1.3 anyway. (I gave up on the "1.1->1.2" kit entirely, after looking through the "diffs" and finding nothing to do for more than half of the diffs.) I did keep the "man_pages" file, since the 1.3 kit builds on that for the "help" command. As I was putting 1.3 together, I would occasionally find places where nice code from the ST hadn't quite made it yet. There's a lot of ".h" files that should have "#ifdef"s for the ST (or better for "M68000" instead of "ATARI_ST".) As I went through these files, I tried to merge the ST stuff in, as appropriate. I know that PC hackers will find that having all those "#ifdef"s around will make their compilations slower, but that's the price of portability, and portability is a goal here. In order to put this kit together, I had to find a copy of "sed". (It would have been so nice if the 1.3 kit contained a "sed" that could have been "unshar"ed the old way...) 1.3 does contain "sed", but that wasn't useful until I could get it on my ST! I've also got "patch" (it was usefull for those man pages), a new "make" from hyc (I should ask him if it's the GNU make), and a new "ls" (that displays files in columns, instead of once per line.) In addition to the "standard" 1.3 kit, I've done the following: 1.) A fix to "more" so that it doesn't die when there isn't a "TERM" environment variable. 2.) A fix to "atrun" (used by "cron" and "at" to schedule single-shot jobs at a particular time). It was expecting an automatic variable to be implicitly initialized. (p.s.: only fools expect stack variables to be implicitly initialized in any language.) 3.) hyc's Floppy Disk driver (the one that lets you read arbitrarily 'sectored' disks, based on information that formatting programs put on the first block of the disk.) Howard didn't get "mkfs" fixed right... I've got changes for that too, including some stuff to make the prototyping more robust. Hyc's floppy disk stuff also included some fixes to "tos". I haven't checked, but these might be the same changes that went into the "dosread/doswrite/dosdir" programs. 4.) The "big file table" patch, which simply increases the size of the file table so that people like me (with 27.5 meg partitions) and hyc (with a 40+ meg partition) can mount their file systems. 5.) The "Supra" fix for the old supra disks, involving trapping the extra interrupts in a polling loop. (This didn't help me.) 6.) Howard Johnson's Extended Partition, Multi-Disk driver (the one that uses the Supra extended Partition table for more than 4 real partitions, and allows for multiple real disk drives.) My Supra 60 has 5 paritiions (5 Meg TOS, 14.5 Meg TOS, 1.5 Meg MNX, 27.5 Meg MNX, 14.5 Meg TOS), and I was able to (finally!) get to the last partition with this code. Also, I've an old Supra 20 daisy chained on, as SCSI device 2. (The 60 Meg is SCSI device 0). I'm able to read both partitions of this disk too. Because I made a mistake when I first tried this (I didn't include the code that read the extended partition table), my version has a number of changes over Howards. Like any writer, I like to think my code is "cleaner" than the next guy's, but both pieces of code are practically identical. However, while doing the 1.3, I did NOT check through the PC assembler libraries to see if the fixes there needed to be applied to the ST's libraries. In part, the reason is because I have the impression that more of the ST's libraries are in "C" rather than in assembler. Another part is because the comments were so scarce that I couldn't tell what the fixes were for. I haven't gotten deep enough into ST Minix to be able to intuit what the changes might have involved, and I don't have a PC Minix to know what the surrounding code looks like. (A friend does have a PC Minix... and he's at 1.1) Also, I kept the "crypt()" that came with the ST-Minix rather than going to the "crypt()" that was in 1.3 . This was because the encryption was different, and because the "crypt()" in the 1.3 was too fast. (If that sounds strange, think about why you might want a slower encryption process for security.) I haven't installed the new screen driver, mouse driver, midi, or rs232 drivers. I do have yet another version of Minix (based on 1.1) that does have these, and the screen driver seems to be a bit brain dammaged... but I haven't had time to install those in my upgrade. A lot of the changes I made were cosmetic... things like moving the 'then part' of a 'if ()' statement to the same line. This was so that that the code would (hopefully) be more like the PC version, and give me a better chance to apply the V1.4 kit automagically. I'd like to add the screen/midi/rs232/mouse stuff, upgrade to 1.4, and possible include some neat stuff that was done to "ansi-ize" the library before I make this available. When I can make it available, it'll be by anonymous FTP, and I'll make sure that the first part of the kit contains "sed" in a form that people with the standard distribution can unpack the rest. Lastly, a few notes: 1.) Mega 4s are neat. I've got a copy of "ed" that I chmem'd to have 2 meg of stack & heap, and with that I could edit the "diff.patch" file directly. 2.) The ST C compiler can use alternate directories for temporary files. I needed to tell it to use a directory on my hard disk when I was unable to compile a "gnu" product. This might solve the problem of the other person who has run out of "/tmp" space. --- Richard Conto Internet/Arpanet Richard_Conto@um.cc.umich.edu or rsc@merit.edu Bitnet/EARN/etc USERW014@UMICHUM (.bitnet)