<div dir="ltr">Hallo,<div><br></div><div>Stock Debian on a stock Dell E6430.</div><div><br></div><div><div>jan@janDell:~$ uname -a</div><div>Linux janDell 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 GNU/Linux</div><div>jan@janDell:~$ </div></div><div><br></div><div>Peter, I agree with your statement. But I do get the right results. </div><div>But I get problems when compiling and testing.</div><div><br></div><div>It is Possible that my problems are caused by the trap I set, I do not know. </div><div>It manifests itself by corrupting the display windows. Or likely the underlying Texts since also the </div><div>Oberon 'middleclick for command' does not function right anymore after the corruption.</div><div><br></div><div>Here is the trap Procedure: </div><div>--------------------------------------------</div><div><div>(* Trap generator</div><div>*)</div><div>PROCEDURE Trap ();</div><div>   VAR</div><div>      m : INTEGER;</div><div>BEGIN</div><div>   m := 0;</div><div>   m := 3 DIV m;</div><div>END Trap;</div></div><div>-----------------------------------</div><div><br></div><div>And here is the resulting trap after I call the trap routine somewhere:</div><div><br></div><div>--------------------------------</div><div><div>TRAP 0  HALT statement (Linux X86 2015-07-18)</div><div>ImportGraph.Trap  PC = 244</div><div><span class="" style="white-space:pre">        </span>m = 0</div><div>ImportGraph.ExtractSub  PC = 2472</div><div><span class="" style="white-space:pre">     </span>ds =  00000000H</div><div><span class="" style="white-space:pre">   </span>dst =  00000000H</div><div><span class="" style="white-space:pre">  </span>i = -1</div><div><span class="" style="white-space:pre">     </span>j = 10</div><div><span class="" style="white-space:pre">     </span>k = 0</div><div><span class="" style="white-space:pre">      </span>len = 15</div><div><span class="" style="white-space:pre">   </span>m = 0</div><div><span class="" style="white-space:pre">      </span>modf = ".Mod"</div><div><span class="" style="white-space:pre">    </span>name = "ImportGraph.Mod"</div><div><span class="" style="white-space:pre"> </span>subs = ""</div><div><span class="" style="white-space:pre">        </span>ts = ""</div><div>ImportGraph.Compile  PC = 5826</div><div><span class="" style="white-space:pre">    </span>S =  00000024H</div><div><span class="" style="white-space:pre">    </span>T =  00000000H</div><div><span class="" style="white-space:pre">    </span>beg = 0</div><div><span class="" style="white-space:pre">    </span>dotfile =  00000000H</div><div><span class="" style="white-space:pre">      </span>dottext =  00000000H</div><div><span class="" style="white-space:pre">      </span>end = 0</div><div><span class="" style="white-space:pre">    </span>m =  00000000H</div><div><span class="" style="white-space:pre">    </span>name = "ImportGraph.Mod"</div><div><span class="" style="white-space:pre"> </span>reduced = TRUE</div><div><span class="" style="white-space:pre">     </span>time = 0</div><div><span class="" style="white-space:pre">   </span>tmp =  00000000H</div><div><span class="" style="white-space:pre">  </span>v =  00000000H</div><div>Oberon.Call  PC = 4860</div></div><div>-----------------------------------------------</div><div><br></div><div>note these lines:</div><div><br></div><div><div>ImportGraph.Compile  PC = 5826</div><div><span class="" style="white-space:pre"> </span>S =  00000024H</div><div><span class="" style="white-space:pre">    </span>T =  00000000H</div></div><div><br></div><div>I know for sure that S and T are valid pointers: they are the Texts.Text and the Texts.Scanner used for </div><div>scanning the command line. And that works I do get the name of the file to compile into a graph</div><div>"ImportGraph.Mod"<br></div><div><br></div><div>But in the section with the Oberon.Call procedure the pointers display more or less normally.</div><div>Could you maybe put this trap routine somewhere in a test program and see what values you get for the pointers,</div><div>If they are valid values or not?</div><div><br></div><div>--------------------------------</div><div><div>Oberon.Call  PC = 4860</div><div><span class="" style="white-space:pre">  </span>Mod =  09607020H</div><div><span class="" style="white-space:pre">  </span>P = ImportGraph.Compile  PC = 5594</div><div><span class="" style="white-space:pre">        </span>i = 12</div><div><span class="" style="white-space:pre">     </span>j = 19</div><div><span class="" style="white-space:pre">     </span>name = "Compile"</div><div><span class="" style="white-space:pre"> </span>new = FALSE</div><div><span class="" style="white-space:pre">        </span>par =  09606EC0H</div><div><span class="" style="white-space:pre">  </span>res = 1</div><div><br></div><div>TextFrames.CallCmd  PC = 11642</div><div><span class="" style="white-space:pre">     </span>F =  0966DD20H</div><div><span class="" style="white-space:pre">    </span>cmd = "ImportGraph.Compile"</div><div><span class="" style="white-space:pre">      </span>new = FALSE</div><div><span class="" style="white-space:pre">        </span>par =  09606EC0H</div><div><span class="" style="white-space:pre">  </span>pos = 19238</div><div><span class="" style="white-space:pre">        </span>res = 1</div><div><br></div><div>TextFrames.Call  PC = 12531</div><div><span class="" style="white-space:pre">        </span>F =  0966DD20H</div><div><span class="" style="white-space:pre">    </span>S =  00000048H</div><div><span class="" style="white-space:pre">    </span>h = 0</div><div><span class="" style="white-space:pre">      </span>hint = ""</div><div><span class="" style="white-space:pre">        </span>i = 0</div><div><span class="" style="white-space:pre">      </span>new = FALSE</div><div><span class="" style="white-space:pre">        </span>pos = 19219</div><div><br></div><div>TextFrames.Edit  PC = 19635</div><div><span class="" style="white-space:pre">    </span>F =  0966DD20H</div><div><span class="" style="white-space:pre">    </span>Keys = {1}</div><div><span class="" style="white-space:pre"> </span>M =  00000060H</div><div><span class="" style="white-space:pre">    </span>R =  0000004CH</div><div><span class="" style="white-space:pre">    </span>X = 69</div><div><span class="" style="white-space:pre">     </span>Y = 629</div><div><span class="" style="white-space:pre">    </span>beg = 0</div><div><span class="" style="white-space:pre">    </span>buf =  00000000H</div><div><span class="" style="white-space:pre">  </span>ch =  00000000X</div><div><span class="" style="white-space:pre">   </span>end = 0</div><div><span class="" style="white-space:pre">    </span>keysum = {1}</div><div><span class="" style="white-space:pre">       </span>pos = 19219</div><div><span class="" style="white-space:pre">        </span>text =  00000000H</div><div><span class="" style="white-space:pre"> </span>time = 0</div><div><br></div><div>TextFrames.Handle  PC = 20720</div><div><span class="" style="white-space:pre">     </span>F =  0966DD20H</div><div><span class="" style="white-space:pre">    </span>F1 =  00000000H</div><div><span class="" style="white-space:pre">   </span>M =  00000030H</div><div><br></div><div>MenuViewers.Handle  PC = 4365</div><div><span class="" style="white-space:pre">      </span>M =  00000028H</div><div><span class="" style="white-space:pre">    </span>Main =  0966DD20H</div><div><span class="" style="white-space:pre"> </span>Menu =  095FA4E0H</div><div><span class="" style="white-space:pre"> </span>V =  0966DDC0H</div><div><span class="" style="white-space:pre">    </span>V1 =  00000000H</div></div><div><br></div><div><div>Oberon.Loop  PC = 8557</div><div><span class="" style="white-space:pre">     </span>M =  00000010H</div><div><span class="" style="white-space:pre">    </span>N =  0000000CH</div><div><span class="" style="white-space:pre">    </span>V =  0966DDC0H</div><div><span class="" style="white-space:pre">    </span>X = 69</div><div><span class="" style="white-space:pre">     </span>Y = 629</div><div><span class="" style="white-space:pre">    </span>ch =  0000007FX</div><div><span class="" style="white-space:pre">   </span>keys = {1}</div><div><span class="" style="white-space:pre"> </span>oldshift = {}</div><div><span class="" style="white-space:pre">      </span>shift = {}</div><div><br></div><div>System.Init  PC = 18847</div><div><span class="" style="white-space:pre"> </span>F =  09630A60H</div><div><span class="" style="white-space:pre">    </span>S =  0000003CH</div><div><span class="" style="white-space:pre">    </span>T =  096308C0H</div><div><span class="" style="white-space:pre">    </span>Wt =  00000048H</div><div><span class="" style="white-space:pre">   </span>f =  00000000H</div><div><span class="" style="white-space:pre">    </span>ok = FALSE</div></div><div><br></div><div>------------------------------------------</div><div>At the same  time I do not know what your memory map looks like, so I may be up the wrong path here.</div><div><br></div><div>But it is true that software that does run here does not run on your machine and that I do get strange corruption of my text buffer.</div><div><br></div><div>cheers,</div><div><br></div><div>j.</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 13, 2015 at 8:35 PM, Peter Matthias <span dir="ltr"><<a href="mailto:PeterMatthias@web.de" target="_blank">PeterMatthias@web.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Jan,<br>
<br>
which exact system are you using?<br>
<br>
As long as a direct call of this kind:<span class=""><br>
<br>
mask:="*.Mod"<br>
name:="ABCD.Mod"<br>
name:="123";<br>
IF Match(mask, name) THEN ...<br>
<br></span>
leads to wrong results, the matching problem is clearly caused by the algorithm. I don't have other systems, but I am sure, other systems will give same wrong result. The algorithm worked at conditions which can not be taken as guaranteed.<br>
<br>
Regards,<br>
        Peter<span class=""><br>
