Newsgroups: comp.lang.oberon,comp.answers,news.answers
From: mikeg@psg.com (Mike Gallo)
Subject: Comp.lang.oberon FAQ (monthly) 1/3
Reply-To: mikeg@psg.com
Organization: PSGnet, Portland Oregon US
Date: Tue, 20 Dec 1994 14:05:00 GMT
Message-ID: <1994Dec20.140500.26848@psg.com>
	E-mail: Oberon@inf.ethz.ch
	E-mail: Oberon@inf.ethz.ch
	E-Fax: +41 1 2519678

The Comp.lang.oberon newsgroup owes its existence to the efforts of the
late Christian Schaepper.


WHAT IS OBERON?

>From "The Oberon Guide"
	Oberon is simultaneously the name of a project and of its outcome. The project was started by Niklaus Wirth and [Jrg Gutknecht] late in 1985 with the goal of developing a modern and portable operating system for personal workstations. Its results are an implementation of the system for the Ceres computer and a programming language.
	The development of the language Oberon needs perhaps a short justification. It became quite inevitable because the type-system of available languages turned out to be too restrictive to express the desired data model in a natural andsafe way.

Some recent introductions to different aspects of the Oberon project can
be found are:
	"The Oberon Programming Language" by Josef Templ; Dr. Dobb's Sourcebook #221 (Winter 1994).
	"Oberon System 3" by Johannes L. Marais; Dr. Dobb's Journal (October 1994).
	"Oberon: A Glimpse at the Future" by Dick Pountain; BYTE volume 18 number 6 (May 1993).


RESOURCES FOR OBERON USERS

In addition to a wide variety of ports of the Oberon system, ETH has
several programming tools and the Oberon newsletter available from their
own anonymous ftp site. The site is aliased to neptune.ethz.ch,
neptune.inf.ethz.ch, ftp.inf.ethz.ch (but not ftp.ethz.ch). The Oberon
archives are in directory /pub/Oberon, and many useful tools (including
AsciiCoder) can be found in /pub/Oberon/Tools.

ETH's Oberon archive is mirrored at the following ftp sites:
	wuarchive.wustl.edu:/languages/Oberon
	gatekeeper.dec.com:/pub/plan/Oberon

The Swiss Oberon Users Group (CHOUG) at ETH Zrich has set up an Oberon public domain ftp server.
	ftp: anonymous@hades.ethz.ch:/pub/Oberon
	e-mail: oberon-user@inf.ethz.ch

Lex and Yacc definitions for Oberon-2
	ftp: anonymous@ftp.psg.com:pub/oberon/tools
	e-mail: bevan@cs.man.ac.uk (Stephen J Bevan)

Some games and other programming examples for System 3
	ftp.sun.ac.za:/pub/oberon/stellenbosch/sources

The Oakwood guidelines for Oberon compilers are available by anonymous ftp from
	ftp.clark.net:/pub/thutt/oakwood

Oberon Dialogs (a graphical user interface for Oberon V4) can be obtained via ftp
	Oberon.ssw.uni-linz.ac.at:/pub/Dialogs
For questions or comments contact knasmueller@ssw.uni-linz.ac.at.

Many technical reports, dissertations, and other documents are electronically available in PostScript and/or Oberon text formats from ETH's Oberon archive in /doc and /pub/Oberon/Docu.

ETH Zrich's technical reports are freely available.  Some technical reports that might be of interest to Oberon users are listed below.  To order technical reports of the Institut fr Computersysteme, ETH Zrich, contact Mr. Ruettener (e-mail: ruettener@inf.ethz.ch).

102  M. Odersky:  Recursive Data Types and Report on the Mona Notation for Algorithms

133  J. Templ:  SPARC-Oberon User's Guide

143  N. Wirth:  From Modula to Oberon (Revised Edition)

144  J. L. Marais:  The GADGETS User Interface Management System

151  C. Szyperski:  Write -- An Extensible Text Editor for the Oberon System

174  M. Brandis, R. Crelier, M. Franz, J. Templ:  The Oberon System Family

203  A. R. Disteli:  OBERON for PC on an MS-DOS Base

Someone please let me know if and when these titles go out of stock.



THE PROGRAMMING LANGUAGE OBERON

