<html 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:12.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
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.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Nur Text Zchn";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
span.NurTextZchn
        {mso-style-name:"Nur Text Zchn";
        mso-style-priority:99;
        mso-style-link:"Nur Text";
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:2068257835;
        mso-list-type:hybrid;
        mso-list-template-ids:-1552373750 67567639 67567641 67567643 67567631 67567641 67567643 67567631 67567641 67567643;}
@list l0:level1
        {mso-level-number-format:alpha-lower;
        mso-level-text:"%1\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style></head><body lang=DE-CH link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoPlainText><span lang=DE>All<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-US>Sorry, I made a typo. The correct identification code should look like this:<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-US>        cpu := SYSTEM.H(2019) MOD <b><span style='color:red'>100H</span></b>;<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US>        IF cpu = 53H THEN       (* RISC5: with interrupts + floating-point, 31.8.2018 *)<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US>        ELSIF cpu = 54H THEN (* RISC5a: no interrupts, no floating-point, 1.9.2018*)<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US>        ELSIF cpu = <b><span style='color:red'>0A0H</span></b> THEN (* RISC0, 26.12.2013 *)<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US>        </span><span lang=DE>END ;<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE> <o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US style='color:black'>First of all, the CPU version identification is an undocumented feature. So only NW knows, if it will be supported in the future.<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US style='color:black'>Perhaps we as Oberon community can agree on how <b>emulators</b> shall identify itself. I see four thinkable ways<o:p></o:p></span></p><ol style='margin-top:0cm' start=1 type=a><li class=MsoPlainText style='color:black;mso-list:l0 level1 lfo1'><span lang=EN-US>Return one of the values above, as the real FPGA HW would do. Be totally transparent to the Oberon code.<o:p></o:p></span></li><li class=MsoPlainText style='color:black;mso-list:l0 level1 lfo1'><span lang=EN-US>Return another value, so the Oberon code might find out that it’s running on an emulator if he wants to do so<o:p></o:p></span></li><li class=MsoPlainText style='color:black;mso-list:l0 level1 lfo1'><span lang=EN-US>Use a few of the 20 unused bits in the instruction, currently set to 0. This has the benefit that the CPU version is still one of the defined ones, and we can detect the CPU feature set foreseen by NW. We still have the possibility to detect on what emulator this CPU is implemented.<o:p></o:p></span></li><li class=MsoPlainText style='color:black;mso-list:l0 level1 lfo1'><span lang=EN-US>Define a new (still unused) instruction to just return the emulator version.<o:p></o:p></span></li></ol><p class=MsoPlainText><span lang=EN-US style='color:black'><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-US style='color:black'>My recommendation would be: c). Just as an idea: use the second lowest byte to identify the emulator.<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US style='color:black'>As example: SYSTEM.H(2019) DIV 100H MOD 100H would identify the emulator.<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-US>br<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US>Jörg<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US><o:p> </o:p></span></p></div></body></html>