The ModulaTor logo 7KB

The ModulaTor

Oberon-2 and Modula-2 Technical Publication

Ubaye's First Independent Modula-2 & Oberon-2 Journal! Nr. 7, Aug-1995

Alpha Oberon (TM)

by Günter Dotzel

ModulaWare proudly announces:

Alpha Oberon is the 64 bit implementation of ETH-Zuerich's Oberon System V4 on Digital OpenVMS Alpha, which consists of the Alpha Oberon System (AOS) and the Alpha Oberon-2 Compiler (A2O).

The Alpha Oberon System

Alpha Oberon runs on any Alpha workstation on-top of OSF/Motif or remotely via XWindows terminal connected to any OpenVMS Alpha server.

Alpha Oberon features:

The distribution contains the AlphaAXP OpenVMS Oberon boot-loader plus the Alpha object files of ETH-Z's Oberon System modules and tools such as

    AsciiCoder   Browser        Coco/R       Debug          Dialogs
    Draw         Edit           *Elems       FontEdit       Kepler
    Mess         Mines          Sisiphus     Paint          XE
This allows to read, modify and create Oberon System compatible, portable texts with embedded graphics under OpenVMS Alpha. If you want to compile Oberon programs you would have to buy the A2O compiler from ModulaWare.
The Alpha Oberon-2 Compiler:

ModulaWare's 64 bit native-code Alpha Oberon-2 compiler (A2O) can generate either an Oberon load file or an OpenVMS object file, determined by the compilation option /[no]oberon_loadfile.

The Oberon-2 compiler A2O is not embedded in AOS and runs as a separate (spawned) process under OpenVMS, but program texts can directly be compiled from within Alpha Oberon. The commands Compiler.Compile, XE.Compile, and Folds.Compile are supported. The advantage of an external compiler is that you can still use it to develop stand-alone Oberon-2 applications.

The Alpha Oberon policy:

Currently, ModulaWare distributes the pre-release of Alpha Oberon ( together with a restricted version of the A2O compiler) for a handling charge on DAT or TK-70 cassette.

Who contributed what to Alpha Oberon?

Alpha Oberon-2 Compiler A2O and Alpha Oberon System AOS: Guenter Dotzel, Hartmut Goebel, Peter Pirkelbauer, Carlos Schramer, Don Ward, ModulaWare.

Browser, a symbol file decoder: Josef Templ, Regis Crelier, ETH-Zuerich

Coco/R, a generator for fast compiler front ends: Hans-Peter Moessenboeck, University Linz.

Dialogs, a graphical user interface for end users: Markus Knasmueller, University Linz. With Dialogs you can add a graphical user interface to any existing tool without programming. Dialogs is extremly light-weight and fits smoothly into the Oberon System. Dialogs is much simpler than Gadgets, but provides similar functionality. For more info ftp to /pub/papers/ (Gadgets for Oberon System V3) was developed by Johannes Marais, ETH-Zuerich)

Debug: a symbolic run-time debugger: Markus Hof, University Linz.

Draw, a line drawing editor: Niklaus Wirth, ETH-Zuerich

Edit, Elems form an extensible text and hypertext without surprise: Clemens Szyperski, Robert Griesemer, ETH-Zuerich

Edit2Latex: Oberon texts (graphics, tables) to Latex converter: J~org Derungs

FontEdit, a bitmap font editor: Robert Griesemer, Josef Templ, ETH-Zuerich

Kepler, a sophisticated graphics editor: Josef Templ, ETH-Zuerich

Mess, a pretty printer for Oberon: Guenther Sawitzki, University Heidelberg

Mines, the well-known mine sweeper game: Ralf Degner

Oberon System: Niklaus Wirth, Juerg Gutknecht, ETH-Zuerich

Oberon-2 language: Niklaus Wirth, Hans-Peter Moessenboeck, ETH-Zuerich/University Linz

OP2 based Oberon-2 compiler: Regis Crelier, ETH-Zuerich

ObTris, the well-known Tetris game: Ralf Degner

Scenarios, browser of object-oriented systems with graphical illustrations: Kai Koskimies, University Linz, Austria and University Tampere/Finland.