>From "From Modula to Oberon"
	The programming language Oberon is the result of a concentrated effort to increase the power of Modula-2 and simultaneously to reduce its complexity. Several features were eliminated, and a few were added in order to increase the expressive power and flexibility of the language. This paper describes and motivates the changes. The language is defined in a concise report.
	Whereas modern languages, such as Modula, support the notion of extensibility in the procedural realm, the notion is less well established in the domain of data types. In particular, Modula does not allow the definition of new data types as extensions of other, programmer-defined types in an adequate manner. An additional feature was called for, thereby giving rise to an extension of Modula.
	The evolution of a new language that is smaller, yet more powerful than its ancestor is contrary to common practices and trends, but has inestimable advantages. Apart from simpler compilers, it results in a concise defining document, an indispensable prerequisite for any tool that must serve in the construction of sophisticated and reliable systems.

Among the eliminations in the move from Modula-2 to Oberon are variant records, opaque types, enumeration types, subrange types, the basic type CARDINAL, local modules, and Modula's WITH statement.  The major addition to Oberon is the concept of type extension (i.e., single inheritance) for records.


OBJECT ORIENTED PROGRAMMING IN OBERON

Oberon does not offer multiple inheritance. However, it has been shown
that multiple inheritance can be efficiently implemented in terms of
single inheritance and been argued that multiple inheritance is
therefore syntactic sugar that is rarely used in practice. For details,
see Templ (1993) and Mssenbck (1993).

The original Oberon language does not offer built in "methods" as do
many other languages supporting OOP. Instead, conventional virtual
methods can easily be implemented as a pointer to a procedure table, or
"messages" can be sent to procedures as extensible records.

While some people complain about Oberon's minimalistic support of object
oriented programming, others feel that this is one of Oberon's
strengths, that the language does not institutionalize aparticular
approach to OOP (see the Comp.object FAQ list for an examination of
several variations on the object oriented paradigm). For another
discussion, see Oberon2.OOP by H. Mssenbck.


THE PROGRAMMING LANGUAGE OBERON-2

>From "Differences between Oberon and Oberon-2"
	Oberon-2 is a true extension of Oberon. . . .
	One important goal for Oberon-2 was to make object oriented programming easier without sacrificing the conceptual simplicity of Oberon. After three years of using Oberon and its experimental offspring Object Oberon we merged our experiences into a single refined version of Oberon.
	The new features of Oberon-2 are type-bound procedures [i.e., virtual methods], read-only export of variables and record fields, open arrays as pointer base types, and a with statement with variants. The for statement is reintroduced after having been eliminated in the step from Modula-2 to Oberon.


THE "OBERON FAMILY" OF LANGUAGES

Mona is an experimental dialect (but not a superset) of Oberon which
provides recursive data types (trees) as a first class data-structure.
It attempts to reduce reliance on pointers and to offer a faster
alternative to automatic garbage collection. For details, see ETH
technical report 102.

Oberon-V is an experimental dialect (but not a superset) of Oberon. It
is concerned with issues of numerical computing, array processing, and
code verification. It's primary new features are the ALL statement (much
like a parallel version of the FOR loop) and array constructors for open
array parameters. Since it was originally aimed at vector architectures
in general and the Cray Y-MP in particular, no Oberon-V compiler has
been implemented for the Oberon System. For details, see Griesemer
(1993).


COMMON PROBLEMS PROGRAMMING IN OBERON

On numerical programming:

whitney@christie.Meakins.McGill.CA (Whitney de Vries) writes:
	The gist of the situation is that numeric expressions [can be] too complex for the backend of the Oberon for Windows compiler. . . .  Complex expressions ( particularly those with floating point operations ) quickly exhausts the short supply of registers on the Intel chips. At this point it is worth noting that the ETH supports Oberon for Windows but does not consider the Intel chips to be an intresting research topic ( the answer to the Intel problem is to have more registers ).  I think it is unlikely th
at Intel compiler will ever be as robust as the POWERoberon compiler.
	At any rate you will probably get your code to work if you simplify the expressions.


The WITH statement:

"This [compiler error] has to be a bug, correct me if I'm wrong! (I'm
going nuts over this)"

TYPE
	Obj* = POINTER TO Empty;
	Empty = RECORD (*nothing*) END;

	OpObj = POINTER TO OpNode;
	OpNode = RECORD (Empty)
		name : CHAR;
		left, right : Obj;
	END;

PROCEDURE doeval (ex: Obj): REAL;
	BEGIN
		WITH ex : OpObj DO
			CASE ex.name OF
				"+" : RETURN doeval(ex.left (* err 113 *))
					+ doeval(ex.right (* err 113 *));
				"-" : (* clever code here *)
				"*" : (* more clever code *)
				"/" : (* you get the idea *)
			END;
			(* et cetera *)
		END;
	END doeval;

Error #113 is an "incompatible assignment".  ex.left and ex.right certainly seem to be of type Obj.  Why won't doeval accept them?

As thutt@clark.net (Taylor Hutt) points out,
	This is not a bug.  The WITH statement actually changes the static type of the WITHed variable for the entire duration of the WITH statement.  A workaround to this problem is to assign the parameter to a temporary variable and to use the WITH on the temp.  A type guard will not work properly in this case, do not attempt to use it.

Some people on Comp.lang.oberon think that the WITH statement should be avoided entirely because of its non-local effects.  They point out that a programmer can use individual type guards or, if a guarded variable is used very many times, can pass the variable to a procedure.


BIBLIOGRAPHY

Sources cited in the FAQ list that are not listed in the bibliography
are electronically available in PostScript and/or Oberon text formats
from ETH Zrich's Oberon archive site in directory /pub/Oberon/Docu.

"Type Extensions" by N. Wirth; ACM Transactions on Programming Languages
and Systems; 10, 2 (April 1988) 204-214.

"From Modula to Oberon" by N. Wirth; Software: Practice and Experience;
18,7 (July 1988) 661-670.

"The Programming Language Oberon" by N. Wirth; Software: Practice and
Experience; 18,7 (July 1988) 671-690.

"Variations on the Role of Module Interfaces" by J. Gutknecht;
Structured Programming; 10,1 (January 1989) 40-46.

"Object Oberon -- A Modest Object-Oriented Language" by H. Mssenbck and
J. Templ; Structured Programming; 10,4 (April 1989) 199-207.

A New Approach to Formal Language Definition and Its Application to
Oberon by M. Odersky; Verlag der Fachvereine Zrich; 1989.

"Oberon" by Dick Pountain; BYTE; volume 16 number 3 (March 1991).

"The Programming Language Oberon-2" by H. Mssenbck and N. Wirth;
Structured Programming; 12,4 (April 1991).

Programming in Oberon: Steps Beyond Pascal and Modula-2 by M. Reiser and
N. Wirth; ACM Press; 1992.

"A Systematic Approach to Multiple Inheritance Implementation" by J.
Templ; ACM SIGPLAN Notices; Volume 28, Number 4 (April 1993).

Object Oriented Programming in Oberon-2 by H. Mssenbck; Springer Verlag;
1993.

"A Programming Language for Vector Computers" by R. Griesemer; Swiss
Federal Institute of Technology (ETH Zrich); Dissertation Number 10277,
1993.

"The Oberon Programming Language" by Josef Templ; Dr. Dobb's Sourcebook
#221 (Winter 1994).

"A comparison of object-oriented programming in four modern languages";
Software - Practice and Experience 24,11 (Nov. 94) 1077-1095.


OBERON COMPILERS

Please note that mention of a product or company does not necessarily
imply a recommendation. For Oberon compilers developed outside ETH Zrich
contact:

VAX/VMS:
	ModulaWare GmbH, Wilhelmstr. 17A, D-91054 Erlangen/F.R.Germany
		Modula-2 & Oberon-2 Compiler Manufactur
		Tel. +49 (9131) 208395, Fax +49 (9131) 28205.
		E-mail/Internet: 100023.2527@compuserve.com

