<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
{mso-style-name:msonormal;
mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
span.E-MailFormatvorlage18
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=DE-CH link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'>One of the new features in Oberon-SA was the base type RIDER, a special case of POINTER TO ARRAY<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'>RIDERs are useful, if the CPU offers special pre/post increment/decrement.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'>In e.g. Oberon-07 you write something like<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'>VAR s, x, y: REAL; ra, rb, limit: POINTER TO REAL;</span><span lang=EN-US><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'>BEGIN<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'> s := 0.0; ra := SYSTEM.ADR(a); rb:= SYSTEM.ADR(b); limit := ra + n*4;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'> WHILE ra < limit DO<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'> SYSTEM.GET(ra, x); SYSTEM.GET(rb, y);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'> s := x * y + s; INC(ra, 4) INC(rb, 4)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'> END<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'>With RIDERS it looks like this:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'>VAR s: REAL; ra, rb, limit: RIDER REAL;</span><span lang=EN-US><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'>BEGIN<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'> s := 0.0; SET(ra, a, 0); SET(rb, b, 0); SET(limit, a, n);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'> WHILE ra < limit DO s := ra^ * rb^ + s END;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.5pt;font-family:"Arial",sans-serif'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>This is not existing in Oberon-07 as the RISC5 CPU does not offer the autoincrement feature.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>br<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>Jörg<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span style='font-size:12.0pt;color:black'>Von: </span></b><span style='font-size:12.0pt;color:black'>Oberon <oberon-bounces@lists.inf.ethz.ch> im Auftrag von Nemo Nusquam <cym224@gmail.com><br><b>Antworten an: </b>ETH Oberon and related systems <oberon@lists.inf.ethz.ch><br><b>Datum: </b>Dienstag, 28. April 2020 um 17:13<br><b>An: </b><oberon@lists.inf.ethz.ch><br><b>Betreff: </b>Re: [Oberon] Negative integer literals in Oberon<o:p></o:p></span></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><p class=MsoNormal>On 04/28/20 10:03, Skulski, Wojciech wrote (in part):<br>> Not quite so if you are serving some hardware.<br><br>Speaking of h/w and f/w, was the model helicopter flight control ever ported to Oberon-07? <br><br>In Niklaus Wirth, "A Computer System for Model Helicopter Flight Control", Technical Memo Nr. 6: The Oberon Compiler for the <br>Strong-ARM Processor, 1999, we find the following in the conclusion.<o:p></o:p></p><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal>An important advantage of designing one's own compiler is that specific, perhaps machine−dependent facilities can easily be incorporated. Such facilities are required if, for example, specific resources must be accessible, such as processor status register, memory management registers, or device interfaces. This is typically the case for embedded applications, which also require a predictable performance for real−time sensing and control. <o:p></o:p></p></blockquote><p class=MsoNormal>N.<br><br><br>-- Oberon@lists.inf.ethz.ch mailing list for ETH Oberon and related systems https://lists.inf.ethz.ch/mailman/listinfo/oberon <o:p></o:p></p></div></body></html>