Unix/X11 based Oberon System: Josef Templ, Regis Crelier, ETH-Zuerich

XE, an extended editor: Stefan Ludwig

(TM) Oberon is a trademark of ETH-Zuerich. (TM) A2O, AOS are trademarks of ModulaWare France. (TM) DEC, AlphaAXP, OpenVMS are trademarks of Digital Equipment Corp., U.S.A.

Alpha Oberon (TM) User's Guide

Hartmut Goebel, ModulaWare (31-Aug-1995)


Alpha Oberon\252 is an implementation of Oberon\252 for Digital Equipment Corporation AlphaAXP OpenVMS workstation (OSF/Motif) or AlphaAXP OpenVMS server with XTerminal.

Both the programming language Oberon-2 and the Oberon System have been implemented. For a complete description of the Language and of the System, one should read the following books:

N. Wirth and M. Reiser: Programming in Oberon. Steps beyond Pascal and Modula-2. Addison Wesley, 1992, ISBN 0-201-56543-9. Tutorial for the Oberon programming language and concise language reference.

M. Reiser: The Oberon System. User Guide and Programmer's Manual. Addison Wesley, 1991, ISBN 0-201-54422-9. User manual for the programming environment and reference for the standard module library.

N. Wirth and J. Gutknecht: Project Oberon. The Design of an Operating System and Compiler. Addison Wesley, 1992, ISBN 0-201-54428-8. Program listings with explanations for the whole Oberon system.

H. M~ossenb~ock: Object Oriented Programming in Oberon-2 Springer-Verlag, 1993, ISBN 0-387-56411-X. Principles and applications of object-oriented programming with examples in Oberon-2.

The technical report 160 by H. M~ossenb~ock, which contains Differences between Oberon and Oberon-2 and The Programming Language Oberon-2 is recommended too. It is present as on-line documentation:

Edit.Open Oberon2_Differences.Text

Edit.Open Oberon2_Report.Text

The following short tutorial describes the differences to the original implementation from a user's point of view.

Alpha Oberon runs as a single OpenVMS process on a color or monochrom AlphaAXP workstation. It has the form of an X Window application using only one X window covering the whole screen. This window can be controlled by the Window Manager, i.e. it can be pushed, moved, resized or iconized, but the WM has no control on the internal layout of the window (tracks and viewers are not X windows). The dimensions of the user and system tracks are automatically defined when starting Alpha Oberon\252 and cannot be changed until the Oberon process terminates, even if the window is resized. Since Alpha Oberon\252 is a normal X application, it can be used remotely over a network.


Alpha Oberon is distributed as an OpenVMS backup save-set (see the readme file for a description of the contents). The save set has to be copied into a common directory ([Oberon] is recommended) and hence can be used by several users. This directory should me made readonly, in order to avoid accidental removal of files. It is recommended to define a logical name Oberon$System for this directory:

  $ DEFINE Oberon$System sys$disk:[Oberon]
For using Alpha Oberon\252 one has to set up the command Oberon and define a directory search list:

