On 10/28/2017 9:09 PM, Eric Smith wrote: > IBM invented computer emulation and introduced it with System/360 in > 1964. They defined it as using special-purpose hardware and/or microcode > on a computer to simulate a different computer. > > Anything you run on your x86 (or ARM, MIPS, SPARC, Alpha, etc) does not > meet that definition, and is a simulator, since those processors have > only general-purpose hardware and microcode. > > Lots of people have other definitions of "emulator" which they've just > pulled out of their a**, but since the System/360 architects invented > it, I see no good reason to prefer anyone else's definition. >
Well, I can think of a few. From spending some time today with the IBM 360 catalog of programs for Model 25 and above (GC20-1619-8), IBM was not entirely consistent with their terminology. First of all, a lot of the products/applications that they called emulators were in fact a *combination* of software with some microcode hardware assist. But they chose to call those emulators as well. In some of those cases, the emulated application could run side-by-side with other S/360 programs, and in some cases not. The ones I have spend the most time investigating over the years are 360C-EU-736 and 360-EU-738 - the 1410/7010 emulators. I actually tracked down the source code for one of those at one point (though I don't remember which of the two, and where I stuck it at present). I think it was on one of the 360 DOS distributions available for use under Hercules. What I found was that it was almost all software, but with hardware assist for the move and compare instructions. >From the description in the catalog: "DESCRIPTION - The 1710[sic]/7010 Emulator program is a stand-alone program which, with the 1410/7010 Compatibility Feature (No. 4478) [ed. - the microcode assist] executes 1410/7010 programs on a System/360 Model 50. The Emulator program is an interpreter simulator that uses both standard System/360 instructions ans special instructions provided by the Compatibility feature..." Secondly, your preferred use of the terms emulator and simulator seems to go rather against the grain of how those terms are commonly applied in English in general. In ordinary English, the term emulation is typically applied to observed *behavior*, whereas simulation is typically applied to a more fine-grained reproduction of how that behavior comes to be. That is what led me down the exact opposite path that you have gone down. It was absolutely not, as you say, pulled out of anyone's a**. I and many others came to whatever definitions we use with a fair amount of thought. Finally, this was IBM's use of these terms of art from a long long time ago, and to borrow from your words, I "see no good reason" to be particularly bound by them. The reality is that without some kind of body which would provide specific definitions, such as those in the legal and medical professions, this discussion is endless and the waters sufficiently muddy as to be opaque. JRJ