MS-DOS 2之路:微软为何放弃UNIX
微软最初押注UNIX而非DOS。1980年2月,微软获得UNIX V7源码,推出XENIX,认为其可移植性会成为16位微机标准。但XENIX内存占用过大,IBM PC仅16KB RAM根本无法承载。微软转而收购SCP的86-DOS,Tim Paterson原本只想快速做一个类似CP/M的"凑合方案",却意外成为PC时代基石。
编译器对 UTF-8 的处理分歧
C++ UTF-8 处理库的解码函数在不同编译器下行为不一致,作者深入分析了 lead byte 判断序列长度、code point 有效性检查和 overlong 序列检测的逻辑。
来自1984年的Starlink:被遗忘的多用户PC尝试
回顾1984年Digital Research推出的StarLink硬件方案,试图将单用户IBM PC改造为多用户终端服务器。文章详细分析了其技术架构、高昂成本以及因无法兼容Lotus 1-2-3等关键软件而失败的商业逻辑。对理解早期PC生态竞争、操作系统兼容性壁垒及“多用户PC”这一被遗忘的技术分支有参考价值。
MP/M's Process Dispatcher
MP/M, or “Multi-Programming Monitor Control Program” is usually described as a multi-tasking and multi-user version of CP/M. I never had the chance to use it myself, but having learned to program on a...
Kay Nishi and the Meeting That Started MS-DOS
September 28, 1980, was a Sunday, and the Old National Bank Building in Bellevue, WA was mostly empty. Except for eighth floor, occupied by Microsoft - a privately owned software company with about 50...
Why IBM Turned to Microsoft for Basic
There is a widespread opinion that Microsoft’s lucrative 1980 contract with IBM must have involved some kind of foul play. After all, it is hard to believe that the computing mammoth like IBM needed a...
Decoding UTF-8. Part VII: Validation
In part VI of the UTF-8 decoding series we saw how a simple non-validating decoder might look like, but we emphasized the importance of validation. It is important to remember that in general we canno...
Gary Kildall, Bill Gates and the "Gentleman's Agreement"
In fact, there was an unwritten agreement between Gates and Kildall that Microsoft would stay out of the operating system end of the business, and Kildall would not get into microcomputer languages, a...
AArch64 Bitfield Move (BFM) Instruction
The sixth part of my series on decoding UTF-8 was a pretty uninteresting one: in it, I described a basic non-validating UTF-8 decoder. When examining the generated assembly, I saw three different inst...
How Much of CP/M's Design Ended Up in MS‑DOS?
It is hard to believe there is anything left to say about the controversy over MS-DOS (including its predecessor 86-DOS) being a “CP/M lookalike”. By now it is clear that MS‑DOS replicated the CP/M AP...
Decoding UTF-8. Part VI: Simplistic Non-Validating Decoder
In parts 2-5 we spent some time on determining length of a UTF-8 sequence. Now, we move on to actual decoding. We’ll start not just simple, but simplistic - without validation. Validation is important...
The Late Arrival of 16-Bit CP/M
The story of how MS-DOS became the industry standard for the 16-bit business computers at the expense of Digital Research’s CP/M is somewhat of a legend among fans of computing history. The event has ...
An Old-School Introduction to Position Independent Code
Position‑independent code is fundamentally simple: it is machine code that can execute correctly regardless of the memory address at which it is loaded. Most texts on the subject look intimidating tho...
PDP-10 and Microcomputers
Most of us imagine the microcomputer revolution as small groups of nerdy kids working in garages and bedrooms to build technology that would change the world. It is less known that much of the early s...
Decoding UTF-8. Part V: Benchmarking Sequence Length Calculations
In Parts II, III, and IV of this series on decoding UTF-8, we examined several methods for determining the length of a UTF-8 encoded byte sequence. We presented the algorithms and inspected the genera... 

Getting Started with the Fuse Emulator for ZX Spectrum
The Sinclair ZX Spectrum was one of the best-selling home computers ever released. Its popularity and simplicity led to development of many emulators over the years. Unfortunately, most emulators are ...
When Compiler Optimizations Hurt Performance
Recently I have been working on benchmarks comparing techniques for calculating UTF-8 sequence lengths. The method I described in Decoding UTF-8. Part IV: Determining Sequence Length - Counting Leadin...
History of the Gem Desktop Environment
Sometime in 1988, the keyboard of my Sinclair ZX Spectrum 48K was finally broken beyond repair, and I asked my parents for a 128K version of the same computer. Instead, they surprised me with an Atari...