<div dir="auto">Standard procedures in Oberon live in the outmost (global) scope on purpose and the reason is extensibility. It makes it possible to add new procedures later without invalidating any existing programs. This is so in all Pascal style languages and their successors. It is very cheap to implement in the compiler and fits well with the nesting of scopes. Overriding such procedures locally is thereby possible but used mainly when a new procedure happens to be added in a new language version or dialect and an object with the same name already exists in a program. The locally defined name then shadows the same name in the global scope and the program compiles and runs as before.<div dir="auto"><br></div><div dir="auto">I would not recommend to remove this feature.</div><div dir="auto"><br></div><div dir="auto">- Josef</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr"> <<a href="mailto:oberon-request@lists.inf.ethz.ch">oberon-request@lists.inf.ethz.ch</a>> schrieb am Sa., 15. Mai 2021, 12:00:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Send Oberon mailing list submissions to<br>
        <a href="mailto:oberon@lists.inf.ethz.ch" target="_blank" rel="noreferrer">oberon@lists.inf.ethz.ch</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
or, via email, send a message with subject or body 'help' to<br>
        <a href="mailto:oberon-request@lists.inf.ethz.ch" target="_blank" rel="noreferrer">oberon-request@lists.inf.ethz.ch</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:oberon-owner@lists.inf.ethz.ch" target="_blank" rel="noreferrer">oberon-owner@lists.inf.ethz.ch</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of Oberon digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
   1. PO 2013 allows one to "override" predefined procedures and<br>
      functions (Andreas Pirklbauer)<br>
   2. Re: [EXT] PO 2013 allows one to "override" predefined<br>
      procedures and functions (Skulski, Wojciech)<br>
   3. PO 2013 allows one to "override" predefined procedures and<br>
      functions (Andreas Pirklbauer)<br>
   4. Re:  PO 2013 allows one to "override" predefined procedures<br>
      and functions (Diego Sardina)<br>
   5. Re: PO 2013 allows one to "override" predefined procedures<br>
      and functions (J?rg)<br>
   6. RiskOne ordered (Skulski, Wojciech)<br>
   7. Re: RiskOne ordered (<a href="mailto:peter@easthope.ca" target="_blank" rel="noreferrer">peter@easthope.ca</a>)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Fri, 14 May 2021 15:29:21 +0200<br>
From: Andreas Pirklbauer <<a href="mailto:andreas_pirklbauer@yahoo.com" target="_blank" rel="noreferrer">andreas_pirklbauer@yahoo.com</a>><br>
To: Oberon List <<a href="mailto:oberon@lists.inf.ethz.ch" target="_blank" rel="noreferrer">oberon@lists.inf.ethz.ch</a>><br>
Subject: [Oberon] PO 2013 allows one to "override" predefined<br>
        procedures and functions<br>
Message-ID: <<a href="mailto:7012460B-DB79-4945-BA61-8FD9CF5603E3@yahoo.com" target="_blank" rel="noreferrer">7012460B-DB79-4945-BA61-8FD9CF5603E3@yahoo.com</a>><br>
Content-Type: text/plain; charset=utf-8<br>
<br>
Has anyone noticed that the PO 2013 allows the programmer<br>
to ?overrride? predefined procedures and functions, e.g.,<br>
<br>
  MODULE M;<br>
    VAR<br>
       INC: CHAR;<br>
       i: INTEGER;<br>
  BEGIN<br>
    INC := "a?;<br>
    INC(i)           (*not a procedure*)<br>
  END M.<br>
<br>
This should not be allowed..<br>
<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Fri, 14 May 2021 14:00:35 +0000<br>
From: "Skulski, Wojciech" <<a href="mailto:skulski@pas.rochester.edu" target="_blank" rel="noreferrer">skulski@pas.rochester.edu</a>><br>
To: ETH Oberon and related systems <<a href="mailto:oberon@lists.inf.ethz.ch" target="_blank" rel="noreferrer">oberon@lists.inf.ethz.ch</a>><br>
Subject: Re: [Oberon] [EXT] PO 2013 allows one to "override"<br>
        predefined procedures and functions<br>
