For most people, an emulator is a way of running old software (usually games) on new hardware. But using an emulator to step through the original ROM code of an old computer can provide insights on how the machine worked, teaching us tricks that were usually the preserve of hardware hackers.
In this talk, we cover seven different machines (including perennial home computers like the ZX Spectrum and Commodore 64, along with the Dragon 32, and consoles like the Gameboy) to deep dive on a single element of their implementation. We explain how data can be transfered without a data bus, why it's quicker to check for multiple results instead of one, or what is the legally optimal series of bytes for copy protection.
Beginning with a brief overview of the era in question, 1980-1985, we begin by looking at each of the 7 machines, showing an open source emulator, and how it works in a normal scenario. We then highlight a portion of the code to examine, and break down the reasons for it being written in the way it was. For each machine, we focus on the way the code makes the machine work showing a practical use to emulators that is often overlooked.
We end with a number of "honorary mentions" of ROM code that exists for non-essential purposes, such as Easter eggs.
p.s. no knowledge of antiquated assembly languages is required or expected!
Speakers: Steven Goodwin