MS-DOS and Windows:
	ModulaWare GmbH, Wilhelmstr. 17A, D-91054 Erlangen/F.R.Germany
		OM2 32 Bit Oberon-2 and Modula-2 Compiler for PC/DOS'386/'486
		native code for DOS with DPMI Driver/Host and for DOS sessions under Windows 3.1 and OS/2 2.1
	COP2 (Oberon to C translator)
		ftp: ftp.clark.net:/pub/thutt/cop2
		e-mail: thutt@clark.net
	Oberon-M
		contact E. Videki, e-mail: erv@k2.everest.tandem.com
	Extacy
		Real Time Associates Ltd.
		Canning House, 59 Canning Road
		Croydon, Surrey, CRO 6QF
		England
		Tel.: 0044-81-656 7333
		Fax: 0044-81-655 0401
		E-mail: 71333.2346@compuserve.com
		rta@rtal.demon.co.uk
	Pow! (Programmers Oberon Workbench)
		It works with MS-Windows and can be used to create native Windows applications (EXE's and DLL's).
		Ftp: ftp.fim.uni-linz.ac.at:/pub/soft/pow-oberon2, or
			galileo.meakins.mcgill.ca:/Oberon/CommercialDemos/POW
		E-mail: pow@fim.uni-linz.ac.at
		Mailing list: majordomo@fim.uni-linz.ac.at "subscribepow-list"
	OM2-XDS
		an Oberon-2 and ISO Modula-2 compiler producing ANSI C code
		The eval kit is available by anonymous ftp from ftp.sun.ac.za:/pub/oberon/om2-xds/xds203.arj
		The unrestricted version is available for a variety of other platforms.

Amiga:
	A+L AG
		Daederiz 61
		CH-2540 Grenchen
		Tel.: +41 (65) 52 03 11
	Oberon-A
		A freely-distributable, stand-alone Oberon-2 compiler for the Commodore Amiga.
		It can be obtained from AmiNetsites, including ftp.cdrom.com and ftp.wustl.edu.
		E-mail: fjc@wossname.apana.org.au

DECstation (Ultrix, OSF/1), Intel386 (SVR4, OS2, Solaris), Sparc(Solaris):
	Office of Commercial Services
	Queensland University of Technology
	GPO box 2434, Brisbane Q4001
	Australia

Alpha AXP:
	A2O is a stand-alone compiler and generates OpenVMS AXP object files and supports the OpenVMS symbolic run-time 			debugger as well as mixed language programming.
	AOS (AXP Oberon System) which contains an AXP Oberon-2 compiler embedded in the Oberon System.  AOS runs 				on-top of OSF/Motif on a AXP workstation or on an XWindow terminal connected to an AXP server.
	ModulaWare GmbH, Wilhelmstr. 17A, D-91054 Erlangen/F.R.Germany
	Tel. +49 (9131) 208395, Fax +49 (9131) 28205.
	E-mail/Internet: 100023.2527@compuserve.com

Atari:
	Martin Momberg
	Hahlgartenstr. 13a
	D-64331 Weiterstadt
	Germany
	E-Mail: Inet:momberg@dik.maschinenbau.th-darmstadt.de
	Ftp: ftp.th-darmstadt.de:/pub/machines/atari/programming/stoberon

Sun3:
	Ulm Oberon system
	ftp: anonymous@titania.mathematik.uni-ulm.de:/pub/soft/oberon/ulm/sun3

Misc:
	The unrestricted version of OM2-XDS (see above) is available for a variety of platforms.

For ModulaWare products, please note that the company is soon moving.  The new address is valid from 01-Dec-1994:
	ModulaWare GmbH
	La Chanenche Haute
	Meolans Revel
	F-04350 Le Lauze
	France
	tel +33 92 81 30 99
	E-mail 100023.2527@compuserve.com


From ankh.iia.org!uunet!news.mathworks.com!europa.eng.gtefsd.com!library.ucla.edu!psgrain!m2xenix!mikeg Fri Dec 23 23:26:56 1994
Newsgroups: comp.lang.oberon,comp.answers,news.answers
Path: ankh.iia.org!uunet!news.mathworks.com!europa.eng.gtefsd.com!library.ucla.edu!psgrain!m2xenix!mikeg
From: mikeg@psg.com (Mike Gallo)
Subject: Comp.lang.oberon FAQ (monthly) 2/3
Expires: Fri, 20 Jan 1995 00:00:00 GMT
Reply-To: mikeg@psg.com
Organization: PSGnet, Portland Oregon US
Date: Tue, 20 Dec 1994 14:06:18 GMT
Approved: news-answers-request@MIT.Edu
Message-ID: <1994Dec20.140618.27037@psg.com>
Followup-To: comp.lang.oberon
Summary: This posting contains a list of Frequently Asked Questions (and their answers) about Oberon.  It should be read before posting to the Comp.lang.oberon newsgroup.
Lines: 221
Xref: ankh.iia.org comp.lang.oberon:2028 comp.answers:5459 news.answers:16977

