Trailing-Edge - PDP-10 Archives - decuslib10-05 - 43,50337/25/tdi.mem
There is 1 other file named tdi.mem in the archive. Click here to see a list.

                               CHAPTER 1

          SIMULA FOR DEC SYSTEM 10             TD, SYSTEM DESC

SIMULA FOR DEC SYSTEM 10             TD, SYSTEM DESC             I.1-1

740911    780302      6                           Olof Bjorner



I.1.1	Background

        SIMULA (earlier called SIMULA 67 to be  distinguished  from  its
        precursor  SIMULA  I)  is  a  powerful  high  level  programming
        language which contains Algol 60 as a subset.  It was  conceived
        at  the  Norwegian  Computing  Centre  (NCC) in Oslo and defined
        during 1966 and 1967.  In 1974,  when  DECsystem-10  SIMULA  was
        initiated,  SIMULA implementations existed on CDC, IBM, Iris and
        Univac computers and  several  implementations  have  been  made
        since  then  (up  to  1978).   SIMULA  has facilities for string
        manipulation (TEXT), list manipulation (reference variables  and
        classes,  standard  class  SIMSET) and discrete event simulation
        (standard class SIMULATION).  The  defining  documents  are  the
        revised  Algol  60  report  and the Common Base Language report,
        published by NCC.

        The DECsystem-10 SIMULA system was designed and implemented  for
        the installation at the Stockholm Data Centre (QZ) in Stockholm.
        This data centre is used for interactive program development and
        interactive  simulation  studies by the Swedish National Defence
        Research Institute (FOA), and for research and education at  the
        universities  in  the  Stockholm area.  The installation is also
        available to commercial customers.

        In connection with the procurement of the DECsystem-10 computer,
        FOA  decided  that  SIMULA  would  be  the best choice for their
        applications.  FOA already used, and  had  parcipitated  in  the
        development of, SIMULA for IBM 360/370.

        A design study for a SIMULA system was carried out by CAP Ltd in
        Reading,  England.  The result is published as a FOA report, see
        reference documents below.
SIMULA FOR DEC SYSTEM 10             TD, SYSTEM DESC             I.1-2

740911    780302      6                           Olof Bjorner

        The CAP report was used as basis for the actual  implementation,
        which  was  undertaken  as a joint venture involving FOA and the
        swedish software house ENEA DATA (Engmans Elektronik)  ENEA  had
        full   technical   and  economic  project  responsibility.   The
        manpower effort for the main project  included  eight  full-time
        systems  programmers,  five  of them employed by ENEA (including
        the project leader), two FOA employees and one  programmer  from
        QZ.   The  development  time  was 20 months excluding vacations,
        which gives an implementation effort of roughly 14 man-years.

        Following the successful  conclusion  of  the  main  project  in
        December  1975, ENEA kept one man as trouble-shooter for some 18
        months on a service contract.  During the  two  years  1975  and
        1976,  FOA  also hired ENEA to do some work on extensions to the
        system,   notably   error   recovery   at   run-time   and   the
        implementation of HIDDEN-PROTECTED feature for safer programming
        of application packages.  Since the end of the main project, FOA
        has  kept  one  systems  programmer full time on corrections and
        development work.

        The SIMULA system has been tested thoroughly, using a test batch
        consisting  of more than 2000 SIMULA programs from CDC, NCC, KTH
        (Royal Institute of Technology, Stockholm) and FOA.

        During  most  of  the  development  effort,   the   DECsystem-10
        installation  at  QZ  consisted  of  a  KI10  CPU with 128K core
        memory, a drum for swapping, disk packs and the usual peripheral
        equipment  (no card punch).  The SIMULA system is thus developed
        on a  KI10  system  and  does  not  run  unmodified  on  a  KA10
        configuration.   The  present  QZ system is a 1090 system with a
        KL10B CPU, bigger disk packs, no drum.  The SIMULA  system  runs
        unmodified  on  the  KL10  CPU.  Possibly, incompatibilities may
        arise with KI10 installations in the future.  KA10 modifications
        are discussed in section I.7.

        A modification for the DECsystem-20 was made  by  Lars  Enderin,
        FOA,  during  December  1976  and  January 1977 at the DEC Large
        System Group facilities in Marlborough, Mass., USA.  There  have
        not  been  sufficient  funds and manpower available to bring the
        DECsystem-20 version  to  the  same  level  of  reliability  and
        functionality as the DECsystem-10 version, however.
