IBM System 360/370 Compiler and Historical Documentation
This site is dedicated to the fathers of Simula.
WHEN looking INTO the Internet, 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 TO REACTIVATE my collection of SIMULA things, documents AND the original IBM 360/370 compiler. IF you don't like
THIS SIMSET, please DETACH, we will not RESUME you. OTHERWISE, feel free TO INSPECT.
The Beta Language Book Home page introduces: "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 now known as Object-Oriented Programming (OOP)".
Dave Parnas wrote about the Turing prize: "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 (http://prosjekt.ring.hibu.no/simula/). I am not working with SIMULA at present, but keep those interested up to date as to what is still available.
Best regards,
Gunnar Syrrist
My question is whether I can give it out into the public.
With all relevant references, credits, etc, whatever necessary .
There is a so called 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 ststem programmer later in their career. In fact, it takes some time to install an MVS system for a newbee.
The first thing you need is a machine. Since one can assume that at home or
even in your office many don't just have place for iron wrapped in blue, here you can find the
tool you need, the Hercules System/370, ESA/390, and z/Architecture Emulator.
ou may probably be able to use all kinds of MVS derived systems, the Simula system below was used under 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 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 seem to be protection techniques in the code which made it 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 am working on that. I haven't 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),
// DCB=DSORG=DA
//SYSGO DD DSN=&&OBJ,DISP=(NEW,PASS,DELETE),
// UNIT=SYSDA,SPACE=(CYL,(1,1)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS)
begin
class word(t); value t; text t;
begin
while true do begin
detach;
outtext(t);
end
end *** word ***;
ref(word) h,w;
h :- new word("Hello");
w :- new word("world");
resume(h);
outchar(' ');
resume(w);
outimage;
end of program
//GO EXEC PGM=LOADER,
// PARM='EP=ZYQENT,MAP,PRINT/DUMP=5,SYMBDUMP=6,TERM,TRACE=1'
//*
//* 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
//
It's rather long because all kinds of debbuging information output is enabled to show the features.
The printer output created by hercules has been processed by the following perl:
As indicated already above, the 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 shallst 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 remedy is to edit 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 to provide this patch for the compiler
to blank out the entry point in the generated object deck.
The runtime system also has a small year 2000 problem which doesn't prohibit execution. Look at when the sample program starts its execution, so one may assume that 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 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.
Some other material is waiting to be liberated into wilderness after getting scanned, registered, passported and tortured.
This is scanned copy containing some hand-made annotations corresponding to corrections that have been made later. Each chapter really starts on on odd page number. No pages are missing.
Cetus Links - Simula - Includes FAQs, mailing lists, books, an FTP archive, and links to general articles.
Montreal Simula Site - Designed to help with teaching and popularity by providing, eventually, a full online reference, and useful web pointers and access to Simula application software.
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