Project Oberon / Linux

Embedded Extended Oberon (E2O)

E2O is a port of Extended Oberon designed to be capable to run on embedded devices like Raspberry Pi Pico 2. As usual, no interfaces were changed from original system. Two modules (Kernel0 and Display0) were added. Current state is that it compiles itself on ARM32 and runs smooth on 64bit Raspberry Pi OS as well as on Linux PCs via qemu. Floating Point is not yet implemented. Display is not yet clipped. My goal is to phase out ARM32 and let the compiler generate code for Thumb2. Second goal is to run it on RISC-V32 and RISC-V64. Since ARM64 is quite similar to RISC-V, there should also be a compiler for ARM64.


Project Oberon / Linux has been phased ou and will be replaced by E2O.

Project Oberon / RISC-V Linux

Oberon-07 is my favorite language, Po's compiler my favorite compiler, RISC-V my favorite CPU architecture and Linux my favorite operating system. Project Oberon / RISC-V Linux merges all together with native speed. If you don't yet have a RISC-V CPU, get qemu version 3.0 or later, extract pov.tgz and run "qemu-riscv32 pov". Due to change of syscalls, version in pol.tgz doesn't work any more. Use pov.tgz.

Project Oberon / ARM Linux

The CPU needs ARMv7 instruction set and the DIV instruction. Cortex-A7 (like Raspberry PI 2) and newer CPUs are fine. Non-Cortex and Cortex-A8 and Cortex-A9 are not supported. It compiles itself. It uses X11 window system. Used memory is fixed at 16MB excluding stack. Starting and compiling is extremely fast. Performance of this simple compiler is on par with other ARM compilers, including OP2 without register variables.

Project Oberon / MIPS Linux

Requires a MIPS32R2 CPU like the MIPS Creator CI20 or qemu-mipsel. Not tested much. Size of global variables currently limited to 32k. Bad code density due to 4 instruction for a trap, bad performance due to lack of register variables and bad memory subsystem of the Ingenic JZ4780 µP.

Download

pol.tgz: contains disk file Oberon.dsk and all ARM, RISC-V and MIPS Linux commands; uncompress with "tar xzf pol.tgz". You can also run the disk file with Peter De Wachter's Oberon RISC Emulator, but POL has more memory and more beautiful colours ;-)

Usage

Execute "./poa" "./pov" "./pom" for ARM/RISC-V or MIPS. Default disk file is Oberon.dsk. For a different disk file run "./poa file.dsk".

Project Oberon Java.

Web Oberon

Web Oberon will become the port of Project Oberon to WebAssembly. IMO, WASM fits perfectly with Oberon. Some advantages are explained in [http://rickyhan.com/jekyll/update/2018/05/30/exciting-advances-in-systems-programming.html]. Compiler port should be fairly simple, however currently WASM needs JavaScript glue code. As I have no clue about JavaScript and Web programming the port will take time.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License