Archives
- April 2025
- March 2025
- February 2025
- January 2025
- December 2024
- November 2024
- October 2024
- September 2024
- August 2024
- July 2024
- June 2024
- May 2024
- April 2024
- March 2024
- February 2024
- January 2024
- October 2023
- September 2023
- August 2023
- July 2023
- June 2023
- May 2023
- April 2023
- March 2023
- January 2023
- December 2022
- November 2022
- October 2022
- September 2022
- July 2022
- June 2022
- May 2022
- April 2022
- March 2022
- February 2022
- January 2022
- December 2021
- November 2021
- October 2021
- September 2021
- August 2021
- July 2021
- June 2021
- May 2021
- April 2021
- March 2021
- February 2021
- January 2021
- December 2020
- November 2020
- October 2020
- September 2020
- August 2020
- July 2020
- June 2020
- May 2020
- April 2020
- March 2020
- February 2020
- January 2020
- December 2019
- November 2019
- October 2019
- September 2019
- August 2019
- July 2019
- June 2019
- May 2019
- April 2019
- March 2019
- February 2019
- January 2019
- December 2018
- November 2018
- October 2018
- August 2018
- July 2018
- June 2018
- May 2018
- April 2018
- March 2018
- February 2018
- January 2018
- December 2017
- November 2017
- October 2017
- August 2017
- July 2017
- June 2017
- May 2017
- April 2017
- March 2017
- February 2017
- January 2017
- December 2016
- November 2016
- October 2016
- September 2016
- August 2016
- July 2016
- June 2016
- May 2016
- April 2016
- March 2016
- February 2016
- January 2016
- December 2015
- November 2015
- October 2015
- September 2015
- August 2015
- July 2015
- June 2015
- May 2015
- April 2015
- March 2015
- February 2015
- January 2015
- December 2014
- November 2014
- October 2014
- September 2014
- August 2014
- July 2014
- June 2014
- May 2014
- April 2014
- March 2014
- February 2014
- January 2014
- December 2013
- November 2013
- October 2013
- September 2013
- August 2013
- July 2013
- June 2013
- May 2013
- April 2013
- March 2013
- February 2013
- January 2013
- December 2012
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- January 2011
- November 2010
- October 2010
- August 2010
- July 2010
Learn Something Old Every Day, Part V: Early IBM PS/2 Hard Disks
So I have been (again) trying to properly archive old MS OS/2 SDKs. The version 1.02 SDK from December 1987 (corresponding to OS/2 1.0) turned out to be a bit of a poser.
The SDK came on both 3.5″ and 5.25″ media (unlike the older 1.00 and 1.01 SDKs, which as far as I can tell only existed on 5.25″ media). My Kryoflux tells me that the Install floppies were modified in both the 3.5″ and 5.25″ disk sets. Now, it’s very common for OS/2 install disks to be modified, because the installer writes an INSTALL.LOG file. But I could find no evidence of that happening.
Instead, it looked like Microsoft made some changes after mastering the disks, but exactly what those changes were is difficult to tell.
On the 5.25″ Install disk, Microsoft almost certainly updated the INSTAID.EXE file (the main installer executable). The allocation chain for INSTAID.EXE is not contiguous, which is a strong hint that it had been overwritten with a larger file. Yet the timestamp for INSTAID.EXE is the same as the other files (12/15/1987) and the entry for INSTAID.EXE is in the middle of the root directory, alphabetically sorted.
Okay, so that makes some sense. Microsoft made some last-minute installer change and had to update the already mastered disks. One might expect to find the same sort of change on both 3.5″ and 5.25″ media… but no.
The 3.5″ Install disk was also changed, but differently. There appears to have been a similar change made to INSTAID.EXE; it is similarly fragmented, and identical to the 5.25″ variant. But there are additional changes, apparently to the disk drivers. And that’s where things get a bit mysterious.
The 5.25″ Install disk comes with a DISK01.SYS driver. The 3.5″ Install disk has DISK01.506, DISK01.ESD, and DISK01.SYS on it. The DISK01.SYS on the 3.5″ media is identical to DISK01.506, but the DISK01.SYS on the 5.25″ media does not match either DISK01.506 or DISK01.ESD. In addition (perhaps not surprisingly), neither DISK01.506 nor DISK01.ESD works on an AT compatible.
Upon reflection, it’s clear that Microsoft intended the 5.25″ media to be used on AT compatibles (whether with a 286 or 386 CPU) and the 3.5″ media on IBM PS/2 machines. This was a significant difference from how IBM packaged OS/2, because IBM’s OS/2 1.0 on 3.5″ and 5.25″ media each supported both AT compatibles and PS/2 machines (DISK01.SYS vs. DISK02.SYS etc.).
The only hint I could find about the mysterious disk drivers was in a file called READ.ME!
on the Toolkit disk:
I have a PS/2 machine and when booting from the Installation Diskette the machine just freezes. What's the deal? If you have a PS/2 machine with an ESDI hard disk (i.e. 71MB or larger) the default disk driver must be changed. You simply copy the Disk01.ESD to Disk01.SYS and then re-boot the machine. The bottom line is that if you have a low level formatted hard disk and try the instaid program with the wrong disk device driver your machine will freeze.
Early PS/2 Disk Controllers
The early (1987) PS/2 machines had either MFM hard disks with a ST-506 interface, or larger ESDI disks. More about the controllers can be found here.
Now… the problem with all these interfaces is that ST-506 and ESDI are drive interfaces that host software can’t do anything with. Host software needs to call to a disk controller, but there simply isn’t any predictable mapping between drive interfaces and disk controllers. Software developers had a bad tendency to name disk drivers by the drive interface (IBM1S506.ADD, ESDI506.PDR), even though the drive interface is not too relevant when talking to a disk controller, which is what all those drivers do.
The IBM PC/XT, PC/AT, and some early PS/2 models all used disks with the ST-506 interface, but each had its own disk controller, incompatible with the others.
Western Digital’s WD1005/WD1007 ESDI controllers on the other hand were software compatible with the PC/AT disk controller, but the ESDI controller in PS/2 machines was again completely different.
The PS/2 ESDI controller used an unfamiliar I/O port range, namely 3510h-3517h. The ESDI controller information can be found for example here. I believe IBM kept using the ESDI controller interface for some time, especially in lower end MCA PS/2 machines, while high-end systems switched to SCSI.
The PS/2 ST-506 controller used the same 320h-324h I/O port range as the PC/XT disk controller. That is quite likely because it was also used on the original PS/2 Model 25 and 30, in many ways enhanced PC/XTs.
There is very little technical information available about the PS/2 ST-506 controller (the IBM documentation for the adapters does not appear to have survived, or at least isn’t publicly available). I believe that the information in the PS/1 Technical Reference (starting at page 339 in the PDF) applies.
As far as I can tell, the PS/2 ST-506 aka MFM controller was conceptually very similar to the PC/XT disk controller, but different enough in detail to be incompatible. The I/O port range was about the same, both used command blocks with CHS addressing, both used DMA to transfer data to/from disk. But the status bits were different, the command blocks were different, and I just don’t see how the two could possibly be compatible.
In other words, it looks like the programming model of the PC/XT disk controller and the PS/2 ST-506 controller is essentially the same, but the details are different enough that existing code could not work. At the same time, it looks like adapting code written for one controller to the other should not be particularly difficult.
Finding authoritative information is surprisingly tricky. There is a Minix driver for the PS/2 ST-506 adapters, ps_wini.c
, which reportedly works on MCA PS/2 machines. Those are the machines that the MS OS/2 1.02 SDK would have targeted; the PS/2 Model 30 was not relevant since it had an 8086 CPU, and the PS/2 Model 30-286 wasn’t announced until September 1988. The Minix ps_wini.c
matches the above mentioned PS/1 Technical Reference.
Note that there is also a Minix xt_wini.c
, which is indeed similar to ps_wini.c
but far from identical.
Back to the OS/2 1.02 SDK
After researching the disk modifications, I am reasonably certain that the Install disks were modified by Microsoft and INSTAID.EXE was updated before the disks were shipped.
I considered the possibility that a previous user overwrote DISK01.SYS on the 3.5″ Install disk. On reflection, that is highly unlikely given that DISK01.SYS matches DISK01.506, and the included READ.ME!
implies that that was the state in which the disks were shipped. It’s more likely that the disk drivers were updated by Microsoft before shipping; the 5.25″ media wouldn’t have any corresponding change because its DISK01.SYS is different (confusing!).
Comparing with another MS OS/2 1.02 SDK disk set would help. But finding such a set could be tricky.
Update: More Digging
I’ve partially disassembled the earliest available system BIOS for PS/2 ISA-based Model 30 (September 1986) and MCA-based Model 50/60 (February 1987). I can confirm that in both cases, the system BIOS includes support for the PS/2 XT-like disk interface (it is tempting to call it XT/2 interface, though I don’t think anyone used that term), and that the code from 1986-1987 corresponds to the documentation in the PS/1 Technical Reference which is quite a bit newer (1990).
The disk interface itself seems sensible enough, but it suffers from the same problem PC/AT BIOSes did: The system only handles drive types hardcoded in the system BIOS ROM.
Interestingly, even though the interface was the same from software point of view, the implementation on Model 30 vs. Model 50/60 was very different. PS/2 Model 30 used an IDE (but not ATA!) drive with a built in controller, while the MCA models used a separate controller adapter that worked with standard ST-506 drives.
As far as I can tell, the Model 30 was self-configuring because the drive “knew” which drive type it was. On the MCA-based PS/2 machines, the user had to select the right drive type in the system setup because the system had no way to detect the drive type automatically.
I should also add that the PS/2 ST-506 drive interface is not XTA. The XTA interface emulates a standard PC/XT disk controller, but the PS/2 interface is different.
16 Responses to Learn Something Old Every Day, Part V: Early IBM PS/2 Hard Disks
I wonder if it was the same Xebec OEM.
The PS/2 ST-506 adapters are all highly integrated with custom IBM chips. As far as I can tell, the adapters were manufactured by IBM. It is quite possible or even likely that some OEM (WD? Xebec?) worked on those with IBM, but it’s not at all clear who it might have been.
Thanks for digging in to this!
What connectors did the disks in the model 50 and 60 use?
(Freely from memory) the schematics for the model 30 shows that the disk has four address lines, i.e. 16 registers. IIRC the MFM controller used by IBM in the XT has way fewer registers. How many registers does the BIOS use?
Bonus side track: I would say that if you were to rewrite parts of the BIOS of a model 25/30 you could use a passive adapter with a compact flash card, or use half the capacity of a regular AT-IDE/PATA disk. In practice if any modification were to be made to the BIOS of a model 25/30 in order to be able to use a replacement disk solution, it would be to make it use regular AT-IDE/PATA disks using an ISA card without any special hardware and unfortunately just ignore the built in interface. (This assumes that there are more surviving model 25/30 computers than matching hard disks, and/or that the users really want to use a larger disk as the only disk. I would assume that for an extra disk in conjunction with the built in disk you could just use one of those cards that adds an extra IDE/PATA port and has a built in bios to handle that port).
Extra bonus: the connectors on the disks on PS/2 computers differs from what you would expect. For the floppy it’s obvious for a trained eye to tell that it’s just a regular floppy drive with a different connector and different pinout. For the hard disks it’s less obvious what they are though.
The PS/2 XT-ish controller (I kinda like the XT/2 name) uses three registers, at 320h, 322h, and 324h. The BIOS (at least on Model 50/60) also does 16-bit I/O to the data register in some situations. As far as I can tell, addresses 321h and 323h are unused.
One variant of the MCA ST-506 adapter looked like this, with standard ST-506 connectors, and another looked like this, with a custom connector.
I’m almost certain that Model 30 only supported one drive, while Model 50/60 supported two.
My understanding is that on Model 25/30 it’s possible to install more or less any ISA storage adapter with its own BIOS, the difficulty is that those machines are short on expansion slots.
The second card with the custom adapter is out of a Model 50. The later Model 50Z and I think the Model 70 used a passive adapter card instead with more pins. The drives in those were “direct bus attachment”, basically an MCA variety of IDE. Makes data recovery fun and exciting if you don’t have a MCA machine readily available. I think those drives auto configured geometry from the reference disk, but its been a long time.
The Model 25/30 drives were basically “XTA” interface like used in the later Tandy 1000 series and some other XT clones. The connector was different, but the signals were mostly the same.
No, I can safely say that Mod 25/30 was not XTA. Yes, the bus signals are nearly identical, but the programming interface is more or less the same as the ST-506 adapters on MCA PS/2 machines, not like PC/XT.
XTA would have made sense but… nope. The I/O port range is more or less the same, the IRQ and DMA channels are the same, but everything else is different. Different status/command bits, different command blocks, it’s totally incompatible. My impression is that software that does not use the BIOS to access the disk was very rare on those machines. For Mod 30-286, operating systems like OS/2 or XENIX needed their own drivers.
The DBA interface is interesting because after ATA and XTA it’s the third disk to system bus interface used in PCs (well, for some definition of “PCs”). That said, I’m not entirely sure if DBA or XTA came first. ATA is definitely the oldest.
I had an IBM PS/1 2011, and it had a weird IDE but not quite IDE interface. Many things couldn’t find it, I wonder if it used some weird “XT/2” like interface
According to the PS/1 Tech Ref I found, it was definitely “XT/2”. The concept is certainly IDE, but the interface is not ATA, and it’s not XTA either. Why IBM bothered with non-ATA drives at the time the PS/1 was released (1990) is a bit beyond me.
With the original PS/2 Model 25/30 they had the problem that the machines didn’t have a 16-bit bus, so ATA wasn’t a good fit. XTA would have been but now that I think about it, there probably weren’t any XTA drives in 1986-1987.
Now I actually wonder when IBM started using IDE. I know that PS/2 E (Model 9533) and ThinkPad 750 both used IDE and came out in 1993. The 1992 ThinkPad 700/720 still used funky “ESDI” drives. Lots of IBM desktops used SCSI at the time, and the cheaper models tended to use “ESDI” or “ST-506” drives with integrated controllers. IBM also seems to have started producing ATA drives around 1992.
JVC did a modified ST-412 interface using a 26-pin cable which had both power and data flowing through it. The earliest reference I can find for it is a 1986 Infoworld article announcing the introduction of a 21 MB drive that was added to the existing 10 MB drive. IBM’s interface for the Model 25/30 is similar except for the use of a card edge. IBM wanted most of the line to snap together fast and cut production costs.
The first ATA drive was launched in late 1986 just months before the PS/2 line. The first XTA drives showed up mid 1988. The first IBM machine to be shipped with an IDE drive I know of was the L40 laptop from 1991 which used a 60 MB Conner.
Looks like the PS/2 Model 35SX/40SX came with IDE drives in 1991.
Indeed, and those machines came out in June 1991. Reportedly used Maxtor OEM drives. Wonder why IBM didn’t use IDE for the PS/1 which was not much older.
So was Model 35 SX/40 SX the first IBM PC machine with ATA drives?
The L40SX was released in March 1991. Having a laptop IDE drive was very unusual for IBM since the 60 MB Conner was only available in the fourth quarter of 1990 and even the whole 2.5″ hard drive category was barely two years old.
Besides being 3 months later, the 35SX and 40SX were more to the usual tradition of IBM design. The Maxtor drives had been launched early in 1990 so well proven. The 35SX and 40SX were also available without hard drives.
IBM was manufacturing IDE drives starting in the middle of 1990. Those were not used by IBM though I have never located who did purchase them.
Oh, that’s interesting. So the L40SX was an ISA machine, then the ThinkPad 700/720 was MCA, and with ThinkPad 750 IBM went back to ISA.
I do know that disk upgrades on the ThinkPad 700/720 are painful precisely because the drives aren’t ATA.
AFAIK, the DBA interface is basically an MCA interface. The drive comes with the controller integrated, which talks to the drive via ESDI or ST506. They are a pain to work with, because they fail and finding reasonable priced replacements is hard. I have one in my PS/2 and it was the 5th drive I bought.
Yes, DBA is basically a kind of IDE, only with MCA rather than ISA. Exact same idea, but completely different in detail. In retrospect it seems the PS/2 machines came out at just the wrong time and ended up with all these bizarre disk interfaces that no one else uses. A year or two later only SCSI and ATA would have made any real sense.
I have a Model 77 with a SCSI adapter and replacing the drives is a lot easier. (And the original drive did die a while ago.) I also have an ISA based PS/2E and that thankfully uses regular 2.5″ ATA drives.
Because, AFAIK, the PS/1 2011 is a repackaging of the PS/2 Model 25-286’s hardware, and the 25-286 used what you call “XT/2”.
Worth noting that the PS/1 2121, the 386SX-based version of the 2011, which is itself a repackaging of the PS/2 Model 25SX’s hardware, switched to ATA (just as the 25SX did).
This site uses Akismet to reduce spam. Learn how your comment data is processed.