DOS boot hang update

Additional information came to light regarding the hangs with DOS 2.x/3.x when booting from a disk with large number of sectors per track.

The problem appears to have been noticed sometime in 1987—perhaps. The MS-DOS OEM Adaptation Kit (OAK) for MS-DOS 3.21 from May 1987 includes the buggy boot sector prone to hangs. However, the OAK for MS-DOS 3.30 from July 1987 contains a fix for the problem. That might suggest the problem was fixed around June 1987, but there’s more to the story. First a long digression…

The source code for SYS.COM in the MS-DOS 3.30 OAK shows that in June 1986(!), IBM made a change to only require the first 2,048 bytes (or four 512-byte sectors) of IBMBIO.COM to be contiguous. There’s interesting logic in the code which assumes (not unreasonably) that if IBMBIO.COM exists on the target disk, it is in the correct place and even if it’s the PC DOS 1.x version, covers enough contiguous space. Continue reading

Posted in DOS, IBM, Microsoft | 4 Comments

Solaris 2.5.1 and 2.6 crashes on modern Intel CPUs

I recently found that Solaris 2.6 and 2.5.1 does not work when run in a VM on a modern Intel CPU (Sandy Bridge generation Core i7), or to be exact fails most of the time (about nine times out of ten) when nested paging is used. The symptom is Solaris hanging or rebooting immediately after the kernel is loaded, even before the kernel banner is printed. When nested paging (or hardware virtualization) isn’t used, there’s no problem.

After managing to boot Solaris 2.6 on a physical Core i7 system (not so easy, since a boot floppy plus CD is required!), it turned out that the exact same thing happens, and this is thus not a virtualization issue. But what’s going on there? And why would nested paging fail when the older, slower virtualization methods work? Thanks to the debugging capabilities built into Solaris, it’s possible to answer most of those questions. Continue reading

Posted in Solaris, VirtualBox, Virtualization, x86 | 27 Comments

DOS 4.0, bum rap, and mismatched expectations

While researching the history of DOS extenders, I came across an article written in 1991 and explaining why OS/2 2.0 was going to be horribly incompatible with Windows 3.x. To support the argument, the following statement was used: “When IBM releases a complex product that has undergone only a relatively brief beta-testing period, what you get is DOS 4.0 — the first version of DOS written primarily by IBM rather than Microsoft, which didn’t work well with most non-IBM memory boards. (Microsoft corrected the problem later with MS-DOS 4.01.)” This quote is interesting on many levels and illustrative of the low quality of PC press at the time — though whether it has gotten any better is an open question. Continue reading

Posted in IBM, PC press | 13 Comments

NetWare for OS/2

NetWare for OS/2 was one of the most technically interesting products of the mid-1990s. Novell’s NetWare was long established as a file server for LANs; since NetWare/386, Novell’s NOS ran as a dedicated server which was loaded from DOS but took over the entire system once started. But ever since the late 1980s, Novell was talking about a non-dedicated NetWare server running on top of OS/2.

In August 1993, Novell finally released NetWare for OS/2 as a $200 add-on to NetWare 4.01. With the add-on, NetWare 4.01 server could be installed on top of OS/2. A single OS/2 machine could function as an OS/2 application server, a NetWare server, and could also run the NetWare client at the same time.

NetWare for OS/2 was essentially a paravirtualization layer (even though the term did not yet exist at the time) for NetWare which largely replaced direct hardware access by functionality provided by OS/2. The NetWare server could still use its own network drivers, but disk access and memory management were handled by OS/2, and NetWare ran as a special task. NetWare for OS/2 could run the same NLMs (NetWare Loadable modules) which dedicated NetWare servers supported. Continue reading

Posted in NetWare, Networking, OS/2 | 2 Comments

From a Feature to a Bug

Sometimes the quest for backwards compatibility has unintended consequences. In some cases, the presumably beneficial backwards compatibility turns into a source of problems. The costs end up far outweighing the benefits, yet the “feature” may be difficult to get rid of. If only it hadn’t been implemented in the first place…

