Modula-2 and Oberon-2 Compiler for HP OpenVMS Alpha and VAX
The programming languages Modula-2 and Oberon-2
Modula-2
The programming language Modula-2 was developed by Niklaus Wirth
to be the logical successor of Pascal. Modula-2 is a flexible,
modular language available on a variety of platforms.
The main features of Modula-2 are module concept, separate compilation with
full type check and a systematic, modern syntax. Modula-2 is especially
well suited for the programming of complex software systems and allows
efficient low-level machine access and multiprogramming.
Modula-2 corrects Pascal's shortcomings in all aspects and was designed
to replace Pascal and all incompatible derivates thereof.
The Modula-2 language reference
Niklaus Wirth: Programming in Modula-2, 3rd ed., Springer Verlag, 1985.
Oberon-2
Oberon-2 was developed by Niklaus Wirth and Hanspeter Mössenböck;
Oberon-2 is the world's smallest object-oriented language which nevertheless
provides the power to tackle todays mega-software projects.
Only the simplest tools allow the construction of reliable and extensible
complex software systems.
Oberon-2 is a concise polymorphic OOP-language with inheritance
via record type extension. Oberon-2 is a step beyond Modula-2 and Pascal
in that it is simpler but more powerful than Modula-2.
The Oberon language reference
Martin Reiser, Niklaus Wirth: Programming in Oberon, Addison Wesley, 1992.
The Oberon-2 language reference
Hanspeter Mössenböck: Object Oriented Programming in Oberon-2, Springer Verlag, 1993.
All above mentioned books are also available in German.
Download Oberon programming language and Oberon System books:
Modula-2 and Oberon-2 Compiler for OpenVMS
These products were developed and are maintained by ModulaWare
Modula-2 and Oberon-2 native-code compiler for
HP Alpha and VAX under the
OpenVMS operating system
Latest versions:
- MaX V5.05 32 bit and 64 bit native code Modula-2 compiler for HP OpenVMS Alpha version 6.2 to 8.3
- MaX V4.18 32 bit native code Modula-2 compiler for HP OpenVMS Alpha
- MVR V4.16 32 bit native code Modula-2 compiler for HP OpenVMS VAX
- A2O V3.00 64 bit native code Oberon-2 compiler for HP OpenVMS Alpha
Common features of MaX/MVR/A2O:
- complies with OpenVMS procedure calling conventions
- generates position independent, reentrant, native-code
- is Y2K-compliant
- supports VAX floating point types and arithmetic: F, D, and G_FLOATING, plus H_FLOATING on VAX;
LONGREAL is D_FLOATING (or T_FLOATING on Alpha with /IEEE)
- supports VAX complex types (and complex arithmetic in Modula-2): F, D, and G_COMPLEX, plus H_COMPLEX on VAX;
LONGCOMPLEX is D_COMPLEX (or T_COMPLEX on Alpha with /IEEE)
- fully supports OpenVMS multi-process, symbolic run-time debugger, e.g.: step, step/into, watch and break point,
examine simple and structured variables (record, array, and pointer-types), screen-mode, etc.
- ISO Modula-2 library modules
- representation of floating point literals and constant expressions
of any floating point type (and complex type in Modula-2)
- allows structured function results, i.e.: function return type can be of basic-, array- and record-type
- sets with up-to 128 elements, which allows SET OF CHAR [CHR(0)..CHR(127)]
- packed and aligned record fields (/packed_records)
- uses static link chain technique to access outer-scope local variables in nested procedures (provides for programming of exception handlers)
- detection of tangling pointers (standard in Oberon-2, /optimize=(clearstack) in Modula-2);
clears local variables declared in procedures and in dynamic modules in the procedure/module-body
entry code. Global (statically allocated) variables are cleared by a OpenVMS linker directive.
The heap is cleared by run-time system in Oberon-2 and in Modula-2; the heap can be cleared
by a customized ALLOCATE. So any unitialized pointer access will produce an
access-violation exception
- allows to call foreign procedures and functions via foreign definition modules
- supports OpenVMS exception handling (ESTABLISH)
- features coroutines for multi-programming (with very fast context-switch
and secure stack-overflow check on Alpha)
- comes with VMS, RMS, MTH, RTL, DPML, OTS, LIB, STR, PPL, OSF/Motif,
DecWindows/X11 foreign language interface modules [provided as is/unsupported]
- allows programming of asynchronous system traps (AST)
- built-in system function REGISTER in Modula-2 and GETREG/PUTREG in Oberon-2
- built-in cross-reference (/cross_reference)
- built-in disassembler (/machine_code)
- includes make-tool
- supports language sensitive editor (LSE)
- features persistent objects (Oberon-2 only)
- includes source code analyser (Oberon-2 only)
- distribution kit includes source code of many examples and library modules
- simple installation procedure; complete library is compiled at installation time
- additionally on Alpha:
- 32 bit and 64 bit pointers to access very large memory (VLM) in Oberon-2
and Modula-2 (V5)
For details about VLM see the virtual region programming example
and the
Digital Technical Journal:
-
Extending OpenVMS for 64-bit Addressable Virtual Memory, October 1996, Michael S. Harvey and Leonard S. Szubowicz (Volume 8 Number 2)
Pdf
- The OpenVMS Mixed Pointer Size Environment, October 1996, by Thomas R. Benson, Karen L. Noel and Richard E. Peterson:
Pdf
- Adding 64-bit Pointer Support for a 32-bit Run-time Library, October 1996, by Duane A. Smith
Pdf
- OpenVMS Alpha 64-bit Very Large Memory Design, by Karen L. Noel , and Nitin Y. Karkhanis, 1997 (Volume 9 Number 4)
Pdf
- IEEE floating point types and arithmetic: S, T_FLOATING
- IEEE complex types (and arithmetic in Modula-2): S, T_COMPLEX
- selectable default floating point type for [LONG]REAL is either VAX- or IEEE-floating (/[NO]IEEE)
- default floating point type determines the base type for the complex type [LONG]COMPLEX
- 32 bit and 64 bit integer type and arithmetic
- Modula-2 additionally: 64 bit cardinal type and arithmetic
- Oberon-2 additionally: 8 and 16 bit integer data types and arithmetic
- Oberon-2 and Modula-2 (V5): 64 bit precision for whole number expressions and constant literals
- built-in instruction scheduler
- ISO Modula-2 language extensions (VAX and Alpha):
- additional "/" and "REM" integer and cardinal operators
- complex arithmetic, relational operators and standard functions RE, IM, CMPLX
- standard functions INT, LFLOAT, MAX, MIN, LENGTH
- standard functions can also be used in constant expressions within the declaration
section, including real arithmetic, complex functions, SYSTEM.MAKEADR, and SYSTEM.CAST
- record- and array value constructors with BY-count in declaration section and statement part
- multi-dimensional open arrays
- empty records
- module SYSTEM: new address arithmetic functions ADDADR, SUBADR,
DIFADR, as well as MAKEADR, ROTATE, SHIFT, type LOC (=BYTE)
and constants LOCSPERBYTE, LOCSPERWORD, BITSPERLOC
- generic real literal type RR: constant real literals and
expressions are evaluated with longreal precision
and are expression compatible with REAL and LONGREAL
- generic complex literal type CC: constant complex numbers
and expressions are evaluated with longcomplex precision
and are expression compatible with COMPLEX and LONGCOMPLEX
- any predeclared pervasive indentifier, such as for example REAL, LONGREAL, FLOAT, NIL can be redeclared
- additional ISO Modula-2 library modules to support mathematical functions,
string conversions, and I/O for all VAX and Alpha floating point types
- additional ISO Modula-2 library modules to support mathematical functions
for complex data types
- allows Modula-2 and Oberon-2 modules in the same project:
- ISO Modula-2 library can be used in Oberon-2
- common run-time system for Modula-2 and Oberon-2
- when being called from Oberon-2, Modula-2 ignores Oberon-2's type descriptor for
variable procedure parameters of record type and passes NIL vice versa
- Oberon-2 (A2O) also generates 64 bit load files for the AlphaOberon System (AOS)
Press releases, data sheets, and implementation notes
You can download or view the below press releases, data sheets and implementation notes
in plain ascii text. Some articles are also available in PostScript format (gzip-compressed):
OpenVMS Alpha Modula-2 press release: MaX
OpenVMS Alpha Oberon-2 press release: A2O
OpenVMS Alpha & VAX Modula-2 data sheet (22KB html)
OpenVMS Alpha & VAX Oberon-2 data sheet (23KB html)
OpenVMS Alpha Modula-2 & Oberon-2 implementation notes (63KB html)
(latest edition 20-Mar-1999)
OpenVMS Alpha Modula-2 & Oberon-2 The Year 10000 problem
OpenVMS Alpha Oberon-2 Compiler 64 bit address extension (A2O V3.0)
OpenVMS Alpha Modula-2 Compiler 64 bit address extension (MaX V5.0)
OpenVMS Alpha Modula-2 Application program migration from 32 bit to 64 bit (MaX V5)
OpenVMS Alpha Modula-2 64 bit Virtual Regions with Modula-2 on OpenVMS Alpha
Test Programs for the ISO Modula-2 Standard I/O Library
Oberon-2 LALR-Syntax
What is a 64 bit Compiler?
(latest edition 20-Mar-1999)
Was ist Oberon-2? (a short Oberon-2 language description in German)
All data is subject to change without notice.
[ Home |
Legal |
Alpha_Oberon_System |
ModulaTor |
Bibliography |
Oberon[-2]_links |
Modula-2_links |
General interesting book recommendations ]
This page and any other content on the modulAware.com website
is provided as-is for non-commercial and non-profit scientific research only.
Any companies or organizations mentioned in any of these articles may no longer exist
or may have moved to another location. The grammatical use of present tense verbs
on this page or in any content linked on this page serves only the reproduction
of historical documentation and does not imply any ongoing organizational existence
nor corporate activity of any entity mentioned.
© (1998-2012) modulAware.com, last update: 27-Jun-2012