SIMULA FOR DEC SYSTEM 10             TD, SYSTEM DESC             I.1-3

740911    780302      6                           Olof Bjorner

        The DECsystem-10  SIMULA  system  is  written  in  the  MACRO-10
        programming  language  with extensive use of macros and will run
        in a minimum of 25K words of core memory.

I.1.2	Brief system description

        The  DECsystem-10  SIMULA  system  consists  of  the   following

        * a three pass compiler

        * a run time system (object time system)

        * an interactive debugging system

        * utility programs and help files

        The SIMULA system runs under the TOPS-10  monitor  from  version
        5.06  and  can be used like any other language processor such as
        FORTRAN.  Modifications have been made in  the  COMPIL  program,
        the  LINK-10  program  and  in  the  SPRINT  program  (for batch
        programs).  These modifications are  described  in  section  I.3
        System  Interface.  A narrative description of the SIMULA system
        is given in section I.2.

I.1.3   Principles and organization of the technical documentation

        The most important aims of the technical documentation  are  (1)
        to describe the implementations used and (2) to serve as a guide
        in  future   maintenance   and   development.    The   technical
        documentation  is not intended as a text on compiler writing and
        cannot be understood without basic knowledge in compiler writing
        techniques,    programming    languages   (especially   SIMULA),
        DECsystem-10 assembler  language,  monitor  interface  and  time
        sharing usage.

        The contents of the technical documentation are focussed on  the
        overall  design and philosophy of implementation.  More detailed
        information is found in  the  module  documentation.   The  most
        detailed information is found in the source code listings.  Most
        of the documentation for a specific module is thus  included  as
        source  code  comments.   Detailed  flowcharts have been avoided
SIMULA FOR DEC SYSTEM 10             TD, SYSTEM DESC             I.1-4

740911    780302      6                           Olof Bjorner

        since they seldom show the program logic better than the  source
        code  and are difficult to update.  For certain modules, overall
        flowcharts exist which show the general logic.

        The technical documentation is divided into eight main sections:


                Contains information common to the entire SIMULA system.

        II      THE COMPILER
                This section is further divided into three sub-sections,
                one per pass.


        IV      THE DEBUG SYSTEM

        V       UTILITY PROGRAMS


        VII     INDEX


                Only the file names are listed in the  main  volumes  of
                the  technical  documentation.   The actual listings are
                obtained by compilation.

I.1.4   Non-technical documentation

        The  DECsystem-10  SIMULA   Language   Handbook   contains   all
        information  needed to use the SIMULA system.  Part I contains a
        tutorial description of the SIMULA language.  Part  II  contains
        all  implementation dependent information such as character set,
SIMULA FOR DEC SYSTEM 10             TD, SYSTEM DESC             I.1-5

740911    780302      6                           Olof Bjorner

        run time I/O facilities, etc.  Part III describes the  extensive
        utility  library,  LIBSIM.  All three parts are available as FOA
        reports and as RUNOFF source files and usually as RUNOFF  output
        files (SIMLH1.MAN etc.) ready for printing.

        The DECsystem-10 SIMULA Implementation Guide (created  from  the
        file  SIMIMP.RNM by RUNOFF) contains information on setting up a
        SIMULA system from a distribution tape.

I.1.5	Reference documents

        1.      Dahl, Myhrhaug and Nygaard:
                Common Base Language
                Norwegian Computing Centre, October 1970
                Publication No. S-22

        2.      Revised Report on the Algorithmic Language Algol 60.
                CACM Vol. 6, NO. 1, 1963.

        3.      IBM System/360 SIMULA User's Guide.
                Norwegian Computing Centre 1971.
                Publication No. S-24-0.

        4.      IBM System/360 SIMULA Programmer's Guide.
                Norwegian Computing Centre 1971.
                Publication No. S-23-0.

        5.      DECsystem-10 SIMULA Language Handbook, Part I
                FOA 1 Report No. C8398-M3(E5).

        6.      DECsystem-10 SIMULA Language Handbook, Part II
                FOA 1 Report No. C8399-M3(E5).

        7.      DECsystem-10 SIMULA Language Handbook, Part III
                FOA 1 Report No. C10045-M3(E5).

        8.      DECsystem-10 SIMULA Implementation Guide
                FOA 1 Report No. C8400-M3(E5).

                               CHAPTER 2

          SIMULA FOR DEC SYSTEM 10             TD, SYSTEM DESC

SIMULA FOR DEC SYSTEM 10             TD, SYSTEM DESC             I.2-1

741008    780302      6                           Stefan Arnborg


        The objective of the SIMULA system is to implement the  abstract
        computation  process  defined  by  a  SIMULA  source text and to
        provide a large set of support functions.  Among the latter are

          i)    Documentation aids:  program listing and cross reference

         ii)    Maintenance  aids:   separate  compilation  of  external
                classes and procedures.

        iii)    Testing aids:  diagnostic information and an interactive
                debug subsystem.

         iv)    Inter-system communication:   File  handling  by  object
                program, procedures written in FORTRAN and MACRO-10.

        The  computation  process  and   the   support   functions   are
        implemented in a straightforward way:

          i)    The SIMULA compiler takes as its main input one or  more
                source  modules  specified  in  its  command string.  If
                there are external  modules  referenced  in  the  source
                module,  the  corresponding  attribute  files  are  also

         ii)    The computation process defined in the source program is
                translated   to   an   equivalent  OBJECT  PROGRAM  with
                associated control blocks.  If compile  time  errors  or
                warning  conditions  have been detected, diagnostics are
                output  on  the  terminal.   On  request  the   compiler
                produces a program listing with a cross reference table.

        iii)    The object program is output as a REL file, and  if  the
                source  module  was itself a separate class or procedure
                definition, an attribute file (extension  ATR)  is  also

         iv)    The object program, i.e. REL  files  produced  from  the
                main  program  source module(s) and all external modules
                referred from the  main  module  are  loaded  into  core
                memory  by  the  LINK  program.   LINK also searches the
                SIMULA REL file library SIMLIB and  fetches  subroutines
                referenced   from  the  object  program  modules.   This
SIMULA FOR DEC SYSTEM 10             TD, SYSTEM DESC             I.2-2

741008    780302      6                           Stefan Arnborg

                process creates an executable binary MACHINE PROGRAM  in
                memory  which  can  be  saved by a monitor command as an
                executable program file.

          v)    Before the computation starts, the user may request  the
                interactive  debug package SIMDDT by issuing the REENTER
                command instead of the START command following the  LOAD
                command.   This  causes the self-relocating debug system
                to be loaded into core.  Otherwise,  the  debug  package
                can be loaded after execution starts when it is needed.

         vi)    When the machine program starts  execution,  an  initial
                reentrant  high  segment  (operating  system or run time
                system)  SIMRn2  (n   =   version   number)   containing
                additional  support  routines is fetched from the system
                area.  The execution then proceeds.   The  initial  high
                segment  is  replaced  by  another  high  segment SIMRn1
                containing the most frequent support routines as soon as
                the  initial  execution  phase  is  over.  SIMRn2 may be
                swapped in several times during execution  and  will  be
                replaced  by  SIMRn1 when some other function is needed.
                SIMRn1 and SIMRn2 are collectively named SIMRTS.  It  is
                also  possible  to load SIMRTS with the program (see iv)
                in which  case  no  swapping  in  of  high  segments  is

        vii)    If an illegal condition is detected during execution, an
                appropriate  diagnostic message is written on the user's
                TTY.  The debug package  SIMDDT  then  expects  commands
                issued  by  the  user  to  find  the  cause of the error
                (dumping the values of certain  variables,  etc.).   The
                user  may  continue  execution  after some errors and in
                these cases the line
                will be typed on the user's TTY after the error message.

        viii)   The debug package SIMDDT is similar in capacity  to  DDT
                but  is entirely source language oriented.  The user may
                specify  breakpoints  and  conditions  for  stopping  at
                breakpoints.   When stopped at a breakpoint the user may
                request type-out of variables and certain system  status
                information,  change  variables  and  proceed  from  the
                current breakpoint.  Unlike DDT,  SIMDDT  cannot  modify
                the   program,   however,   except   for   insertion  of
SIMULA FOR DEC SYSTEM 10             TD, SYSTEM DESC             I.2-3

