MacBook Memory Upgrade Hell

About a month ago I got an old 2007 white MacBook for free. It was in original condition (2.2 GHz Core 2 Duo CPU from the 65nm Merom generation, 120GB hard disk, 2GB RAM), fully functional except for a completely dead battery. Not used for the last few years, still running the original OS X 10.5 Leopard.

I upgraded the OS to 10.6 Snow Leopard, which made the laptop slightly more usable. And I figured that upgrading the RAM from 2GB to 4GB ought to help. This laptop uses 667 MHz DDR2 memory (aka PC2-5300S). It officially supports 4GB, unofficially 6GB in a mismatched 2+4G configuration. I decided to go for 2+2G, in part because 4GB DDR2 modules are quite expensive.

The laptop uses the mobile Intel 965 chipset and hardware-wise it’s mostly a standard PC. How hard can it be to upgrade the memory? As it turns out, a lot harder than I had thought.

Continue reading
Posted in Apple, Fakes, OS X | 3 Comments

Same Old Disk Bug

After I Kryofluxed my MS OS/2 SDK 1.01 disks, I once again tried installing the OS in a VM. While the system booted up fine, it stubbornly refused to get past FORMAT. At the end, after going through all the cylinders and heads, it would always hang.

FORMAT hanging in MS OS/2 1.01 SDK

Analyzing the VM I realized that it does not so much hang as crash, because the OS kernel stack gets exhausted. And it gets exhausted because the disk driver gets into a funk, keeps repeatedly doing SET DRIVE PARAMETERS and READ VERIFY SECTORS, then crashes, probably tries to show the trap screen, and just miserably dies without actually showing anything. But why?

Continue reading
Posted in Bugs, Microsoft, OS/2, Virtualization | 2 Comments

Microsoft OS/2 Programmer’s Guide

For once, the OS/2 Museum lives up to its name…

After a long pause, a new document from the MS OS/2 SDK has been uploaded. It’s the pre-release Microsoft Operating System/2 Programmer’s Guide from April 1987. This document was part of the first batch of publicly released OS/2 documentation, delivered with the $3,000 MS OS/2 SDK starting in May 1987. It’s now on the corresponding library shelf.

The Guide provides a good overview of the overall structure of OS/2 and its programming API. It also includes description of the New Executable (NE) format, the FAT file system structure used by OS/2 and DOS, an unexpectedly thorough description of the structure of OMF (Object Module Format) files, or a fairly detailed list of 8086 vs. 80286 differences.

It’s clearly a pre-release document, with funny formatting, incorrect numbering of tables or figures, and at times very terse. But it was the first real glimpse of the brave new world of OS/2, with actual details rather than just marketing talk.

Posted in Documentation, Microsoft, OS/2 | Leave a comment

1988 Networking: 386 XENIX

With the 3Com 3C501 EtherLink emulation in hand, I thought I’d see if it works with the SCO TCP/IP stack for SCO XENIX/UNIX. That particular stack, which actually consists of separate STREAMS and a TCP/IP packages, comes with whopping two device drivers: One for Western Digital WD8003, and the other for 3Com 3C501 EtherLink.

I located the requisite floppy images on my NAS and physical floppies in the basement, and installed 386 XENIX 2.3.1a (September 1988), STREAMS Runtime 1.0.0c (August 1988), and TCP/IP Runtime 1.0.0c (December 1988) in a VM. Thankfully, the EtherLink driver worked the first time and created a 3comA device:

XENIX 2.3.1 booted with 3C501 driver

The TCP/IP stack was developed for SCO by Lachman Associates, in cooperation with Convergent Technologies. Configuring it was not easy, because the extant documentation only covers newer versions for SCO UNIX. Fortunately someone has already been there, and the SCO-supplied 3C501 driver had no problem with the route command. Thanks, Jason!

Continue reading
Posted in 3Com, Networking, PC hardware, SCO, TCP/IP, Virtualization | 11 Comments

Will This Last?

The OS/2 Museum site has now moved to a completely different hosting setup (a VPS). There could well be various quirks caused by the move, although for the most part moving the WordPress setup went surprisingly (for me at least) smoothly.

The OS/2 Museum lasted 9 years on shared hosting. But it was no longer adequate, simply because at times the levels of legitimate traffic (to say nothing of spammers, bots, and other nuisances) were too high with no sensible way to control them.

We’ll see how long the new approach will last before something breaks again. Fingers crossed.

Posted in Site Management | 12 Comments

Why Does Windows Really Use Backslash as Path Separator?

More or less anyone using modern PCs has to wonder: Why does Windows use backslash as a path separator when the rest of the world uses forward slash? The clear intermediate answer is “because DOS and OS/2 used backslash”. Both Windows 9x and NT were directly or indirectly derived from DOS and OS/2, and certainly inherited much of the DOS cultural landscape.