<br>
Am 12.10.2015 um 14:08 schrieb Jan de Kruyf:<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
Hallo,<br>
further to the  report about my tests:<br>
<br>
Unfortunately I have to report that also on my system strange things happen.<br>
While doing some edit-compile-trap cycles to debug the dotty diagram<br>
software<br>
I notice strange things happening in my Edit viewer. Text goes missing<br>
at random and<br>
Oberon.Par.text and Oberon.Par.pos stop working as advertised.<br>
Also copying from the Oberon.Log misbehaved once.<br>
<br>
While I do this I keep a fresh copy open in Emacs that I update as and<br>
when required.<br>
So fortunately I can always reload the module text, and my disk file<br>
does not get corrupted.<br>
<br>
However, I suggest that we have a memory leak somewhere, in light of the<br>
various unexplained<br>
happenings.<br>
<br>
Cheers,<br>
<br>
j.<br>
<br>
<br>
<br>
On Sat, Oct 10, 2015 at 4:32 PM, Jan de Kruyf <<a href="mailto:jan.de.kruyf@gmail.com" target="_blank">jan.de.kruyf@gmail.com</a><br></span><div><div class="h5">
<mailto:<a href="mailto:jan.de.kruyf@gmail.com" target="_blank">jan.de.kruyf@gmail.com</a>>> wrote:<br>
<br>
    PeterE,<br>
