4 ms·
For those interested, you can find the latest Oberon system by Prof. Wirth here: http://people.inf.ethz.ch/wirth/ProjectOberon/ http://people.inf.ethz.ch/wirth/
by lboasso 9y ago
For those interested, you can find the latest Oberon system by Prof. Wirth here: http://people.inf.ethz.ch/wirth/ProjectOberon/ http://people.inf.ethz.ch/wirth/ProjectOberon/
You can run Project Oberon with this emulator (pre-built binaries available): https://github.com/pdewacht/oberon-risc-emu https://github.com/pdewacht/oberon-risc-emu
- pinewurst 9y agoYou can run it from your browser here: https://schierlm.github.io/OberonEmulator/ https://schierlm.github.io/OberonEmulator/
- lboasso 9y agoIf you just want to play with the Oberon-07 language (the one used to implement the whole system), there are several compilers available for different platforms. You can find a list here: http://oberon07.com/compilers.xhtml http://oberon07.com/compilers.xhtml This includes my own Oberon-07 compiler targeting the JVM: https://github.com/lboasso/oberonc https://github.com/lboasso/oberonc
- Koshkin 9y agoIt seems it would be hard to make Oberon the language to play well with "foreign" environments, such as the Java VM and the library. How does one implement interfaces, for example?
- lboasso 9y agoYes a custom foreign function interface is needed. In my compiler I did the bare minimum to bootstrap the compiler. Currently you can create a definition module that makes the bridge between the Java and Oberon worlds. For example the Oberon definition below: DEFINITION MathUtil; PROCEDURE ln(x : REAL) : REAL; END MathUtil. exposes the Java MathUtil.ln() static method: public class MathUtil { public static float ln(float x) { return (float) java.lang.Math.log(x); } } A client module can use now the Java implementation of ln: MODULE Client; IMPORT MathUtil; VAR x: REAL; BEGIN x: = MathUtil.ln(2.0); MathUtil.ln() END Client; For a complete example see https://github.com/lboasso/oberonc/tree/master/examples/fern https://github.com/lboasso/oberonc/tree/master/examples/fern
- Koshkin 9y ago> DEFINITION I am not sure, but would a MODULE only containing declarations (and no or empty body) also work, syntactically?
- lboasso 9y agoThe DEFINITION is an extension of my compiler. It sets the compiler in a different mode, accepting only declarations in the source file. You approach would work, but I prefer a new keyword showing the intent of the source file. DEFINITION is for declarations only, to allow Java-Oberon interoperability.
- marktangotango 9y agoHow’s the network programming and ssl story in oberon (os)? And multiprocessor/multithreading? As an os, Oberon could be a cool alternative. One wonders if intel considered it for ME in place of minix.
- pjmlp 9y agoThe Native Oberon and EthOS versions used cooperative multitasking. Bluebottle OS, which introduced the variant known as Active Oberon, made use of multithreading in form of active objects, a concept similar to goroutines. Its compiler Paco, is one of the first multithreaded compilers I know of. SSL was not yet a thing when Oberon was popular in the mid-90's, so I don't remember if the browser of the time supported it. Network programming was a mix of Ethernet and Oberon own protocols, there was support for network printing and file shares. All books that Wirth wrote about Oberon were written using the text editors of the OS.
- analognoise 9y agoIs it me or does that emulator seem like you can't click in the upper right corner? It looks like there's a box there but I can't click it.
- deleted 9y ago[deleted]