Posts

Exploring 16-bit Bus Access on the PC/AT

Image
Entering the 16-bit Era I've been adding support for the 8086 CPU to MartyPC, and looking ahead to eventual support for the 286 .  The biggest fundamental change coming from the 8088 is that the data bus width on these CPUs expands from 8 bits to 16. This ends up being a bit more complicated than I originally anticipated, but I've come to learn some interesting things about how Intel implemented the 16-bit data bus that explains some things that were long-standing mysteries to me, such as the reason for memory alignment penalties. In this article, we'll explore schematics for the IBM 5170, better known as the IBM AT. This model was arguably IBM’s most influential computer, as it established the eponymous AT standard that shaped the PC-compatible market - setting it on an evolutionary path that modern PCs continue to follow. Memory Alignment And You Modern Intel and AMD CPUs have minimal memory alignment requirements¹. Any remaining penalties for "unaligned" reads ...

Emulator Debugging: Area 5150's Lake Effect

Image
My last few   articles on bus sniffing the IBM 5150 have been building up to this one. We're going to leverage our bus sniffer and sniffer decoder to finally debug Area5150's "Lake" effect. "But wait -", you might be asking: "- doesn't MartyPC run Area5150 already?" Yes, it does, but I have a dirty little secret I need to confess to the world.  Despite all the accolades MartyPC has received about being super-accurate, it needed a special, Area5150 specific hack in order to run the final two cycle-counted effects, "Wibble" and "Lake."  "Wibble" is the scene with Charlie Chaplin, the green fellow and the elephant.  "Lake" is the final end credits scene with the water effect and the PCM audio player.   In other words, I cheated. It haven't actually tried that hard to keep it hidden, as you can see if you are watching the console while MartyPC runs: Okay, maybe I'm being a bit hard on myself. Title-s...