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

AVX support disrupts WoW64 debugging

Sometimes, the old and the new intersect in unexpected ways. After upgrading to a Sandy Bridge based system (Core i7) and Windows 7 SP1 64-bit some time ago, I noticed that debugging exceptions in 32-bit user programs didn’t quite work right. Recently the issue has been brought to my attention again and I had to do some digging.

The symptom of the problem is that when a debugger stops on a second chance exception, the context of the (32-bit) process being debugged is damaged and the debugger stops in a bogus location, namely ZwRaiseException or NtRaiseException (same thing with two different names). That is a huge problem when the debugged process handles certain exceptions. The debugger can’t stop on every first chance exception, because those occur in the normal flow of execution. Yet if a real bug pops up and causes an unhandled exception, the debugger will not show where the problem is! Continue reading

Posted in Windows, x86 | 18 Comments

LAN Manager vs. Windows 7

I recently spent some time trying to access disks shared by a Windows 7 machine from various versions of OS/2 (running in VMs, although that’s not really relevant). The OS/2 clients ranged from OS/2 1.3 with LAN Manager 2.1 (1991 vintage) to MCP2 (released in 2001/2002), in all cases configured to use only NetBIOS over TCP/IP transports.

This endeavor was far more difficult than it should have been. One part of the problem is that the default Windows 7 configuration is inimical to all older Microsoft/IBM network clients, including DOS, Windows 9x, and old versions of Windows NT. That is more or less obvious and relatively well documented.

With the necessary changes on the Windows 7 side in place, OS/2 clients can connect to Windows 7 shares and browse disks. However, attempts to access files more often than not result in SYS0240: The network connection is disconnected. Continue reading

Posted in Networking, OS/2, Windows | 28 Comments

Undocumented VflatD

The virtual flat framebuffer driver, or VflatD, was introduced in Windows 95 in order to ease development of display drivers. It was surprisingly poorly documented and the sample drivers did not illustrate its use very well.

A short backgrounder may be in order. Traditional VGA adapters accessed all of their 256KB of video memory through a 64KB aperture at physical address A0000h. Because of the unusual four-plane memory organization, the 64KB aperture was enough for covering four times 64KB, or 256KB. A distinguishing characteristic of Super VGA adapters was that they sported more than 256KB of video memory; perhaps 512KB, perhaps 1MB, perhaps more.

However, accessing that memory was not easy. The 64KB aperture was no longer sufficient to address all video memory. Linear framebuffer access was not always available, in part because it was difficult to use from 16-bit software, in part because mapping a megabyte or more in the 16-megabyte ISA address space was problematic. Super VGA adapters therefore supported bank switching, i.e. controlling which part of the larger framebuffer the 64KB aperture at A0000h accesses. The simplest case was a single read-write “window” which could be positioned with 64KB granularity. Continue reading

Posted in Documentation, VGA, Windows | 2 Comments