home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.sys.ibm.ps2.hardware      Discussing IBM PS/2 hardware      42,985 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 41,079 of 42,985   
   Tomas Slavotinek to All   
   IML - Implementation Differences   
   28 Dec 22 20:50:55   
   
   From: slavotinek@gmail.com   
      
   As a follow-up to a back-channel discussion with Louis, here is a short   
   primer on how the ROM-resident Stage 1 POST handles the IML process.   
      
      
   *Introduction*   
   ==============   
      
   I'll focus primarily on the Type 1 Complex here, but the presented   
   information applies to most, if not all, other IML-based PS/2s. Some   
   parts also apply to the flash-based (non-IML) systems that use a   
   modified version of this process to locate the Reference/Convenience   
   partition.   
      
   First of all, there are two major versions of the POST IML procedure:   
      
   1) The original implementation can only load an IML image from a floppy   
   drive or the first hard drive (limited to 1GB). The T0, early T1, and   
   early T2 complex ROMs use this method.   
      
   2) The later implementation, sometimes called "search IML," is more   
   flexible and can acquire the IML image from any SCSI hard drive (limited   
   to ~4GB) or from a floppy drive. This is used by the "enhanced" T1 and   
   T2 ROMs and the T3 complex ROM.   
      
   All T1 system ROMs contain IBM SCSI extensions consisting of the   
   "standard" Int 13 routines and a proprietary Int 4Bh func. 80h - "IBM   
   SCSI interface." This iface provides extended SCSI services, incl. SCB   
   (Subsystem Control Block) support.   
      
      
   *The Original Implementation*   
   =============================   
      
   While the advanced SCSI features are present even in the old T1 ROMs,   
   the POST/IML code does not reference them.   
      
   The IML routine starts by checking the first floppy drive for a   
   compatible IML record. If this succeeds, the Stage 1 POST ends by   
   calling the boot sector (which then loads the IML image file from the   
   disk, etc.).   
      
   If the floppy method fails, POST checks the planar ID to identify the   
   machine and decide how to continue. If it detects the Model 90 planar,   
   it installs the embedded ESDI BIOS extensions and uses the Int 13h   
   routines to check for an IML record on the first DBA ESDI drive. [Yes,   
   it should be possible to IML from a DBA ESDI drive on an early Model 90   
   with one of the "non-enhanced" T1 BIOS ROMs. The same is true for the T0   
   complex, where the ESDI install happens unconditionally - no planar ID   
   check is needed since it was only available with Model 90. It's another   
   question whether the system programs can install the IML partition on an   
   ESDI drive in the first place.] If the ESDI BIOS installation doesn't   
   finish successfully (no drives?), or if it fails to adjust the reference   
   partition "fencing" (by using somewhat proprietary Int 13h func. 1Fh   
   calls), it moves on to the SCSI subsystem.   
      
   The IML routine code allocates EBDA block for SCSI variables, and if not   
   already present in memory, it installs the embedded SCSI ROM extensions.   
      
   If ESDI or SCSI was successfully initialized, the POST uses the standard   
   Int 13h iface to read the first three sectors of the system partition   
   from the first hard drive. If a compatible IML record is found, POST   
   Stage 1 ends by calling it.   
      
   If the hard drive IML load fails, the system re-checks the floppy drive   
   for an IML record. If not found, the system prints an IML error and   
   finally halts.   
      
      
   *The Enhanced Implementation w/ Search IML*   
   ===========================================   
      
   The revised IML differs right from the get-go. It begins by allocating   
   the SCSI EBDA block and installing the SCSI extensions (if they weren't   
   installed previously). If this completes successfully, POST uses the   
   proprietary Int 4Bh SCSI iface to determine how many drives are   
   installed and what type they are. Usable drives are then checked for a   
   reference partition. This differs from the original implementation,   
   where the floppy and ESDI drives are checked first. In fact, ESDI   
   extensions are entirely missing from the "enhanced" ROMs.   
      
   POST then finally checks the first floppy for a compatible IML record,   
   and if it finds one, it ends by loading it.**   
      
   If that fails, it proceeds by checking the previously detected SCSI   
   drives for compatible records.** SCB calls are used to remove the IML   
   partition "fencing" (unlike the original implementation that used Int   
   13h func 1Fh calls to achieve this).   
      
   If the SCSI method doesn't succeed, it falls back to the floppy   
   subsystem (like in the original implementation), checks for IML there,   
   and if even that fails, it prints an IML error and halts.   
      
   (** Note: I don't have that part of the code fully reversed yet, but I   
   think this revised IML routine not only skips incompatible IML records   
   but also looks for the latest IML revision across all drives.)   
      
      
   *Conclusion*   
   ============   
      
   As you can see, IBM used proprietary BIOS functions in the IML code.   
   That is the main reason why the process fails on non-IBM controllers.   
      
   The original IML implementation relies largely on standard BIOS calls   
   but uses a few undocumented functions - namely, the Int 13h func. 1Fh   
   calls used to manipulate the IML fencing.   
      
   The "enhanced" method depends heavily on IBM-proprietary interfaces -   
   Int 4Bh and SCB, moving even further away from what was considered   
   "standard." On the other hand, these new interfaces no doubt simplified   
   the implementation of the otherwise relatively complex "search IML"   
   system. They may also be behind the raised IML drive capacity limit   
   (I'll look into it...).   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca