WHEN looking INTO the Internet near 2006, documentation FOR old SIMULA compilers AND even the original language definitions are difficult TO find.
Well, UNTIL I discovered the Hercules, which IS NOT a SIMULATION, AND the free IBM MVS system. I became motivated AT once TO REACTIVATE my collection of SIMULA related things, documents AND, in paticular, the original IBM 360/370 system. IF you do NOT like THIS SIMSET QUA Peter, THEN please PASSIVATE, we will NOT ACTIVATE you. ELSE, feel free TO INSPECT without DELAY.
The Beta Language Book Home page used to introduced (once upon a time): "In the beginning there was Simula - designed by Kristen Nygaard and Ole-Johan Dahl at the Norwegian Computing Center in the 1960s, the first language to introduce the techniques recognized as Object-Oriented Programming (OOP)".
Dave Parnas wrote about the Turing award: "Finally, they have given this prize to people who have really made a difference. In more ways than I can ever explain, your work has changed the way people think about software and write about software."
Helle to you, as well. Your e-mail was finally passed on to me. I worked at the Norwegian Computing Center (NR), way back. I worked in Simula a.s. afterwards, as long as we managed to keep the company going. I was responsible for the IBM SIMULA system, among others, in both cases. I am actually very pleased that you have managed to get the old IBM SIMULA system up and running on an MVS emulator. Impressive! Yes, of course you may continue to use it! I was the last person in Simula a.s. I maintained a website and an e-mail address a number of years after the company terminated its operation, to keep the PC SIMULA system available for those who wanted to use it. It is still available for those who know where to find it. I am not working with SIMULA at present, but keep those interested up to date as to what is still available.
My question is whether I can give it out into the public.
With all relevant references, credits, etc, whatever necessary .
There is a TURNKEY MVS system and people try to collect "free" compilers for this beast.
Here you can find the SIMULA system and prerequisites. When I wrote this paragraph, I had forgotten that not all users and developers in the mainframe area have become system programmer later in their career. In fact, it takes some time to install an MVS system for a newbee, unless:
For Windows fans, Karel Babcicky has setup a complete syetem including a remote station ; Description, Setup file. Using this, you get an almost blackboxed MVS together with a card reader and printer. No need to learn fancy modern stuff like TSO. Good old batch processing. The system is obviously also good for anything written in JCL. In 1973, that's how we used sthe IBM/168 at University Bonn, with real cards and paper, of course.
You may probably be able to use all kinds of MVS derived systems, the Simula system below was used by me until MVS/ESA. To use it under z/OS, see below under bugs and remedies.
I used the MVS Tur(n)key System, Version 3 nicely packaged together by Volker Bandke. The MVS Tur(n)key system is a package of freely available parts of the MVS3.8j Operating System. There are some nice extensions to MVS which make life a little bit more easy that the native environment.
Jürgen Winkelmann has integrated the SIMULA system into his remake/update of Volker's work. Thus, the SIMULA system has found a new haven. Karel Babicky, former head of the SIMULA group Norsk Regnesentral, has contributed a newer version of the self reproducing test program (compatible with the language standard and working both in ascii and ebcdic).
This is the Simula compiler and its runtime system. This Simula system was partially implemented with PL/360. The compiler had a year 2000 problem. After patching one octet in the load module the beast became tame. There is some protection technique in the code which made it a bit difficult to use TSO TEST.
The file contains compiler and runtime system in XMIT/RECEIVE format.
You can use the hercules dasdload program to install it at whatever location you want.
I assume that you know what is a disk, you know what is a catalogue, and other things. The original installation tape had some JCL to do this.
Unfortunately the quality of the scanned text is rather bad, some of the original pages having almost no contrast. I have not integrated revised pages. The image is a scanned part of a real original binder.
The writers of the texts seems to like drinking, there is a built-inn feature. Don't use the report procedure. Rather write to me.
There is also the External Procedure Library documentation that make available various external functions via the EXTERNAL ASSEMBLY interface. They form an integral part of the run-time system and allow to access to various features of the run-time system and of the operating system in general, e.g., you can execute any arbitary pieces of code without the need to program you own assembly functions.
You may need to change the location of the simula.linklib and make other adaptions according to the requirements of your actual Job Entry System.
//SIMULA JOB ,MSGLEVEL=(1,1),REGION=1024K
//* This job compiles and runs a simula program
//* A simpler version of it is
//* BEGIN outtext("Hello world"); outimage; END
// EXEC PGM=SIMULA,PARM='INDENT=3,SYMBDUMP=3,RESWD=4,LIST,XREF'
//* indent the listing 3 cols after each begin
//* creation symbolic dump information
//* uppercase reserved words, an first char uppercase known functions
//* show aseember listing
//* and cross references
//STEPLIB DD DSN=HERC01.SIMULA.LINKLIB,DISP=SHR
//SYSPRINT DD SYSOUT=A
//SYSTERM DD SYSOUT=A
//SYSUT1 DD UNIT=VIO,DISP=(NEW,DELETE),SPACE=(3200,(20,20))
//SYSUT2 DD UNIT=VIO,DISP=(NEW,DELETE),SPACE=(3200,(20,20))
//SYSUT3 DD UNIT=VIO,DISP=(NEW,DELETE),SPACE=(3200,(20,20))
//SYSUT4 DD UNIT=SYSDA,DISP=(NEW,DELETE),SPACE=(1024,256),
//SYSGO DD DSN=&&OBJ,DISP=(NEW,PASS,DELETE),
class word(t); value t; text t;
while true do begin
end *** word ***;
h :- new word("Hello");
w :- new word("world");
end of program
//GO EXEC PGM=LOADER,
//* maximum postmoretm dump in case of error
//* and symbolic dumps also
//* all debugging output to systerm
//* allow trace facility
//SYSLIN DD DSN=&&OBJ,DISP=(OLD,DELETE)
//SYSLIB DD DISP=SHR,DSN=HERC01.SIMULA.LINKLIB
//SYSLOUT DD SYSOUT=A
//SYSOUT DD SYSOUT=A
//SYSTERM DD SYSOUT=A
Here is one page of the Simula Reference Card from 1971 which resumes some JCL parameters.
This is a self-reproducing program, a quine, written by Karel Babcicky. It was used a a test program to verify the installation of the Simula system. The original version only supported EBCDIC. This version also works in in ASCII environments, e;g. with the cim system.
As indicated already above, the original system had a year 2000 problem.
Don't expect me to correct errors in the system but I might try. But please send me your observations.
My second try was to produce a nice post-mortem dump using a program like BEGIN INTEGER i; i:= i/i; END This provoked a error that hit us starting with MVS bu we never looked at it seriously. Finally I got it: Thou shalt not try to access to a byte in a page that does't belong to you. The explanation: Register 1 pointing to the last word in a page UNPK 0(9,R2),0(5,R1). This technique is used in a few parts of the run time system but without real consequences.
With Z/OS you will get:
IEW2551E 4606 THE ENTRY NAME ZYQENT ON THE CURRENT OBJECT MODULE END
RECORD IS NOT A DEFINED NAME IN THIS MODULE.
One cure is to patch the object deck, change ZYQENT to blanks on the END card, and ensure to have EP=ZYQENT as part of the loader parameters. What to do for the linkage editor is left as an exercise. Thanks to Roger Bowler for providing this patch to the compiler. It blanks out the entry point in the generated object deck. Why IBM has changed the behaviour of the binder, who knows?
ZYG: indicating a pair or a union, ENT: Don't be hasty.
The runtime system had a small year 2000 problem which doesn't prohibit execution. Look at when the sample program starts its execution; it seems thtat there were at least two programmers at work. Jürgen Winkelmann fixed this issue until 2100. Karel Babcicky confirmed the correction by providing a copy of the original source. Note here, that [ comes instead of #, \ instead of @, left arrow instead of _.
There are several version of the Simula language.
The 1986 version of the language standard is not fully supported by this Simula Compiler. Hidden and Protected is only implemented syntactically for example. The programmer should assume responsibily for the code anyway.
Some other material is waiting to be liberated into wilderness after getting scanned, registered, passported, certified and tortured.
Holmevik, J.R. (1994). "Compiling SIMULA: a historical study of technological genesis." IEEE Annals of the History of Computing, 16 (4), p. 25-37, 1994. The article was also presented at the 18th ASU Conference in 1992, and published in the SIMULA Newsletter Vol.20(1), October 1992.
According to Jaroslav.sklenar, Mr. Holmevik's permits to download a copy of his paper at Compiling SIMULA