On Sun, 08 Mar 2020 17:11:57 +0000, Daniel James wrote:
> In article , Martin Gregorie wrote:
>> My first language was Algol 60, followed by PLAN (ICL 1900 mainframe
>> assembler) when I started work, then COBOL, Algol 68 (a much underrated
>> language), BASIC, PL/9 and then C.
>
> I learned Algol68 first ... and almost every language I've looked at
> since has been a bit of a disappointment (except, maybe Ada and C++).
>
> Do you know of Algol68 Genie, the interpreter that runs on Windows and
> Linux? Nostalgia is very much what it used to be ...
I've heard of it, but not used it.
All my A68 experience, what there was of it, was with Algol68R on a
1904S running George 3 when I was the sysadmin for a while at British
Steel's Battersea Labs. I'd installed A68 there and played with it a bit
before letting the researchers loose with it. It was installed at their
request.
Then, quite suddenly, the George 3 job accounting system went titsup with
a classic 1900 crash - the program reduced its memory size to 64 words
and crashed trying to execute and instruction that was now outside the 64
word address space. Since at this point you had nothing except the
accumulators, PC and CC plus the next 54 words to work with it wasn't
easy to debug a program that did that.
Long story short: the accounting program had tried to handle a very long
running job which had created a very big log. As its first action was to
increase memory to hold the entire log before starting to process it,
this time the log size forced it to hit the process memory limit (32K
words for a program running in 15AM mode), at which point the address
pointer wrapped round and continued to write the log, from address zero
which stomped on its registers, overwrote the PC and crashed.
Technical point: In all 1900s below the 1906 the 8 accumulators, PC and
CC were the first 10 words of a program's memory. The only hardware
registers were datum and limit for the running program, which made
swapping programs in and out of memory or moving them around extremely
easy because the entire program was always a single code block, but did
meant that an address overflow could wrap round and continue writing to
memory from word zero. The PC address was always relative to the
program's datum address.
Anyway, I worked out why it had crashed: see above. So, I wrote its
replacement in A68R, mainly because I could, IIRC we didn't have a COBOL
compiler, and doing it in PLAN would have taken a lot longer. C hadn't
yet been invented and I don't speak FORTRAN. My program processed logs
line by line, so bypassed the original problem.
A month of three after that I left and took 10 months off driving to
India and back. When I visited on my return my program was still up and
running happily. I know it hadn't been touched because my replacement had
deleted the source(!) soon after I'd left.
--
Martin | martin at
Gregorie | gregorie dot org
--- SoupGate-Win32 v1.05
* Origin: Agency HUB, Dunedin - New Zealand | FidoUsenet Gateway (3:770/3)
|