Project POW! Programmer’s Oberon Workbench

Before giving up on the Oberon language completely I decided to try to liberate the Oberon Language from the Oberon System, believing the latter to be a ball and chain for most practical purposes. The product that had launched PASCAL to success was Borlands Turbo PASCAL which provided a complete program development environment with the compiler embedded in it. It was easy to use, produced fast compact code and didn’t cost much. At the time most compilers cost thousands of pounds/dollars, Turbo Pascal cost less than 50 dollars. Its key advantage was that the edit, compile, run, test loop was really quick and slick, in a word productive.

Here is a link to that nugget of joy – click for more information
https://en.wikipedia.org/wiki/Turbo_Pascal

This was followed by TopSpeed Modula-2 using exactly the same recipe. That was a revelation and brought with it the possibility of writing large reliable programs for PC based computers in a strongly typed language supporting modularity and thereby source code control for versioning too.

Here is a link giving a summary of that – just click below
https://en.wikipedia.org/wiki/Modula-2

So naturally it seemed obvious to provide an Oberon-2 development environment in a similarly styled package and on the PC as this was the most widely available platform and also being used for embedded real time systems too. At about the same time (1993-4) when visiting a conference about Oberon I met Professor Mulbaecker of the FIM Institute of the Johannes Kepler University at Linz in Austria. They were already interested in a development environment for their microprocessor based systems and I was interested in providing the compiler. We combined forces and formed a Project called POW!,
the Programmer’s Oberon Workbench. The idea was to simply emulate the PASCAL and Modula-2 products and create and Oberon-2 version in the same style. We decided it would be released at no cost for educational use.

I formed a 2 person sub-project at Robinson Associates, my company in the UK (actually Robinson Systems Engineering Limited), the goal was to provide an Oberon-2 compiler for the xxx86 Family of Intel Processors and their various competitive clones. The guts of the compiler code generator were written by Richard de Moliner then a student at ETH. It was based on Prof Wirth’s code generation templates concept in the Oberon compiler, as modified by the designer of Oberon-2 Professor Mössenböck for Oberon-2 rather than the original Oberon. Richard did an heroic job of rewriting the code generator to map Oberon into the rather messy and idiosyncratic Intel instruction set. He was a cryptography student which I think helped :). I did the liaison work and project management with the Linz team to get the compiler integrated and tested. The Linz team included Bernhard Leisch who worked on liaison and compiler integration and Ulrich Kreuzeder who worked on the POW! Integrated Development Environment and programming examples. It is an amazing fact that nearly the whole design of the code generation was done ‘freehand’ in a school exercise book without any tools to provide support for checking. This work included meticulous examples to test out the edge cases that might normally be missed when testing such a challenging piece of software. We also wrote a set of small Oberon Test Cases which were batch tested with the compiler. This was done after each development change to the software to check the new parts worked correctly and the existing unchanged parts still worked correctly. This style of regression test based development paid off later in the EU Project ONBASS – but that’s another project for another time. It took about 6 months of elapsed time to get the compiler to a point whereby it could compile itself without error. But significantly at that point we had cut the umbilical chord with the old ETH system and had a standalone PC based compilation system.

POW! was released without much ceremony but caught on well in Linz and a little in ETH. It spread eventually to many parts of the world. Over a period of 20 or so years we only had one reported compiler fault – a real testament to Richard’s precision work and the Regression Test driven process for development contributed by Robinsons. POW! is still hosted at FIM in Austria and is also available on Github as an open source project. Robinson Associates is no longer trading and so the commercial limits on the license have been removed. In case of further interest here are some documents and links to resources associated with the project, including the compiler source code. See below:

The original project files are available from FIM at Linz
http://www.fim.uni-linz.ac.at/pow/pow.htm
My thanks to the Johannes Kepler University for maintaining the availability of this site.
The files have been establish by Roman Mirr in Github at
https://github.com/Spirit-of-Oberon/POW
Many thanks for your initiative Roman. He also wrote a nice summary / introduction here
https://github.com/Spirit-of-Oberon/POW/blob/master/README

Downloads: just click here for the downloads page at FIM
http://www.fim.uni-linz.ac.at/pow/Download.htm

The Christliches Gymnasium Jena version
This is from is a German grammar school that uses the POW! system for teaching purposes and they released an updated version of POW!/32 around 2006 that solves a number of small niggles with the POW! system and in addition comes with a small set of example programs in German. This version is forked from the original version on Github. It is recommended that you use that version on modern versions of MS Windows (Windows ’95 onwards) over and above the official version.

Publications:
1. Jörg R. Mühlbacher, Bernhard Leisch, Ulrich Kreuzeder, Brian Kirk: Oberon-2 Programming with Windows – Springer 1997,
ISBN 3-540-62522-4

2. Here is a link to Hanspeter Mössenböck’s definitive book
Object-Oriented Programming in Oberon-2
https://ssw.jku.at/Research/Books/Oberon2.pdf

3. Wirth, N.; Gutknecht, J.: Project Oberon, Addison-Wesley 1992
4. Reiser, M.: The Oberon System, Addison-Wesley 1991
5. Reiser, M; Wirth, N: Programming in Oberon, Addison-Wesley ’92

6. Reiser,M.; Wirth N: Programmieren in Oberon. Addison-Wesley 1994, ISBN 3-89319-657-9

Articles:
1. Pow! – a component based programming environment – Volumes 61-95 of Informatik-Berichte – Johannes Kepler Universität Linz – 1995. Note! This book is still available as an ebook from Springer
https://books.google.co.uk/books?id=YsGoCAAAQBAJ for £22.68

2. Ulrich Kreuzeder: POW! – The Programmers Open Workbench. Journal of Systems Architecture 45(11): 909-918 (1999)

3. J. Marais: Design and Implementation of a Component Architecture for Oberon ETH Zürich 1996.

4. André Fischer, Hannes Marais: The Oberon Companion .
A Guide to Using and Programming Oberon System 3 vdf Hochschulverlag AG an der ETH Zürich 1998.
ISBN 3-7281-2493-1. 336 pages, format 17 x 24 cm, hard cover.

5. Eventually ETH got involved with Microsoft/Intel as a target platform as described in
Fine–grained Integration of Oberon into Windows using Pluggable Objects, ETH Diss Emil Johann Zeller, 2002
http://www.mcours.net/cours/pdf/hasclic2/hassclic103.pdf

This is an excellent well written PhD Thesis, I strongly recommend you read it, its like a good detective novel…

Comment: It’s a great shame that this kind of approach wasn’t taken much earlier by ETH as it yielded a usable and practical version of the Oberon System and it’s philosophy on a widely available platform.
Of course it did mean “upgrading” some of the minimalist based decisions that made the 2 man original Oberon project possible. But it raised Oberon from being basically a useful toy demonstrator to a practical usable system. It’s a testament to the original design of the Oberon Project that the modifications that needed to be added where so small and so easily incorporated. At last the Oberon Philosophy found a form that might sustain it by making it more generally usable and useful on multiple platforms like Windows, Unix and Chrome.

<end>