<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Tools</title><link>https://sourceforge.net/p/specos/wiki/Tools/</link><description>Recent changes to Tools</description><atom:link href="https://sourceforge.net/p/specos/wiki/Tools/feed" rel="self"/><language>en</language><lastBuildDate>Tue, 19 Aug 2014 22:21:15 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/specos/wiki/Tools/feed" rel="self" type="application/rss+xml"/><item><title>Tools modified by Brian Ruthven</title><link>https://sourceforge.net/p/specos/wiki/Tools/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -3,7 +3,9 @@

 This is the list of tools needed to build SpecOS and the versions currently used:

-   * SDCC 3.3.1 (#8729)
+   * Solaris Studio 12 compiler (or GCC, with modifications - see [GNU tools] for details)
+   * Solaris "make"
+   * SDCC 3.4.1 (#9058)
    * Boost headers (1.53.0) - needed for SDCC
    * Hex2bin (1.0.10)
    * Z80asm (1.8)
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Brian Ruthven</dc:creator><pubDate>Tue, 19 Aug 2014 22:21:15 -0000</pubDate><guid>https://sourceforge.net3f773977d0b73bf0b30b6959da9b3a42e77b61ec</guid></item><item><title>Tools modified by Brian Ruthven</title><link>https://sourceforge.net/p/specos/wiki/Tools/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -3,20 +3,17 @@

 This is the list of tools needed to build SpecOS and the versions currently used:

-   * SDCC (3.2.1 #8081)
-   * Boost headers (1.47.0) - needed for SDCC
-   * Hex2bin (1.0.8)
+   * SDCC 3.3.1 (#8729)
+   * Boost headers (1.53.0) - needed for SDCC
+   * Hex2bin (1.0.10)
    * Z80asm (1.8)
-   * libspectrum (0.5.0.1) - needed by debugger
+   * libspectrum (1.1.1) - needed by debugger
+   * libdsk (1.3.3) - needed by cpmtools
+   * cpmtools (2.13)

 Only the SDCC version is explicitly required, as replacing the compiler-supplied crt can break easily as the compiler advances. A later version of SDCC introduced new linker sections which SpecOS doesn't yet support, so the resulting binary is missing the initialised variables.

-Other tools:
-
-   * libdsk (1.3.3) - needed by cpmtools
-   * cpmtools (2.13)
-
-These are not actually used yet during the build, but are useful to manipulate disk image files, rather than constantly binary-load the file into an emulator and use +3 BASIC to save it out to disk. The long-term aim is that the source tree build spits out a disk image file which is ready to present to an emulator, and boots directly into the OS.
+dskform (from libdsk) and cpmcp (from cpmtools) are used to create or update a disk image as part of the build. As there seems to be no way of writing a boot sector directly, a small basic loader is copied to the disk as a file called "DISK" so it can boot the disk, install the boot sector and boot it. Subsequent boots will use the boot sector, not the basic loader.

 Compilation notes
@@ -24,23 +21,22 @@

 If building SDCC from source, it requires Boost headers:

-   1. Unpack boost to its target location, e.g. /speccy/tools/boost_1_47_0
+   1. Unpack boost to its target location, e.g. /sw/boost_1_53_0

    2. Set CXXFLAGS to point to boost:

 ~~~~
-    $ setenv CXXFLAGS -I/speccy/tools/boost_1_47_0
+    $ setenv CXXFLAGS -I/sw/boost_1_53_0
 ~~~~

    3. Configure for Z80 only:

 ~~~~
-   $ ./configure --prefix=/speccy/tools \
-       --disable-mcs51-port --disable-z180-port --disable-r2k-port \
-       --disable-r3ka-port --disable-gbz80-port --disable-ds390-port \
-       --disable-ds400-port --disable-pic14-port --disable-pic16-port \
-       --disable-hc08-port --disable-s08-port --disable-ucsim \
-       --disable-sdcdb
+    $ ./configure --prefix=/sw --disable-ucsim --disable-sdcdb \
+        --disable-mcs51-port --disable-z180-port --disable-r2k-port \
+        --disable-r3ka-port --disable-gbz80-port --disable-ds390-port \
+        --disable-ds400-port --disable-pic14-port --disable-pic16-port \
+        --disable-hc08-port --disable-s08-port --disable-stm8-port
 ~~~~

    4. gmake
@@ -51,20 +47,25 @@
 Hex2bin needed some modifications to the Makefile to compile on Solaris:

 ~~~~
-diff -r Hex2bin/Makefile ../Hex2bin/Makefile
-4c4,5
-&lt; INSTALL_DIR = /usr/local
----
-&gt; #INSTALL_DIR = /usr/local
-&gt; INSTALL_DIR = /tmp/hex2bin
-13c14
-&lt;  gcc -O2 -Wall -o hex2bin hex2bin.c
----
-&gt;  $(CC) -O2 -Wall -o hex2bin hex2bin.c
-16c17
-&lt;  gcc -O2 -Wall -o mot2bin mot2bin.c
----
-&gt;  $(CC) -O2 -Wall -o mot2bin mot2bin.c
+--- Makefile   Sun Mar 11 23:04:16 2012
++++ ../../Hex2bin-1.0.10/Makefile  Mon Jul  1 21:13:30 2013
+@@ -1,8 +1,8 @@
+ # Makefile hex2bin
+ WIN_GCC = amd64-mingw32msvc-gcc
+ 
+-INSTALL_DIR = /usr/local
+-MAN_DIR = $(INSTALL_DIR)/man/man1
++INSTALL_DIR = /sw
++MAN_DIR = $(INSTALL_DIR)/share/man/man1
+ 
+ all: hex2bin mot2bin hex2bin.1
+ 
+@@ -24,4 +24,4 @@
+   cp hex2bin.1 $(MAN_DIR)
+ 
+ clean:
+-  rm core *.o hex2bin mot2bin
++  rm -f core *.o hex2bin mot2bin
 ~~~~

@@ -87,7 +88,7 @@
 All the other tools are a simple configure/gmake combination:

 ~~~~
-$ ./configure --prefix=/speccy/tools
+$ ./configure --prefix=/sw
 $ gmake
 $ gmake install
 ~~~~
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Brian Ruthven</dc:creator><pubDate>Wed, 03 Jul 2013 22:55:01 -0000</pubDate><guid>https://sourceforge.net34a91a4dc22ed2f4d3a50f084527d3c11f01e159</guid></item><item><title>Tools modified by Brian Ruthven</title><link>https://sourceforge.net/p/specos/wiki/Tools/</link><description>&lt;div class="markdown_content"&gt;&lt;h2 id="tools-required"&gt;Tools required&lt;/h2&gt;
&lt;p&gt;This is the list of tools needed to build SpecOS and the versions currently used:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SDCC (3.2.1 #8081)&lt;/li&gt;
&lt;li&gt;Boost headers (1.47.0) - needed for SDCC&lt;/li&gt;
&lt;li&gt;Hex2bin (1.0.8)&lt;/li&gt;
&lt;li&gt;Z80asm (1.8)&lt;/li&gt;
&lt;li&gt;libspectrum (0.5.0.1) - needed by debugger&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Only the SDCC version is explicitly required, as replacing the compiler-supplied crt can break easily as the compiler advances. A later version of SDCC introduced new linker sections which SpecOS doesn't yet support, so the resulting binary is missing the initialised variables.&lt;/p&gt;
&lt;p&gt;Other tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;libdsk (1.3.3) - needed by cpmtools&lt;/li&gt;
&lt;li&gt;cpmtools (2.13)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are not actually used yet during the build, but are useful to manipulate disk image files, rather than constantly binary-load the file into an emulator and use +3 BASIC to save it out to disk. The long-term aim is that the source tree build spits out a disk image file which is ready to present to an emulator, and boots directly into the OS.&lt;/p&gt;
&lt;h2 id="compilation-notes"&gt;Compilation notes&lt;/h2&gt;
&lt;p&gt;If building SDCC from source, it requires Boost headers:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Unpack boost to its target location, e.g. /speccy/tools/boost_1_47_0&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Set CXXFLAGS to point to boost:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;$ &lt;span class="n"&gt;setenv&lt;/span&gt; &lt;span class="n"&gt;CXXFLAGS&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;I&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;speccy&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;boost_1_47_0&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configure for Z80 only:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;$ &lt;span class="o"&gt;./&lt;/span&gt;&lt;span class="n"&gt;configure&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;speccy&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
    &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;disable&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;mcs51&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;disable&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;z180&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;disable&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;r2k&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
    &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;disable&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;r3ka&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;disable&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;gbz80&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;disable&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ds390&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
    &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;disable&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ds400&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;disable&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;pic14&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;disable&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;pic16&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
    &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;disable&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;hc08&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;disable&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;s08&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;disable&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ucsim&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
    &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;disable&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;sdcdb&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;gmake&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;gmake install&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hex2bin needed some modifications to the Makefile to compile on Solaris:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="gh"&gt;diff -r Hex2bin/Makefile ../Hex2bin/Makefile&lt;/span&gt;
4c4,5
&amp;lt; INSTALL_DIR = /usr/local
&lt;span class="gd"&gt;---&lt;/span&gt;
&amp;gt; #INSTALL_DIR = /usr/local
&amp;gt; INSTALL_DIR = /tmp/hex2bin
13c14
&amp;lt;   gcc -O2 -Wall -o hex2bin hex2bin.c
&lt;span class="gd"&gt;---&lt;/span&gt;
&amp;gt;   $(CC) -O2 -Wall -o hex2bin hex2bin.c
16c17
&amp;lt;   gcc -O2 -Wall -o mot2bin mot2bin.c
&lt;span class="gd"&gt;---&lt;/span&gt;
&amp;gt;   $(CC) -O2 -Wall -o mot2bin mot2bin.c
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Z80asm needed some code (prototype) changes to compile on Solaris:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="gh"&gt;diff -r z80asm-1.8/gnulib/getopt.c /download/z80asm-1.8/gnulib/getopt.c&lt;/span&gt;
196c196
&amp;lt; extern char *getenv ();
&lt;span class="gd"&gt;---&lt;/span&gt;
&amp;gt; extern char *getenv (char *);
&lt;span class="gh"&gt;diff -r z80asm-1.8/gnulib/getopt.h /download/z80asm-1.8/gnulib/getopt.h&lt;/span&gt;
144c144
&amp;lt; extern int getopt ();
&lt;span class="gd"&gt;---&lt;/span&gt;
&amp;gt; extern int getopt (int argc, char *const *argv, const char *optstring);
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;All the other tools are a simple configure/gmake combination:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;$ &lt;span class="o"&gt;./&lt;/span&gt;&lt;span class="n"&gt;configure&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;speccy&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;
$ &lt;span class="n"&gt;gmake&lt;/span&gt;
$ &lt;span class="n"&gt;gmake&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Brian Ruthven</dc:creator><pubDate>Tue, 07 May 2013 20:41:23 -0000</pubDate><guid>https://sourceforge.neta29bbefd4ff408e801ffff6a97c10cfaeed8cdeb</guid></item></channel></rss>