Retrocomputing Emulator Suite

I was thinking about whether it would be possible, corporate stars being aligned, to compile a suite of emulators for all sorts of different old computer systems. The instruction sets are usually easy to get a hold of; it’s hardware emulation that’s challenging.

I know that it seems like nothing less than annoying the living shit out of, say, IBM will result in them ever allow for the controlled performance comparisons necessary for effective emulation, but don’t worry about that yet. I don’t need bellyaching about how hard it is to get old companies to divulge anything about old licensed operating systems or someone saying “I don’t see the point, man. It doesn’t make $$$$!”

I get it. You have become so integrated into the daily grind and keeping up with the joneses that the neurons in your brain responsible for liking things simply because they are cool have been fried and replaced with a hamster on a wheel that chases dollar bills and prestige to get the personal validation you were deprived of while growing up. Happens to the best of us, but I’m not your therapist.

So let me just settle this in advance: My tastes are objectively correct. Anyone who disagrees with my tastes is not cool and objectively incorrect and morally evil on par with greatest mass murderers in history; therefore, it is imperative that we talk about speculating how such a system would work and what would need to happen to make good emulation possible otherwise you are basically Jeffrey Dahmer and should be in jail.

What I want to figure out is what exactly what would need to happen for good emulation to occur. What I mean by “good emulation” is that I want to run an algorithm on a computer in the original instruction set for an older computer (say, the Ancient Babylonian IBM 360) that mimics the performance of the old hardware (at least), but ideally would allow for a greater level of resolution in what is happening beneath the hood within the emulation. The latter is probably a pipe dream, but the former would be great.

Anyone who has any experience in retrocomputing or emulation have any advice?

P.S. Don’t say “I don’t know how many people would be interested so not worth the effort” because we are already settled that my tastes are objectively correct.

This is an emulation suite for a number of “big iron” mainframe and mini computers as well as several microcomputers.

http://simh.trailing-edge.com/

They can run the usual operating systems and I believe disk images are provided.

VICE and MAME are similar but for microprocessor systems.

There are several general approaches to simulating a processor.

  • “Good enough” - Correctly implements the effect of instructions on machine registers, condition codes, memory and input/output devices to be able to run a vast majority of the software written for the machine. The emulators I write fall into this category with an emphasis on speed of execution; the only place I deviate is that I accumulate a count of machine cycles used by each instruction to help in optimizing code.

  • “Cycle exact” - Simulates on a machine cycle level instead of by instruction. Particularly close attention is paid to when within multiple-cycle instructions code is fetched, interrupts are recognized and accesses are made to memory and peripherals. This level of precision is needed to successfully run some games and other software which intentionally or serendipitously depends on the exact timing of the system.

  • “Hardware” - Simulates the logic components of the actual processor. These tend to be slow but are the most precise.

I do not know where SimH falls.

2 Likes