<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;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
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:12.0pt;
        font-family:"Times New Roman",serif;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Arial",sans-serif;
        color:windowtext;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
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=blue vlink=purple><div class=WordSection1><p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-language:EN-US'>Yes indeed, these are RISC instructions.<o:p></o:p></span></font></p><p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-language:EN-US'>The Oberon source of the bootloader (aka BIOS) is here:</span></font><span lang=EN-US><o:p></o:p></span></p><p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-language:EN-US'><a href="https://www.inf.ethz.ch/personal/wirth/ProjectOberon/Sources/BootLoad.Mod.txt">https://www.inf.ethz.ch/personal/wirth/ProjectOberon/Sources/BootLoad.Mod.txt</a><o:p></o:p></span></font></p><p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-language:EN-US'><o:p> </o:p></span></font></p><p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-language:EN-US'>This file contains different versions of the bootloader (disk and line, line-only…)<o:p></o:p></span></font></p><p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-language:EN-US'><o:p> </o:p></span></font></p><p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-language:EN-US'>br<o:p></o:p></span></font></p><p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-language:EN-US'>Jörg<o:p></o:p></span></font></p><p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US style='font-size:12.0pt;mso-fareast-language:EN-US'><o:p> </o:p></span></font></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><font size=2 face=Calibri><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri",sans-serif;font-weight:bold'>From:</span></font></b><font size=2 face=Calibri><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri",sans-serif'> Oberon [mailto:oberon-bounces@lists.inf.ethz.ch] <b><span style='font-weight:bold'>On Behalf Of </span></b>thomas.kral@email.cz<br><b><span style='font-weight:bold'>Sent:</span></b> Mittwoch, 22. März 2017 15:41<br><b><span style='font-weight:bold'>To:</span></b> ETH Oberon and related systems <oberon@lists.inf.ethz.ch><br><b><span style='font-weight:bold'>Subject:</span></b> Re: [Oberon] FPGA Oberon - Modules.rsc<o:p></o:p></span></font></p></div></div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>Hi Andreas,<o:p></o:p></span></font></p><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>Thank you, nice work of yours!<o:p></o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>In the chapter 14.2 it hints that linker is almost identical to `Modules.Mod' loader, except it links statically into a file, rather than into memory.<o:p></o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>Addresses are relocated with origin 0H, from a fixed start of Oberon partition?<o:p></o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>I also found found some  boot linking modules in native oberon souce files.<o:p></o:p></span></font></p></div><div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>./src/x86/Unix/BootLinker.Mod<o:p></o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>./src/NO/BootLinker.Mod<o:p></o:p></span></font></p></div></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>Was I close?<o:p></o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>What would be also  interesting to decompose `prom.mem' to understand how this file could be produced.<o:p></o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>It seems to have 361 lines each ascii encoded long word. Ends with C7000000, lines 362-490 are zeros .<o:p></o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>Are these RISC machine instructions?<o:p></o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>Many thanks<o:p></o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>Tomas <o:p></o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>   <o:p></o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p><p><font size=3 face="Times New Roman"><span lang=EN-US style='font-size:12.0pt'>---------- Původní zpráva ----------<br>Od: Andreas Pirklbauer <</span><a href="mailto:andreas_pirklbauer@yahoo.com"><span lang=EN-US>andreas_pirklbauer@yahoo.com</span></a></font><span lang=EN-US>><br>Komu: ETH Oberon and related systems <</span><a href="mailto:oberon@lists.inf.ethz.ch"><span lang=EN-US>oberon@lists.inf.ethz.ch</span></a><span lang=EN-US>><br>Datum: 22. </span>3. 2017 11:36:35<br>Předmět: [Oberon] FPGA Oberon - Modules.rsc<o:p></o:p></p><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>The book Project Oberon does not describe the way the inner core itself is built (it only mentions that a “boot linker”is needed for that) or loaded onto the boot area of the local disk, nor are the tools to accomplish this published.<o:p></o:p></span></font></pre><pre style='background:white;white-space:pre-wrap'><font size=2 face="Courier New"><span style='font-size:10.0pt'><o:p> </o:p></span></font></pre><pre style='background:white;white-space:pre-wrap'><font size=2 face="Courier New"><span style='font-size:10.0pt'>A minimal set of the Oberon building tools can be found at:<o:p></o:p></span></font></pre><pre style='background:white;white-space:pre-wrap;z-index:auto'><font size=2 face="Courier New"><span style='font-size:10.0pt'><o:p> </o:p></span></font></pre><pre style='background:white;z-index:auto'><font size=2 face="Courier New"><span style='font-size:10.0pt'><a href="https://github.com/andreaspirklbauer/Oberon-building-tools">https://github.com/andreaspirklbauer/Oberon-building-tools</a><o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'><br><br><o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>Usage:<o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'><br><br><o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>   ORP.Compile Kernel.Mod FileDir.Mod Files.Mod Modules.Mod ~<o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'><br><br><o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>   Linker.Link Modules    # prepare inner core (pre-linked binary)<o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'><br><br><o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>   Builder.Build Modules  # load inner core into boot area of disk<o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'><o:p> </o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'><o:p> </o:p></span></font></pre><pre style='background:white;white-space:pre-wrap'><font size=2 face="Courier New"><span style='font-size:10.0pt'>---------------------------------------------------------<o:p></o:p></span></font></pre><p class=MsoNormal><font size=3 face="Courier New"><span style='font-size:12.0pt;font-family:"Courier New"'>thomas.kral at email.cz thomas.kral at email.cz <br>Tue Mar 21 09:13:34 CET 2017<br><br><br></span></font><o:p></o:p></p><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>Hi Joerg,<o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>I was rereading the chapter 14 again, I realise the boot over RS232 is <o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>triggered by a switch, but I still do miss the point, how do I build the <o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>inner core, and Oberon0. In the text there is a reference to boot linker. <o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'><o:p> </o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>Many thanks<o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'><o:p> </o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>Tomas <o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'><o:p> </o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'><o:p> </o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>---------- Původní zpráva ----------<o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>Od: Jörg <<a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon">joerg.straube at iaeth.ch</a>><o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>Komu: ETH Oberon and related systems <<a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon">oberon at lists.inf.ethz.ch</a>><o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>Datum: 21. 3. 2017 8:06:54<o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>Předmět: Re: [Oberon] FPGA Oberon - Modules.rsc<o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'><o:p> </o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>"<o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'><o:p> </o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>The inner core is at a fixed location on the disk.<o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'><o:p> </o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>The boot process is described in chapter 14.1:<o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'><o:p> </o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'><a href="https://www.inf.ethz.ch/personal/wirth/ProjectOberon/PO.Applications.pdf">https://www.inf.ethz.ch/personal/wirth/ProjectOberon/PO.Applications.pdf</a><o:p></o:p></span></font></pre><pre style='background:white'><font size=2 face="Courier New"><span style='font-size:10.0pt'>(<a href="https://www.inf.ethz.ch/personal/wirth/ProjectOberon/PO.Applications.pdf">https://www.inf.ethz.ch/personal/wirth/ProjectOberon/PO.Applications.pdf</a>)<o:p></o:p></span></font></pre><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p></div></div><p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US style='font-size:12.0pt'>-- <br></span></font><a href="mailto:Oberon@lists.inf.ethz.ch"><span lang=EN-US>Oberon@lists.inf.ethz.ch</span></a><span lang=EN-US> mailing list for ETH Oberon and related systems <br></span><a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon"><span lang=EN-US>https://lists.inf.ethz.ch/mailman/listinfo/oberon</span></a> <span lang=EN-US><o:p></o:p></span></p></blockquote></div></div></body></html>