That, of course, is not much of an answer. The obvious next question is, why did DOS use backslash as a path separator? When DOS 2.0 added support for hierarchical directory structure, it was more than a little influenced by UNIX (or perhaps more specifically XENIX), and using the forward slash as a path separator would have been the logical choice. That’s what everyone can agree on. Beyond that, things get a bit muddled.

The only thing that is clear is that Microsoft and IBM were responsible for using the backslash as path separator in DOS 2.0. Microsoft reportedly wanted to use the forward slash as path separator, but IBM nixed the idea because it would have created an incompatibility with DOS 1.x, which already used the forward slash as a switch character, separating command options.

Microsoft old-timers all agree that IBM was strongly against changing the forward slash as a switch character. They are less clear on where that particular slash usage had come from.

There are silly theories about it, like “the slash came from CP/M”. Well, it didn’t. There is no real evidence that CP/M used the forward slash anywhere except the name of the product. Most CP/M commands had no options at all. Third party CP/M tools (such as Micrsoft’s) may well have used slashes, but not the OS itself.

There is obvious nonsense like “CP/M got the slash from VMS”, which is simply not possible because CP/M is older than VMS, and CP/M did not use the forward slash anyway.

SCP’s 86-DOS likewise did not use the forward slash. Which means DOS did not inherit the forward slash from its direct or indirect predecessors (86-DOS and CP/M). It must have come from somewhere else. Can we find out where from?

Continue reading
Posted in DEC, DOS, IBM, Microsoft, PC history | 43 Comments

Developer Connection 9/11/12 Anyone?

Recently I finally managed to put something on archive.org, namely images and scans of IBM’s Developer Connection for OS/2 CDs (called just IBM Developer Connection since Volume 10). My problem is that I don’t have any physical media for volumes 9, 11, and 12. I have some ISOs but especially Vol 12 is very incomplete.

Can anyone help with providing either media scans and ISOs or the physical media?

Posted in Uncategorized | 10 Comments

Pointedly Confusing

While working on an unrelated problem, I stumbled across very surprising (to me) behavior of a C compiler. My code was the equivalent of the following:

#include <stdio.h>
int arr[42];
int main( void ) {
printf( "%u\n", sizeof( &arr ) );
return( 0 );
}

The & operator produces the address of its operand, and if the type of the operand is T, the type of the resulting expression is pointer to T, at least in C89 and later. So the size of that type really, really should be the size of a pointer. Here’s what Visual C++ 1.52c, the last 16-bit Microsoft compiler, declared as ANSI-compliant, does with it:

C:\temp>cl -W4 asz.c
Microsoft (R) C/C++ Optimizing Compiler Version 8.00c
Copyright (c) Microsoft Corp 1984-1993. All rights reserved.

asz.c

Microsoft (R) Segmented Executable Linker Version 5.60.339 Dec 5 1994
...
C:\temp>asz 84

84? That’s the size of the array, not the size of a pointer to the array. Needless to say, that is at odds not only with any modern compiler (gcc, clang) but also with many other mid-1990s compilers (IBM or Watcom for example). What was Microsoft doing there?

Continue reading
Posted in C, Microsoft | 9 Comments

1988 Networking: NetWare OS/2 Requester

A while ago, the question of antique NetWare OS/2 requesters came up. The oldest known surviving NetWare OS/2 Requester is version 1.2, which is designed to work with OS/2 1.2. There are clear mentions of older requesters supporting OS/2 1.1 and possibly even 1.0, but nothing seems to have survived.

Except something did survive, in an archive called REL102.ZIP–not a terribly obvious name. Said archive contains the “OS/2 Requester Developer’s Release” from April 6, 1988 (a bit over 31 years old as of this writing). This was clearly not the first such release, and the oldest files are from February 1988. Given its vintage, it’s obvious that the Requester was designed to work with OS/2 1.0.

1988 NetWare OS/2 Requester utilities

There are several device drivers and a number of OS/2 utilities (SLIST, ATTACH, MAP, etc.); a notable omission is LOGIN (although LOGOUT is included), possibly because LOGIN.EXE normally lives on a NetWare file server.

Continue reading
Posted in NetWare, Networking, OS/2, PC history, Virtualization | 16 Comments

NetWare 2.x Notes

Novell NetWare has quite a long history, but the older parts of it are now almost completely lost. In the mid-1980s, Novell offered Advanced NetWare, NetWare ELS, NetWare SFT, and other members of the NetWare 286 family.

With the partial exception of so-called non-dedicated NetWare 2.x servers, version 2.x and later of NetWare always had dedicated server machines with clients (called “shell” in the old days, later “workstation”) for DOS, OS/2, Macintosh, and more.

There was not much to see on a NetWare 2.x server console

Until the mid-1990s NetWare typically used its own networking protocol called IPX. NetWare networks could use Ethernet, Token-Ring, Arcnet, IBM PC Network, and other physical network layers. In later days, NetWare networks were almost exclusively Ethernet based (as the other technologies died out), and over time increasingly switched to TCP/IP transport.

Continue reading
Posted in NetWare, Networking, PC history | 14 Comments