Super Simula

IBM System 360/370 Compiler and Historical Documentation

O. Dahl K. Nygaard 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."

Simsalabim. Free or not? Yes, it is.

SIMULA is a trademark of Simula a.s., OSLO.

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

Simula

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.

Yes, by all means, make it available.

Best regards
Gunnar

Software and Prerequisites

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 Hercules System/370, ESA/390, and z/Architecture Emulator

Hercules Emulator 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 MVS Tur(n)key System, Version 3

MVS turnkey 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.

The MVS 3.8j Tur(n)key 4- System

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).

The SIMULA System 360/370 Compiler and Runtime system

Simula XMI 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.

SIMULA 360 Users Guide

Simula Users Guide 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.

Simula Programmer's Guide IBM System 360/370

Simula Programmer's GuideThe 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.

The first two pages of appendix J contain @ characters instead of 0 for some unknown reason.

The inevitable hello world example.

We are dinosauursHere you find a sample program, a job written in Job Control Language to run it under MVS and the output.

The Hello world job file.

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
//

The output

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:


#!/usr/bin/perl
print '<html><head><title>Simula Hello world</title></head><body bgcolor="#ffffe0">';
print "<tt>\n<pre>\n";
while (<STDIN>) {
  s|(\r)*\f(\n)*|</pre>\n<hr>\n<pre>|g;
  print;
}
print '</pre></tt></body></html>';

Bugs and Remedies

bugs at work

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 _.

The language standards

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.

Simula I (fifth edition 1967)

SIMULA I manual cover

Note: Page 116 was missing.

The SIMULA 67 COMMON BASE LANGUAGE

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.

Simula - its feature and prospects

A lecture delivered by Graham Birtwistle at the B.C.S. Conference on "High level Language", York, October 1972.

For implementors

The Simula Implementation Guide

The 1986 version was also accepted as Swedish standard SS 63 61 14.

Links

Thanks to Максим Игоревич Соболев for some information and corrections to links.



View Larger Map