The Windows Astrobe Oberon for RISC5 compiler has been synchronised with the Project Oberon FPGA RISC5 compiler sources current as at May 2019.
The following is a summary of features that have been implemented that are not specified in the Language Report. For more information refer to the Oberon Programming Guide on the Astrobe Help menu. Guidelines and examples of recommended Oberon coding techniques are also included. These features are syntax-compatible with Astrobe for Cortex-M3, M4 and M7.
The Verilog sources for the supported target devices have been synchronised with the Project Oberon Verilog sources current as at Sep 2018.
Support for up to 3 x SPI, an I2C master and 32 GPIO connections.
The instruction set used by Astrobe Project Oberon compilers includes an extension of the RISC5 Branch Conditional instruction. This extension was introduced to allow the efficient implementation of the numeric CASE statement which is defined in the Oberon report but has not yet been implemented in the standard distribution of Project Oberon.The standard Branch Conditional via Register instruction is
As a result, the average overhead of any selection in a CASE statement, including range checking, is now a constant 6 instructions. The average overhead of any selection in an IF THEN ELSE statement is (N + 1) * 2 instructions. Hence, in situations where there is an equal probability of each selection occurring, CASE is faster than IF whenever there are more than 2 choices.
Embedded Project Oberon has been implemented on a number of inexpensive FPGA development boards using Xilinx Spartan-7 and Artix-7 devices.
Arduino Shield-compatible SPI and I2C pins are supported on the Digilent Arty A7 and Arty S7 development boards.
You can add up to ten new menu commands of your own choice to the Astrobe Tools Menu. These can be used to launch a Windows application, a command-line console application or a DOS command.
You can include the following context-sensitive parameters in the commands:
They are substituted with values corresponding to the file currently showing in the editor.
You can also use the parameter
as the working folder or parameter for the command. The name of the folder where the Astrobe configuration files, library modules and examples are located is substituted when the command is executed. This is the folder which you specified when you installed Astrobe e.g.
You can create new menu items by editing a Tools.ini text file which is located with the configuration files in the Astrobe Configs folder. The ini file supplied with Astrobe includes two commands:
Open Containing Folder ...
Open Examples Folder ...
These commands perform the following functions:
The following library modules are additional to the Project Oberon modules. Refer to the Astrobe source code examples to see how they can be used:
Perform bitwise operations on INTEGERs.DateTime
Date and Time to / from string conversion functions.
General Purpose IO pin support.
HCFiler was developed for Embedded Project Oberon to be used for applications (e.g. data logging, backups etc.) that might need to create files with a total size exceeding the 64 MB limit of the standard Project Oberon SD card filesystem. The files can subsequently be processed / analysed on a Windows system.
Supports peripheral devices (e.g. a digital compass) which communicate via an I2C bus.
Supports the Maxim DS3234 Real-Time Clock device. The DS3234 is a battery-backed chip that provides continuous time (hours, minutes and seconds) and date (year, month and day) information accurate to +/- 2 minutes per year via an SPI interface. It is used to automatically timestamp Project Oberon files and can be used with the Astrobe HCFiler filesystem functions to implement accurate datalogging applications.
The RTC device is available as a convenient Deadon RTC breakout board from SparkFun. Alternative RTC devices can be used if required without modifying the Oberon Kernel.
Supports LCD displays, SD cards, 7-segment LEDs, and digital sensors such as accelerometers, magnetometers, etc. which are controlled via the Serial Peripheral Interface (SPI)
Implements time delays measured in milliseconds.
Source code examples include: