Motivation

Oberon is best described as a complete software system, everything that makes a computer besides hardware and application programs. It includes an operating system, a window oriented user interface, a graphics toolbox, and a compiler for the Oberon programming language [WiGut]. Although designed and originally implemented in the context of the Oberon system, the programming language Oberon has developed a live in its own right. Academic teachers are attracted by the systematic approach to programming, making Oberon an excellent choice for introducing students to programming [Reiser]. Researchers treasure the clear concepts and the high level of abstraction and software engineers profit from the general and powerful concepts [ReiWi].

The Oberon system has been ported to the major hardware platforms such as Intel 80x86 based PCs, the Macintosh, the IBM RS6000, DECstations, and SUN Sparcstations. Compilers for the Oberon language have been implemented for many processor architectures, such as the 68000, 80x86, Sparcs, and MIPS processors.

At our department, research projects in communication systems and distributed computing have always been implemented in Pascal or Modula-2 for obvious reasons. Moving on to the Oberon language was therefore the natural choice for us in order to work with a state of the art programming language. Many of the above projects are conducted on the Macintosh architecture. Unfortunately however, the 'official' Oberon implementation for the Macintosh, MacOberon is a complete Oberon system, essentially transforming a Macintosh into an Oberon computer like the Ceres workstation [Franz]. The famous Macintosh look-and-feel is lost together with the cooperation with other Macintosh applications, e.g. word processors, spreadsheets, or drawing programs. MacOberon Lite, a compiler with an integrated mini-editor, is also poorly embedded in the Macintosh system.

Although both systems, MacOberon and MacOberon Lite provide some mechanisms to write applications for the Macintosh toolbox, they are rather limited and cumbersome to use. Numerous deficiencies make it simply hard to write native Macintosh applications: a special loader is required, toolbox interfaces are missing, no support to generate drivers and other code-resources. The biggest problem however is the lack of support for mixed language development, rendering our old program modules useless.

Our Oberon language project, MPW Oberon, set out to fully integrate Oberon into the Macintosh, creating a native Macintosh implementation. That meant full compliance with operating system mechanisms such as the segment loader and the various standalone code resources (INIT, DRVR, CDEF, WDEF, MDEF, …). Furthermore we wanted to support all the Macintosh toolbox calls, including QuickTime, OpenDoc, and others. The latter is the prerequisite for the successful creation of applications with the Macintosh look-and-feel and the possibility to interact with other applications (AppleEvents, various clipboard formats).

The second important goal was Mixed Language Development enabling seamless integration or reuse of our existing work. The Macintosh already has an environment supporting a wealth of programming languages (C, C++, Pascal, Modula-2, Ada, Fortran, and many more), the Macintosh Programmer's Workshop (MPW). MPW achieves mixed language capabilities by means of a common object file format, supported by every MPW-compiler. There is only one linker that combines the various object modules into the desired code piece. Another advantage of the common object file format is the compatibility with SADE, the symbolic debugging environment developed by Apple. When a compiler includes the proper symbol information into the object files, SADE provides source level debugging for that language without further effort.


Next Section, Contents