This list is a summary of the features of Astrobe for RISC5. Further details of the features
can be found in the Help file and the document titled "Oberon Programmers Guide - Astrobe for RISC5" which are included in the distribution.
|IDE / Editor
- Standard Windows, programmer-oriented, text-editing features
- Fast and responsive interactive operation
- Tabbed multi-document interface for editing multiple source files (modules)
- Split-screen editing
- Regular expression support in Find / Replace
- Line modification indicators
- Optional line numbers, printing features etc. etc.
- The module in the current window is the target of the compiler / linker / builder
- User-customisable Tools menu for integrating batch files, Windows commands or 3rd-party applications
- Desktop HTML Help
|Oberon Language-oriented Editing
- Automatic syntax colouring of language elements as you type
- Auto-capitalisation of keywords as you type
- Alphabetical auto-indexed list of procedures. Click on the name to go to the procedure
in the source code.
- Auto-indexed list of imported modules. Click on the module name to open the file.
- Oberon is a general-purpose programming language first published in 1987.
- Conforms to the 2016 Standard Oberon Language,
- Integer, Boolean, Char, Set, Array, Record and 32-bit IEEE Real data types and operations
- Pointers to records for dynamic memory allocation
- Constant, Type, Variable and Procedure declarations
- Open array parameters
- For, While, Repeat loops and Case (switch) statements
- Nested procedures
- Direct assignment of structured types (arrays and records)
- Type-extension capabilities for Object-Oriented programming
- Assertions for validating input / output parameters
- Type-checking / consistency validation across modules
- Read-only access to external global variables
- Nested comments
|Embedded Programming Features
- Leaf procedures allow runtime checks to be disabled locally for optimum
- Interrupt procedures
- Low-level SYSTEM functions GET, PUT, ADR, BIT etc. for accessing the RISC5 control,
status and peripheral registers
- Language extensions including bitfield functions BFI and BFX
|Low-level Language Extensions
- Direct access to CPU registers using SYSTEM.REG and SYSTEM.LDREG
- Byte-level addressing of all built-in and user-defined data types and structures
- Type casting using SYSTEM.VAL
|Fast Native-code Compilation
- Fast single-pass modular compilation
- Generates Project Oberon-compatible symbol files and native RISC5 object code
- One-click to compile the module in the current window
- Only the current module needs to be compiled if the interfaces of imported modules
- Pre-compiled symbol files are used for fast access to imported modules
- Compilation continues to the end to find as many errors as possible
- Compilation errors are displayed in a separate window
- Click on an error line to take you to the actual line in the source
|Building and Linking
- Automated Build feature identifies and recompiles all outdated dependent modules before compiling the target module.
- There is no need to maintain separate 'make' files. The names of all imported modules are known at compile time.
- Modules are dynamically loaded and linked at execution time. There is only ever a single copy of a module in memory at any one time.
- Link updated core operating system modules into a new boot file
- Interfaces of imported modules are validated as they are linked to ensure consistency
and eliminate obscure runtime errors.
- Compile and build options are stored in configuration files.
- Multiple projects for the same target can share a single configuration file.
- Configuration file settings for multiple library search paths
|Debugging and Error trapping
- Language support for validation of procedure parameters, pre- and post-conditions using assertions
- Compilation warnings for unused constants, types, variables, procedures and imported modules
- Automatic array index bounds checking
- Runtime library Out can be used to send trace output to the Astrobe terminal window via a UART serial connection
- Trapped runtime errors and failed assertions are identified by module name and source code position
|Uploading and Running
- No special hardware programming tool is required
- Upload via UART connected via a COM / USB serial port
- Integrated terminal emulator communicates via a UART with a program running on the target device
|Project Oberon Library Modules
- Kernel - Low-level memory allocation, disk sector allocation, tasks etc.
- Modules - Dynamic linker and loader
- Oberon - User command interface (modified for embedded system control via UART)
- FileDir, Files - The Project Oberon file system
- System - User interface toolbox module
- Texts - Read and write functions
- Tools - Low-level file inspection and display commands
- Upload - File uploading via the UART serial interface
|Additional Library Modules
- Out - Formatted ASCII text output of chars, strings and integers
- Strings - General text string processing
- Convert - Convert Integers to and from strings
- Reals - Convert real numbers to and from strings
- DateTime - Convert Date and time to and from strings
- Timer - Millisecond time measurement and delays
- RTC - access the time components of the Maxim DS3234 Real Time Clock
- HCDrive, HCDir, HCFiles - The SDHC filesystem
- I2C - control serial RAMs and EEPROMS, LCDs, accelerometers, temperature and pressure gauges, compasses etc.
- SPI - Serial Peripheral Interface: control LCD displays, SD cards, 7-segment LEDs, and digital sensors such as accelerometers, magnetometers, etc.
- GPIO - General Purpose I/O Control
- HCDrive, HCDir, HCFiles - The SDHC filesystem
- Bits - Perform bitwise operations on INTEGERs
- Math - Mathematical and trigonometrical functions
- Graphics - Device-independent drawing of lines, circles and ellipses
- Random - Random number generation
- Put - String handling helper functions
- BootFile - load the pre-linked boot file onto the boot area of the SD card
|Source Code of Library Modules
Full source code of all Embedded Project Oberon runtime and additional library modules
|Source Code Examples
- Example modules illustrating the use of the library modules including full
- Develop and deploy commercial applications with no runtime fees
- Display the RISC5 assembler instructions generated for a module