Message-ID:<br>
        <<a href="mailto:SN6PR07MB41575CDB194A6063310CA849FF509@SN6PR07MB4157.namprd07.prod.outlook.com" target="_blank" rel="noreferrer">SN6PR07MB41575CDB194A6063310CA849FF509@SN6PR07MB4157.namprd07.prod.outlook.com</a>><br>
<br>
Content-Type: text/plain; charset="Windows-1252"<br>
<br>
Andreas:<br>
<br>
what a great feature. It could be really useful in the hands of a creative programmer. I am wondering, what would be the run time behavior of this feature. A crash? <br>
<br>
How did you find this feature? Would be good to get rid of it.<br>
<br>
Wojtek<br>
________________________________________<br>
From: Oberon [<a href="mailto:oberon-bounces@lists.inf.ethz.ch" target="_blank" rel="noreferrer">oberon-bounces@lists.inf.ethz.ch</a>] on behalf of Andreas Pirklbauer [<a href="mailto:andreas_pirklbauer@yahoo.com" target="_blank" rel="noreferrer">andreas_pirklbauer@yahoo.com</a>]<br>
Sent: Friday, May 14, 2021 9:29 AM<br>
To: Oberon List<br>
Subject: [EXT] [Oberon] PO 2013 allows one to "override" predefined procedures and functions<br>
<br>
Has anyone noticed that the PO 2013 allows the programmer<br>
to ?overrride? predefined procedures and functions, e.g.,<br>
<br>
  MODULE M;<br>
    VAR<br>
       INC: CHAR;<br>
       i: INTEGER;<br>
  BEGIN<br>
    INC := "a?;<br>
    INC(i)           (*not a procedure*)<br>
  END M.<br>
<br>
This should not be allowed..<br>
<br>
<br>
--<br>
<a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank" rel="noreferrer">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br>
<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.inf.ethz.ch_mailman_listinfo_oberon&d=DwIGaQ&c=kbmfwr1Yojg42sGEpaQh5ofMHBeTl9EI2eaqQZhHbOU&r=uUiA_zLpwaGJIlq-_BM9w1wVOuyqPwHi3XzJRa-ybV0&m=aquER2B_iMTCPcBNn8atuDabRu9Ug4b-gwKWYBDLcuY&s=iCC8WHsYTs9T-Z3WIsqaiI6kRLCbx6Qv8lCYDfs_Ddk&e=" rel="noreferrer noreferrer" target="_blank">https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.inf.ethz.ch_mailman_listinfo_oberon&d=DwIGaQ&c=kbmfwr1Yojg42sGEpaQh5ofMHBeTl9EI2eaqQZhHbOU&r=uUiA_zLpwaGJIlq-_BM9w1wVOuyqPwHi3XzJRa-ybV0&m=aquER2B_iMTCPcBNn8atuDabRu9Ug4b-gwKWYBDLcuY&s=iCC8WHsYTs9T-Z3WIsqaiI6kRLCbx6Qv8lCYDfs_Ddk&e=</a><br>
<br>
<br>
------------------------------<br>
<br>
Message: 3<br>
Date: Fri, 14 May 2021 16:19:46 +0200<br>
From: Andreas Pirklbauer <<a href="mailto:andreas_pirklbauer@yahoo.com" target="_blank" rel="noreferrer">andreas_pirklbauer@yahoo.com</a>><br>
To: Oberon List <<a href="mailto:oberon@lists.inf.ethz.ch" target="_blank" rel="noreferrer">oberon@lists.inf.ethz.ch</a>><br>
Subject: [Oberon] PO 2013 allows one to "override" predefined<br>
        procedures and functions<br>
