This is a summary of the new features introduced in Astrobe for RISC5 since version 7.2
Editor
When a new file which is still named Untitled.mod is saved, the Save As dialog box is shown to allow the filename to be changed.
When the Editor Preference Trim whitespace is checked, trailing tab and space characters are deleted from each line of a file when it is saved.
Linker
Project > Link combines the core Project Oberon operating system modules Kernel, FileDir, Files and Modules to create a new boot file named Modules.bin. The source code file Modules.Mod should be the current module displayed in the Astrobe editor window when the link command is run.
Make a backup copy of the Embedded Project Oberon SD card and then upload the bin file. Run the Embedded Oberon command BootFile.Load to replace the existing bootfile on the SD card and restart the system to use it.
Compiler
Order of Import Items
The items in an IMPORT list may now be included in any order. The sequence is not affected by dependencies or indirect imports.
Warnings for Unused Items
The compiler optionally reports a warning for:
- Every module that is included in an IMPORT list but is not otherwise referenced in that module
- Every constant, type, variable or procedure that is declared in a module, but not exported or used in that module
Configuration
The Configuration menu now includes the names of all of the configuration files located in the current Config folder e.g.
Click on the name to set that as the current configuration. Alternatively, select the Configuration > Open command to immediately set the configuration, or to change the current Config folder.
Select Configuration > Edit to view or change the current configuration.
The configuration file now includes a Warnings checkbox so you can enable / disable compiler warning messages.
SYSTEM and Built-In Procedures
SYSTEM.NULL
PROCEDURE NULL*(x:
SYSTEM.NULL
returns true if x is negative or positive INTEGER
or REAL
zero.
SYSTEM.VAL
PROCEDURE VAL*(typeName: <any type>; x: <any type>): typeName;
SYSTEM.VAL
allows the value of x (which can be of any type) to be interpreted as if it were declared as type typeName.
x can be a non-scalar variable i.e. a record or an array. The size of the source and destination types must be the same.
LSR
PROCEDURE LSR(x, n: INTEGER): INTEGER;
LSR
performs an unsigned shift right of integer x by n places, where n is a positive integer expression, returning x * 2-n
Oberon Commands
System.Date
The parameters to System.Date are now consistent with Project Oberon:
dd mo yy hh mm ss
Leading zeros are optional.
0 <= dd <= 31, 1 <= mo <= 12, 0 < yy <= 63, 0 <= hh <= 23, 0 <= mm <= 59, 0 <= ss <= 59.
System.Date 31 12 21 23 59 0
If System.Date has no, or invalid, parameters, then the date and time is displayed. With parameters, date and time are reset.
Supported FPGA Development Boards
Embedded Project Oberon has been implemented on a wider range of 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 new library modules are included. You can refer to the Astrobe for Cortex-M3, M4 and M7 Microcontrollers document for detailed descriptions of the General modules as they are identical to the corresponding Cortex-M versions.
General
- Strings - General text string processing
- Convert - Convert Integers to and from strings
- Reals - Convert real numbers to and from strings
- Math - Mathematical and trigonometrical functions
- Graphics - Device-independent drawing of lines, circles and ellipses
- Random - Random number generation
- Put - String handling helper functions
RISC5-specific
- Errors - General RISC5 runtime error codes and messages
- BootFile - load the boot file created by the Astrobe Project > Link command (see above) onto the boot area of the Embedded Project Oberon system SD card
Source Code Examples
Additional source code examples have been included.
Acknowledgements
The following have contributed significantly towards this release of Astrobe for RISC5 by providing encouragement, problem reports and enhancement requests and by publishing solutions to problems. I greatly appreciate the assistance and recommend that you refer to their work for additional inspiration.
gray | Oberon-RTS |
Andreas Pirklbauer | Andreas Pirklbauer's GitHub Repositories |
Paul Reed | Project Oberon |
Michael Schierl | Michael Schierl's GitHub Repositories |
Problems fixed
v8.0
- A record field may now be used directly as the selector in a numeric CASE statement.
- The dynamic type of a dereferenced pointer variable passed as a parameter to a procedure e.g.
CheckType(ptr^)
is now correctly identified in type tests in that procedure.
- Date and time overflow issues in RTC.Active and Oberon.Loop.
- A missing "." in an Oberon command is now reported as Error 5: Unknown command
- Attempts to run a command in the Astrobe Terminal window when the COM port is not opened display the error message The port is closed instead of causing an unhandled exception.
- Attempts to open more than one Astrobe Terminal window on the same COM port display the error message Access to the port 'COMxx' is denied instead of causing an unhandled exception.
- Integer overflow errors in constant arithmetic that caused an unhandled exception during compilation e.g.
i := 07FFFFFFBH + 10
now display an error message instead.
- Set constants that caused an unhandled exception during compilation e.g.
c = {16..30}
now compile without error.
- The Build and View Import commands now process comments in IMPORT lists without problems.