Ah, the vagaries and byways of computer history... The ENIAC was the first stored program machine, even though 1) it wasn't designed to be, and 2) no one is quite sure who was the first to use it that way... The ENIAC had/has a set of "constant" registers which were intended to be used to store differences in finite difference calculations. Programming was via patchboards. However, since constants (data) could come from the patch panels, a bank of rotary switches OR one of the accumulators they all had addresses. (Three digits, I think but not all possibilities were decoded--Now where is my ENIAC manual...). As Pres Eckert told it to me (many years later, Pres was there, and my father was there, but I was a toddler), there was a discussion about the stored program concept, probably triggered by reading von Newmann's report on the ENIAC in the summer of 1946. Pres realized that since the data paths in ENIAC allowed data to come from the accumulators, it should also be possible to read instructions from there. The went down to the basement to do a quick test, and found that the program currently running had one register used for code. It seems that the coders knew this "trick" for programs that couldn't be fit in the patch panels. (And you thought hackers came on the scene much later...) Later, after the machine had been moved to Aberdeen Proving ground, the normal mode of using the machine was to read in programs from punched cards, with the patch panels devoted to a very primitive monitor progam, sort of like a universal Turing machine. This limited the size of programs that could be run (however you could do overlays! and self-modifying code) and did slow things down somewhat but drastically decreased set-up time. So in spite of what the Supreme Court may have decided, in many ways the ENIAC was the first real computer. John von Numann's first report on stored program computer design was titled "First Draft of a Report on the EDVAC." It was an unpublished paper presenting Moore School work on a computer design to follow the ENIAC. He wrote it after spending several months consulting with the Moore School. It is generally believed that he does not deserve sole credit for the stored program concept and that it is rightly shared with the ENIAC/EDVAC designers at the Moore School. (My dad didn't work there, but he went to the ENIAC Summer School, whatever that's worth. *I* spent my youth standing around the Smithsonian's ENIAC exhibit making the lights flash). In article <1990Nov2.174539.27124@sctc.com> smith@sctc.com (Rick Smith) writes: eachus@linus.mitre.org (Robert I. Eachus) provided a lengthly description of how ENIAC could reference one of its accumulators as an "instruction" during a calculation. This somehow makes the ENIAC a stored program computer. However, the description did not match my understanding of what "stored program computer" means. Yes, there are *pieces* of a stored program computer there, and they're demonstrating many of the right information flows, but it's just not the same thing. There's no read/write memory containing the instructions under execution, there's no program counter that steps through that memory fetching instructions for execution. Don't confuse terminology with functionality...The accumulators on the ENIAC were its version of main memory. The developers of the ENIAC and EDVAC knew (very well) the differences in speed between electronic and mechanical devices so all switches, etc. were read into electronic "registers" before being used. The "accumulators" were addressable locations where the results of calculations were intended to be accumulated before punching or printing. Of course, all involved had figured out early in the design, that since these locations could be read and written, that there were lots of uses for them. The number was increased from ten to twenty, and there were plans to increase the number further. The real "invention" in the stored program concept was the ability to treat programs as data. You couldn't do this on a Harvard architecture machine. (Modern "Harvard" architechure designs all have special instructions which flush caches and data paths when programs muck with code.) vonNeumann's paper pointed out that the EDVAC design would permit self-modifying code, and described the some of the advantages of writing such code. This would have made him the first hacker, except that such code was already running on ENIAC as I described. By the way, when the HP-55 first came out, my father went to look at it and it seemed awfully familiar. It turned out to be almost digit for digit upwardly compatible with the ENIAC, but a lot faster. (We actually took some ENIAC code and ported it...) The TI-59 a little later gave the same nod to the UNIVAC I, but it wasn't quite as close a copy. -- Robert I. Eachus with STANDARD_DISCLAIMER; use STANDARD_DISCLAIMER; function MESSAGE (TEXT: in CLEVER_IDEAS) return BETTER_IDEAS is...