What's New in Astrobe for RISC5

Version 7.2.0 2006-2020 CFB Software
Last Updated 18 Sep 2020 

E-Mail:   info@cfbsoftware.com
Website:   https://www.astrobe.com

This version is supported on Windows 10. The Installation and Uninstall executables are digitally signed to validate authenticity and integrity.

This is a summary of the differences from Project Oberon and new features introduced in Astrobe for RISC5 since version 7.0.2


Project Oberon Language and Compiler Compatibility

The Windows Astrobe Oberon for RISC5 compiler has been synchronised with the Project Oberon FPGA RISC5 compiler sources current as at March 2020.

Language Extensions

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.

SYSTEM Procedures

An optional integer constant third parameter inc can be used with the functions SYSTEM.GET and SYSTEM.PUT to automatically post-increment / pre-decrement the value of the address of the variable that is being accessed. e.g.

SYSTEM.PUT(wordAddr, intData, 4);
SYSTEM.GET(byteAddr, byteData, -1);

Built-in Functions:

Interrupt Handlers

An Oberon interrupt handler is a normal procedure which has an integer constant in square brackets instead of a list of parameters. The constant can be a literal or named constant.  e.g.

PROCEDURE TimerHandler[0];

Leaf Procedures:


RISC5 Processor Implementation

Verilog Sources

The Verilog sources for the supported target devices have been synchronised with the Project Oberon Verilog sources current as at Sep 2018.  

Additional Peripherals

Support for up to 3 x SPI,  an I2C master and 32 GPIO connections.

The SPI implementation has a new parameter wordsize (0 = 8-bit byte, 1 = 32-bit word), so that the size of the data can be specified separately from the speed of the data transfer. Examples of its use can be seen in the library modules Kernel and RTC.

Instruction Set Extensions

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

BR,cond [Rn]

The new variant of this instruction is

BR,cond PC,[Rn]

i.e. the target of the branch is computed by adding the contents of register n to the current program counter.

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.


Supported FPGA Development Boards

Embedded Project Oberon has been implemented on a number of inexpensive FPGA development boards using Xilinx Spartan-7 and Artix-7 devices. The RISC5 processor clock speed used is 40 MHz.

Arduino Shield-compatible SPI and I2C pins are supported on the Digilent Arty A7 and Arty S7 development boards.


Library Modules

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:

Bits

Perform bitwise operations on INTEGERs.

DateTime

Date and Time to / from string conversion functions.

GPIO

General Purpose IO pin support.

HCDrive, HCDir & HCFiles

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.

I2C

Supports peripheral devices (e.g. a digital compass) which communicate via an I2C bus.

Out

Formatted output 

RTC

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.

SPI

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). 

Timer

Implements time delays measured in milliseconds.


Source Code Examples

Source code examples include:


Problems fixed

The compiler reports the following errors:

The compiler correctly handles:

Astrobe IDE

Kernel