> On Feb 15, 2025, at 2:53 PM, ben via cctalk <cctalk@classiccmp.org> wrote:
> 
> On 2025-02-15 11:27 a.m., Frank Leonhardt via cctalk wrote:
> 
>> Running anything like Algol on a machine with drum memory seems a bit 
>> optimistic!
> 
> Remove "Like Algol" and the statement is even more valid.

Oh?  Certainly by today's standards a drum memory machine is quite slow.  But 
in their day they were used for serious work.

To pick one example, the ARMAC machine developed at CWI in Amsterdam (then 
called MC, Mathematical Center) had a drum main memory coupled with a one entry 
cache to hold the most recently accessed drum track.  That was the main machine 
at MC for a couple of years, until the Electrologica X-1 (with instruction 
times in the 20-30 microsecond range) replaced it.

Before the ARMAC came the ARRA 2, which had drum memory without the cache.  It 
worked well enough that Dutch aircraft manufacturer Fokker commissioned a copy, 
named FERTA.  It was used to do the design of at least one of their major 
commercially successful airliners.

> I guess that was why the PDP-1 was successful, it had early core memory.

Yes, it did, though commercial core memory machines appeared a number of years 
before that.  For example, the EL-X1, which was a core memory fully 
transistorized computer, came out in 1958.  It appears to be the first 
commercial computer with interrupts as a standard feature, which prompted 
Dijkstra to write his Ph.D. thesis on the problem of how to create reliable 
code with interrupts.  He wrote the ROM BIOS for that machine.

> I keep forgetting about drum memory, on most early machines.
> Around what time did core memory drop in price that one had ample main memory 
> to compile with? I am guessing the late 60's.

1958.  The X1 is where Dijkstra and Zonneveld created the first ALGOL compiler, 
in 1960.  Unlike a  number of early compilers that one was a full 
implementation except for the one or two small "features" that by then had 
already been recognized as mistakes.

That compiler ran in 4 kW 27 bit words, requiring several passes.  A later 
version that took advantage of a memory upgrade -- to 16 kW -- was a full 
compile-load-execute system.

So "ample memory" is a bit of a debatable question.  It depends a lot on who is 
doing the work.  For Dijkstra and Zonneveld, 4 kW was useable and I suspect 
they would have considered 8 kW "ample".  For the creators of the DEC PDP-11 
operating systems DOS-11 and RT-11, 8 kW (16 bits, so 16 kB) was ample; IBM 
engineers required 128 kW for something not as good (OS/360 PCP v19.6).  
Today's programmers often think in terms of megabytes if not gigabytes as the 
minimum tolerable, while many of those who hang out on this list enjoy the 
challenge of squeezing stuff into a small microcontroller, or the boot block of 
some disk device.

For an extreme example, consider the "programmable I/O" state machines in the 
Raspberry Pico microcontroller.  It has two or three engines, each with 4 state 
machines that share the program memory -- 32 words of 16 bits.  With care, you 
can do a lot with those.  I'm thinking of doing a "bit banging" implementation 
of Ethernet with that device...

> The PDP 8/e, being simple could have a fast cycle time 1.2 uS.

Keep in mind that cycle time in those days wasn't necessarily constrained by 
the logic but by the memory.  Early core memories had cycle times of many 
microseconds (the X1 for example had 8 microsecond core, I think).  CDC 
delivered 1 microsecond core memory cycle time in 1964, but it took some rather 
mind bending electronic circuitry to make that possible.

> ...
> I wonder how much progress computers would have made had ACSII
> and Algol not kept changing standards every few years?

Algol-60 never changed after the Revised Report of 1962, which was really the 
"V1.0" release.  Algol-68 is an entirely different language, just as Pascal is 
an entirely different language.

As for ASCII, that is exactly what it was originally.  There have been lots of 
other character set definitions since then, though the mind bending variety of 
language-specific sets was finally fixed once and for all with Unicode.  Yes, 
Unicode keeps growing to add more obscure character sets, but it's still the 
same standard.

> Some how 6 bit characters seems more standard, text wise,

Which one?  Electrologica had several, CDC had a bunch, as did every other 
vendor.

> Is there any thing a ALGOL compiler needs for good code generation
> other than ample index and GP resisters?

Some things make life simpler, such as stack operations and subroutine call 
instructions that support recursion.  But none of those are required; the EL-X1 
had none of these.  Its successor the X8 did because it was designed with the 
knowledge of Algol in mind (the X1 predates Algol).  And as a result, the 
transformation from Algol source code to machine code is in a number of places 
more straightforward.  But you can compile anything you want to any machine you 
want; if it's good enough to be considered a general purpose computer it can be 
handled.  

Another example is the CDC 6000 series mainframes, for which a bunch of 
compilers were created including Algol 60 as well as Algol 68.  That machine 
has no index registers, no stack, no recursion; it only has 8 primary registers 
and its subroutine call overwrites memory.  Not very friendly, but it just 
means a bit more work for the compiler writer.

        paul

Reply via email to