<div dir="ltr">Well, it looks like we're good until 2063 then! 2000 makes more sense than 1970, and a constant is the simplest thing I can put in the kernel module so I'm going to go with that.<div><br></div><div>Now I'm going to go back to parsing the extended sector table so large files come out right.</div><div><br></div><div>Cheers,</div><div><br></div><div>Chuck</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Feb 13, 2020 at 4:52 PM Chris Burrows <<a href="mailto:chris@cfbsoftware.com">chris@cfbsoftware.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div lang="EN-AU"><div class="gmail-m_-1129121322280766109WordSection1"><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">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.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Regards,<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Chris Burrows<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">CFB Software<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><a href="https://www.astrobe.com" target="_blank">https://www.astrobe.com</a><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p><div style="border-top:none;border-right:none;border-bottom:none;border-left:1.5pt solid blue;padding:0cm 0cm 0cm 4pt"><div><div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0cm 0cm"><p class="MsoNormal"><b><span lang="EN-US" style="font-size:11pt;font-family:Calibri,sans-serif">From:</span></b><span lang="EN-US" style="font-size:11pt;font-family:Calibri,sans-serif"> Oberon [mailto:<a href="mailto:oberon-bounces@lists.inf.ethz.ch" target="_blank">oberon-bounces@lists.inf.ethz.ch</a>] <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<u></u><u></u></span></p></div></div><p class="MsoNormal"><u></u> <u></u></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. <u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></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.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">System.Mod sets the date value like this:<u></u><u></u></p></div><div><p class="MsoNormal"><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46)">dt <span class="gmail-m_-1129121322280766109gmail-pl-smi">:=</span> <span class="gmail-m_-1129121322280766109gmail-pl-smi">((((</span>yr<span class="gmail-m_-1129121322280766109gmail-pl-smi">*</span></span><span class="gmail-m_-1129121322280766109gmail-pl-c1"><span style="font-size:9pt;font-family:Consolas;color:rgb(0,92,197)">16</span></span><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46)"> <span class="gmail-m_-1129121322280766109gmail-pl-smi">+</span> mo<span class="gmail-m_-1129121322280766109gmail-pl-smi">)*</span></span><span class="gmail-m_-1129121322280766109gmail-pl-c1"><span style="font-size:9pt;font-family:Consolas;color:rgb(0,92,197)">32</span></span><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46)"> <span class="gmail-m_-1129121322280766109gmail-pl-smi">+</span> day<span class="gmail-m_-1129121322280766109gmail-pl-smi">)*</span></span><span class="gmail-m_-1129121322280766109gmail-pl-c1"><span style="font-size:9pt;font-family:Consolas;color:rgb(0,92,197)">32</span></span><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46)"> <span class="gmail-m_-1129121322280766109gmail-pl-smi">+</span> hr<span class="gmail-m_-1129121322280766109gmail-pl-smi">)*</span></span><span class="gmail-m_-1129121322280766109gmail-pl-c1"><span style="font-size:9pt;font-family:Consolas;color:rgb(0,92,197)">64</span></span><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46)"> <span class="gmail-m_-1129121322280766109gmail-pl-smi">+</span> min<span class="gmail-m_-1129121322280766109gmail-pl-smi">)*</span></span><span class="gmail-m_-1129121322280766109gmail-pl-c1"><span style="font-size:9pt;font-family:Consolas;color:rgb(0,92,197)">64</span></span><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46)"> <span class="gmail-m_-1129121322280766109gmail-pl-smi">+</span> sec<span class="gmail-m_-1129121322280766109gmail-pl-smi">;</span></span><u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></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.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></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.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></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!<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></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.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></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?<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Am I over-thinking this? <u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Chuck<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><p class="MsoNormal"><u></u> <u></u></p><div><blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0cm 0cm 0cm 6pt;margin-left:4.8pt;margin-right:0cm"><p class="MsoNormal"><u></u> <u></u></p></blockquote></div></div></div></div></div>--<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>
</blockquote></div>