<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>That's cool. So what I was thinking of doing is to read the
      address contents of my REAL variable into an INTEGER then use
      SYSTEM.BIT() to report out the sign, the exponent and the
      fraction.  Reading Reals.IntL gave that idea.</p>
    <p><br>
    </p>
    <blockquote>
      <p>(** Convert LONGREAL to hexadecimal. h and l are the high and
        low parts. *)<br>
        PROCEDURE IntL* (x: LONGREAL; VAR h, l: LONGINT);<br>
        BEGIN SYSTEM.GET(SYSTEM.ADR(x) + H, h); SYSTEM.GET(SYSTEM.ADR(x)
        + L, l)<br>
        END IntL;</p>
    </blockquote>
    <p>In the Native Oberon case (Oberon-2) H and L are initialized
      based on system expectation (my interpretation). To better
      understand the SYSTEM module and how it is expected to work I was
      wondering if this made sense in Oberon-7?</p>
    <blockquote>PROCEDURE DisplayIeee754(x : REAL);<br>
        VAR raw : INTEGER;<br>
      BEGIN<br>
        SYSTEM.GET(SYSTEM.ADR(r), raw);<br>
      <br>
        IF SYSTEM.BIT(raw, 31) THEN<br>
          Out.String("sign is -, "); <br>
        ELSE<br>
          Out.String("sign is +, "<br>
        END;<br>
        Out.String(" expo (binary): "); <br>
        FOR i := 31 TO 23 BY -1 DO<br>
          IF SYSTEM.BIT(raw, i) THEN<br>
            Out.Char("1"); <br>
          ELSE<br>
            Out.Char("0"); <br>
          END;<br>
        END;<br>
        Out.String(" frac (binary): "); <br>
        FOR i := 23 TO 0 BY -1 DO<br>
          IF SYSTEM.BIT(raw, i) THEN<br>
            Out.Char("1"); <br>
          ELSE<br>
            Out.Char("0"); <br>
          END;<br>
        END;<br>
        Out.Ln;<br>
      END DisplayIeee754;<br>
    </blockquote>
    <p>Is my understanding correct? If so then I have some compiler
      debugging issues to sort out and that's OK. It's helping me better
      understand language and approach.</p>
    <p>Thanks for the help!<br>
    </p>
    <p>Robert<br>
    </p>
    <div class="moz-cite-prefix">On 6/4/21 3:45 PM, Joerg wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:3837EB67-6EB7-44DF-B799-305FC0AE9B3B@iaeth.ch">
      <pre class="moz-quote-pre" wrap="">Robert

You‘re absolutely right:
SYSTEM.BIT(a, 0) checks the LSB of the word at address a.

I guess for Reals.IntL you don‘t need SYSTEM.BIT.

br
Jörg

</pre>
      <blockquote type="cite">
        <pre class="moz-quote-pre" wrap="">Am 04.06.2021 um 23:55 schrieb R. S. Doiel <a class="moz-txt-link-rfc2396E" href="mailto:rsdoiel@gmail.com"><rsdoiel@gmail.com></a>:


Hello everyone,

This is probably a bit of a novice question and I apologize but
it has me puzzled.  In the Oberon-7 language report's
SYSTEM.BIT() is described as using "n" to address a specific bit.
On first reading I assumed "n" zero would be the LSB and "n"
thirty one would be MSB where the compiler deals with the local
implementation of bit ordering. Is that the correct reading
of the report?

I was planning on implementing a procedure like Native Oberon's
Reals.IntL() but then started having doubts about my reading of the
Oberon-7 report. Have I made too simple a set of assumptions about
how I should expect SYSTEM.BIT() to work under Oberon-7
implementations?

All the best,

Robert Doiel


--
<a class="moz-txt-link-abbreviated" href="mailto:Oberon@lists.inf.ethz.ch">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems
<a class="moz-txt-link-freetext" href="https://lists.inf.ethz.ch/mailman/listinfo/oberon">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a>
</pre>
      </blockquote>
      <pre class="moz-quote-pre" wrap="">--
<a class="moz-txt-link-abbreviated" href="mailto:Oberon@lists.inf.ethz.ch">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems
<a class="moz-txt-link-freetext" href="https://lists.inf.ethz.ch/mailman/listinfo/oberon">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a>
</pre>
    </blockquote>
  </body>
</html>