[comp.os.minix] IBM PS/2 hard disk -- ANSWERS! and esdi_wini

dbx@olympic.atmos.colostate.edu (Doug Burks) (01/04/91)

Greetings,
     Conflicting reports have passed through this newsgroup (and my own mail)
about whether the IBM PS/2 hard disk can work under Minix without the
bios_wini driver.  Given that I shared the problems, I followed the thread
with frustrated confusion.  So I spent this Christmas vacation trying to
straighten everything out.
     Apparently, two different hard disk controllers are used in PS/2's.
The 60MB and 120MB hard disk use an ESDI interface, while smaller disks use
an PC/AT-compatible interface.  I'm not positive about this, but it explains
all the reports I've seen.  Thus the at_wini driver can be used for these
smaller disks, but not the big ones.
     What about an esdi_wini driver?  Requests for such a beast pop up with
regularity in this group, and I have kept my eyes peeled.  However, its
existence lacks the slightest shred of evidence.  Given that I have a
spacious 120MB disk on my Model 70, I dedicated part of my Christmas vacation
to remedying the situation.  Poring over the terse IBM technical reference, I
pieced together an esdi_wini driver.  Over the next few days, I constructed a
hard disk partition, populated it with all of the Minix source code, backed
it up, deleted it, reconstructed an even bigger (60MB) Minix file system, and
fully populated it from my backup.  The new driver never even blinked from
all of this work.
     Given its passing its tests with flying colors and the apparent demand
in comp.os.minix, I hereby include the uuencoded, compressed source file for
the hard disk driver.  However, some caveats are in order first:
   * This has only been tested on an IBM PS/2 Model 70 with a 120MB disk,
     though I see no reason why it should not run with a 60MB disk or on
     a Model 80.  Less confidently, I predict it should work on a Model
     50 or 60 for the same sized disks.
   * This has only been tested under Minix-386, admittedly a strange note,
     but I see no reason why it should not run under 16-bit Minix.  At worst,
     some compilation problem may crop up.
   * The error processing and recovery have not been tested.  None have
     occurred!
   * While labelled ESDI, some changes may have to be made to the driver to
     support other ESDI system or devices, though this serves as an excellent
     starting point.
   * This driver requires a new function in klib88.x (or klib386.x).  near
     the top add:

        .define _out_word

     later (best spot after out_byte) add:

        _out_word:
                mov     edx, 4(esp)
                mov     ax, 4+4(esp)
                outw
                ret

     this function works just like out_byte, except it writes a word (two
     bytes) to the port.

As for its features, this driver fully uses the DMA controller to transfer
data to and from the disk, using 16-bit transfers.  The ends of commands and
transfers are signalled through system interrupts, rather than busy waiting
and timeouts.
     I'm no expert in this area, so if anyone has any suggestions, feel free
to send them.  I am also willing to answer questions or help anyone implement
the driver (especially on different PS/2 models), as far as I can.
     Enjoy!  I've had a blast the last few days running Minix in full 80386
mode, freed of many disk and memory constraints.  Glorious!  My Xenix
partition is definitely an endangered species.  By the way, thanks to
everyone with a finger in Minix-386.  It's worked great.

Doug Burks                                     _O_
dbx@olympic.atmos.colostate.edu                 |<

---------------------8<  cut here  8<------------------------
begin 644 esdi_wini.c.Z
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
L*7T4"0/:S :B/) J^5WHN!FK8V?$>O8QO7Q$>&D2U:$[-$$+%PHXF#A3 0"U
 
end
-----------------------8<  cut here  8<----------------------

Doug Burks                                     _O_
dbx@olympic.atmos.colostate.edu                 |<