Oldest Surviving 386 PC OS?

Four years ago, the Xenix 2.2.3 mystery cropped up (twice). The issue has been revisited and thanks to Michael Casadevall, an enthusiastic reader, came to a happy conclusion:

386 Xenix 2.2.3c booting up

386 Xenix version 2.2.3 was finalized in late June 1988 (the newest files are timestamped June 27, 1988) and is thus one of the oldest surviving 386 PC operating systems.To put it in perspective, it was released at about the same time as IBM DOS 4.0 and several months before OS/2 1.1.

It is not the oldest since 386 Xenix 2.2.2 was released sometime in late 1987 (more or less coinciding with the release of 16-bit OS/2 1.0!), and there were possibly 386 Unixes from Microport and/or ISC available in mid to late 1987, though evidence is lacking.

At any rate, the search is for the oldest 386 PC OS, that is an operating system which runs on 386 PC compatibles, has at least substantial amount of 32-bit code in its core, is a self-contained system (i.e. no DOS extenders), can run 32-bit applications, and ideally uses paging. 386 Xenix checks all those boxes. Continue reading

Posted in 386, Microsoft, SCO, UNIX, Xenix | 24 Comments

More Data on CF to IDE to SCSI

To get a better picture of the performance of the CF to IDE to SCSI solution, I moved the Adaptec 1542C into one of my favorite boards, the Alaris Cougar with a classic Intel 486 DX2 OverDrive CPU.

For a 486, the board has a surprisingly fast IDE controller, an Adaptec 25-VL010 (that’s a VLB IDE controller). With a CF card plugged to the onboard IDE connector, Norton SysInfo 8.0 shows whopping 7 MB/s transfer speed. That is in fact much better than what a typical PCI Pentium board can do (around 3-4 MB/s is common).

AHA-1542C (ISA) and AHA-2842A (VLB)

The performance of the 1542C was somewhat disappointing. That is to say, it was no faster than the ISA-only 386 board, and if anything just a tad slower, with slightly under 2.5 MB/s transfer rate. I tried increasing the AHA-1542C DMA transfer rate from the default 5 MB/s but couldn’t push it much and it made little difference. Continue reading

Posted in 486, CompactFlash, IDE, Storage | 16 Comments

Resetting Disks Is Hard

After digging through BIOS listings and disassembling the Adaptec 1542C BIOS as well as the PC DOS 2000 boot sector, it’s clear why the floppy-less SCSI boot does not work on my test system. It’s because disk reset done by the boot sector (INT 13h/00h) fails when booting off SCSI. But the details are… interesting.

The root of the problem is that the INT 13h/00h service (Reset Disk System) behaves in a rather unexpected and to some extent very surprising manner. For reasons that aren’t obvious, resetting a fixed disk (BIOS drive 80h) also resets the floppy subsystem. And for that reason, the Adaptec 1542C BIOS, which hooks the INT 13h vector, has a relatively complicated disk reset logic (see below).

At a quick glance, MS-DOS 6.22 should behave exactly like PC DOS 2000 in this regard. It executes the same INT 13h/00h call with DL holding the boot drive number. Continue reading

Posted in BIOS, Bugs, SCSI | 22 Comments

Booting Is Hard

So I had this brilliant idea of using SCSI drives with old 286/386/486 boards which have old BIOSes that can’t handle IDE drives bigger than 500-ish megabytes. The SCSI HBA is the first one I happened to grab, an Adaptec 1542C (good because it has a floppy controller onboard); I got the HBA some time ago for free but sans microcode and BIOS chips, and eventually plugged in EPROMs that I burned myself.

To make it more fun, at the other end of the SCSI cable is an Acard IDE-to-SCSI adapter which has a CF-to-IDE adapter attached to it, and plugged into that is a CF card (or a microdrive). Yes, that actually works… up to a point.

CF to IDE to SCSI Frankendrive

Smaller CF cards are a bit problematic because the Adaptec HBA uses a different geometry  than IDE. Remember that SCSI drives have no “physical” geometry and everything is strictly LBA, but the BIOS has to present a logical geometry. For drives smaller than 1 GB, the Adaptec HBA uses 64 heads and 32 sectors per track, which has the nice property that 1 cylinder = 1 MB. But IDE drives essentially never use such logical geometry. For larger drives, the Adaptec HBA uses 255 heads and 63 sectors per track, which happens to match typical IDE large-drive logical geometry. What that means is that larger CF cards should have the same logical geometry when they’re plugged straight into IDE or go via SCSI, and should be accessible and bootable without trouble. Well, I was half right about that. Continue reading

Posted in 386, BIOS, CompactFlash, DOS, SCSI | 21 Comments

