[comp.os.minix] ST Minix vs. Supra 60 Meg HD; ST Minix 1.1 to Minix 1.3

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)