Category Archives: x86

Does (E)IP Wrap Around in 16-bit Segments?

The 8086/8088 is a 16-bit processor and offsets within a 64K segment always wrap around. If a one-byte instruction at offset FFFFh is executed on an 8086, execution will continue at offset 0. This is simply a consequence of the … Continue reading

Posted in 386, 8086/8088, Intel, x86 | 9 Comments

KEYBCS2

After writing about the likely origins of IBM code page 852, I thought I should revisit the homegrown Czech alternative solution, the Kamenický brothers encoding and their keyboard driver. Its existence is well documented, and the so-called (somewhat misnamed) KEYBCS2 … Continue reading

Posted in DOS, I18N, IBM, x86 | 29 Comments

How Old Is OMF?

The Object Module Format (OMF), used by most DOS development tools, and eventually displaced by COFF/ELF in the 32-bit world, is quite old. It is a somewhat strange format because of its age, and it is quite complex, both because … Continue reading

Posted in Development, Intel, Microsoft, PC history, x86 | 8 Comments

Better Late Than Never

Better late than never, although in this instance, it’s really really late—about thirty years late. In the world of computing, that is eternity. The talk is about the new CR4.UMIP control bit documented in the latest (revision 58) Intel SDM, … Continue reading

Posted in 286, Intel, x86 | 13 Comments

Curious Instructions

Years ago, Geoff Chappell (the author of DOS Internals, among other things) published an article about mysterious instructions that Microsoft’s LINK knows but Intel’s documentation is silent about. The fourteen listed instructions were: LOADALL, CFLSH, WRECR, RDECR, SVDC, RSDC, SVLDT, … Continue reading

Posted in Documentation, Intel, x86 | 11 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 … Continue reading

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

LOADALL Strikes Again

A minor mystery recently popped up while running IBM’s OS/2 1.1 (1988), the first OS/2 version with the Presentation Manager GUI. While Microsoft’s and IBM’s releases of OS/2 were fully compatible from application perspective, there were differences in the drivers … Continue reading

Posted in IBM, Intel, Microsoft, OS/2, x86 | 11 Comments

BSD Buglets

Last week I ran into two wholly unrelated problems while researching the history of BSD-derived Unix systems on PCs. Both are classics in their category and merit a closer look. Y2K Strikes Again The first issue is a very typical … Continue reading

Posted in BSD, UNIX, x86 | 11 Comments

If you ENTER, you might not LEAVE

I’ve recently spent some time debugging curious hangs/aborts in two more or less exotic operating systems, Plan 9 and QNX 4.25. Both turned to be caused by the same innocuous-looking BIOS change, even though the circumstances were somewhat different and … Continue reading

Posted in Intel, x86 | 9 Comments

Windows NT BSOD Aclock Port

Do you remember the famous Windows NT Blue Screen Of Death? For years it was a source of jokes and bad reputation of Windows reliability. There even was a Blue Screen Saver! Today we fortunately see much less of it, but it … Continue reading

Posted in 386, Development, NT, VGA, Windows, x86 | 10 Comments