Untested Error Paths

About a week ago I revived an old Sony VAIO laptop (model PCG-R505TS) that hadn’t been used for a few years. It had lost CMOS contents so I had to re-enter the date and adjust a few BIOS settings.

The laptop had XP SP1 installed, which I successfully updated to SP3. Too lazy to use the built-in wired Ethernet, I plugged in a Belkin wireless PC Card instead. Windows Update successfully installed the usual bazillion of updates and the laptop was running stable, yet I was experiencing inexplicable errors and odd behavior.

Some web sites reported certificate errors, which I (erroneously, it turned out) ascribed to out of date root certificates on the system. Updated root certificates are available on Windows Update, but that’s where another strange problem hit: For whatever reason, the root certificates are an optional update and as such, require Windows to be validated (the infamous WGA). Windows Update offered to validate my copy of Windows, but the validation process eventually landed on an empty web page with no error message whatsoever. The validation did not really fail (declaring my setup a pirate copy), it just did nothing. What was I doing that was so unusual to trigger some untested error path?

Continue reading

Posted in PC hardware, Windows | 3 Comments

Soyo 4SAW2: Why So Slow?

Continuing to go through my junk pile, I unearthed a Soyo SY-4SAW2 motherboard. This is a late 1995 vintage 486 ISA/VLB/PCI motherboard with a SiS 85C496/497 chipset. It’s a classic Baby AT board with an AT keyboard connector, although it does support PS/2 mice (which is rather nice).

Soyo 4SAW2 Board

The board works well enough, but somehow it’s just… slow. SYSINFO from Norton Utilities 8.0 shows a score of 131 with an Intel DX4 processor running at 100MHz (33.3MHz x 3). At 75MHz (25MHz x 3), the same processor scores only 99.2. Other benchmarks fare similarly.

Yet the exact same CPU plugged into an Alaris Cougar ISA/VLB board, about a year older and using an OPTi chipset, scores 197.5 at 100MHz and 148.9 at 75MHz in SYSINFO. (And in case someone asks how I ran a 3.3V DX4 processor in the 5V-only Cougar board, I used an AMD voltage converter.) That is, the Intel DX4 processor running at 75MHz in the Alaris board scores better than when running at 100MHz in the Soyo board. Something is clearly amiss. Continue reading

Posted in PC hardware | 21 Comments

Butterfly Conservation

The OS/2 Museum recently acquired one of the famous IBM 701 ThinkPads, commonly nicknamed “Butterfly” thanks to the fold-out keyboard. Unfortunately, the unit suffered a fate common to many old ThinkPads—battery leakage.

Corrupted ThinkPad 701C Display

The unit would power on, but it had serious problems. The CMOS battery was dead, causing errors on each startup, and the graphics chip was flaky, fairly often resulting in completely corrupted characters in text modes and very strange looking graphics modes. Worst of all, the unit was very unstable, sometimes not even making it past POST and never staying up for more than a few minutes. Continue reading

Posted in PC hardware, ThinkPad | 3 Comments

Have You Ever Used One of These?

Still on the theme of unusual hardware… in my junk pile there’s one of these rather special little parts:

Periscope IV Pod

As the label on the PCB says, this is a 486 pod for a Periscope IV debugger. The Periscope Company of Atlanta, GA was a respected supplier of hardware-assisted debuggers in the late 1980s and early 1990s. Continue reading

Posted in Debugging, PC hardware | 35 Comments

Early PCI Board

Since some of this blog’s readers are very good at recognizing obscure hardware, I thought I’d post photos of one more somewhat exotic graphics card:

Early PCI Board (component side)

This board was one of the early PCI graphics adapters. It’s old enough that it doesn’t use the standardized PCI class ID. It’s based on the S3 928P chip and equipped with 1MB video memory. Continue reading

Posted in Graphics, PC hardware | 27 Comments

Two More TIGAs

Since some readers appear to enjoy identifying prehistoric graphics cards, I thought I’d post photos of two more TIGA boards from my junk pile. I know what these are, but do you? One of them ought to be fairly easy to identify and photos of it exist on the Internet. The other one might be tougher and to my knowledge no photos of it are available.

