gsport/docs/developing.html

252 lines
14 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia Site Renderer 1.4 at 2017-10-05 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>GSport - Developing GSport</title>
<style type="text/css" media="all">
@import url("./css/maven-base.css");
@import url("./css/maven-theme.css");
@import url("./css/site.css");
</style>
<link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
<meta name="author" content="David Schmidt (1110325+david-schmidt@users.noreply.github.com)" />
<meta name="Date-Revision-yyyymmdd" content="20171005" />
<meta http-equiv="Content-Language" content="en" />
</head>
<body class="composite">
<div id="banner">
<div id="bannerLeft">
GSport: an Apple IIgs Emulator
</div>
<div id="bannerRight">
</div>
<div class="clear">
<hr/>
</div>
</div>
<div id="breadcrumbs">
<div class="xleft">
<span id="publishDate">Last Published: 2017-10-05</span>
&nbsp;| <span id="projectVersion">Version: 0.31</span>
</div>
<div class="xright"> <a href="https://github.com/david-schmidt/gsport/releases" class="externalLink" title="Download">Download</a>
|
<a href="https://github.com/david-schmidt/gsport" class="externalLink" title="Project Development Page">Project Development Page</a>
</div>
<div class="clear">
<hr/>
</div>
</div>
<div id="leftColumn">
<div id="navcolumn">
<h5>GSport</h5>
<ul>
<li class="none">
<a href="index.html" title="Main">Main</a>
</li>
<li class="none">
<a href="https://github.com/david-schmidt/gsport/releases" class="externalLink" title="Download">Download</a>
</li>
<li class="none">
<a href="operating.html" title="Operating">Operating</a>
</li>
<li class="none">
<strong>Developing</strong>
</li>
<li class="none">
<a href="appletalk.html" title="Emulated Appletalk">Emulated Appletalk</a>
</li>
<li class="none">
<a href="ethernet.html" title="Emulated Ethernet">Emulated Ethernet</a>
</li>
<li class="none">
<a href="printer.html" title="Emulated Printers">Emulated Printers</a>
</li>
<li class="none">
<a href="history.html" title="History">History</a>
</li>
</ul>
<a href="https://github.com/david-schmidt/gsport"><img src="https://assets-cdn.github.com/images/modules/logos_page/GitHub-Logo.png" width="100" alt="Get GSport at Github." /></a>
</a>
</div>
</div>
<div id="bodyColumn">
<div id="contentBox">
<div class="section">
<h2>Developing GSport<a name="Developing_GSport"></a></h2>
<p>Information, mostly concerning building, about various platforms:</p>
<div class="section">
<h3>General Build Instructions<a name="General_Build_Instructions"></a></h3>
<p>You need to build with a <tt>make</tt> utility. There's a default Makefile, which should work for nearly any environment. The Makefile includes a file called <tt>vars</tt> which defines the platform- dependent variables. You need to make <tt>vars</tt> point to (or be) the appropriate file for your machine.</p></div>
<div class="section">
<h3>Win32<a name="Win32"></a></h3>
<p>There is a different port of KEGS by Chea Chee Keong (akilgard) called KEGS32. It was originally available from <a class="externalLink" href="http://web.archive.org/web/20071107082448/http://www.geocities.com/akilgard/kegs32/">http://www.geocities.com/akilgard/kegs32</a>, but geocities has since closed. The Win32 code in GSport is leveraged from KEGS32.</p>
<p>GSport can be compiled with <a class="externalLink" href="http://www.mingw.org/">Mingw</a> and <a class="externalLink" href="http://www.cygwin.com/">Cygwin</a> as well as via standard Microsoft compiler suites.</p>
<p>In order to compile with the standard Microsoft compiler suites, download and install <a class="externalLink" href="https://www.visualstudio.com/downloads/download-visual-studio-vs">Microsoft Visual Studio Community 2015 from Microsoft's website</a>. The build process requires Perl, such as <a class="externalLink" href="http://www.activestate.com/activeperl">ActiveState ActivePerl</a>. Within Visual Studio, open the &quot;gsport.sln&quot; solution file. Set the &quot;gsport&quot; project as the &quot;StartUp Project&quot;, and choose &quot;Build Solution&quot; from the &quot;Build&quot; menu.</p>
<p>In order to compile with Cygwin:</p>
<div>
<pre>cd into the src/ directory
rm vars
ln -s vars_win32 vars
make
</pre></div>
<p>You need to have a ROM file (named ROM, ROM.01, or ROM.03) in the same directory as the resulting executable.</p>
<p>To quit, either click the close box, or force quit the application. You can also middle-click (if you have a 3-button mouse) or Shift-F6 to get the debugger in the terminal window, and then type &quot;q&quot;.</p></div>
<div class="section">
<h3>Mac OS X<a name="Mac_OS_X"></a></h3>
<p>Use the <tt>vars_mac</tt> file:</p>
<div>
<pre>cd into the src/ directory
rm vars; ln -s vars_mac vars
make
</pre></div>
<p>After the <tt>make</tt> has finished, it will create the application <tt>GSport</tt>.</p></div>
<div class="section">
<h3>X86 Linux<a name="X86_Linux"></a></h3>
<p>Use the <tt>vars_x86linux</tt> file:</p>
<div>
<pre>cd into the src/ directory
rm vars; ln -s vars_x86linux vars
make
</pre></div>
<p>The resulting executable is called <tt>gsportx</tt>.</p>
<p>The build scripts assume perl is in your path. If it is somewhere else, you need to edit the &quot;PERL = perl&quot; line in the vars file and make it point to the correct place.</p>
<p>For audio, GSport needs access to <tt>/dev/dsp</tt>. If the permissions do not allow GSport to access <tt>/dev/dsp</tt>, it can fail with a cryptic error message. As root, just do: <tt>chmod 666 /dev/dsp</tt> .</p>
<p>If you do not have the <tt>/dev/dsp</tt> device, GSport will not start unless you tell it to disable audio with the following command-line argument: <tt>./gsportx -audio 0</tt></p></div>
<div class="section">
<h3>PowerPC Linux<a name="PowerPC_Linux"></a></h3>
<p>Use the <tt>vars_linuxppc</tt> file:</p>
<div>
<pre>cd into the src/ directory
rm vars; ln -s vars_linuxppc vars
make
</pre></div>
<p>The build scripts assume perl is in your path. If it is somewhere else, you need to edit the &quot;PERL = perl&quot; line in the vars file and make it point to the correct place.</p>
<p>Audio is currently disabled by default, but you can try turning it on by runnning the command: <tt>gsportx -audio 1</tt>. It sounds horrible, but sounds do come out.</p></div>
<div class="section">
<h3>Raspberry Pi<a name="Raspberry_Pi"></a></h3>
<p>At first, you may want to update/upgrade your base OS:</p>
<ul>
<li><tt>sudo apt-get update</tt></li>
<li><tt>sudo apt-get upgrade</tt></li></ul>
<p>Then, add a line with the value <tt>snd-pcm-oss</tt> to the <tt>/etc/modules</tt> file and reboot to enable sound. Change the permissions to the resulting device <tt>/dev/pcm</tt> (after rebooting): <tt>sudo chmod 666 /dev/pcm</tt></p>
<p>Depending on the version of your OS, the following packages may need to be installed:</p>
<ul>
<li>xfonts-base: <tt>sudo apt-get install xfonts-base</tt></li>
<li>libX11-dev: <tt>sudo apt-get install libX11-dev</tt></li>
<li>libxext-dev: <tt>sudo apt-get install libxext-dev</tt></li>
<li>libpcap-dev: <tt>sudo apt-get install libpcap-dev</tt></li></ul>
<p>Use the <tt>vars_pi</tt> file for compilation:</p>
<div>
<pre>cd into the src/ directory
rm vars; ln -s vars_pi vars
make
</pre></div>
<p>The resulting executable is called <tt>gsportx</tt>.</p></div>
<div class="section">
<h3>Solaris SPARC<a name="Solaris_SPARC"></a></h3>
<p>Use the <tt>vars_solaris</tt> file:</p>
<div>
<pre>cd into the src/ directory
rm vars; ln -s vars_solaris vars
make
</pre></div>
<p>The build scripts assume perl is in your path. If it is somewhere else, you need to edit the &quot;PERL = perl&quot; line in the vars file and make it point to the correct place.</p>
<p>Audio is currently disabled by default, but you can try turning it on by runnning the command: <tt>gsportx -audio 1</tt></p></div>
<div class="section">
<h3>Solaris x86<a name="Solaris_x86"></a></h3>
<p>Use the <tt>vars_x86solaris</tt> file:</p>
<div>
<pre>cd into the src/ directory
rm vars; ln -s vars_x86solaris vars
make
</pre></div>
<p>The build scripts assume perl is in your path. If it is somewhere else, you need to edit the &quot;PERL = perl&quot; line in the vars file and make it point to the correct place.</p>
<p>Audio is currently disabled by default, but you can try turning it on by runnning the command: <tt>gsportx -audio 1</tt></p></div>
<div class="section">
<h3>Other platforms - &quot;C&quot;<a name="Other_platforms_-_C"></a></h3>
<p>If you are porting to an X-windows and Unix-based machine, it should be easy. Start with <tt>vars_x86linux</tt> if you are a little-endian machine, or <tt>vars_linuxppc</tt> if you are big endian. Don't define <tt>-DGSPORT_LITTLE_ENDIAN</tt> unless your processor is little-endian (Alpha, x86, Mac Intel). Mac PPC, Sun, MIPS, HP, Motorola, and IBM Power are big-endian.</p></div>
<div class="section">
<h3>Under Development - Autotools Integration<a name="Under_Development_-_Autotools_Integration"></a></h3>
<p>With the autotools branch, the following sequence will execute the build from the main directory:</p>
<div>
<pre>autoreconf
automake --add-missing
autoheader
autoconf
sh configure
make
</pre></div></div>
<div class="section">
<h3>Extended <a name="Capabilities">Capabilities</a> by Platform<a name="Extended_Capabilities_by_Platform"></a></h3>
<p>All platforms have a common core of capabilities:</p>
<ul>
<li>Base IIgs emulation</li>
<li>Ensoniq sound emulation</li>
<li>Virtual serial ports mapped to real hardware or IP-emulated ports</li>
<li>Text and graphical printers </li></ul>
<p>The table below notes where the various builds differ in the support they have in the code base now for various extended capabilities. Turning the &quot;No&quot; boxes into &quot;Yes&quot; are all opportunities for contributions!</p>
<table border="1" class="bodyTable">
<tr class="a">
<th align="right"><b>Platform</b></th>
<th align="right"><b>Ethernet</b></th>
<th align="right"><b>Drag/Drop Disks</b></th>
<th align="left"><b>Clipboard Paste</b></th></tr>
<tr class="b">
<td align="right">Linux</td>
<td align="right">No</td>
<td align="right">No</td>
<td align="left">No</td></tr>
<tr class="a">
<td align="right">Macintosh</td>
<td align="right">No</td>
<td align="right">No</td>
<td align="left">Yes</td></tr>
<tr class="b">
<td align="right">Windows</td>
<td align="right">Yes</td>
<td align="right">Yes</td>
<td align="left">Yes</td></tr></table></div>
<div class="section">
<h3>Building Graphical Printer Support <a name="Building_Graphical_Printer_Support"></a></h3>
<p>Until graphical parallel printer support is generally integrated into all builds, the following work needs to be done:</p>
<ul>
<li>Install Simple DirectMedia Layer (<a class="externalLink" href="http://www.libsdl.org/">SDL</a>) and Freetype in your build environment - you'll need to link to their libraries </li>
<li>Add the <tt>-DHAVE_SDL</tt> option to your <tt>CCOPTS</tt> and add the same (perhaps to a new) <tt>CPPOPTS</tt> in your <tt>vars</tt> file</li>
<li>Add something like <tt>-I/usr/include/freetype2</tt> and <tt>-I/usr/include/SDL</tt> options to your <tt>CCOPTS</tt> and add the same (perhaps for a new) <tt>CPPOPTS</tt> in your <tt>vars</tt> file to point to the SDL and Freetype include files</li>
<li>Include SDL and Freetype libraries to <tt>EXTRA_LIBS</tt> in your <tt>vars</tt> file (i.e. <tt>EXTRA_LIBS = -lSDL -lfreetype</tt>)</li>
<li>Include the Win32 common dialog library to <tt>EXTRA_LIBS</tt> as part of your final linkage if you're on Windows (i.e. <tt>EXTRA_LIBS = -lSDL -lfreetype -lcomdlg32</tt>)</li>
<li>After building, you'll need the file <tt>parallel.rom</tt> in the same directory that <tt>config.txt</tt> is found</li>
<li>You'll probably want a monospaced TrueType font file easily accessible to add as part of the GSport configuration</li>
<li>Run through the emulated printer <a href="./printer.html">configuration</a> steps</li></ul></div></div>
</div>
</div>
<div class="clear">
<hr/>
</div>
<div id="footer">
<div class="xright">
Copyright &#169; 2010-2017
GSport Contributors.
All Rights Reserved.
</div>
<div class="clear">
<hr/>
</div>
</div>
<!-- Piwik --> <script type="text/javascript"> var pkBaseURL = (("https:" == document.location.protocol) ? "https://sourceforge.net/apps/piwik/gsport/" : "http://sourceforge.net/apps/piwik/gsport/"); document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E")); </script><script type="text/javascript"> try { var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 1);piwikTracker.trackPageView(); piwikTracker.enableLinkTracking();} catch( err ) {} </script><noscript><p><img src="http://sourceforge.net/apps/piwik/gsport/piwik.php?idsite=1" style="border:0" alt=""/></p></noscript><!-- End Piwik Tag -->
</html>