Generally, re-using code instead of copying is a good approach.
If you do so, then the whole code of Mail is imported in News. Possible but perhaps there is even a better approach to re-use code.
What about this: try to separate all common code in an own module (e.g call it Communication.Mod or MsgBase.Mod or Utilities.Mod or so) and import this new module in Mail and in News.
br
Jörg
> Am 14.06.2023 um 19:53 schrieb peter(a)easthope.ca:
>
> Hello again,
>
> Several procedures in Mail are used in Oberon News. Rg.:
> Mail.ParseContent(), Mail.DecodeMessage() & Mail.GetSetting().
>
> Is export of SendCmd() and use in News objectionable?
> Ie. in Mail, change PROCEDURE SendCmd(...) to PROCEDURE SendCmd*(...).
>
> Thanks, ... P.
>
> -
> mobile: +1 778 951 5147
> VoIP: +1 604 670 0140
>
> --
> Oberon(a)lists.inf.ethz.ch mailing list for ETH Oberon and related systems
> https://lists.inf.ethz.ch/mailman/listinfo/oberon
Applications have been written in Oberon to run on FPGA hardware using the
new low-cost (EUR 50) Olimex GateMateA1-EVB open-source development board:
https://www.olimex.com/Products/FPGA/GateMate/GateMateA1-EVB/open-source-ha…
Not only is this board designed AND manufactured in Europe, the Cologne
Chip GateMate FPGA device that it uses is also designed AND produced in
Europe:
https://www.colognechip.com/programmable-logic/gatemate/
Also remarkable is that the Verilog tools used to build the GateMate FPGA
bitstreams are 1/10th the size of the previous Verilog tools we used (500
Mbytes vs. 10 Gbytes) and result in RISC5 Verilog build times that are
approximately 10 time faster (1 minute vs. 10 minutes):
https://github.com/YosysHQ/oss-cad-suite-build
The Astrobe for RISC5 FPGA Oberon development system is an embedded
software system comparable to Astrobe for Cortex-M / RP2xxx. i.e.
Standalone RISC5 Oberon applications are compiled and statically linked on
a PC. They are then uploaded via a serial link to the Olimex development
board where they run independently of an operating system. For more
information see:
https://www.astrobe.com/RISC5
The free Astrobe for RISC5 software targeting the GateMate FPGA is curently
undergoing final testing. A pre-release version is planned before the end
of this month. Register your contact details if you want to get your hands
on a copy as soon as it is available:
https://www.astrobe.com/RISC5/register.htm
--
Regards,
Chris Burrows
CFB Software
https://www.astrobe.com/
Hello everyone
In case you want to try the Oberon system on a real Raspberry Pi, here is an image ready to flash on an SD card with instructions: https://github.com/rochus-keller/OberonSystem3Native/releases/tag/2026-04-10
I did all debugging and testing on a Raspberry Pi model 3b (which is still regularly available for purchase), but the image should also run on the Pi Zero 2.
Best regards
Rochus Keller
A new language feature introduced in Oberon-07, and implemented in the
Astrobe compilers is the Extended WHILE (aka the *Djikstra WHILE*)
statement. It is described in the document *Porting the Oberon Compiler
from Oberon to Oberon-07
<https://people.inf.ethz.ch/wirth/Oberon/PortingOberon.pdf>* by Niklaus
Wirth
and is shown as the last example in the *WHILE statement* syntax diagram
<https://astrobe.com/OberonSyntax/WhileStatement.htm>
This was an unfamiliar construct which I hadn't seen in other languages so
it was not immediately obvious to me where it could be of use.
I am curious to know if any of you have used it in an application. I'll
award a free Professional copy of the Astrobe compiler of your choice for
the best (IMHO) reply.
(Note to Paul R - you are excluded from applying) ;-)
To save you the bother of cheating, I asked AI to suggest some
applications. This is what she came up with:
*State Machine Controllers*: Managing complex workflows (e.g., in embedded
systems or parsers) that transition between different operating states
based on hardware or software flags, without needing nested IF statements.
*Interactive Command Interpreters*: Processing single-character commands or
menu inputs. The WHILE loop checks sequentially for different keys (e.g.,
'a', 'b', 'c') and naturally terminates when an invalid character exits the
menu.
*Multi-Condition Resource Polling*: Looping to check the status of multiple
hardware devices or network sockets. The structure evaluates each flag one
by one, executing the routine for the highest-priority active device.
*Lexical Scanners (Tokenization)*: Scanning characters in a string. Each
branch checks if the current character matches a specific token category
(e.g., a digit, an operator, or a letter), processing them as appropriate.
*Game Turn or Event loops:* Sequentially processing queued inputs, AI state
updates, or animation frames in prioritized succession, falling out of the
loop only when the event queue is entirely empty.
--
Regards,
Chris Burrows
CFB Software
https://www.astrobe.com/
Hello everyone
Meanwhile I managed to make the Oberon System 3 also work on the Raspi Zero 2 (and 2w).
The Zero 2 was my actual target because it is a very lean board and available worldwide for less than 20 USD (in production at least until 2030); unexpectedly, the migration was quite an effort though, even if the hardware architecture is essentially the same as the 3b; the system was able to boot and recognize keyboard and mouse, but there were actually several separate problems to be solved, each masking the other.
I've also learned that different versions of Lenovo keyboards surprisingly come with different product and vendor IDs (even though it's the same protocol), and I've now included all the ones I've found. So I hope that the trackpoint issue reported by Ulrich Hoffmann is solved as well.
See here for more information and a ready image: https://github.com/rochus-keller/OberonSystem3Native/releases/tag/2026-04-28
Best regards
R.K.