If you’re on a Windows system, try a small experiment. Take an existing text file, say foo.txt, and try renaming it to aux.txt. Oops, it doesn’t work:

Try renaming to aux.doc, or aux.with.extension. It doesn’t work either. That surely looks like a bug, doesn’t it? Why would the operating system arbitrarily refuse to rename a perfectly good file? In fact Windows does that to be backwards compatible with an operating system that was obsolete before many current PC users were even born. Continue reading

Posted in DOS, PC history, Windows | 13 Comments

Operating System/2 announced 25 years ago

On April 2nd of 1987 (not April 1st, that wouldn’t do!), IBM and Microsoft jointly announced Operating System/2, the long-awaited protected-mode version of DOS.

However, OS/2 was not the only product announced on that day. OS/2 was merely one part (albeit very important one) of a massive product rollout blitz on both IBM and Microsoft’s part, purportedly the beginning of a new era of personal computing.

Perhaps coincidentally, this is also the 20th anniversary of the release of OS/2 2.0, the first mass-market 32-bit operating system for PCs. Not to the day (the official release date was March 31st, 1992; still the first quarter of 1992) but close enough to be significant. Continue reading

Posted in IBM, Microsoft, OS/2, PC history | 27 Comments

64-bit trouble with Solaris 10 U4 and earlier

On many newer systems, Solaris 10 releases up to and including Solaris 10 8/07 (that is Update 4, also known as S10U4) behave in an unhelpful manner. The installer can be launched from CD or DVD and the system can be installed, but the first time the new OS is booted, it almost immediately reboots the system or hangs. This affects both physical and virtualized systems.

The proximate cause of the crash is that when the Solaris kernel switches to PAE (Physical Address Extension) page tables, the tables are built incorrectly and do not properly map the system’s address space. This causes a page fault very shortly after. The OS tries to handle the fault, but fails (because it can’t access memory properly), and soon triggers a triple fault and CPU reset. If left unattended, the system will attempt to boot again and fail in the same way, stuck in an endless crash loop. Continue reading

Posted in Solaris, x86 | 12 Comments

Video trouble with Solaris 10 GA and U1

The initial (GA) release of Solaris 10 from 2005 and the first update (Solaris 10 1/06) both have an interesting bug which causes trouble when installing those specific versions on VirtualBox and quite likely also on some mildly unusual hardware. The symptom is a user process crash when the installer is starting (core dumped twice), possibly followed by a black screen. The reason for the misbehavior is interesting to say the least.

Solaris 10 was released with a somewhat schizophrenic video subsystem. There’s Sun’s old X server, Xsun. There’s also the Xorg 6.8.0 X server. And just to make it more interesting, Xsun can also use many Xorg driver modules. Continue reading

Posted in Solaris, VirtualBox | Leave a comment

Lotus 1-2-3 R3 copy protection

Release 3 of Lotus 1-2-3 (1989) utilized a mild form of copy protection which relied partially on technology but primarily on shaming would-be pirates. 1-2-3 installed from copied disks prominently showed the name of the original owner every time the spreadsheet was started. Several other Lotus programs of that era (such as Freelance Graphics) used the same technique.

Lotus shipped “virgin” installation media to users. All except for the first floppy were regular diskettes. The first one, so-called Install disk, was special. The Install disk could not be used or even copied until it was “signed”, i.e. the user’s name, company name, and the serial number were entered. Continue reading

Posted in DOS, OS/2, PC history | 9 Comments

NT video miniport HD

The video miniport driver for VirtualBox has been updated. The miniport now supports a much broader range of resolutions, up to 1920×1200. Color depths of 32, 24, 16, 15, and 8 bits per pixel are supported for all resolutions, although Windows typically filters out some of those.

The above screenshot shows Windows NT 3.50 running in 1680×1050 resolution (16:10 aspect ratio), providing an impressive amount of screen real estate. Continue reading

Posted in NT, VirtualBox | 23 Comments