Archive-name: Oberon-FAQ/language

(*  * *  * *  * *  * *  * *  * *  * *  * *  * *  * *  * *  * *  * *  * *  *)

Many FAQ lists, including this one, are available by anonymous ftp from rtfm.mit.edu in the /pub/usenet/news.answers directory.

Although I have aimed for accuracy, there is no guarantee that the information in this document is error-free.  Neither the FAQ maintainer nor anyone else associated with this document assume any liability for the content or use of this document.  If you find any errors, please report them to the address below.

Thanks to all who have contributed!  Further additions, corrections, and suggestions are welcome.

mikeg@psg.com

(*  * *  * *  * *  * *  * *  * *  * *  * *  * *  * *  * *  * *  * *  * *  *)

Comp.lang.oberon Frequently Asked Questions: The Programming Language

Copyright 1994 Michael Gallo
(c) 1994 Michael Gallo


This is one of three documents that attempt to answer some frequently asked questions (FAQs) about Oberon.  This text concerns the Oberon languages, while the other two are about general topics and about Oberon the operating system.


THE PROGRAMMING LANGUAGE OBERON

>From "From Modula to Oberon"
	The programming language Oberon is the result of a concentrated effort to increase the power of Modula-2 and simultaneously to reduce its complexity. Several features were eliminated, and a few were added in order to increase the expressive power and flexibility of the language. This paper describes and motivates the changes. The language is defined in a concise report.
	Whereas modern languages, such as Modula, support the notion of extensibility in the procedural realm, the notion is less well established in the domain of data types. In particular, Modula does not allow the definition of new data types as extensions of other, programmer-defined types in an adequate manner. An additional feature was called for, thereby giving rise to an extension of Modula.
	The evolution of a new language that is smaller, yet more powerful than its ancestor is contrary to common practices and trends, but has inestimable advantages. Apart from simpler compilers, it results in a concise defining document, an indispensable prerequisite for any tool that must serve in the construction of sophisticated and reliable systems.

Among the eliminations in the move from Modula-2 to Oberon are variant records, opaque types, enumeration types, subrange types, the basic type CARDINAL, local modules, and Modula's WITH statement.  The major addition to Oberon is the concept of type extension (i.e., single inheritance) for records.


OBJECT ORIENTED PROGRAMMING IN OBERON

Oberon does not offer multiple inheritance.  However, it has been shown that multiple inheritance can be efficiently implemented in terms of single inheritance and been argued that multiple inheritance is therefore syntactic sugar that is rarely used in practice.  For details, see Templ (1993) and Mssenbck (1993).

The original Oberon language does not offer built in "methods" as do many other languages supporting OOP.  Instead, conventional virtual methods can easily be implemented as a pointer to a procedure table, or "messages" can be sent to procedures as extensible records.

While some people complain about Oberon's minimalistic support of object oriented programming, others feel that this is one of Oberon's strengths, that the language does not institutionalize aparticular approach to OOP (see the Comp.object FAQ list for an examination of several variations on the object oriented paradigm).  For another discussion, see Oberon2.OOP by H. Mssenbck.


THE PROGRAMMING LANGUAGE OBERON-2

>From "Differences between Oberon and Oberon-2"
	Oberon-2 is a true extension of Oberon. . . .
	One important goal for Oberon-2 was to make object oriented programming easier without sacrificing the conceptual simplicity of Oberon. After three years of using Oberon and its experimental offspring Object Oberon we merged our experiences into a single refined version of Oberon.
	The new features of Oberon-2 are type-bound procedures [i.e., virtual methods], read-only export of variables and record fields, open arrays as pointer base types, and a with statement with variants. The for statement is reintroduced after having been eliminated in the step from Modula-2 to Oberon.


THE "OBERON FAMILY" OF LANGUAGES

Mona is an experimental dialect (but not a superset) of Oberon which provides recursive data types (trees) as a first class data-structure.  It attempts to reduce reliance on pointers and to offer a faster alternative to automatic garbage collection.  For details, see ETH technical report 102.

Oberon-V is an experimental dialect (but not a superset) of Oberon.  It is concerned with issues of numerical computing, array processing, and code verification.  It's primary new features are the ALL statement (much like a parallel version of the FOR loop) and array constructors for open array parameters.  Since it was originally aimed at vector architectures in general and the Cray Y-MP in particular, no Oberon-V compiler has been implemented for the Oberon System.  For details, see Griesemer (1993).