Spot the Fakes

Would you believe that besides all the other Made in China fake brand-name items, there are also fake memory modules? Of course you would! At least Kingston and Samsung modules have been seen in the wild; the Kingston ones are depressingly common.

Two out of these four Kingston Value RAM modules are fake (click on the image for higher-res photo). Let’s call them A, B, C, D starting at the top. Can you figure out which ones are the fakes?

Four Kingston-branded DIMMs

The two fakes have been purchased on Amazon within the last few weeks (the genuine ones are from the spare parts pile). It is unclear whether the sellers even realize they’re selling fake goods. Kingston provides some helpful information because they clearly have been fighting with counterfeit products for a while. Continue reading

Posted in DDR RAM, Fakes | 17 Comments

IBM XENIX 1.0 Incompatibility Details

Some time ago I wrote about IBM PC XENIX 1.0 and why it won’t work on 386 and later processors. Thanks to a kind reader, I’ve been able to analyze the object files used to link the kernel, and I believe I now understand exactly how XENIX uses the reserved space in LDT descriptors and why my patched kernel doesn’t fully work. This problem is likely common to all early editions of Microsoft XENIX 3.0, not just the IBM-branded release.

What XENIX stores in the reserved word is the size of the corresponding segment on disk; the value for a given descriptor is returned by a kernel-internal function called dscrsw(). This is used when an executable file gets loaded and also when swapped out. The latter is likely the reason why the segment size on file is stored in the descriptor table at all.

Incidentally, why is the troublemaking routine called dscrsw anyway? The answer to that riddle can be found in /usr/include/sys/relsym86.h: The last word of the descriptor table structure is defined as d_sw, or “software defined word, unused”. If only. Continue reading

Posted in 286, 386, Microsoft, Xenix | 21 Comments

Top of the Class 478

So I have that old Intel D865PERL board, which is a Socket 478/AGP board. There’s a 3.2 GHz Northwood in it but of course I was wondering, what’s the fastest CPU this board supports? And it turns out to be a question which is not so easy to answer.

The fastest clock speed supported by the board is easy to figure out: 3.4 GHz, with 800 MHz FSB speed. But there are three different 3.4 GHz CPUs that the board supports: Intel calls them Pentium 4 3.40 GHz, Pentium 4 Extreme Edition 3.40 GHz, and Pentium 4 3.40E GHz. These are also known as Northwood, Gallatin, and Prescott, respectively—with the minor caveat that Intel’s ark calls the Extreme Edition variant Northwood while others call it Gallatin.

3.4 GHz/800MHz FSB Northwood/Gallatin/Prescott

What’s not in question is that the first (Northwood) has 8 KB L1 cache and 512 KB L2 cache; the second (Gallatin) has 8 KB  L1 cache, 512 KB L2 cache, and 2 MB L3 cache; and the third (Prescott) has 16 KB L1 cache and 1 MB L2 cache. Continue reading

Posted in Intel, PC hardware, PC history, Pentium 4 | 5 Comments

More Peripherals

Remember this post from a while ago? Several new peripherals have turned up, but what are they? This time, the manufacturer names vanished together with the model numbers, but it shouldn’t be too hard.

Five unknown peripherals

Do you know these peripherals?

PS: Apologies for the poor photo quality.

Posted in MIDI, Sound | 11 Comments

Shiniest x86 Chip

While there have been many shiny new chips in the metaphorical sense, x86 (and x87) chips have never been known to be literally shiny. The typical packaging is ceramic or some form of brushed metal, and neither of these surfaces is shiny. But there was one x86 (or rather x87) chip which was actually very shiny, with a gold sheen to it:

33 MHz C&T J38700DX (1992)

It’s a Chips & Technologies SuperMathDX chip aka J38700DX, a 387-compatible math coprocessor. It’s a relative of the similarly obscure C&T Super386 CPU (which is not shiny at all). Continue reading

Posted in 386, C&T, PC hardware | 11 Comments

Finally Free

For a while I’ve been toying with the idea of buying the full official MIDI specification, but never went through with it. Not so much because of the cost ($100 for the core spec) but because of the hassle. Only fax or snail mail? Really? Not to mention that ordering from outside of the US seemed unreasonably complicated. The MIDI association site kept hinting that electronic versions of the documents would be available soon, but that message had been there for at least a year.

So I randomly went to the midi.org site today to check if anything changed and and lo and behold, it looks completely different! And what’s more… it no longer offers the printed MIDI specs for sale. Instead, there are PDFs for download (free registration required). That’s a heck of a lot better than $100 worth of dead tree matter.

So now I have a couple hundred pages to read. Thanks, guys!

Posted in Documentation, MIDI | 6 Comments