<br>
    Here is the results of my tests.<br>
    Setup:<br>
    I copied PeterM's mod to the Enumerate procedure so I now also have<br>
    sub directory listings, like you.<br>
<br>
    It is very nifty in fact, Thank you Peter!.<br>
<br>
    I left my Match procedure in place for the time being. Although PM's<br>
    works, that is no issue.<br>
<br>
    So this is what I put in the beginning of my Match procedure:<br>
    -------------------------<br>
    PROCEDURE Match(VAR mask, name: ARRAY OF CHAR): BOOLEAN;<br>
    VAR m,n, om, on: LONGINT;<br>
    f: BOOLEAN;<br>
    BEGIN<br>
        (* test *)<br>
        n := 0; m := 0;<br>
        WHILE (name[n] # 0X) DO INC(n) END;<br>
        name [n + 1] := 055X;<br>
        WHILE mask [m] # 0X DO INC (m) END;<br>
        mask [m + 1] := 055X;<br>
        Kernel.WriteString (name); (*======================*)<br>
        Kernel.WriteLn;<br>
        Kernel.WriteMemory (SYSTEM.ADR (name), 32);<br>
        Kernel.WriteLn;<br>
        (* end test *)<br>
    m := 0; n := 0; om := -1;<br>
    ..<br>
    ..<br>
    ----------------------------------------------------<br>
    So when I open Kernel.Log either on the Linux side or in Oberon I<br>
    see the name string and what comes after it.<br>
<br>
    Without the 2 WHILE loops I had multiple 0X's after the name string<br>
    With those loops there is 0X, 055X as programmed for.<br>
<br>
    In both instances I get a perfectly normal directory or subdirectory<br>
    listing.<br>
    QED.<br>
<br>
    So at this moment with the information I have I will say that there<br>
    is a serious issue with the OLR setup.<br>
<br>
    You dont just get rubbish out of a piece of code that has worked for<br>
    years and can be proven to be correct, no doubt.<br>
<br>
    The next step would be that Peter Matthias gives us some information<br>
    on how the Linux kernel interface works in OLR.<br>
    I seem to have issues recognizing the assembly code (that says a lot<br>
    about me of course :)<br>
    But as a general rule I do know my way around in the kernel and how<br>
    to talk to it.<br>
<br>
    And could you send me perhaps the outcome of this incantation in a<br>
    terminal on your machine:<br>
<br>
    uname -a<br>
<br>
    so we compare.<br>
<br>
    cheers,<br>
<br>
    j.<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
    On Thu, Oct 8, 2015 at 10:37 PM, Jan de Kruyf<br></div></div><span class="">
    <<a href="mailto:jan.de.kruyf@gmail.com" target="_blank">jan.de.kruyf@gmail.com</a> <mailto:<a href="mailto:jan.de.kruyf@gmail.com" target="_blank">jan.de.kruyf@gmail.com</a>>> wrote:<br>
<br>
        I dont see it, but I will argue it tomorrow. This is getting<br>
        like Emacs lisp programming :)<br>
<br>
        And I will need to get the Kernel log going here to print a few<br>
        things.<br>
        Or maybe just set a trap, aha, that might work.<br>
<br>
        Cheers,<br>
<br>
        j.<br>
<br>
<br>
        On Thu, Oct 8, 2015 at 9:59 PM, Peter Matthias<br></span><div><div class="h5">
        <<a href="mailto:PeterMatthias@web.de" target="_blank">PeterMatthias@web.de</a> <mailto:<a href="mailto:PeterMatthias@web.de" target="_blank">PeterMatthias@web.de</a>>> wrote:<br>
<br>
            Hello Jan,<br>
<br>
            your Match procedure needs the filename to end with 0X, 0X<br>
            (two times 0X). If the filesystem does that, it works. If<br>
            not, not.<br>
<br>
            Adding<br>
            n:=0;<br>
            WHILE name[n]#0 DO INC(n) END;<br>
            name[n+1]:=0X;<br>
            at the beginning of your Match procedure obviously fixes the<br>
            problem.<br>
<br>
            You can also call Match directly to see the bug:<br>
            mask:="*.Mod"<br>
            name:="ABCD.Mod"<br>
            name:="123";<br>
            IF Match(mask, name) THEN ...<br>
<br>
            Regards,<br>
                     Peter<br>
<br>
<br>
            Am 07.10.2015 um 17:51 schrieb Jan de Kruyf:<br>
<br>
                Hallo Peter,<br>
<br>
                Could you send me your test cases please.<br>
                I would like to duplicate your findings and see where I<br>
                went wrong.<br>
<br>
                Cheers,<br>
<br>
                j.<br>
<br>
<br>
                On Tue, Oct 6, 2015 at 10:21 PM, Peter Matthias<br>
                <<a href="mailto:PeterMatthias@web.de" target="_blank">PeterMatthias@web.de</a> <mailto:<a href="mailto:PeterMatthias@web.de" target="_blank">PeterMatthias@web.de</a>><br></div></div>
                <mailto:<a href="mailto:PeterMatthias@web.de" target="_blank">PeterMatthias@web.de</a><div><div class="h5"><br>
                <mailto:<a href="mailto:PeterMatthias@web.de" target="_blank">PeterMatthias@web.de</a>>>> wrote:<br>
<br>
                     Am 23.09.2015 um 17:26 schrieb Peter Easthope:<br>
<br>
                         Hello,<br>
<br>
                         In OLR, has anyone found a way to store user<br>
                data separately<br>
                         from OLR system data?  As a specific example,<br>
                OLR is installed<br>
                         in /home/peter/olr on the HDD.  User data is in<br>
                a SDHC card.<br>
                         The SDHC can be mounted at /home/peter/olr/SDHC.<br>
<br>
                         ls /home/peter/olr/SDHC/* shows the contents of<br>
                the SDHC.<br>
                         System.Directory ./SDHC/* ~ shows nothing.<br>
<br>
                         Does anyone have a clever solution?<br>
<br>
<br>
                     Hi Peter,<br>
<br>
                     I updated OLR.FileDir.Mod . File is here:<br>
                <a href="http://oberon.wdfiles.com/local--files/start/OLR.FileDir.Mod" rel="noreferrer" target="_blank">oberon.wdfiles.com/local--files/start/OLR.FileDir.Mod</a><br>
                <<a href="http://oberon.wdfiles.com/local--files/start/OLR.FileDir.Mod" rel="noreferrer" target="_blank">http://oberon.wdfiles.com/local--files/start/OLR.FileDir.Mod</a>><br>
<br>
                <<a href="http://oberon.wdfiles.com/local--files/start/OLR.FileDir.Mod" rel="noreferrer" target="_blank">http://oberon.wdfiles.com/local--files/start/OLR.FileDir.Mod</a>><br>
                     (and at <a href="http://oberon.wikidot.com/start" rel="noreferrer" target="_blank">http://oberon.wikidot.com/start</a> in "Get<br>
                OLR" section)<br>
                     download, store in olr directory and compile the<br>
                module.<br>
<br>
                     I did not update to Jan's matching procedure<br>
                because I also get<br>
                     wrong matches there.<br>
<br>
                     Regards,<br>
                              Peter<br>
<br>
                     --<br>
                <a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a><br>
                <mailto:<a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a>><br></div></div>
                <mailto:<a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a><span class=""><br>
                <mailto:<a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a>>> mailing<br>
                     list for ETH Oberon and related systems<br>
                <a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
<br>
<br>
<br>
<br>
                --<br>
                <a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a><br>
                <mailto:<a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a>> mailing list for ETH<br>
                Oberon and related systems<br>
                <a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
<br>
            --<br>
            <a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a> <mailto:<a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a>><br>
            mailing list for ETH Oberon and related systems<br>
            <a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
<br>
<br>
<br>
<br>
<br>
<br>
--<br>
<a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">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" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
<br>
</span></blockquote><div class="HOEnZb"><div class="h5">
--<br>
<a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">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" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
</div></div></blockquote></div><br></div>