<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hi,
</p>
    <div class="moz-cite-prefix">Am 24.01.2022 um 11:03 schrieb Thorsten
      Otto via fpc-devel:<br>
    </div>
    <blockquote type="cite" cite="mid:1931516.49FxHgyHJj@earendil">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <meta name="qrichtext" content="1">
      <style type="text/css">p, li { white-space: pre-wrap; }</style>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"> (I'm new to this  list so please forgive me if i'm asking questions that have already been answered elsewhere, and just point me to the right direction)</p>
    </blockquote>
    <p>very unlikely, since we implemented that atari interface there was little feedback about it ;)</p>
    <pre class="console-output">
</pre>
    <blockquote type="cite" cite="mid:1931516.49FxHgyHJj@earendil">
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Inspired by some thread on the atari-forum (<a href="https://www.atari-forum.com/viewtopic.php?f=16&t=41476&sid=cd858e109f7cd4f1cae6c597ea35b66f" moz-do-not-send="true"><span style=" text-decoration: underline; color:#0057ae;">https://www.atari-forum.com/viewtopic.php?f=16&t=41476&sid=cd858e109f7cd4f1cae6c597ea35b66f</span></a> )</p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">i recently tried to cross-compile freepascal for atari (using linux as host), and encountered a few problems. First off, a guy pointed me to the nightly build page (which i could not find btw. on the freepascal home page). That one also includes atari binaries which don't seem to be available elsewhere, but they are somewhat broken. All of the executables (not only the compiler) have $0c set in the program flags. The $08 bit of that value is interpreted by MiNT to allocate only a minimum TPA (which is the memory needed by the text+data+bss sections), but the startup code of fpc tries to increase that in order to allocate the stack. That causes all of the binaries to immediately fail with an out-of-memory error.</p>
    </blockquote>
    <p>We both (Charlie and me) are Amiga users, so not so used to the Atari stuff, so very likely something is wrong.</p>
    <p>yes the Atari version is compiled by Jenkins every commit <a class="moz-txt-link-freetext" href="https://build.alb42.de:8081/job/FPC_m68k-atari/">https://build.alb42.de:8081/job/FPC_m68k-atari/</a> (to make sure the changes does not break the target) it uses the command line:</p>
    <pre class="console-output">make zipinstall OS_TARGET=atari CPU_TARGET=m68k 'CROSSOPT=-Cp68000 -Avasm -XV'</pre>
    <p>Since the Atari interface was implemented there was a little bit reaction to it, but not very much, so I don't think the the compiler was ever tested or used on actual Atari (I just compile them to make sure they don't break)
</p>
    <p>The main work on this was done by Charlie (I'm really more an Amiga-user, he is more like a retro computer guy), I'm not sure he reads here, so I will trigger him later to check it out, I'm sure he is happy if someone wants to help and improve it.
</p>
    <p>
</p>
    <p>btw. you know this:</p>
    <p><a class="moz-txt-link-freetext" href="https://blog.alb42.de/2017/06/18/do-it-online-atari/">https://blog.alb42.de/2017/06/18/do-it-online-atari/</a></p>
    <p><a class="moz-txt-link-freetext" href="http://home.alb42.de/fpatari/">http://home.alb42.de/fpatari/</a></p>
    <p>
</p>
    <blockquote type="cite" cite="mid:1931516.49FxHgyHJj@earendil">
      <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "> </p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">The next problem is the way the assembler and linker are invoked. I realize that in the daily builds, vasm/vlink are used, but i would really prefer to use gas/ld instead (which are also the defaults if you don't use -Avasm). When generating the cross-compiler, they are invoked as m68k-atari-as and m68k-atari-ld, however the standard binutils for atari are actually named different (m68k-atari-mint-as and m68k-atari-mint-ld). As a workaround, i now created symlinks for these, but this should actually be fixed.</p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Also, the commandline for the linker is wrong in that case, it is invoked as</p>
    </blockquote>
    <p>the prefix $CPU-$OS is just the default prefix for every cross compiling, if you need an other, you can supply it with e.g. -XPm68k-atari-mint-
</p>
    <p>
</p>
    <blockquote type="cite" cite="mid:1931516.49FxHgyHJj@earendil">
      <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "> </p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">m68k-atari-ld -d -n -o <exe> <scriptfile></p>
      <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "> </p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">where scriptfile is a generated linker script. That is missing the -T switch, which causes ld to accept <scriptfile> as object-file to link (and causing it to core-dump).</p>
    </blockquote>
    <p>I guess, because we use vasm and vlink the gnu as/ld is not properly implemented atm. At least for Amiga vasm and vlink work much better than gas/ld, not sure about the situation on Atari.</p>
    <p>
</p>
    <blockquote type="cite" cite="mid:1931516.49FxHgyHJj@earendil">
      <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "> </p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Another thing: that linker expects the first object to start at text address 0xe4, not 0. That is normally achieved by some statements in the script, but those are missing.</p>
      <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "> </p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">A thing that is definitely missing is support for the ARGV argument passing. Without this, commandlines are limited to 126 chars, and tools like fpc.ttp are not able to locate their own directory (needed for example to find the fpc.cfg file). If you want, i can try to implement that.</p>
    </blockquote>
    <p>I think you can just do that and make a pull request on Gitlab.</p>
    <p>
</p>
    <p>Greetings,</p>
    <p>Marcus "ALB42"
</p>
    <p>
</p>
  </body>
</html>