[Oberon] B2 Framework

Skulski, Wojciech skulski at pas.rochester.edu
Mon Oct 24 19:49:50 CEST 2022


  I changed the topic. Excuse me for this. My code is posted on RiskFive.com under B2 section, linked in the left navigation pane. B2 was my second attempt at OOP, and the first one under Oberon System. The name B2 refers to the second attempt.

B2 is a framework for data processing and display under Linz V4. I wrote it in 1996-1997 and released to PD at Version 0.85. I have not worked on it since then. It still works under Linz V4 and Windows 10. The framework is extensively documented. The documentation may be a bit hard to follow because it is  making frequent references to Nuclear Physics. Documentation is available under Linz V4 if you unpack the framework. Most modules provide extensive discussion after the module end. This is my usual documentation style that is driving most Oberon folks pretty crazy. 

The framework makes use of type bound methods in Oberon-2. Porting it to Oberon-07 would break the design, which followed very closely the book by Mossenboeck.   The heritage is discussed in the modules themselves. In particular, I adopted Mossenboeck's Object ideas and I implemented persistent Objects in B2Base in order to avoid System 3 which I found overwhelming. B2 was intended to provide an adequate Object environment under V4, avoiding using System 3.

I now want to port this framework to Andreas' Extended Oberon and eventually run it on the FPGA board. Staging of the planned work is as follows: 

1) Revise and complete B2 under Linz V4. I already completed the review of the code and I assembled numerous todo's. E.g., I want to flatten the class hierarchy, eliminate superfluous methods, and employ Texts and Files more directly in the code. I also hope to reduce the size by several hundred lines. My gut feeling is that the base code will shrink by 50%, while the graphics will grow somewhat, because it is hardly satisfactory. On this occasion I will remove the multiple returns and loops as well. More ideas will come while reworking the code. I want to bring B2 to version 1.0 under Linz V4.

2) Port to Andreas' EOS under Michael's emulator. I need color, so I will prefer Michael's over PDW's. Ideally B2 v 1.0 will be fully compatible between Linz V4 and AOS. This will be interesting because INTEGER has changed. Fortunately, both Oberons agree on LONGINT.

3) Develop a mockup data source under both the Emulator and Linz V4, to preserve compatibility. Till now I have been working off the files with experimental data. I will need ADC data to move forward, so I will need to develop this. 

4) Implement the whole show with the FPGA board. This will be huge because I will need the actual firmware. Pure B2 w/o the ADC will be the easy part. Adding the ADC needs some careful planning. 

So this is more or less the plan. 

The ongoing discussion has brought up a question "what is the collaboration mode between the language and System developers and the System users". The drawback of the present situation was pointed out by Andreas. Being a user, I would welcome closer collaboration. Adding a "retro" flag to the compiler would help. Factoring out the low level interfaces to SysDef.Mod, MemDef.Mod, BoardDef.Mod, and a couple other similar files is a must if one wants to use boards with varying amount of RAM and peripherals, which can be easily added to the board (e.g., PMOD modules by Digilent). The present hardwired situation is only providing for a single kind of board. A well designed System will support several boards. All these are topics for discussions and agreements between the developers and the users, who themselves are application developers. (Yes, I remember the Hardware Enumerator. It was a step in the right direction.)

Thank you,

From: Oberon [oberon-bounces at lists.inf.ethz.ch] on behalf of Diego Sardina [dsar at eml.cc]
Sent: Monday, October 24, 2022 12:57 PM
To: oberon at lists.inf.ethz.ch
Subject: [EXT] Re: [Oberon] Multiple RETURN in a procedure

On Sun, Oct 23, 2022, at 6:04 AM, Skulski, Wojciech wrote:
> But I am now facing three thousand lines of my Oberon-2 library.

Would you share the code you would like to convert?

  Diego Sardina
Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems

More information about the Oberon mailing list