$ SET COMMAND Oberon$System:Oberon 
$ DEFINE Oberon$Dir_List sys$disk:[],Oberon$System ~( 

The search list may be extended to include links to other Oberon application directories. The compilation command A2O or A2O_EVAL to invoke the Alpha Oberon-2 Compiler is:

  $ SET COMMAND Oberon$System:A2O      ! unrestricted Oberon-2 compiler
  $ SET COMMAND Oberon$System:A2O_EVAL ! or its evaluation kit

Each user of Oberon can define Oberon$System and Oberon$Dir_List in his login file.
Starting Alpha Oberon

Alpha Oberon is started from a terminal window using the executable oberon. The syntax and qualifiers of the Oberon command:

$ Oberon 

All qualifiers are optional. The CLD command Oberon runs the image BOOTLOADER.EXE which is the primary bootstrap. The bootloader was itself written in Oberon-2 (using A2O). The file extension for the Oberon load files is OLF.

So with the default settings, Oberon$Dir_List:MODULES.OLF is the secondary bootstrap for the Oberon System which in turn imports (i.e. loads) all other inner-core modules. The system is actually started by executing the command "Oberon.Loop".

As in all X applications, the window needs to get the focus before being able to receive input from the keyboard. Just click the left mouse button with the pointer in the Alpha Oberon\252 window.

System.Quit terminates the Oberon process. It is the normal way to leave Alpha Oberon.

Differences to ETH-Zuerich Oberon

The differences are due to the underlying hardware and software. Here follows a list of modules containing differences:

Compiler: Only the restricted evaluation kit version of the OpenVMS AXP Oberon-2 compiler, called A2O is included. A2O is a standard OpenVMS image (a so-called stand-alone compiler) and can be run in a separate process or invoked with the usual Compiler.Compile command. Use the compilation qualifier /Oberon_Loadfile to generate a .OLF file in addition to the OpenVMS object file .OBJ. A2O ignores the non-ascii Oberon texts header.

Display: Procedures DefCC, DefCP, DrawCX, FadeCX, InitCC, InitCP, SetCursor are not implemented (they are not needed by the Oberon System). Procedure SetMode has no effect. The display bitmap is not directly accessible (Map returns 0). The cursor is controlled by the window manager and is still active when a command is executing. Pattern format is different, use Display.NewPattern to define a pattern. image[1] defines the bottom line of the pattern. image[0] is not used.

Unix: New module acting as interface to Unix (which is a mapping to the equivalent OpenVMS system calls). Unix.Result() may be called immediately after a non function system call. If not zero, it gives the error number. Unix.Done() may be called immediately after a system call and call Unix.Result() if the error number is needed.

Input: Input events are puffered. Special keys: F1 mark viewer, Esc, F2 escape, F3 break, F4 init colors, Select, Ctrl-J line feed, Ctrl-L redraw screen, Prior (Page Up or PrevScreen) redraw for Draw, Ctrl-Prior home for Draw

International characters can be typed using the usual compose sequence or an international keyboard. A third way of composing them is to type the letter and the diacritic in any order, and then press the function key F5 (or the key Do) in order to combine the two symbols into a diacritical character. Valid diacritics are : { ' " ^ , }

Input.Time(): returns the real time in milliseconds since Alpha Oberon\252 has been started.

Files: Exports ChangeDirectory.

Types: New interface module to the type system. Necessary to implement persistent objects. Stand-alone Oberon-2 programs must use Objects_Types instead.

Oberon: Time() returns Input.Time()

Printer: generates a postscript file named One may specify a printer (queue) name which is used for printing. If the printer name is "none" (with or without quotes) this file is not printed but kept till the next printing.

Kernel: Garbage collector (GC) may be called at any time, since local pointers (on the stack or in registers) are used as roots during the mark phase of the garbage collection. GC is done on (open) array elements too.

Font Mapping File: Since small Oberon fonts may be difficult to read on high resolution displays, several font mapping files are provided: Fonts.Map, Small.Map, Normal.Map (original mapping), Medium.Map and Big.Map. (See option /font_mapfile above). Normal.Map yields better printing results. The mapping files also serves to map Oberon style filename to OpenVMS conventions, e.g.: Syntax10.Scn.Fnt is called Syntax10.Scn_Fnt on OpenVMS.

This document was derived from R\216gis Crelier's DECoberon\252 User's Guide, Release 4.2 (08-Mar-1994) copyright 1991-94, ETH Zuerich

For further information or bug reports, please contact Guenter Dotzel, mailto:[email deleted due to spam]

IMPRESSUM: The ModulaTor is an unrefereed journal. Technical papers are to be taken as working papers and personal rather than organizational statements. Items are printed at the discretion of the Editor based upon his judgement on the interest and relevancy to the readership. Letters, announcements, and other items of professional interest are selected on the same basis. Office of publication: The Editor of The ModulaTor is Guenter Dotzel; he can be reached by tel/fax: [removed due to abuse] or by mailto:[email deleted due to spam]

Home Site_index Legal OpenVMS_compiler Alpha_Oberon_System ModulaTor Bibliography Oberon[-2]_links Modula-2_links [3KB] [Any browser]

Webdesign by, 14-Nov-1998