COMMON PROBLEMS PROGRAMMING IN OBERON

On numerical programming:

whitney@christie.Meakins.McGill.CA (Whitney de Vries) writes:
	The gist of the situation is that numeric expressions [can be] too complex for the backend of the Oberon for Windows compiler. . . .  Complex expressions ( particularly those with floating point operations ) quickly exhausts the short supply of registers on the Intel chips. At this point it is worth noting that the ETH supports Oberon for Windows but does not consider the Intel chips to be an intresting research topic ( the answer to the Intel problem is to have more registers ).  I think it is unlikely th
at Intel compiler will ever be as robust as the POWERoberon compiler.
	At any rate you will probably get your code to work if you simplify the expressions.


The WITH statement:

"This [compiler error] has to be a bug, correct me if I'm wrong! (I'm going nuts over this)"

TYPE
	Obj* = POINTER TO Empty;
	Empty = RECORD (*nothing*) END;

	OpObj = POINTER TO OpNode;
	OpNode = RECORD (Empty)
		name : CHAR;
		left, right : Obj;
	END;

PROCEDURE doeval (ex: Obj): REAL;
	BEGIN
		WITH ex : OpObj DO
			CASE ex.name OF
				"+" : RETURN doeval(ex.left (* err 113 *))
					+ doeval(ex.right (* err 113 *));
				"-" : (* clever code here *)
				"*" : (* more clever code *)
				"/" : (* you get the idea *)
			END;
			(* et cetera *)
		END;
	END doeval;

Error #113 is an "incompatible assignment".  ex.left and ex.right certainly seem to be of type Obj.  Why won't doeval accept them?

As thutt@clark.net (Taylor Hutt) points out,
	This is not a bug.  The WITH statement actually changes the static type of the WITHed variable for the entire duration of the WITH statement.  A workaround to this problem is to assign the parameter to a temporary variable and to use the WITH on the temp.  A type guard will not work properly in this case, do not attempt to use it.

Some people on Comp.lang.oberon think that the WITH statement should be avoided entirely because of its non-local effects.  They point out that a programmer can use individual type guards or, if a guarded variable is used very many times, can pass the variable to a procedure.


BIBLIOGRAPHY

Sources cited in the FAQ list that are not listed in the bibliography are electronically available in PostScript and/or Oberon text formats from ETH Zrich's Oberon archive site in directory /pub/Oberon/Docu.

"Type Extensions" by N. Wirth; ACM Transactions on Programming Languages and Systems; 10, 2 (April 1988) 204-214.

"From Modula to Oberon" by N. Wirth; Software: Practice and Experience; 18,7 (July 1988) 661-670.

"The Programming Language Oberon" by N. Wirth; Software: Practice and Experience; 18,7 (July 1988) 671-690.

"Variations on the Role of Module Interfaces" by J. Gutknecht; Structured Programming; 10,1 (January 1989) 40-46.

"Object Oberon -- A Modest Object-Oriented Language" by H. Mssenbck and J. Templ; Structured Programming; 10,4 (April 1989) 199-207.

A New Approach to Formal Language Definition and Its Application to Oberon by M. Odersky; Verlag der Fachvereine Zrich; 1989.

"Oberon" by Dick Pountain; BYTE; volume 16 number 3 (March 1991).

"The Programming Language Oberon-2" by H. Mssenbck and N. Wirth; Structured Programming; 12,4 (April 1991).

Programming in Oberon: Steps Beyond Pascal and Modula-2 by M. Reiser and N. Wirth; ACM Press; 1992.

"A Systematic Approach to Multiple Inheritance Implementation" by J. Templ; ACM SIGPLAN Notices; Volume 28, Number 4 (April 1993).

Object Oriented Programming in Oberon-2 by H. Mssenbck; Springer Verlag; 1993.

"A Programming Language for Vector Computers" by R. Griesemer; Swiss Federal Institute of Technology (ETH Zrich); Dissertation Number 10277, 1993.

"The Oberon Programming Language" by Josef Templ; Dr. Dobb's Sourcebook #221 (Winter 1994).

"A comparison of object-oriented programming in four modern languages"; Software - Practice and Experience 24,11 (Nov. 94) 1077-1095.


