@trcwm
I'm doing some bare metal AVR (8 bit MCU) in #oberon (using an Oberon to C transpiler and hand coded register addresses from spec docs) as well as some (BSD/Linux/MacOSX) server side companion (over serial USB) to the AVR.
I would normally do this in #C99 (or believe it or not #Ada) but Oberon is forcing me to think about what I want to do vs figuring out compiler/language tricks to optimize what I want to do.
For example -- I have a simple comms protocol full of little endian values.
In C (or even in Ada) I would be tempted to slam a packed little endian oriented data structure over top of a transferred binary blob and call that a protocol vs having to explicitly byte by byte walk the data... I C I can do this easily. In Ada I can tell the compiler the endianness I want and it magically does the translation.
Oberon simply doesn't have the facility for such optimization tricks.
And you know? I feel more like I'm writing elegant code than "hacks" that need copious documentation.