4 ms·
Great project - love to see more alternative systems. It should be noted that this is a port (or, rather a rewrite in Pascal) of Peter de Wachter's RISC5 emula
by johndoe0815 6y ago
Great project - love to see more alternative systems.
It should be noted that this is a port (or, rather a rewrite in Pascal) of Peter de Wachter's RISC5 emulator to a bare-metal Raspberry Pi environment, not a native Oberon system running on bare-metal ARM (i.e. there is no ARM compiler backend and all binaries are compiled for RISC5 and run in emulation).
- 082349872349872 6y agoIIRC the Oberon-powered drone was running on ARM, so there are ARM codegens for at least some versions of Oberon. Edit: https://people.inf.ethz.ch/wirth/Oberon/Oberon.ARM.Compiler.pdf https://people.inf.ethz.ch/wirth/Oberon/Oberon.ARM.Compiler.... (not that this is meant to detract from TFA, just to point out the possibility for someone to take another step.)
- johndoe0815 6y agoThanks for the link! Adapting the Project Oberon compiler code generation isn't that difficult, but the devil is in the details :). My student Rikke described some of the challenges porting Project Oberon to RISC-V in her project report (https://github.com/solbjorg/oberon-riscv/blob/master/report.pdf https://github.com/solbjorg/oberon-riscv/blob/master/report....). I assume that the most time-consuming task to get Project Oberon to run on ARM/Raspberry Pi would be to write device drivers for more complex devices, e.g. USB and Ethernet. These could be written in Oberon (which would be a considerable effort) or possibly be abstracted by using a bare-metal hypervisor that supports VirtIO device abstractions, e.g. Vmware ESXI. This way, one would only have to implement VirtIO drivers in Oberon, which is considerably less complex. Connecting a PS/2 keyboard and mouse instead of USB might also be an alternative, since drivers for PS/2 are far less complex: http://www.deater.net/weave/vmwprod/hardware/pi-ps2/ http://www.deater.net/weave/vmwprod/hardware/pi-ps2/
- ncmncm 6y agoThank you, that is helpful background. Running Oberon code this way is akin to running Python code on Micropython on bare metal. But probably faster. Even running in an emulator on bare metal is more fun than anything coddled in a massive OS. The threshold of fun is where you get to schedule and vector your own interrupts. At some point you will hunger for the actual native code experience, but the difference turns out to be pretty abstract unless you are counting clock cycles. The software that landed the Apollo Lunar Excursion Module on the moon was mostly coded to an emulator.
- pjmlp 6y agoI recall reading somewhere that was the original idea of P-Code, Wirth never planned to use it as basis for Pascal emulators, rather as a tool for bootstraping compilers, but then Pascal USCD took off.
- gavinray 6y agoSorry this is incredibly offtopic but do you keep a blog? I find your comments here across a wide variety of programming languages and usually find them interesting/informative.
- pjmlp 6y agoYes I do keep one, but most likely you won't find there what looking for. Most of my stuff have learned has been over reading papers, magazines and still being around since the late 70's, most of which you won't find on my blog. In any case, my nickname alongside Oberon will get you there.
- gavinray 6y agoThank you!