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)