Electrologica X1 Computer


The X1 computer was conceived in 1958 at the Mathematical Centre in Amsterdam, and commercially produced by Electrologica NV in The Hague, a company specially established for this purpose, and the first of its sort in the Netherlands. It has been successful - at least 31 machines were sold, many of them to other European countries. The Electrologica story ended in 1966 when the company was taken over by Philips, its main components producer (IBM being another important Philips customer for computer components…).
The Electrologica X1 and X8 computers:

‚ÄúThe X1 made use of decimal input and output mechanisms, but internally it worked binary, like the ARMAC. This was also the first machine using interrupts, which increased I/O performance. The machine generated an interrupt when input or output were available. The interrupt idea is published by E.W. Dijkstra in his Ph.D. Thesis: ‚ÄúCommunition with an Automatic Computer‚ÄĚ. This mechanism achieves asynchronous I/O handling, which ensures that the system did not have to wait for relative slow terminal devices‚ÄĚ.
Unsung heroes in Dutch computing history: Electrologica X1:

Electrologica X1 https://en.wikipedia.org/wiki/Electrologica_X1
Detail of ferrite core of X1:

1959 EWD thesis: "Communication with an Automatic Computer ", Edsger W. Dijkstra

2.1 Introduction
2.2.1 The basic machine
2.2.2 The memory
2.2.3 Input and output apparatus
2.3 The order code
2.4 The variants
2.4.1 Address modification
2.4.2 Condition reaction
2.4.3 Condition-setting
2.5 The order notation
2.5.1 The address notation
2.5.2 The order
2.6 Shift and communication orders
2.6.1 Shift orders
2.6.2 Register transports
2.6.3 Normalize orders
2.6.4 The stop order
2.6.5 The fast multiplications by 10
2.6.6 The communication orders for the tape reader
2.6.7 The communication orders for the tape punch
2.6.8 The communication orders for the typewriter
2.6.9 Timing of communication orders
2.7 The synchronization with external apparatus
2.7.1 Introduction
2.7.2 The preserving function of subroutine jumps
2.7.3 Orders related to interruptions
2.7.4 The interruption by means of the keyboard
2.8 The console of the X1
2.9 The speed of X1
3.1 The requirements
3.2 Arithmetical facilities
3.3 The word length
3.4 The condition
3.5 The subroutine jump
3.6 The counting jump
3.7 Address modification
3.8 Shift orders
3.9 Some examples
3.9.1 A ‚Äústep by step reduction to zero‚ÄĚ
3.9.2 Determination of the smallest factor
3.9.3 Punching a binary word
3.9.4 Forming a scalar product
4.1 The tape read program as independent program
4.1.1 General survey of the functions of the tape read program
4.1.2 Initials
4.1.3 Type indications
4.1.4 Directives for the processing cycle
4.1.5 Remarks about the use of directives
4.1.6 Starting the tape read program
4.2 The tape punch program as independent program
4.3 The type program as independent program
4.4 The keyboard program
4.4.1 Manual input of numbers
4.4.2 The autostarts
4.5 The tape program as subroutine
4.6 The tape punch program as subroutine
4.7 The type program as subroutine
4.7.1 The type code
4.7.2 Calling in the type subroutine
4.7.3 Extra line blank
4.7.4 ‚ÄúTab-tape‚ÄĚ
4.8 Some remarks about synchronizing routines
4.8.1 The interruption permit
4.8.2 The end of a program
4.8.3 Autostart 6
4.8.4 Compatibility of the keyboard program and active communication programs
4.8.5 Reserved storage locations
4.9 Description of synchronizing subroutines
4.9.1 Introduction
4.9.2 General structure of synchronizing communication programs
4.9.3 The calls of the internal communication routines
4.9.4 Structure of the internal communication routines
4.9.5 The interruption of class 6
4.9.6 Autostart 2
4.9.7 The possibility of translation
4.10 Mutually synchronized input and output
5.1 The communication program in the dead memory
5.2 Extension possibilities of the keyboard program
5.2.1 Input of floating point numbers
5.2.2 Multiple autostarts
5.3 The extension possibilities of the tape read kprogram
5.4 Some closing remarks
Appendix 1 The symbols on the typewriter
Appendix 2 Binary representation of orders
Appendix 3 Storage reservations in the living memory
Appendix 4 Standard program for class 6 and class 7


Dijkstra References in his Thesis about X1 computer:
A really short bibliography:

1 Like

X1 Dijkstra’s Thesis:
Symbols on the typewriter

1 Like

There’s also a connection to Algol, as explained in this highly interesting paper:

The main purpose of this document is to preserve the code of what presumably has been the first working ALGOL 60 compiler. It was written for the Electrologica X1 by E.W. Dijkstra and J.A. Zonneveld at the Mathematical Centre in Amsterdam in the years 1959 and 1960. Its code has never been documented before.

In the summer of 1960 Edsger W. Dijkstra and Jaap A. Zonneveld put into operation the very first ALGOL 60 compiler in the world. Its code was never documented. This report contains the full assembly text of one of the latest versions of that compiler (from 1964).

In order to make that text more accessible, an equivalent version in Pascal is added, together with eight chapters introducing the compiler and explaining its major features.

Via a post by @sohkamyung on gplus, linking to this tweet: