<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span style="font-family: monospace; white-space: pre-wrap;" class="">> </span><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">Of course, the final question is, why does the bootloader</span></font><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">> choose as its limit something below 0E7F00H, ie 0E7EF0H,</span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">> as you point out?
>
> I think a clue here is given in the simplified serial-only</span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">> version of the bootloader, where StackOrg is set to 0E7EF0H,</span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">> rather than 80000H in the disk (SD-Card) case.</span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class=""><br class=""></span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">Perhaps it was originally thought to store the 4 variables</span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">list0, list1, list2, list3 of module Kernel (which occupy</span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">4 bytes each </span></font><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">for a total of 16 </span></font><span style="white-space: pre-wrap; font-family: monospace;" class="">bytes) in that little space</span></div><div class=""><span style="white-space: pre-wrap; font-family: monospace;" class="">of 16 bytes </span><span style="white-space: pre-wrap; font-family: monospace;" class="">between </span><span style="font-family: monospace; white-space: pre-wrap;" class="">0E7EF0H </span>and <span style="font-family: monospace; white-space: pre-wrap;" class="">0E7F00H.</span></div><div class=""><br class=""></div><div class=""><span style="font-family: monospace; white-space: pre-wrap;" class="">In Oberon 2013 on RISC, the area before the framebuffer</span></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">is the heap, located between heapOrg = 08000H = 524’288</span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">and heapLim = MemLim = 0E7EF0H = 950’000.</span></font></div><div class=""><br class=""></div><div class=""><span style="white-space: pre-wrap; font-family: monospace;" class="">It is not done though in Oberon 2013. But if it *were*</span></div><div class=""><span style="white-space: pre-wrap; font-family: monospace;" class="">done, </span><span style="white-space: pre-wrap; font-family: monospace;" class="">it would </span><span style="white-space: pre-wrap; font-family: monospace;" class="">effectively make the </span><span style="white-space: pre-wrap; font-family: monospace;" class="">heap a completely</span></div><div class=""><span style="white-space: pre-wrap; font-family: monospace;" class="">“self-contained” data area, </span><span style="white-space: pre-wrap; font-family: monospace;" class="">allowing one, for instance:</span></div><div class=""><span style="white-space: pre-wrap; font-family: monospace;" class=""><br class=""></span></div><div class=""><span style="white-space: pre-wrap; font-family: monospace;" class="">- to allow other modules to access and manage the heap</span></div><div class=""><span style="white-space: pre-wrap; font-family: monospace;" class="">- to save and restore the heap to disk (system snapshot)</span></div><div class=""><span style="white-space: pre-wrap; font-family: monospace;" class="">- to reload module Kernel </span><span style="white-space: pre-wrap; font-family: monospace;" class="">without </span><span style="white-space: pre-wrap; font-family: monospace;" class="">touching </span><span style="font-family: monospace; white-space: pre-wrap;" class="">the heap</span></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class=""> (“live update”)</span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">- etc.</span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class=""><br class=""></span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">It is not currently done though. But I have seen that</span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">way of implementing the heap on some systems.</span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class=""><br class=""></span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">Andreas</span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class=""><br class="Apple-interchange-newline"></span></font><br class=""></div></body></html>