• [symbos8bit] SymbOS Relocator Table

    From alvin albrecht alvin_albrecht@hotmail.com [symbos8bit]@symbos8bit@yahoogroups.com to symbos8bit@yahoogroups.com on Wed Nov 2 17:53:35 2016
    --_000_CY1PR1001MB121096A6FC8D0C97364D27A9EBA00CY1PR1001MB1210_
    Content-Type: text/plain; charset="us-ascii"
    Content-Transfer-Encoding: quoted-printable

    Is there any more detailed documentation available on SymbOS's relocation t= able than what I found in SymbOS-Applications.txt?

    The fourth part contains the relocator table. The relocator table is a lis=
    t of
    pointer (words), which points to the addresses, where a reference needs to=
    be
    modified, so that the application code can be relocated. The relocator tab=
    le
    will be loaded only temporary and removed after the relocation process.

    Is the table just a list of 16-bit offsets into the binary where a 16-bit a= ddress needs adjustment?

    If so, this isn't adequate for z80 programs. Here's one example that split=
    s an address into its low and high byte portions:


    0109 DD 7E FC [19] 343 ld a,-4 (ix)
    010C C6r00 [ 7] 344 add a, #<(_dos_filenum) ;; LSB
    010E DD 77 FC [19] 345 ld -4 (ix),a
    0111 DD 7E FD [19] 346 ld a,-3 (ix)
    0114 CEs00 [ 7] 347 adc a, #>(_dos_filenum) ;; MSB
    0116 DD 77 FD [19] 348 ld -3 (ix),a

    To properly relocate this code, you'd have to patch single bytes correspond= ing to the _dos_filename high and low byte portions.

    If SymbOS can't relocate this sort of code, would it be possible for a prog= ram to supply its own relocator that is discarded by SymbOS after it's run?


    --_000_CY1PR1001MB121096A6FC8D0C97364D27A9EBA00CY1PR1001MB1210_
    Content-Type: text/html; charset=US-ASCII
    Content-Transfer-Encoding: 7bit





    <head>

    <style type="text/css">
    <!--

    /* start of attachment style */
    .ygrp-photo-title{
    clear: both;
    font-size: smaller;
    height: 15px;
    overflow: hidden;
    text-align: center;
    width: 75px;
    }
    div.ygrp-photo{
    background-position: center;
    background-repeat: no-repeat;
    background-color: white;
    border: 1px solid black;
    height: 62px;
    width: 62px;
    }

    div.photo-title
    a,
    div.photo-title a:active,
    div.photo-title a:hover,
    div.photo-title a:visited {
    text-decoration: none;
    }

    div.attach-table div.attach-row {
    clear: both;
    }

    div.attach-table div.attach-row div {
    float: left;
    /* margin: 2px;*/
    }

    p {
    clear: both;
    padding: 15px 0 3px 0;
    overflow: hidden;
    }

    div.ygrp-file {
    width: 30px;
    valign: middle;
    }
    div.attach-table div.attach-row div div a {
    text-decoration: none;
    }

    div.attach-table div.attach-row div div span {
    font-weight: normal;
    }

    div.ygrp-file-title {
    font-weight: bold;
    }
    /* end of attachment style */
    -->
    </style>
    </head>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
    <meta name="generator" content="Windows Mail 17.5.9600.20911">
    <style><!--
    #ygrp-mkp {
    border:1px solid #d8d8d8;
    font-family:Arial;
    margin:10px 0;
    padding:0 10px;
    }

    #ygrp-mkp hr {
    border:1px solid #d8d8d8;
    }

    #ygrp-mkp #hd {
    color:#628c2a;
    font-size:85%;
    font-weight:700;
    line-height:122%;
    margin:10px 0;
    }

    #ygrp-mkp #ads {
    margin-bottom:10px;
    }

    #ygrp-mkp .ad {
    padding:0 0;
    }

    #ygrp-mkp .ad p {
    margin:0;
    }

    #ygrp-mkp .ad a {
    color:#0000ff;
    text-decoration:none;
    }

    #ygrp-sponsor #ygrp-lc {
    font-family:Arial;
    }

    #ygrp-sponsor #ygrp-lc #hd {
    margin:10px 0px;
    font-weight:700;
    font-size:78%;
    line-height:122%;
    }

    #ygrp-sponsor #ygrp-lc .ad {
    margin-bottom:10px;
    padding:0 0;
    }
    </style><style data-externalstyle="true"><!--
    p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph {
    margin-top:0in;
    margin-right:0in;
    margin-bottom:0in;
    margin-left:.5in;
    margin-bottom:.0001pt;
    }
    p.MsoNormal, li.MsoNormal, div.MsoNormal {
    margin:0in;
    margin-bottom:.0001pt;
    }
    p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst,
    p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle,
    p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast {
    margin-top:0in;
    margin-right:0in;
    margin-bottom:0in;
    margin-left:.5in;
    margin-bottom:.0001pt;
    line-height:115%;
    }
    </style>
    </head>
    <body dir="ltr">


    <!-- |**|begin egp html banner|**| -->

    <br><br>

    <!-- |**|end egp html banner|**| -->



    <div data-externalstyle="false" dir="ltr" style="font-family: 'Calibri', 'Segoe UI', 'Meiryo', 'Microsoft YaHei UI', 'Microsoft JhengHei UI', 'Malgun Gothic', 'sans-serif';font-size:12pt;">
    <div>Is there any more detailed documentation available on SymbOS&#8217;s relocation table than what I found in SymbOS-Applications.txt?</div>
    <div><br>
    </div>
    <div>&gt;The fourth part contains the relocator table. The relocator table is a list of<br>
    &gt;pointer (words), which points to the addresses, where a reference needs to be<br>
    &gt;modified, so that the application code can be relocated. The relocator table<br>
    &gt;will be loaded only temporary and removed after the relocation process.</div>
    <div><br>
    </div>
    <div>Is the table just a list of 16-bit offsets into the binary where a 16-bit address needs adjustment?</div>
    <div><br>
    </div>
    <div>If so, this isn't adequate for z80 programs.&nbsp; Here&#8217;s one example that splits an address into its low and high byte portions:</div>
    <div><br>
    </div>
    <div>
    <pre>0109 DD 7E FC [19] 343 ld a,-4 (ix)
    010C C6r00 [ 7] 344 add a, #&lt;(_dos_filenum) ;; LSB 010E DD 77 FC [19] 345 ld -4 (ix),a
    0111 DD 7E FD [19] 346 ld a,-3 (ix)
    0114 CEs00 [ 7] 347 adc a, #&gt;(_dos_filenum) ;; MSB 0116 DD 77 FD [19] 348 ld -3 (ix),a</pre>
    </div>
    <div><br>
    </div>
    <div>To properly relocate this code, you&#8217;d have to patch single bytes corresponding to the _dos_filename high and low byte portions.</div>
    <div><br>
    </div>
    <div>If SymbOS can&#8217;t relocate this sort of code, would it be possible for a program to supply its own relocator that is discarded by SymbOS after it&#8217;s run?</div>
    <div><br>
    </div>
    <div style="clear: both;"></div>
    <div></div>
    </div>




    <!-- |**|begin egp html banner|**| -->






    <!-- |**|end egp html banner|**| -->


    <div width="1" style="color: white; clear: both;"/>__._,_.___</div>





    <div id="fromDMARC" style="clear:both; margin-top: 10px;">
    <hr style="height:2px ; border-width:0; color:#E3E3E3; background-color:#E3E3E3;">
    Posted by: alvin albrecht &lt;alvin_albrecht@hotmail.com&gt; <hr style="height:2px ; border-width:0; color:#E3E3E3; background-color:#E3E3E3;">
    </div>
    <!-- Start Recommendations -->
    <!-- End Recommendations -->



    <!-- |**|begin egp html banner|**| -->

    <img src="http://geo.yahoo.com/serv?s=97476590/grpId=18448305/grpspId=1705006559/msgId=1441/stime=1478109220" width="1" height="1"> <br>

    <!-- |**|end egp html banner|**| -->


    <!-- |**|begin egp html banner|**| -->








    <!-- |**|begin egp html banner|**| -->
    <div id="ygrp-vital" style="background-color: #f2f2f2; font-family: Verdana; font-size: 10px; margin-bottom: 10px; padding: 10px;">

    <span id="vithd" style="font-weight: bold; color: #333; text-transform: uppercase; "><a href="https://groups.yahoo.com/neo/groups/symbos8bit/info;_ylc=X3oDMTJmN2g3bHZnBF9TAzk3MzU5NzE0BGdycElkAzE4NDQ4MzA1BGdycHNwSWQDMTcwNTAwNjU1OQRzZWMDdnRsBHNsawN2Z2hwBHN0aW1lAzE0NzgxMDkyMjA-" style="text-decoration: none;">Visit Your Group</a></span>

    <ul style="list-style-type: none; margin: 0; padding: 0; display: inline;">
    </ul>
    </div>


    <div id="ft" style="font-family: Arial; font-size: 11px; margin-top: 5px; padding: 0 2px 0 0; clear: both;">
    <a href="https://groups.yahoo.com/neo;_ylc=X3oDMTJlcGtuOGhxBF9TAzk3NDc2NTkwBGdycElkAzE4NDQ4MzA1BGdycHNwSWQDMTcwNTAwNjU1OQRzZWMDZnRyBHNsawNnZnAEc3RpbWUDMTQ3ODEwOTIyMA--" style="float: left;"><img src="http://l.yimg.com/ru/static/images/yg/img/email/new_logo/logo-groups-137x15.png" height="15" width="137" alt="Yahoo! Groups" style="border: 0;"/></a>
    <div style="color: #747575; float: right;"> &bull; <a href="https://info.yahoo.com/privacy/us/yahoo/groups/details.html" style="text-decoration: none;">Privacy</a> &bull; <a href="mailto:symbos8bit-unsubscribe@yahoogroups.com?subject=Unsubscribe" style="text-decoration: none;">Unsubscribe</a> &bull; <a href="https://info.yahoo.com/legal/us/yahoo/utos/terms/" style="text-decoration: none;">Terms of Use</a> </div>
    </div>

    <!-- |**|end egp html banner|**| -->

    </div> <!-- ygrp-msg -->




    <br>

    <!-- |**|end egp html banner|**| -->


    <div style="color: white; clear: both;"/>__,_._,___</div>
    </body>
    </html>

    --_000_CY1PR1001MB121096A6FC8D0C97364D27A9EBA00CY1PR1001MB1210_--