Let’s start with Exhibit A: This is an ISA-based graphics card by a well known manufacturer whose name is clearly legible on the PCB. It’s a combined VGA + TIGA card, a somewhat unusual yet very logical combination.

ISA TIGAThere’s a 60MHz TMS34010 GPU and a BrookTree Bt473 DAC. The DAC is a 66MHz part, so no fancy high-res modes, just basic 1024×768. Somewhat unusually, the board uses standard 30-pin SIMM slots for GPU memory, which means it was probably user upgradable. There is separate VRAM in typical ZIP modules. Continue reading

Posted in Graphics, PC hardware | 14 Comments

Another Vermont Microsystems Board

My junk pile turned out to contain another board by Vermont Microsystems, Inc. (VMI), probably no less exotic than the mystery board.

VMI Page Manager 100, component side

This one is a Microchannel board built around an Intel 82786. An in this case, VMI was kind enough to etch their name on the PCB, complete with the model name—Page Manager 100. Continue reading

Posted in Graphics, PC hardware | 19 Comments

Have You Seen These Cards?

While cataloging my junk pile, I came across two graphics cards that I could not identify. Both are high-end ISA graphics accelerators from the early 1990s and both utilize Texas Instruments GPUs (long before the term “GPU” was first used, but very appropriate).

The first card was clearly made by SPEA (that is, SPEA Software AG), a German company known for its high-end graphics card. Based on the chip markings, the card must have been manufactured in the second half of 1991.

SPEA accelerator, component side Continue reading

Posted in Graphics, PC hardware | 38 Comments

Apologies for the outage

The site has been unavailable for a while because some creative person or persons decided to use it for sending out spam and setting up a beautifully crafted facsimile of PayPal. It appears that a vulnerability in an old WordPress version was exploited some time ago (several months ago at least); for a while, nothing more happened, but on Dec 31st the attacker(s) started uploading foreign content to the site.

Part of the problem is that WordPress updates do not delete old unused files. In this case, the old and no longer used ‘default’ theme was somehow modified and then used as a backdoor. Because WordPress updates neither delete the unused scripts nor overwrite them, malicious PHP scripts hung around for at least a few months. Learn something new every day…

Let’s hope the problem is now resolved and the site will stay up for a while.

Posted in Site Management | 5 Comments

Undocumented 8086 Opcodes

A minor mystery recently surfaced while analyzing DOS boot sectors. DOS uses several criteria when deciding whether a boot sector contains a valid BPB, and one of the criteria is (oddly enough) checking whether the first two bytes of the sector contain a jump instruction, which then presumably skips over the BPB. The MSDISK.INC module in the MS-DOS 3.21 OAK is a good example. The opcodes considered valid are EBh (JMP short), E9h  (JMP), or 69h. Wait, an IMUL instruction? Well, no, that’s not what the comment in the source code says:

   cmp   byte ptr cs:[DiskSector],069H  ; Is it a direct jump?
   je    Check_Signature                ; don't need to find a NOP
   cmp   byte ptr cs:[DiskSector],0E9H  ; DOS 2.0 jump?
   je    Check_Signature                ; no need for NOP
   cmp   byte ptr cs:[DiskSector],0EBH  ; How about a short jump.
   jne   BadDisk

The problem is that 69h is not a documented 8086 instruction. It’s an IMUL opcode on 80186 and later, but that seems highly implausible. Besides, the comment clearly says it’s a jump.

Since the undocumented 8086 opcodes are, well, undocumented, could 69h possibly behave like a jump on an 8088/8086 processor? A very good question, with remarkably few answers. One might think that in the hacker culture surrounding early PCs, it would be inevitable that someone would find out what the undocumented instructions really do. But that doesn’t appear to be the case. A fairly exhaustive search turned up nothing, even in books like Undocumented PC (Frank van Gilluwe) which devote significant space to undocumented instructions. It still seems that someone, somewhere must have published something…

A quick look at several emulators turned up nothing either. Fortunately, Raúl Gutiérrez Sanz had a genuine 8088 and enough determination to find out what the undocumented opcodes really do. Continue reading

Posted in 8086/8088, Documentation, Intel, x86 | 62 Comments