A reduced version of Experimental Oberon which is backward compatible with the Original Oberon operating system
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Experimental Oberon (reduced version)

This is the reduced version of Experimental Oberon. It is backward compatible with the Original Oberon operating system (2013 Edition). To access the full version of Experimental Oberon (which is not backward compatible with Original Oberon), please refer to the following repository: http://www.github.com/andreaspirklbauer/Oberon-experimental

Instructions for converting an existing Original Oberon system to Experimental Oberon (reduced)

NOTE: If you run Oberon in an emulator (e.g., https://github.com/pdewacht/oberon-risc-emu), you can simply backup your existing S3RISCinstall directory, download the compressed archive S3RISCinstall.tar.gz from this repository (containing Experimental Oberon) to your emulator directory, run the command tar xvzf S3RISCinstall.tar.gz in that directory and then start the emulator, instead of going through the instructions outlined below.

PREREQUISITES: A working Original Oberon 2013 operating system and compiler, current as of July 23, 2018 or later (see www.inf.ethz.ch/personal/wirth/news.txt for the change log of the Oberon system and the compiler). If you run an older version of Original Oberon, please upgrade to the latest version first.

STEP 1: Download the following files from the Sources directory of this repository to your Oberon system (these are the files that have been added or have changed relative to Oberon 2013):

 Clipboard.Mod        (optional, from https://github.com/pdewacht/oberon-risc-emu) 
 System.Tool          (optional)

STEP 2: Download the following files from the Sources directory of this repository or from the Oberon 2013 repository (available online at http://www.projectoberon.com), if you don't have them on your Oberon system yet (no changes will be made to these files, they'll just need to be recompiled):

 PCLink1.Mod          (optional, needed if you use an Oberon emulator on a host system)

Note: If you run Oberon in an emulator on a host system (e.g., using https://github.com/pdewacht/oberon-risc-emu), first download the files listed in steps 1 and 2 to your host system (into directory oberon-risc-emu), start the Oberon emulator on your host system, click on the PCLink1.Run link in the System.Tool viewer within Oberon, and execute the following command on the command shell of your host system (example shown for Linux or MacOS):

 cd oberon-risc-emu
 for x in *.Mod ; do ./pcreceive.sh $x ; sleep 1 ; done
 ./pcreceive.sh System.Tool
 ./pcreceive.sh Times24.Scn.Fnt

Note: You may want to convert these files (except the font file) to Oberon format first (Oberon uses only CR as line endings) using the command dos2oberon (also available in the Experimental Oberon repository), before importing the files into the Oberon emulator.

 for x in *.Mod ; do ./dos2oberon $x $x ; done
 ./dos2oberon System.Tool System.Tool

STEP 3: Compile the modules in the following order, or see Sources/System.Tool for the correct compilation order (you can omit the /s after the first compilation). You may also want to recompile other client modules of TextFrames, e.g., Draw.

 ORP.Compile Input.Mod Display.Mod/s Viewers.Mod/s ~
 ORP.Compile Fonts.Mod Texts.Mod ~
 ORP.Compile Oberon.Mod/s ~
 ORP.Compile MenuViewers.Mod/s ~
 ORP.Compile TextFrames.Mod/s ~
 ORP.Compile System.Mod/s ~
 ORP.Compile Edit.Mod/s ~ 

Note: It may happen that the compiler runs out of memory, generating a trap (at least that is the observed behavior when Oberon is run under an emulator). In that case, you may insert the following command after each of the above lines which should remedy the situation:


STEP 4: Restart the Oberon system (and recompile the remaining modules of your Oberon system)

Step 5: Enjoy Experimental Oberon (reduced version).

The file System.Tool contains the necessary commands to create and manage "virtual displays", e.g.,

   System.NewDisplay Andreas ~      # this will assign a new and unique display ID - use it to reference the newly created display
   System.CloseDisplay 0 ~
   System.SetDisplay 1 ~
   System.ShowCommands System Oberon ~ 

Open a few viewers, then click or type in System.Tool some of the following commands:

 System.NewDisplay Andreas
 System.NewDisplay Elisabeth
 System.NewDisplay Roberto

Switch betweeen the various displays. Open a few viewers in each to better see the difference:

 System.SetDisplay 1
 System.SetDisplay 2
 System.SetDisplay 3

Remove no longer used displays, e.g.:

 System.CloseDisplay 2