OBERON COMPILERS

Please note that mention of a product or company does not necessarily imply a recommendation.  For Oberon compilers developed outside ETH Zrich contact:

VAX/VMS:
	ModulaWare GmbH, Wilhelmstr. 17A, D-91054 Erlangen/F.R.Germany
		Modula-2 & Oberon-2 Compiler Manufactur
		Tel. +49 (9131) 208395, Fax +49 (9131) 28205.
		E-mail/Internet: 100023.2527@compuserve.com

MS-DOS and Windows:
	ModulaWare GmbH, Wilhelmstr. 17A, D-91054 Erlangen/F.R.Germany
		OM2 32 Bit Oberon-2 and Modula-2 Compiler for PC/DOS'386/'486
		native code for DOS with DPMI Driver/Host and for DOS sessions under Windows 3.1 and OS/2 2.1
	COP2 (Oberon to C translator)
		ftp: ftp.clark.net:/pub/thutt/cop2
		e-mail: thutt@clark.net
	Oberon-M
		contact E. Videki, e-mail: erv@k2.everest.tandem.com
	Extacy
		Real Time Associates Ltd.
		Canning House, 59 Canning Road
		Croydon, Surrey, CRO 6QF
		England
		Tel.: 0044-81-656 7333
		Fax: 0044-81-655 0401
		E-mail: 71333.2346@compuserve.com
		rta@rtal.demon.co.uk
	Pow! (Programmers Oberon Workbench)
		It works with MS-Windows and can be used to create native Windows applications (EXE's and DLL's).
		Ftp: ftp.fim.uni-linz.ac.at:/pub/soft/pow-oberon2, or
			galileo.meakins.mcgill.ca:/Oberon/CommercialDemos/POW
		E-mail: pow@fim.uni-linz.ac.at
		Mailing list: majordomo@fim.uni-linz.ac.at "subscribepow-list"
	OM2-XDS
		an Oberon-2 and ISO Modula-2 compiler producing ANSI C code
		The eval kit is available by anonymous ftp from ftp.sun.ac.za:/pub/oberon/om2-xds/xds203.arj
		The unrestricted version is available for a variety of other platforms.

Amiga:
	A+L AG
		Daederiz 61
		CH-2540 Grenchen
		Tel.: +41 (65) 52 03 11
	Oberon-A
		A freely-distributable, stand-alone Oberon-2 compiler for the Commodore Amiga.
		It can be obtained from AmiNetsites, including ftp.cdrom.com and ftp.wustl.edu.
		E-mail: fjc@wossname.apana.org.au

DECstation (Ultrix, OSF/1), Intel386 (SVR4, OS2, Solaris), Sparc(Solaris):
	Office of Commercial Services
	Queensland University of Technology
	GPO box 2434, Brisbane Q4001
	Australia

Alpha AXP:
	A2O is a stand-alone compiler and generates OpenVMS AXP object files and supports the OpenVMS symbolic run-time 			debugger as well as mixed language programming.
	AOS (AXP Oberon System) which contains an AXP Oberon-2 compiler embedded in the Oberon System.  AOS runs 				on-top of OSF/Motif on a AXP workstation or on an XWindow terminal connected to an AXP server.
	ModulaWare GmbH, Wilhelmstr. 17A, D-91054 Erlangen/F.R.Germany
	Tel. +49 (9131) 208395, Fax +49 (9131) 28205.
	E-mail/Internet: 100023.2527@compuserve.com

Atari:
	Martin Momberg
	Hahlgartenstr. 13a
	D-64331 Weiterstadt
	Germany
	E-Mail: Inet:momberg@dik.maschinenbau.th-darmstadt.de
	Ftp: ftp.th-darmstadt.de:/pub/machines/atari/programming/stoberon

Sun3:
	Ulm Oberon system
	ftp: anonymous@titania.mathematik.uni-ulm.de:/pub/soft/oberon/ulm/sun3

Misc:
	The unrestricted version of OM2-XDS (see above) is available for a variety of platforms.

For ModulaWare products, please note that the company is soon moving.  The new address is valid from 01-Dec-1994:
	ModulaWare GmbH
	La Chanenche Haute
	Meolans Revel
	F-04350 Le Lauze
	France
	tel +33 92 81 30 99
	E-mail 100023.2527@compuserve.com


