I've been skimming through the 1993 book Windows Internals by Matt Pietrek. At that time, Microsoft Windows (and a copy of Microsoft MS-DOS to bootstrap it) was already the go-to Operating System for businesses. But there were attempts to dethrone it, such as IBM's PS/2 and of course the Apple Macintosh. What made Windows able … Continue reading How Microsoft (and Linux) Won the Desktop
Datasheets that were lost to time
These are (old, outdated) technical documents that never made it to the internet. Presumably they're still covered by patents or other intellectual property, and they'll hopefully be released someday. Or maybe they're lost forever, who knows. AMD-751™ System Controller Data Sheet (order #21910)AMD Athlon™ System Bus Specification (order #21902)AMD Athlon™ Processor BIOS, Software, an Debug … Continue reading Datasheets that were lost to time
Homebrew Pentium Motherboard
I've been designing my own Pentium 1 motherboard. I originally wanted to connect a 386 or 486 to a modern FPGA and see if I could get DOS or Windows 3.1 to boot. However, CPUs from that era use "TTL" signaling (5v logic high). Modern FPGAs will literally break if you send 5v at them … Continue reading Homebrew Pentium Motherboard
Decoding the Extended Addressing Modes of the 68000
I've been working on a disassembler for the Motorola 68000 family of microprocessors, which were popular in home computers in the 80s. A disassembler takes a binary blob of machine code and transliterates it into a more human readable text format. These are the actual steps your CPU is taking, however they're just in human-readable … Continue reading Decoding the Extended Addressing Modes of the 68000
Porting a Linux driver to Arduino
I've been porting a Linux driver to Arduino. Many old computers (late 80s, early 90s), especially Apple Macintosh computers, used a peripheral bus called SCSI to communicate between the motherboard and hard drive. The protocol is pretty simple, but there can be some high-speed activity, which was too fast for early CPUs to handle. So … Continue reading Porting a Linux driver to Arduino
OS Dev with QEMU, OVMF, and GDB on Windows
According to The OSDev Wiki "Any recent version of QEMU with a recent version of OVMF will be sufficient to run a UEFI application". Nice. How do we set this up on a Windows host? Download a QEMU Windows build from https://qemu.weilnetz.de/w64/ (direct link to the latest version as of the writing of this: https://qemu.weilnetz.de/w64/2020/qemu-w64-setup-20200814.exe … Continue reading OS Dev with QEMU, OVMF, and GDB on Windows
Difference between “dynamic-link library with exports” and “dynamic-link library” in Visual Studio
TL;DR: "with exports" means the project starts with some example exports added. You'll need exports, so why not let it insert some boilerplate code for you? Less chance of typos. Use "dynamic-link library" instead of "dynamic-link library with exports" if you want to add '__declspec' to things yourself. So you want to create a DLL … Continue reading Difference between “dynamic-link library with exports” and “dynamic-link library” in Visual Studio
What will your MFC application look like?
I just started hacking on an application using the Microsoft Foundation Class library. There are a lot of options in the "new project" wizard, but they don't show you what any of the options mean. So here are some screenshots of the settings, and the result (this is mostly for my own future reference):
An Ancient Game Engine Time Capsule
I stumbled across a 3-episode podcast (really 2 and a quarter because the second audio file is cut short) relating to an ancient 3D game graphics engine from 2008: http://egtpm.blogspot.com/2009/06/20080605egtpodcst-e3.html It's interesting to hear these folks talking about the future features of their game engine. Little did they know dark times were waiting in the … Continue reading An Ancient Game Engine Time Capsule
A Quick Graph of Domain Names During the Great Coronavirus Panic of 2020
This graph shows all .com domains registered since Feb 1st that start with the word "virus": domainsDownload Interestingly enough it fairly closely matches Google Trends data: