<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:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
span.gmail-pl-smi
{mso-style-name:gmail-pl-smi;}
span.gmail-pl-c1
{mso-style-name:gmail-pl-c1;}
span.EmailStyle19
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";
mso-fareast-language:EN-US;}
@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=EN-AU link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US'>The base year used in Project Oberon is 2000. That is what we also use in HCFiler and the additional RTC and FileDate facilities in Embedded Project Oberon. Refer to section 8.3 The Kernel in the 2013 Revised Edition of the Project Oberon book.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US'>Regards,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US'>Chris Burrows<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US'>CFB Software<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US'><a href="https://www.astrobe.com">https://www.astrobe.com</a><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US'><o:p> </o:p></span></p><div style='border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt'><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif"'> Oberon [mailto:oberon-bounces@lists.inf.ethz.ch] <b>On Behalf Of </b>Charles Perkins<br><b>Sent:</b> Friday, 14 February 2020 6:06 AM<br><b>To:</b> ETH Oberon and related systems<br><b>Subject:</b> [Oberon] File time stamps in PO2013<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>I'm writing a linux kernel filesystem driver for Project Oberon disk images and I'm wondering how best to interpret the Date field in the FileDesc record. <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>It looks to me like the Files module just puts the latest Kernel.Clock() value in there when the file is written.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>System.Mod sets the date value like this:<o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>dt <span class=gmail-pl-smi>:=</span> <span class=gmail-pl-smi>((((</span>yr<span class=gmail-pl-smi>*</span></span><span class=gmail-pl-c1><span style='font-size:9.0pt;font-family:Consolas;color:#005CC5'>16</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'> <span class=gmail-pl-smi>+</span> mo<span class=gmail-pl-smi>)*</span></span><span class=gmail-pl-c1><span style='font-size:9.0pt;font-family:Consolas;color:#005CC5'>32</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'> <span class=gmail-pl-smi>+</span> day<span class=gmail-pl-smi>)*</span></span><span class=gmail-pl-c1><span style='font-size:9.0pt;font-family:Consolas;color:#005CC5'>32</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'> <span class=gmail-pl-smi>+</span> hr<span class=gmail-pl-smi>)*</span></span><span class=gmail-pl-c1><span style='font-size:9.0pt;font-family:Consolas;color:#005CC5'>64</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'> <span class=gmail-pl-smi>+</span> min<span class=gmail-pl-smi>)*</span></span><span class=gmail-pl-c1><span style='font-size:9.0pt;font-family:Consolas;color:#005CC5'>64</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'> <span class=gmail-pl-smi>+</span> sec<span class=gmail-pl-smi>;</span></span><o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>It looks to me like the above formula leaves 6 bits for the year, which means it ranges from 0 to 63.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Now I know that the FPGA doesn't actually have a real time clock and I think the time is always actually zero unless you set it to something else. I don't think it gets updated from the system millisecond timer either.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I'm just wondering if historically that year value that goes in a file header has a base year or other meaning. Without something like that the maximum year is "63" which is a long time ago!<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I'd like to put something meaningful in this field when I move files in and out of Linux.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Anybody have a good idea? Should I just make it based on Jan 1 1970 like Unix, in which case it rolls over in 2033?<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Am I over-thinking this? <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Chuck<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm'><p class=MsoNormal><o:p> </o:p></p></blockquote></div></div></div></div></body></html>