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.
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.
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. The former site had not been maintained since almost 3 years and shows an outdated version. There is also an overview of current versions. Choose yourself.
ou may probably be able to use all kinds of MVS derived systems, the Simula system below was used under MVS/XA. 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 MVS 3.8J Operating System. There are some nice extensions to MVS which make life a little bit more easy that the native environment.
Here you can have the Simula compiler and its runtime system. To my knowledge, this Simula implentation was done with PL/360. The compiler had a year 2000 problem. After patching one octet in the load module the beast became tame. There are some funny 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.
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 you 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:
Don't expect me to correct errors in the system. 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 me during th 1970s an 1980s from time to time. Finally I got it: Thou shallst not try to access to a byte in a page that does't belong to you. The explanation: Assume register one pointing to the last word in a page
UNPK 0(9,R2),0,5(R2)
followed by a TRT of the first 8 octets and setting the 9th to blank.
Works almost, but not for the last word in page where you cannot access the next.
This editing technique is used in various parts of the run time system but without real consequences.
z/OS will experience
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.
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 not really implemented for example, but that doesn't really hurt.
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
Depending on your version of GCC, you may need to remove the obstack.[c|h] from the CIM source directory. The 4.3 version does not include a little patch of 3.37 that avoids an fclose twice, something that glibc doesn't really like.