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).
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:
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.
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.
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.
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 oberon.ssw.uni-linz.ac.at /pub/papers/Dialogs.ps.Z (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.
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 kitEach user of Oberon can define Oberon$System and Oberon$Dir_List in his login file.
Alpha Oberon is started from a terminal window using the executable oberon. The syntax and qualifiers of the Oberon command:
$ Oberon
[/boot_module=string]
[/colors]
[/command=string]
[/display_name=string]
[/font_mapfile=filename]
[/geometry=string]
[/heapsize_in_MB=number]
[/module=string]
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.
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 Oberon_Printfile.ps. 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
Contact
Legal
Buy_products
OpenVMS_compiler
Alpha_Oberon_System
XDS_family
DOS_compiler
ModulaTor
Bibliography
Oberon[-2]_links
Modula-2_links
Onduleurs
![]()
Webdesign by www.otolo.com/webworx,
14-Nov-1998