The ENIAC was no stored-program computer, so programming was very different from what we know of modern computer systems. There was no ENIAC programming language; all instructions were given to the machine by connecting wires to special ports on the panels, in a way to allow goal-directed information flow to occur, and by setting switches on the various units. Examples of how to do this are given later in this paper.
The original hardware of the ENIAC is not complete anymore, there are only some surviving panels. To celebrate the ENIAC's 50th birthday, a team around Jan Van der Spiegel of the University of Pennsylvania reconstructed the ENIAC machine in modern hardware [2], which resulted in a single silicon chip [3]. For this project, extensive research on the original hardware details was done.
In contrast to other ancient computers, such as the German Zuse Z3 [4], or the EDSAC [5][6], there has been no software simulation of the ENIAC. The aim of this paper is to document the author's writing of a Java simulation of the basic parts of the ENIAC, and to provide a user manual. With the simulator, old programs for the ENIAC can be tried out and traced back in every detail. Also, the simulator offers a comfortable environment for the development of new programs. All sources, this documentation in various formats, and the running simulator as a Java applet can be found on the web [1]. For detailed specification of what parts of the original machine are not yet implemented in this version of the simulator, see Section 7.
After a short account on the original machine, this paper continues by describing the graphical user interface of the simulator, and then goes into the Java implementation details, showing also an example of how to program the simulator (and the original) to calculate a modulo division.