741008    780302      6                           Stefan Arnborg

        Appropriate modifications have been inserted in the  COMPIL  and
        LINK CUSP's so that the entire process above, or part of it, can
        be performed by the monitor commands


        Corresponding modifications have been made to the  TOPS-20  EXEC
        processor and to LINK-20.

        The SPRINT processor for batch input streams has  been  modified
        to accept a $SIMULA card.

        The entire  system  is  written  in  MACRO-10  using  a  set  of
        UNIVERSAL  files  which define global constants and macros.  The
        macros facilitate reading and checking of code  and  consist  of
        two  groups.   One  group  of  macros define program structure -
        loops (LOOP, WHILE), conditional  statements  (IF-THEN-ELSE-FI),
        procedure definition and call (PROC, SAVE, RETURN, EPROC, EXEC).
        The other group of macros define  data  access  enabling  record
        fields  to  be  referenced by name only, making sure the correct
        accessing instruction is used independently of the placement  of
        the  field  within  a word and the offset of the word within the

        The possibility  of  sharing  reentrant  code  via  the  TOPS-10
        monitor  has  been  exploited and most of the code of the SIMULA
        system is located in three sharable compiler high  segments  and
        two run time system high segments.

        Code in the low segment is code generated by the compiler, which
        is  reentrant  as  long  as  no breakpoints are set, and library
        routines of which some are not reentrant.

        The  main  program  is  not  reentrant  since  it  contains  the
        outermost  data  block.   Except  from  any  SIMDDT breakpoints,
        however,  external  modules  created  from   SIMULA   code   are

        SIMDDT is  self-relocating  and  can  be  executed  anywhere  in
        memory.   The data segments internal to SIMDDT must be writable.
        They should be easy to separate from the program code.
SIMULA FOR DEC SYSTEM 10             TD, SYSTEM DESC               I.2-4

741008    780302      6                           Stefan Arnborg

 +-               -+ 1) 2)                +-               -+  2) -----
 ! DSK-----------+ !                      ! DSK-----------+ !       !
 ! ! ATR file(s) !---+             +------->!  ATR file   ! !       !
 ! +-------------+ ! !             !      ! +-------------+ !       !
 +-               -+ !             !      +-               -+  3)   !
   DSK-----------+   +->EXE----------+    ! DSK/LPT-------+ !       !
   ! SIM file(s) !----->!            !----->!prog listing ! !       !
   +-------------+      !   SIMULA   !    ! +-------------+ !       !
                    +-->!            !--+ +-               -+    COMPILE
   TTY-----------+  !   +------------+  !   DSK-----------+         !
   !  commands   !--+            !      +-->!  REL file   !         !
   +-------------+               !          +-------------+         !
                                 !        +-               -+ 3)    !
                                 !        ! TTY-----------+ !       !
                                 +--------->! diagnostics ! !       !
                                          ! +-------------+ !       !
                                          +-               -+ 3)  -----
   DSK-----------+  primary               ! DSK/LPT-------+ !       !
   ! REL file(s) !--+ input             +-->!  load map   ! !       !
   +-------------+  !                   ! ! +-------------+ !       !
                    !   EXE----------+  ! +-               -+       !
   TTY-----------+  +-->!            !--+   +-------------+         !
   !   commands  !----->!  LINK-10   !----->! machine prog!       LOAD
   +-------------+  +-->!            !--+   ! in core     !         !
                    !   +------------+  !   +-------------+         !
   DSK-----------+  ! library           !   TTY-----------+         !
   !   SIMLIB    !--+ search            +-->! diagnostics !         !
   +-------------+                          +-------------+         !
                        EXE----------+                            -----
                        !   SIMRTS   !      +-------------+         !
   +-------------+      !  operating !      ! user        !         !
   !  user       !      !   system   !  +-->! output(s)   !         !
   !  input(s)   !--+   +------------+  !   +-------------+         !
   +-------------+  !         !!        !                           !
                    !   +------------+  !   DSK-----------+         !
   TTY-----------+  +-->!  machine   !--+   !  user DA    !        RUN
   ! system      !<---->!  program   !<---->!  file(s)    !         !
   ! interface   !      +------------+      +-------------+         !
   ! dialogue    !    +-      !!                            -+ 3)   !
   +-------------+    ! ABS----------+                       !      !
                      ! !  SIMDDT    !      TTY-----------+  !      !
                      ! !  debug     !<---->!   debug     !  !      !
                      ! !  system    !      !   dialogue  !  !      !
                      ! +------------+      +-------------+  !      !
   System overview    +-                                    -+      !
   ---------------                                                -----
   1) If source has external declaration. 2) If source is a global
      class or procedure. 3) Optional.