Message-ID: <<a href="mailto:B0FC842A-6CDA-40F8-A607-3A529EFFC203@yahoo.com" target="_blank" rel="noreferrer">B0FC842A-6CDA-40F8-A607-3A529EFFC203@yahoo.com</a>><br>
Content-Type: text/plain; charset=utf-8<br>
<br>
Wojtek,<br>
<br>
The run time behaviour of this ?feature? is to simply override the predefined identifier, which then is<br>
no longer available in the current scope. So no crash. One can even override things like INTEGER, etc.<br>
<br>
Actually, the compiler itself does some overriding in this way, namely with the three procedures<br>
ORG.ADC, ORG.SBC, ORB.UML. Inside these three procedures the corresponding predefined<br>
identifier (ADC, SBC or UML) is of course not available.<br>
<br>
To disallow this kind of ?overrriding? in the compiler, one could for example:<br>
<br>
1. Rename ORG.ADC, ORG.SBC, ORB.UML to ORG.Adc, ORG.Sbc, ORB.Uml<br>
<br>
2. Adapt ORP.StandFunc accordingly to use the new procedure names<br>
<br>
3. Adapt ORB.NewObj such that it now also checks the predefined identifiers as follows:<br>
<br>
    x := universe;<br>
    WHILE (x # NIL) & (<a href="http://x.name" rel="noreferrer noreferrer" target="_blank">x.name</a> # id) DO x := x.next END ;<br>
    IF x = NIL THEN (*...ok...*) ELSE ORS.Mark("predefined identifier?) END<br>
<br>
to arrive at something along the lines of:<br>
<br>
  PROCEDURE NewObj*(VAR obj: Object; id: ORS.Ident; class: INTEGER);  (*insert new Object with name id*)<br>
    VAR new, x: Object;<br>
  BEGIN x := universe.next;<br>
    WHILE (x # NIL) & (<a href="http://x.name" rel="noreferrer noreferrer" target="_blank">x.name</a> # id) DO x := x.next END ;<br>
    IF x = NIL THEN x := topScope;<br>
      WHILE (x.next # NIL) & (<a href="http://x.next.name" rel="noreferrer noreferrer" target="_blank">x.next.name</a> # id) DO x := x.next END ;<br>
      IF x.next = NIL THEN<br>
        NEW(new); <a href="http://new.name" rel="noreferrer noreferrer" target="_blank">new.name</a> := id; new.class := class; new.next := NIL; new.rdo := FALSE; new.dsc := NIL;<br>
        x.next := new; obj := new<br>
      ELSE obj := x.next; ORS.Mark("mult def")<br>
      END<br>
    ELSE ORS.Mark("predefined identifier")<br>
    END<br>
  END NewObj;<br>
<br>
PS: When doing this, the impact on the compiler?s performance is about 5-10%.<br>
<br>
-ap<br>
<br>
<br>
> Andreas:<br>
> <br>
> what a great feature. It could be really useful in the hands of a creative programmer. I am wondering, what would be the run time behavior of this feature. A crash? <br>
> <br>
> How did you find this feature? Would be good to get rid of it.<br>
> <br>
> Wojtek<br>
________________________________________<br>
From: Oberon [<br>
oberon-bounces at <a href="http://lists.inf.ethz.ch" rel="noreferrer noreferrer" target="_blank">lists.inf.ethz.ch</a>] on behalf of Andreas Pirklbauer [andreas_pirklbauer at <a href="http://yahoo.com" rel="noreferrer noreferrer" target="_blank">yahoo.com</a><br>
]<br>
Sent: Friday, May 14, 2021 9:29 AM<br>
To: Oberon List<br>
Subject: [EXT] [Oberon] PO 2013 allows one to "override" predefined procedures and functions<br>
<br>
Has anyone noticed that the PO 2013 allows the programmer<br>
to ?overrride? predefined procedures and functions, e.g.,<br>
<br>
  MODULE M;<br>
    VAR<br>
       INC: CHAR;<br>
       i: INTEGER;<br>
  BEGIN<br>
    INC := "a?;<br>
    INC(i)           (*not a procedure*)<br>
  END M.<br>
<br>
This should not be allowed..<br>
<br>
------------------------------<br>
<br>
Message: 4<br>
Date: Fri, 14 May 2021 16:14:16 +0200<br>
From: "Diego Sardina" <dsar@eml.cc><br>
To: <a href="mailto:oberon@lists.inf.ethz.ch" target="_blank" rel="noreferrer">oberon@lists.inf.ethz.ch</a><br>
Subject: Re: [Oberon]  PO 2013 allows one to "override" predefined<br>
        procedures and functions<br>
Message-ID: <<a href="mailto:abd70680-9ba8-4a38-9e4e-ba426b8757e3@www.fastmail.com" target="_blank" rel="noreferrer">abd70680-9ba8-4a38-9e4e-ba426b8757e3@www.fastmail.com</a>><br>
Content-Type: text/plain;charset=utf-8<br>
<br>
On Fri, May 14, 2021, at 3:29 PM, Andreas Pirklbauer wrote:<br>
> Has anyone noticed that the PO 2013 allows the programmer<br>
> to ?overrride? predefined procedures and functions, e.g.,<br>
> <br>
>   MODULE M;<br>
>     VAR<br>
>        INC: CHAR;<br>
>        i: INTEGER;<br>
>   BEGIN<br>
>     INC := "a?;<br>
>     INC(i)           (*not a procedure*)<br>
>   END M.<br>
> <br>
> This should not be allowed..<br>
> <br>
<br>
For what I remember in Oberon every predefined identifier can be overridden since always.<br>
<br>
This is the reason TRUE and FALSE were promoted to keyword in Oberon-07, to avoid CONST TRUE = FALSE.<br>
<br>
But I agree that this shouldn't be allowed (and that promotion to keyword is debatable).<br>
<br>
--<br>
Diego Sardina<br>
<br>
<br>
------------------------------<br>
<br>
Message: 5<br>
Date: Fri, 14 May 2021 16:25:11 +0200<br>
From: J?rg <<a href="mailto:joerg.straube@iaeth.ch" target="_blank" rel="noreferrer">joerg.straube@iaeth.ch</a>><br>
To: ETH Oberon and related systems <<a href="mailto:oberon@lists.inf.ethz.ch" target="_blank" rel="noreferrer">oberon@lists.inf.ethz.ch</a>><br>
Subject: Re: [Oberon] PO 2013 allows one to "override" predefined<br>
        procedures and functions<br>
Message-ID: <<a href="mailto:175B9254-7AF3-48FE-AE31-BB0C41459FB6@iaeth.ch" target="_blank" rel="noreferrer">175B9254-7AF3-48FE-AE31-BB0C41459FB6@iaeth.ch</a>><br>
Content-Type: text/plain; charset=utf-8<br>
<br>
<br>
<br>
Gruss, J?rg<br>
<br>
> Am 14.05.2021 um 16:23 schrieb Diego Sardina <dsar@eml.cc>:<br>
> <br>
> ?On Fri, May 14, 2021, at 3:29 PM, Andreas Pirklbauer wrote:<br>
>> Has anyone noticed that the PO 2013 allows the programmer<br>
>> to ?overrride? predefined procedures and functions, e.g.,<br>
>> <br>
>>  MODULE M;<br>
>>    VAR<br>
>>       INC: CHAR;<br>
>>       i: INTEGER;<br>
>>  BEGIN<br>
>>    INC := "a?;<br>
>>    INC(i)           (*not a procedure*)<br>
>>  END M.<br>
>> <br>
>> This should not be allowed..<br>
>> <br>
> <br>
> For what I remember in Oberon every predefined identifier can be overridden since always.<br>
> <br>
> This is the reason TRUE and FALSE were promoted to keyword in Oberon-07, to avoid CONST TRUE = FALSE.<br>
> <br>
> But I agree that this shouldn't be allowed (and that promotion to keyword is debatable).<br>
> <br>
> --<br>
> Diego Sardina<br>
> --<br>
> <a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank" rel="noreferrer">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br>
> <a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
<br>
<br>
------------------------------<br>
<br>
Message: 6<br>
Date: Fri, 14 May 2021 15:28:14 +0000<br>
From: "Skulski, Wojciech" <<a href="mailto:skulski@pas.rochester.edu" target="_blank" rel="noreferrer">skulski@pas.rochester.edu</a>><br>
To: ETH Oberon and related systems <<a href="mailto:oberon@lists.inf.ethz.ch" target="_blank" rel="noreferrer">oberon@lists.inf.ethz.ch</a>><br>
Subject: [Oberon] RiskOne ordered<br>
Message-ID:<br>
        <<a href="mailto:SN6PR07MB4157574B3A984FAADF19B383FF509@SN6PR07MB4157.namprd07.prod.outlook.com" target="_blank" rel="noreferrer">SN6PR07MB4157574B3A984FAADF19B383FF509@SN6PR07MB4157.namprd07.prod.outlook.com</a>><br>
<br>
Content-Type: text/plain; charset="us-ascii"<br>
<br>
All:<br>
<br>
  I ordered production of two prototype RiskOne motherboards. If anyone want to have those, it is the last minute to tell me so I can possibly add more boards to the order. You need to do it today. The cost will be $500 per board.<br>
<br>
The features: <br>
Spartan-6 LX25, <br>
4 MB of ZBT RAM, <br>
16 MB HyperRAM (so it is 20 MB total). I intend to use HyperRAM for video, but it can be used for anything else. <br>
HDMI connector to output video<br>
PS2 mouse and keyboard<br>
W5500 chip for Ethernet with the RJ-45 socket.<br>
Three serial ports. One of these can be optionally operated as "optical interface" at 50 MHz.<br>
Connector for the Nordic NRF24L01 radio, same as PO 2013.<br>
Connector for Wi-Fi Sparkfun WRL-13678.<br>
Two SD cards. One micro, one full. This is to adopt Chris file system HCFiler with one of these.<br>
Three PMOD connectors.<br>
One set of expansion connectors for the daughter card "shield".<br>
  -- I already designed the ADC shield, which is my primary interest.<br>
  -- The shield can be anything: ADC, DAC, industrial PID control, anything.<br>
<br>
I would have attached the full spec sheet, but this will hold off the posting for approval.<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 7<br>
Date: Fri, 14 May 2021 10:17:11 -0700<br>
From: <a href="mailto:peter@easthope.ca" target="_blank" rel="noreferrer">peter@easthope.ca</a><br>
To: <a href="mailto:oberon@lists.inf.ethz.ch" target="_blank" rel="noreferrer">oberon@lists.inf.ethz.ch</a><br>
Subject: Re: [Oberon] RiskOne ordered<br>
Message-ID: <E1lhbR1-0001Dh-8B@joule.invalid><br>
<br>
Hi Wojciech,<br>
<br>
> I ordered production of two prototype RiskOne motherboards. If <br>
> anyone want to have those, it is the last minute to tell me so I can <br>
> possibly add more boards to the order. You need to do it today. The <br>
> cost will be $500 per board.<br>
<br>
Good news.  I thought of asking about progress but better to refrain <br>
from bothering you.<br>
<br>
Please order one at my expense.  No rush to receive it.  As described <br>
earlier, it's an investment.  Can convert 500 US to Canadian dollars <br>
and mail a paper cheque to your campus address.  Is Interac used <br>
there?  Might be Canada only.  World Remit is international and I use <br>
it routinely.  If you prefer another means of payment, just let me <br>
know.  <br>
<br>
Thanks!                              ... P.<br>
<br>
-- <br>
tel: +1 604 670 0140            Bcc: peter at easthope. ca<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Subject: Digest Footer<br>
<br>
--<br>
<a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank" rel="noreferrer">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br>
<a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
<br>
<br>
------------------------------<br>
<br>
End of Oberon Digest, Vol 204, Issue 11<br>
***************************************<br>
</blockquote></div>