Developing GSport

Information, mostly concerning building, about various platforms:

General Build Instructions

You need to build with a make utility. There's a default Makefile, which should work for nearly any environment. The Makefile includes a file called vars which defines the platform- dependent variables. You need to make vars point to (or be) the appropriate file for your machine.

Win32

There is a different port of KEGS by Chea Chee Keong (akilgard) called KEGS32. It was originally available from http://www.geocities.com/akilgard/kegs32, but geocities has since closed. The Win32 code in GSport is leveraged from KEGS32.

GSport can be compiled with Mingw and Cygwin as well as via standard Microsoft compiler suites.

In order to compile with the standard Microsoft compiler suites, download and install Microsoft Visual Studio Community 2015 from Microsoft's website. The build process requires Perl, such as ActiveState ActivePerl. Within Visual Studio, open the "gsport.sln" solution file. Set the "gsport" project as the "StartUp Project", and choose "Build Solution" from the "Build" menu.

In order to compile with Cygwin:

cd into the src/ directory
rm vars
ln -s vars_win32 vars
make

You need to have a ROM file (named ROM, ROM.01, or ROM.03) in the same directory as the resulting executable.

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 "q".

Mac OS X

Use the vars_mac file:

cd into the src/ directory
rm vars; ln -s vars_mac vars
make

After the make has finished, it will create the application GSport.

X86 Linux

Use the vars_x86linux file:

cd into the src/ directory
rm vars; ln -s vars_x86linux vars
make

The resulting executable is called gsportx.

The build scripts assume perl is in your path. If it is somewhere else, you need to edit the "PERL = perl" line in the vars file and make it point to the correct place.

For audio, GSport needs access to /dev/dsp. If the permissions do not allow GSport to access /dev/dsp, it can fail with a cryptic error message. As root, just do: chmod 666 /dev/dsp .

If you do not have the /dev/dsp device, GSport will not start unless you tell it to disable audio with the following command-line argument: ./gsportx -audio 0

PowerPC Linux

Use the vars_linuxppc file:

cd into the src/ directory
rm vars; ln -s vars_linuxppc vars
make

The build scripts assume perl is in your path. If it is somewhere else, you need to edit the "PERL = perl" line in the vars file and make it point to the correct place.

Audio is currently disabled by default, but you can try turning it on by runnning the command: gsportx -audio 1. It sounds horrible, but sounds do come out.

Raspberry Pi

At first, you may want to update/upgrade your base OS:

  • sudo apt-get update
  • sudo apt-get upgrade

Then, add a line with the value snd-pcm-oss to the /etc/modules file and reboot to enable sound. Change the permissions to the resulting device /dev/pcm (after rebooting): sudo chmod 666 /dev/pcm

Depending on the version of your OS, the following packages may need to be installed:

  • xfonts-base: sudo apt-get install xfonts-base
  • libX11-dev: sudo apt-get install libX11-dev
  • libxext-dev: sudo apt-get install libxext-dev
  • libpcap-dev: sudo apt-get install libpcap-dev

Use the vars_pi file for compilation:

cd into the src/ directory
rm vars; ln -s vars_pi vars
make

The resulting executable is called gsportx.

Solaris SPARC

Use the vars_solaris file:

cd into the src/ directory
rm vars; ln -s vars_solaris vars
make

The build scripts assume perl is in your path. If it is somewhere else, you need to edit the "PERL = perl" line in the vars file and make it point to the correct place.

Audio is currently disabled by default, but you can try turning it on by runnning the command: gsportx -audio 1

Solaris x86

Use the vars_x86solaris file:

cd into the src/ directory
rm vars; ln -s vars_x86solaris vars
make

The build scripts assume perl is in your path. If it is somewhere else, you need to edit the "PERL = perl" line in the vars file and make it point to the correct place.

Audio is currently disabled by default, but you can try turning it on by runnning the command: gsportx -audio 1

Other platforms - "C"

If you are porting to an X-windows and Unix-based machine, it should be easy. Start with vars_x86linux if you are a little-endian machine, or vars_linuxppc if you are big endian. Don't define -DGSPORT_LITTLE_ENDIAN unless your processor is little-endian (Alpha, x86, Mac Intel). Mac PPC, Sun, MIPS, HP, Motorola, and IBM Power are big-endian.

Under Development - Autotools Integration

With the autotools branch, the following sequence will execute the build from the main directory:

autoreconf
automake --add-missing
autoheader
autoconf
sh configure
make

Extended Capabilities by Platform

All platforms have a common core of capabilities:

  • Base IIgs emulation
  • Ensoniq sound emulation
  • Virtual serial ports mapped to real hardware or IP-emulated ports
  • Text and graphical printers

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 "No" boxes into "Yes" are all opportunities for contributions!

Platform Ethernet Drag/Drop Disks Clipboard Paste
Linux No No No
Macintosh No No Yes
Windows Yes Yes Yes

Building Graphical Printer Support

Until graphical parallel printer support is generally integrated into all builds, the following work needs to be done:

  • Install Simple DirectMedia Layer (SDL) and Freetype in your build environment - you'll need to link to their libraries
  • Add the -DHAVE_SDL option to your CCOPTS and add the same (perhaps to a new) CPPOPTS in your vars file
  • Add something like -I/usr/include/freetype2 and -I/usr/include/SDL options to your CCOPTS and add the same (perhaps for a new) CPPOPTS in your vars file to point to the SDL and Freetype include files
  • Include SDL and Freetype libraries to EXTRA_LIBS in your vars file (i.e. EXTRA_LIBS = -lSDL -lfreetype)
  • Include the Win32 common dialog library to EXTRA_LIBS as part of your final linkage if you're on Windows (i.e. EXTRA_LIBS = -lSDL -lfreetype -lcomdlg32)
  • After building, you'll need the file parallel.rom in the same directory that config.txt is found
  • You'll probably want a monospaced TrueType font file easily accessible to add as part of the GSport configuration
  • Run through the emulated printer configuration steps