From 8193b7c4d5c161ca67a528338329bb7949837682 Mon Sep 17 00:00:00 2001 From: david-schmidt <1110325+david-schmidt@users.noreply.github.com> Date: Thu, 5 Oct 2017 12:59:40 -0400 Subject: [PATCH] Host documentation at Github --- doc/web/.gitignore | 1 + docs/appletalk.html | 148 ++++++++ docs/css/maven-base.css | 155 ++++++++ docs/css/maven-theme.css | 141 +++++++ docs/css/print.css | 7 + docs/css/site.css | 1 + docs/developing.html | 251 +++++++++++++ docs/ethernet.html | 123 ++++++ docs/history.html | 136 +++++++ docs/images/collapsed.gif | Bin 0 -> 53 bytes docs/images/download.png | Bin 0 -> 17766 bytes docs/images/expanded.gif | Bin 0 -> 52 bytes docs/images/external.png | Bin 0 -> 230 bytes docs/images/gsport.png | Bin 0 -> 34404 bytes docs/images/icon.png | Bin 0 -> 18964 bytes docs/images/icon_error_sml.gif | Bin 0 -> 1010 bytes docs/images/icon_info_sml.gif | Bin 0 -> 606 bytes docs/images/icon_success_sml.gif | Bin 0 -> 990 bytes docs/images/icon_warning_sml.gif | Bin 0 -> 576 bytes docs/images/logos/build-by-maven-black.png | Bin 0 -> 2294 bytes docs/images/logos/build-by-maven-white.png | Bin 0 -> 2260 bytes docs/images/logos/maven-feather.png | Bin 0 -> 3330 bytes docs/images/newwindow.png | Bin 0 -> 220 bytes docs/images/printer0.png | Bin 0 -> 9867 bytes docs/images/printer1.png | Bin 0 -> 6742 bytes docs/images/printer2.png | Bin 0 -> 10368 bytes docs/images/printer3.png | Bin 0 -> 10401 bytes docs/images/printer4.png | Bin 0 -> 6677 bytes docs/images/printer5.png | Bin 0 -> 10258 bytes docs/images/printer6.png | Bin 0 -> 10489 bytes docs/images/printer7.png | Bin 0 -> 16990 bytes docs/images/printerI1.png | Bin 0 -> 8837 bytes docs/images/printerI2.png | Bin 0 -> 7127 bytes docs/index.html | 111 ++++++ docs/operating.html | 417 +++++++++++++++++++++ docs/printer.html | 155 ++++++++ 36 files changed, 1646 insertions(+) create mode 100644 doc/web/.gitignore create mode 100644 docs/appletalk.html create mode 100644 docs/css/maven-base.css create mode 100644 docs/css/maven-theme.css create mode 100644 docs/css/print.css create mode 100644 docs/css/site.css create mode 100644 docs/developing.html create mode 100644 docs/ethernet.html create mode 100644 docs/history.html create mode 100644 docs/images/collapsed.gif create mode 100644 docs/images/download.png create mode 100644 docs/images/expanded.gif create mode 100644 docs/images/external.png create mode 100644 docs/images/gsport.png create mode 100644 docs/images/icon.png create mode 100644 docs/images/icon_error_sml.gif create mode 100644 docs/images/icon_info_sml.gif create mode 100644 docs/images/icon_success_sml.gif create mode 100644 docs/images/icon_warning_sml.gif create mode 100644 docs/images/logos/build-by-maven-black.png create mode 100644 docs/images/logos/build-by-maven-white.png create mode 100644 docs/images/logos/maven-feather.png create mode 100644 docs/images/newwindow.png create mode 100644 docs/images/printer0.png create mode 100644 docs/images/printer1.png create mode 100644 docs/images/printer2.png create mode 100644 docs/images/printer3.png create mode 100644 docs/images/printer4.png create mode 100644 docs/images/printer5.png create mode 100644 docs/images/printer6.png create mode 100644 docs/images/printer7.png create mode 100644 docs/images/printerI1.png create mode 100644 docs/images/printerI2.png create mode 100644 docs/index.html create mode 100644 docs/operating.html create mode 100644 docs/printer.html diff --git a/doc/web/.gitignore b/doc/web/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/doc/web/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/docs/appletalk.html b/docs/appletalk.html new file mode 100644 index 0000000..3222341 --- /dev/null +++ b/docs/appletalk.html @@ -0,0 +1,148 @@ + + + + + + GSport - GSport AppleTalk + + + + + + + + + + +
+ +
+
+
+
+

AppleTalk Emulation and Bridging for GSport

+

GSport now emulates the AppleTalk networking hardware found in the real Apple IIgs and bridges the networking packets to EtherTalk v2. GSport supports file sharing, printer sharing, and network booting features using Apple's original AppleTalk software, such as that shipped with GS/OS 6.0.1. Note that the original AppleTalk software is not directly compatible with modern software, and you will need a compatible file server, such as netatalk or A2SERVER.

+
+

Introduction

+

The Apple IIgs shipped with a fantastic but often overlooked feature -- AppleTalk networking. AppleTalk is a low-cost, easy-to-maintain network technology that enables network booting, file sharing, and printer sharing between your Apple IIgs, Workstation Card equipped Apple IIe, and classic Macintosh machines. As of March 2014, GSport is the first modern emulator with support for AppleTalk. Now, you can just "drag and drop" files between your machines without thinking about disk images, FTP, or serial cables. You can develop new software with an emulator and quickly test on real hardware. You don't need to think much about version control. Rather, you can update the file once on your file server, and all of your emulated and real machines have the new file. You can download the latest Apple II software and immediately run it.

+

Beware that Apple changed the meaning of the word "AppleTalk." Originally, AppleTalk implied a physical layer using 3-pin MiniDIN shielded cables connected in a bus topology. As other physical layers such as Ethernet and TokenTalk became more affordable, Apple defined new terms. The term AppleTalk no longer implied MiniDIN cabling. Rather, AppleTalk became the overall term for Apple's approach to networking. LocalTalk refers to AppleTalk using the original MiniDIN physical and link layers. EtherTalk refers to AppleTalk using the Ethernet link and physical layers. TokenTalk refers to AppleTalk using the TokenRing link and physical layers. As the Internet became popular, Apple revised their approach to networking to use TCP/IP for the network and transport layers. The "Internet modernized" AppleTalk (AppleTalk IP) replaces many key services of the older AppleTalk and is incompatible with the previous incarnation of AppleTalk. The IIgs only supports AppleTalk using LocalTalk. The GSport emulation converts LocalTalk to EtherTalk but does not support AppleTalk over IP.

+
+

Using It

+

First, you need an AppleShare-compatible server. A classic Mac or "netatalk" server could provide this function. For simplicity, I recommend Ivan Drucker's A2SERVER (http://appleii.ivanx.com/a2server/), which is a pre-configured and easy-to-use package with "netatalk" and other useful tools. You may run A2SERVER in a VirtualBox virtual machine, on an existing Linux server, or on a Raspberry Pi. File and print sharing functions built-in to modern computers are not directly compatible.

+

Second, you need GSport 0.3 or later with ROM03 running on a Windows or Linux (x86 or Raspberry Pi) machine. Start GSport and press F4 to access the configuration menu. If necessary, select a ROM03 image. Select the "Ethernet Card Configuration" menu option. Change "AppleTalk Bridging" to "On". Change "Use Interface Number" to select the network where you have attached your AppleShare server or A2SERVER. Exit the GSport configuration menu.

+

You may run GSport and netatalk (or A2SERVER) on the same machine:

+

On Windows:

+
    +
  1. Configure A2SERVER in a VirtualBox virtual machine. The A2SERVER project provides a pre-configured virtual machine as well as manual installation directions.
  2. +
  3. Install the "Microsoft Loopback Adapter" following directions from Microsoft. See http://blogs.msdn.com/b/ukvsts/archive/2009/02/27/adding-the-ms-loopback-adapter-on-windows-7.aspx and http://technet.microsoft.com/en-us/library/cc708322%28v=ws.10%29.aspx.
  4. +
  5. In the VirtualBox Manager, open "Settings" for the A2SERVER virtual machine. Select the "Network" section. Change the "Attached to" option to "Bridged Adapter" and "Name" to "Microsoft Loopback Adapter". Under the "Advanced" sub-section, make sure "Promiscuous Mode" is "Allow All".
  6. +
  7. Restart A2SERVER.
  8. +
  9. Restart GSport. Under the "Ethernet Card Configuration" menu, change "Use Interface Number" to select the "MS LoopBack Driver".
+

On Linux:

+

(Directions are forthcoming.)

+

Finally, party like it is 1989. Your GS is now connected to the AppleTalk network. Refer to Apple's documentation included with GS/OS System 5 and 6 for further directions.

+
+

Internal Overview

+

GSport with AppleTalk networking is functionally equivalent to a real Apple IIgs with a LocalTalk/EtherTalk bridge. Originally, AppleTalk employed the "LocalTalk" physical layer, which requires special hardware not found on modern computers. GSport converts LocalTalk to EtherTalk, a somewhat more modern physical layer using familiar Ethernet cabling. Internally, GSport emulates the Zilog SCC chip in the IIgs, communicates with unmodified Apple-provided networking software built-in to the IIgs and GS/OS, and converts the network traffic to EtherTalk.

+
+

Limitations

+
    +
  • The IIgs hardware and GSport only support AppleTalk using LocalTalk. Neither are compatible with file or print sharing functions in modern computers. Instead, run a compatible network server, such as A2SERVER, Netatalk 2.x, or AppleShare.
  • +
  • A wireless network may not work because many wireless adapters drop EtherTalk packets. Instead, use a wired Ethernet connection.
  • +
  • AppleTalk bridging has been tested with System 6.0.1 and System 5.0.2 on ROM03. Booting from a local disk or from the network works. Other ROM revisions and system software may not work.
  • +
  • The SCC baud rate is incorrect because the GSport does not emulate line coding. Still, emulated network speed should be close to the 230.4kbps speed of a real LocalTalk network.
  • +
  • The bridge supports Windows using Visual Studio, Cygwin, and Linux (x86 and Raspberry Pi). Other platforms should be straightforward, but I do not have a suitable build environment.
  • +
  • The bridge requires an AppleTalk router on the network. The bridge should work in both a routerless and router-filled network, and future revisions will remove this limitation.
  • +
  • The bridge works with simple networks consisting of a single network on a single segment with a single zone. The bridge should function with all valid network configurations and hardware routers, and future revisions will remove this limitation. Other configurations might not work, and I welcome reports.
  • +
  • The bridge implements the non-extended method for acquiring the network number. Interoperability would likely be better using the extended method, but this method is much more complex.
+
+

Credits

+

Thanks to Gursharan Sidhu, Richard Andrews, and Alan Oppenheimer for creating and documenting AppleTalk.

+

Thanks to Kent Dickey and the GSport contributors for GSport and the original SCC emulation.

+

Thanks to David Schmenk for testing, encouragement, and Raspberry Pi support.

+

Thanks to Ivan Drucker for A2SERVER.

+

Thanks to the Gus emulator engineers for showing that AppleTalk emulation is possible.

+

Thanks to James Littlejohn for discussions about extending the capabilities of the Apple IIgs.

+
+
+
+
+
+ + + diff --git a/docs/css/maven-base.css b/docs/css/maven-base.css new file mode 100644 index 0000000..53153e9 --- /dev/null +++ b/docs/css/maven-base.css @@ -0,0 +1,155 @@ +body { + margin: 0px; + padding: 0px; +} +img { + border:none; +} +table { + padding:0px; + width: 100%; + margin-left: -2px; + margin-right: -2px; +} +acronym { + cursor: help; + border-bottom: 1px dotted #feb; +} +table.bodyTable th, table.bodyTable td { + padding: 2px 4px 2px 4px; + vertical-align: top; +} +div.clear{ + clear:both; + visibility: hidden; +} +div.clear hr{ + display: none; +} +#bannerLeft, #bannerRight { + font-size: xx-large; + font-weight: bold; +} +#bannerLeft img, #bannerRight img { + margin: 0px; +} +.xleft, #bannerLeft img { + float:left; +} +.xright, #bannerRight { + float:right; +} +#banner { + padding: 0px; +} +#banner img { + border: none; +} +#breadcrumbs { + padding: 3px 10px 3px 10px; +} +#leftColumn { + width: 170px; + float:left; + overflow: auto; +} +#bodyColumn { + margin-right: 1.5em; + margin-left: 197px; +} +#legend { + padding: 8px 0 8px 0; +} +#navcolumn { + padding: 8px 4px 0 8px; +} +#navcolumn h5 { + margin: 0; + padding: 0; + font-size: small; +} +#navcolumn ul { + margin: 0; + padding: 0; + font-size: small; +} +#navcolumn li { + list-style-type: none; + background-image: none; + background-repeat: no-repeat; + background-position: 0 0.4em; + padding-left: 16px; + list-style-position: outside; + line-height: 1.2em; + font-size: smaller; +} +#navcolumn li.expanded { + background-image: url(../images/expanded.gif); +} +#navcolumn li.collapsed { + background-image: url(../images/collapsed.gif); +} +#navcolumn li.none { + text-indent: -1em; + margin-left: 1em; +} +#poweredBy { + text-align: center; +} +#navcolumn img { + margin-top: 10px; + margin-bottom: 3px; +} +#poweredBy img { + display:block; + margin: 20px 0 20px 17px; +} +#search img { + margin: 0px; + display: block; +} +#search #q, #search #btnG { + border: 1px solid #999; + margin-bottom:10px; +} +#search form { + margin: 0px; +} +#lastPublished { + font-size: x-small; +} +.navSection { + margin-bottom: 2px; + padding: 8px; +} +.navSectionHead { + font-weight: bold; + font-size: x-small; +} +.section { + padding: 4px; +} +#footer { + padding: 3px 10px 3px 10px; + font-size: x-small; +} +#breadcrumbs { + font-size: x-small; + margin: 0pt; +} +.source { + padding: 12px; + margin: 1em 7px 1em 7px; +} +.source pre { + margin: 0px; + padding: 0px; +} +#navcolumn img.imageLink, .imageLink { + padding-left: 0px; + padding-bottom: 0px; + padding-top: 0px; + padding-right: 2px; + border: 0px; + margin: 0px; +} diff --git a/docs/css/maven-theme.css b/docs/css/maven-theme.css new file mode 100644 index 0000000..c982168 --- /dev/null +++ b/docs/css/maven-theme.css @@ -0,0 +1,141 @@ +body { + padding: 0px 0px 10px 0px; +} +body, td, select, input, li{ + font-family: Verdana, Helvetica, Arial, sans-serif; + font-size: 13px; +} +code{ + font-family: Courier, monospace; + font-size: 13px; +} +a { + text-decoration: none; +} +a:link { + color:#36a; +} +a:visited { + color:#47a; +} +a:active, a:hover { + color:#69c; +} +#legend li.externalLink { + background: url(../images/external.png) left top no-repeat; + padding-left: 18px; +} +a.externalLink, a.externalLink:link, a.externalLink:visited, a.externalLink:active, a.externalLink:hover { + background: url(../images/external.png) right center no-repeat; + padding-right: 18px; +} +#legend li.newWindow { + background: url(../images/newwindow.png) left top no-repeat; + padding-left: 18px; +} +a.newWindow, a.newWindow:link, a.newWindow:visited, a.newWindow:active, a.newWindow:hover { + background: url(../images/newwindow.png) right center no-repeat; + padding-right: 18px; +} +h2 { + padding: 4px 4px 4px 6px; + border: 1px solid #999; + color: #900; + background-color: #ddd; + font-weight:900; + font-size: x-large; +} +h3 { + padding: 4px 4px 4px 6px; + border: 1px solid #aaa; + color: #900; + background-color: #eee; + font-weight: normal; + font-size: large; +} +h4 { + padding: 4px 4px 4px 6px; + border: 1px solid #bbb; + color: #900; + background-color: #fff; + font-weight: normal; + font-size: large; +} +h5 { + padding: 4px 4px 4px 6px; + color: #900; + font-size: normal; +} +p { + line-height: 1.3em; + font-size: small; +} +#breadcrumbs { + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; + background-color: #ccc; +} +#leftColumn { + margin: 10px 0 0 5px; + border: 1px solid #999; + background-color: #eee; +} +#navcolumn h5 { + font-size: smaller; + border-bottom: 1px solid #aaaaaa; + padding-top: 2px; + color: #000; +} + +table.bodyTable th { + color: white; + background-color: #bbb; + text-align: left; + font-weight: bold; +} + +table.bodyTable th, table.bodyTable td { + font-size: 1em; +} + +table.bodyTable tr.a { + background-color: #ddd; +} + +table.bodyTable tr.b { + background-color: #eee; +} + +.source { + border: 1px solid #999; +} +dl { + padding: 4px 4px 4px 6px; + border: 1px solid #aaa; + background-color: #ffc; +} +dt { + color: #900; +} +#organizationLogo img, #projectLogo img, #projectLogo span{ + margin: 8px; +} +#banner { + border-bottom: 1px solid #fff; +} +.errormark, .warningmark, .donemark, .infomark { + background: url(../images/icon_error_sml.gif) no-repeat; +} + +.warningmark { + background-image: url(../images/icon_warning_sml.gif); +} + +.donemark { + background-image: url(../images/icon_success_sml.gif); +} + +.infomark { + background-image: url(../images/icon_info_sml.gif); +} + diff --git a/docs/css/print.css b/docs/css/print.css new file mode 100644 index 0000000..f09d546 --- /dev/null +++ b/docs/css/print.css @@ -0,0 +1,7 @@ +#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn { + display: none !important; +} +#bodyColumn, body.docs div.docs { + margin: 0 !important; + border: none !important +} diff --git a/docs/css/site.css b/docs/css/site.css new file mode 100644 index 0000000..055e7e2 --- /dev/null +++ b/docs/css/site.css @@ -0,0 +1 @@ +/* You can override this file with your own styles */ \ No newline at end of file diff --git a/docs/developing.html b/docs/developing.html new file mode 100644 index 0000000..93d68fa --- /dev/null +++ b/docs/developing.html @@ -0,0 +1,251 @@ + + + + + + GSport - Developing GSport + + + + + + + + + + +
+ +
+
+
+
+

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!

+ + + + + + + + + + + + + + + + + + + + +
PlatformEthernetDrag/Drop DisksClipboard Paste
LinuxNoNoNo
MacintoshNoNoYes
WindowsYesYesYes
+
+

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
+
+
+
+
+
+ + + diff --git a/docs/ethernet.html b/docs/ethernet.html new file mode 100644 index 0000000..00c9e0d --- /dev/null +++ b/docs/ethernet.html @@ -0,0 +1,123 @@ + + + + + + GSport - GSport Ethernet + + + + + + + + + + +
+ +
+
+
+
+

GSport Emulated Ethernet

+

The Uthernet (TFE) support in GSport was made possible by implementing the GPL source written by Spiro Trikaliotis for the Vice emulator. This version of GSport contains the latest code from VICE 2.2.

+
+

Details

+

Right now Uthernet emulation only works under Windows. Support for emulation under OS X and Linux is planned. In order to use Uthernet emulation, you must install WinPCap and have a wired (not wireless) Ethernet connection on the host computer.

+
+

GSport Setup

+

After GSport starts, press F4 to enter the text based menu and select the "Ethernet Card Configuration" option.

+

By default, Uthernet emulation is turned off. Enable it by setting "Uthernet Card in Slot 3" to "On".

+

Next, select the host interface you wish to use to communicate with the outside world. A list of available interfaces is provided on screen. For most the default of interface "0" is correct.

+

Return back to the main menu and save your configuration for good measure. Due to limitations, you must exit and restart GSport for the changes you made to take effect.

+
+

GS/OS Setup

+

In order to use TCP/IP connectivity under GS/OS, you need to install the latest version of Marinetti and its Uthernet Link Layer. Ewen Wannop has prepared a ready-made hard drive image with everything pre-installed, and that image is available in a version tuned specifically to GSport's Uthernet emulation. Download and use the disk image in the "GSport Internet Starter Kit":

+

http://sourceforge.net/projects/gsport/files/Emulator Software Images/

+
+

8-bit Applications

+

Uthernet enabled versions of Contiki and ADTPro work fine with GSport. Other 8-bit software should also work but are untested.

+
+
+
+
+
+ + + diff --git a/docs/history.html b/docs/history.html new file mode 100644 index 0000000..05e9120 --- /dev/null +++ b/docs/history.html @@ -0,0 +1,136 @@ + + + + + + GSport - GSport History + + + + + + + + + + +
+ +
+
+
+
+

GSport Release History

+
+

Version 0.31 - 6/22/2014

+

New functionality:

+
    +
  • Added AppleTalk networking emulation with bridging to EtherTalk
  • +
  • Added clipboard text paste capability (OSX, Windows)
  • +
  • Emulated serial ports are individually configurable as either IP or passthrough to real hardware ports
  • +
  • Added Imagewriter LQ printer emulation
+

Bug fixes:

+
    +
  • IN#1 and IN#2 now trigger the incoming IP port to listen when using IP simulated serial ports; previously, only PR#1 or PR#2 did
  • +
  • Fixed crash when parallel.rom is missing
  • +
  • Fix for real joysticks: unless the joystick is moving, gsport sets the values to zero
+
+

Version 0.2a - 2/29/2012

+

New functionality:

+
    +
  • Added text-based virtual printer output for all platforms
  • +
  • Added OSX drag/drop "installer" disk image (.dmg)
  • +
  • Disk images will automatically mount and boot when specified as the last argument on the command line, or when invoked from the Windows shell (file->open as GSport.exe)
+

Bug fixes:

+
    +
  • Win32: Added sound and native printer libraries, mistakenly omitted
  • +
  • OSX: Fixed some "endianness" troubles with the fat binaries
+
+

Version 0.1 - 1/6/2011 released as interim build

+

New functionality:

+
    +
  • Added Uthernet support in slot 3. Code comes from the VICE emulator.
  • +
  • Added virtual printer support in slot 1. Code comes from DOSBox emulator.
+
+
+
+
+
+ + + diff --git a/docs/images/collapsed.gif b/docs/images/collapsed.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e710840640c1bfd9dd76ce7fef56f1004092508 GIT binary patch literal 53 ycmZ?wbhEHbWM^P!XkdT>#h)yUTnvm1Iv_qshJlI4r7uBZ*YkPFU8d4p4Aua}2?(?R literal 0 HcmV?d00001 diff --git a/docs/images/download.png b/docs/images/download.png new file mode 100644 index 0000000000000000000000000000000000000000..6a1cc9a8d3090439e99232833ca50c881e01567a GIT binary patch literal 17766 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 literal 0 HcmV?d00001 diff --git a/docs/images/expanded.gif b/docs/images/expanded.gif new file mode 100644 index 0000000000000000000000000000000000000000..0fef3d89e0df1f8bc49a0cd827f2607c7d7fd2f0 GIT binary patch literal 52 xcmZ?wbhEHbWM^P!XkdT>#h)yUTnvm1Iv_qshJlH@g}+fUi&t{amUB!D)&R0C2fzRT literal 0 HcmV?d00001 diff --git a/docs/images/external.png b/docs/images/external.png new file mode 100644 index 0000000000000000000000000000000000000000..3f999fc88b360074e41f38c3b4bc06ccb3bb7cf8 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^+(699!3-oX?^2ToQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%@dWsUxR#cd{{R1fCIbVIy!atN z8e~{WkY6y6%iy53@(Yk3;OXKRQgJIOfsI*BO@UFsfhWLBc>*(#PB?Jn2*(o!76E4F z2oaVU3``tH+Kgs0GI5+@Tg}d)z%jd%F@?{8!SRZ5b1yT80-FZIMn)zc2Ca66y`pzY R*nwsL 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
    `nEdO65NdQMo0x4|?5?gtU^tdLB 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

    &8L5hqaGM_BxT@z25YS9B%m}{^aSX$+ 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 SDgZpziNVv=&t;ucLK6T9@}lPe literal 0 HcmV?d00001 diff --git a/docs/images/icon_error_sml.gif b/docs/images/icon_error_sml.gif new file mode 100644 index 0000000000000000000000000000000000000000..61132ef2b01806f6122c31d173c98e01e499b9a0 GIT binary patch literal 1010 zcmZ?wbhEHbJMCn#OVEqF*oew~oaAu*+mN;-=y?VHT3tIe$XQqrDo-uB_a z!$aaK`z6))OKGn34?nwc^SuifkIL#EmDgV_qjg-#8v*0u4q4%1moUw{LZ54UeCgzNF^jX`uv-XK+9g@yFrG9?@ z!9&5&Tgk*j(b!GF&{N4I-Owl3GNQ;Kslp@APSw&&&ux9d>WxL~{EYoKm2KHvv3+ax zZUYB?Ae*8JnchZheXeEaa>@87?_fB*jV>(`erUx0B6j@wa!KnN)QWMO1rn9HC8 zQU}Tt3>@bftT|;oHYhlHH8T8tc{qL2LBC1&wnQeg^-S05<#H=J%;q~&KX!$OXH$lP zifQJ#9>L8|xhAVRHT-xPa*}7JK>(A*!AmL!CQC~j>707p+C5b#ib-SZ5@wfn#-0y8 zor_pb3M^%mkXhlduwjw4dk@RWhYZ<*tSUAV9x3eYyi#^d39lH{872xT#>g14FgCZb z+Lvv}DClhGVU*`8y(Qe}(9I>Lw<6->0~Q`zX3oMH2272dBARI`0wDzxS_G8b_H+a` TZ#n2*^y*Bf^Krq04Gh)*dSnrT literal 0 HcmV?d00001 diff --git a/docs/images/icon_info_sml.gif b/docs/images/icon_info_sml.gif new file mode 100644 index 0000000000000000000000000000000000000000..c6cb9ad7ce438a798426703e86a7ffc197d51dbb GIT binary patch literal 606 zcmZ?wbhEHb!Rj)7jHhhdgsOUdoQoueZi?7 z>>gViTe&E#V48n=mrru5S3;v}WQB8hiDz7$TU2Fg8RZkU)J)l4H+4sO@7jjxJ4?G(<~7c1nYFul=C0P+d#d`@bj{yi z-npcE!T#Qb2PP~z)H;3B%r(bntUlH>Y2~CvyV|C%UbyM>vTf&9?!2&e&!siHFV0_c zVB`KP8}?n^dg$7Yqc`@PxOMQ%-NWbZ9Xfk=)1K2OFF!hV;r{6>kIr6ua^~ve%eS9j zy7lbD`I|4_et!J??bq+WzI^-n`RfmdkOIfh!pgqYwSCK`t~@$#!^!1aj_y2mzyI{@?vuB79>2N$==JkApPs$`_~ygc*YCf)diVLp z{pXKfy#M&+`?nvze*gIk#Q*;N0|qHLXbBUFKUo+V7>XElKuSSz!oa?}p{S|3rL`#` zEj=M8CWV#D$GthOu#hRgfH^NPHz`Z6or!6tudIJkhF|)EqL_SUmH;#E=*;vU)ut4d z*}1MJ+3|6yK5|W*0YQlwY}}E_93D;*P3)($(!#iHyj&dYc$?gAB*f@)n?~7Mn)5Ze zB*b!gs&gB@F*e|Da`5(ac688Lp~TGAEh5PBlHo`4aV}w%hy?;49h(#+>`NXTD0Bjy;4ci{C-1K14rU#4Xoa9{m6qopA9n0cn|!>ecYkij zwyX=!4*mH3EoqLqSGiVbyFqxD(bS8XSDu{6U1jZO70Ic@{~t&7=B^ zBD)NOoAkU&Gy^LQJ5PtV?u{&65}4ZUmfYbweP{LTy^YnAGv=AGa7*6wj}%~b0?7r5!@qH7P%p1*$L z@#{ODxoUwG+WsY)zWExj-aqxpQS(e!bx&6L`u)?tfB$~}{{8*?cVO&*V`-G2NeC$Z zWMO1r=w{FXnGVVm3>>=|#5rX=HY{-DP?VFNPL-%m%>B+*~5-k^-+4*MLFr;tQ0}^rlS-^!^Q`Mx1hrB$jwn&hk~Xk=#Nl+_9Nu|Y$D G!5RQ;-6)O# literal 0 HcmV?d00001 diff --git a/docs/images/icon_warning_sml.gif b/docs/images/icon_warning_sml.gif new file mode 100644 index 0000000000000000000000000000000000000000..873bbb52cb9768103c27fbb9a9bac16ac615fce5 GIT binary patch literal 576 zcmZ?wbhEHbB!Sy%bj7w z8LP{2I!WYbmF&-Ixi?j6tD|K1XR2M#l>Aw*aXL%wXS3nYW}{zi=4WzsU5r%E6qx+# za{AThd85YVOsT`KDUrWsBtGknIa3>Sy(4;AS@f^Dxt>-=XPXm#FD(1Lr2hBv=9?3X zZS^!XrNw@)>eiN((2|w-y>{aB1+99DGMA?}+UTggT+(Z*rf8+5x~aWVOGcurtl;&U zIa)H3I&#vwvQjJBn`YHj9iKlB7`)(M#!e{yWMO1rC}Yq8NrU2qfqia6SyOXMYa1sM zM_a34eqyRfcQbQJY;^IYGTuzaxglKLqNQEA}OiQec+sQ#rUUjLqg_MpsPmY43 zsgmVV8EHK$eV-B~6*UcAW2+w%1e4o&9#aAczLGF}PmMg|6J0Ey4q A)Bpeg literal 0 HcmV?d00001 diff --git a/docs/images/logos/build-by-maven-black.png b/docs/images/logos/build-by-maven-black.png new file mode 100644 index 0000000000000000000000000000000000000000..919fd0f66a7f713920dd7422035db1c9d484351d GIT binary patch literal 2294 zcmVKOG`!VuDc=fnx$+R6#>c^>b&wcOS?|$!`a}U6ptjU_J zlBA}l*3{J0)YMd0R~Hr*dU$xO^ie1jhYlTLS+=C4#MRYRCX#twGUSD6Il$6AA+=UAlkY(ZF;m4037Yc>v&!1mPsNXdliHV74&z>zUEv=}iC@U)i zfc^XTJ3BiAKvYyzczAd~K){|od(ip)`}f`5-HnZnv$L~Hzqq=(y7Kb!>gsAwPfu@e z@3gcu0LabFC4?{xBNPh18Fpy3+Tr2hfq{Yc_V$w}PjVdhGtMTH$zU){PfznaPmK)? z4KH52=;-KZX=#a#jlFZ{PF7YH!!Q{c8Taqs=Xt)UsK{tE{@>vc{2Hgh!NL0adH}e0 z@19Df^78Tm0ES@zz{SO7Zf@=upJ1_AP_bIAgpih&mWqmsojZ4GG#a&9{f)&Au~_Wm z<0F^L4;(mPHk)-io!M*-3JMa7#VIK%EBy%}_$g6IPEM9cBvPp~K0f}{t5+6_rMbEJ z(xpqcZ{G$0j^p<2+vnuu^bN3MdU`rLJ3Br;9ss7MrVbuFxUjHLQBhGX6WriQ5|M*_w z@5bUDdV71dTCG;AO-@dx@4a~OA{y)K>k+2N$jAo|9?w z?b_+nr`2k;!{M;o?Qh<^`R=>#RtFA0KR<`Vfh)Li;|5+X!otGn&U<@%H*VaBDU;Gf zr_<5=()7Iqfmk>yLj`}084`48Zf?d|M~)mpOHfeI{QNv2WMN?;Dk=&9GBY#LVzb%$ z`};Aq6GAK&OK4~)&U*g*IT{xh7M8K~%9SgtQ-;OG#ZeC5ym=F=X|vf(9h#b&K7RZN z05+S=X0xGjU|@g-%ePwl!GC`7t=5VDruDp`t9rXwq=tAb*88KQqo~N`a#V_oixKzA z%F4dJzL1cRy1F{CSUfW`qfjWeZ{Hpm7>H$yNF>V6&c<>vGBOgU_w@7}J9g~o(WA6z z#sgc0B0VlH4i&T6{Pyiz)FUDys6$s*7rnXCi!3z)!0DGJ5eITHyM2Q|E@qtti{QRD z*nbiZg+h^&lY>QINl6I+oH}*N-Q67kYHMqqoSd*@fE67^695Pa36aTU0HD+95)%{g zFw)c0Gcqy&K&4WxG906$qk6p_b=txpgmiazqaGF(M)NU+!{3cPsc^{*a`Ja$nXfZ@ zhsL%N4whw0OG`2M6&4oG&CQ8KBHBPHC@3f>C|I^a>__(qFp!^RU zV`F0uhl6EVxm><`_ijATmoHz|)ztxjL?XdmSuB<(Po5A$mM!w}C3kdS~ef}W>dub-Hhz&fI`vJ#oXvTST@?6qsxN=r)tz|+%n^XARiL+I)0 z!HGL|?4Z?OC@z>ppO+fmk zEDIk1FgrV2R8&O&@;qNwR)+h@$;nZx)dqvXVzG2}b>-#d_4oHa!G&Dp59OYMg zd;9A2I}{29&+|ObzkB!Y^XJcKjE;^*({SomlT)I^E^_90Q{xPG;bvU;38ml zcng&pTZhKxAmAX-{xuvUBO`bZu-omWrKK8;X6fkl>(@`5I6;GyySuwkDCBv*tE;QE zwH1kg)0Ijk1~{Qms8A@Vadob6a=9D}VUx-9>C-1l1S|^dcDq`w#&Z*k#hB*+K%>#n z=0$)zo8T)X1Ujc}V+Omw8!O@%0GKp7%(fp1ER{;7QYogYiHQlT)w*&q5{X2iP;Ak literal 0 HcmV?d00001 diff --git a/docs/images/logos/build-by-maven-white.png b/docs/images/logos/build-by-maven-white.png new file mode 100644 index 0000000000000000000000000000000000000000..7d44c9c2e5742bdf8649ad282f83208f1da9b982 GIT binary patch literal 2260 zcmV;_2rKuAP)4hTLUyOQ{PVbVY5&Y3g!&hN~bnR7}ZgkXUt ziC%zU0gf+&kEv>t|d$x|zXw1mS0D%1b{8z7DF%0wW-8(XBFc`A3vVI|O z^!N97baWg(eE86zLn4uA_wL=Zb@+UKU|=8sJb3V6XlSUctSl!dhm4xd=KJ^W|8h2q zR4NS%3yX+|NKQ`f?d=7Cf`Wo)&z=E5TU%REQIXYZefjbwRvsQ6zIyfQojZ3l8V#{v zv)R(q)39Vr2GBPsa+apV2%%fIZY3ln0Kl+1Y8c*(xe3X6sWFH9kH*UDDLl)ZN`}u~;f9D%P!A2LK5P2`MQl z(b3TuDUC++_U+qm01k;n!Z1u+TwGjS+}X2d^Yil+3Pn;B-~q z{Qdm_z{kf&EEb1^gw)j3R904!x}#RBj~+c578Vv16olc}xpQZGd;7k9`>@WHD_2M| z{%VB2fNVCK&1U^_rTW_bx`C@MK&%ZR^ybZ*=;&yb zN);0mV>X+~OA`|lRVtNAr7A8i#zL)DyJycHxm+$5izO0?QmM?$%p@6le0*H3R;yI1 z=;-LCrlu1oPI!8HIypHhmCA~Wig|;>WHON!GbSbmcN`jxhJ=GssnlpRR;zVzaF8J4 z>+3sJhW@0w{LH6-`(Afr<9kMWBXoSUM7Dox&JGJtojOI96z3EG z*uH)HWN?qO7x!`hzQnzLg5JL3Ui^ps%X$n4`+YK2S-yNZo>gC8kJmXUC#D?-i_a7IlwdR(Kkw#T>s)<( zJ!ZVTycREBO!{t;H9|r{F#q)FQ_`LjAsBnPnnKk2PZ;V3*7{M#@%jyBNObh|^_fg2 zd|f0I3eTTEPf=83VhUbHWgRft|{%MRRMp6H>seM7wV6&k5Vn7H0DDSDT_wn(;aaUDU zWi%QoiptK;CgqIWB$bwy78Mm?w@oI~&6_tPBO~$kExCLno}10)mX;RGM?^%-PjqOt zTFi(#=@4C7NJmxEVK7l6G0yhEp_Lq9)1fj}S-2%Mdrv$L~tStVt%xVSheDG9e5EX$6J zj8GIMm&=bIKaK;TqoYG05D0}r0!Kqb1E0?q2n1`_uAR{_f0E{OgnR$~y~Sd|+0n_# z2@6L?MsUQ^H0|QzLJoDKqobtlneyk|8`Sp{cp}PUC5RRQ^8?;2;Iss$eWk%*n3$Nr z(73v~e)3}s219#$yTM=(2n6o#?!LahxUO>?H!v`O%bZ*;$Ideh!!Qg0h{fVXix$lf i91DLtEx@rr0RIK2cl{g~?Z1Nn0000}s literal 0 HcmV?d00001 diff --git a/docs/images/logos/maven-feather.png b/docs/images/logos/maven-feather.png new file mode 100644 index 0000000000000000000000000000000000000000..b5ada836e9eb4af4db810f648b013933e72c8fbe GIT binary patch literal 3330 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 literal 0 HcmV?d00001 diff --git a/docs/images/newwindow.png b/docs/images/newwindow.png new file mode 100644 index 0000000000000000000000000000000000000000..6287f72bd08a870908e7361d98c35ee0d6dcbc82 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^+(699!3-oX?^2ToQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%@dWsUxR#cd&SYTt4+aeuCvSob zD+%%o1`04ZXs!GLj7%Iec?BF2%&y2ZFfeUwWbk2P5nvW+xWT~4#-PT{uyM;F);OSv44$rjF6*2U FngH~|K)3(^ literal 0 HcmV?d00001 diff --git a/docs/images/printer0.png b/docs/images/printer0.png new file mode 100644 index 0000000000000000000000000000000000000000..04e33e4d884230ddc12f0784db6b3da4f85b6fa3 GIT binary patch literal 9867 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 M%SI&^{=WNv0L0d)DgXcg literal 0 HcmV?d00001 diff --git a/docs/images/printer1.png b/docs/images/printer1.png new file mode 100644 index 0000000000000000000000000000000000000000..04b0280e004cfbf99e9a9d85c15aaacb8754cd78 GIT binary patch literal 6742 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 literal 0 HcmV?d00001 diff --git a/docs/images/printer2.png b/docs/images/printer2.png new file mode 100644 index 0000000000000000000000000000000000000000..e3a04f782fb6290269925b480ee7035aff12a08e GIT binary patch literal 10368 zcmeHti96K)`|e;ql9DYHA!J{(mwgwLZDikyp|NM*msCU&4H^oCk!*#?*ehf#Q`W}* zAvE?SOV;1(?R(C-u5tLtonr2BVaL z!6+WmP=Z(D4QHLee-!>^dYZ8E-b-Zg0C&^4sR4t1NI7$G`ycRp+E?G&9|mIzfPN?@ zT)9JFFd>#3+8X8|4$I?7X)hJ49-69k9UrYKb_o8?yNWMVH$QE~%zV!HqXgEG)~m*x z>-g{F@zJIvCC%j+8099zu8gq|uLg_)&Y(UeNkRB3%?n

    DHM#PA3y{)s7E$j+-Tp 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 literal 0 HcmV?d00001 diff --git a/docs/images/printer3.png b/docs/images/printer3.png new file mode 100644 index 0000000000000000000000000000000000000000..a731291793c23d34ae368eb5e3ee58810d138b59 GIT binary patch literal 10401 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 literal 0 HcmV?d00001 diff --git a/docs/images/printer4.png b/docs/images/printer4.png new file mode 100644 index 0000000000000000000000000000000000000000..3cd3cb087e79b342d35cb1652f45d5b6e56f4e32 GIT binary patch literal 6677 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 NzzQ1j<+2v9{ts=%QD*=E literal 0 HcmV?d00001 diff --git a/docs/images/printerI1.png b/docs/images/printerI1.png new file mode 100644 index 0000000000000000000000000000000000000000..9b302476190105134ce20fa4a201f8a8ca6e44b7 GIT binary patch literal 8837 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 R_~#`MD+}AB1!fn1`5y_r8mj;R literal 0 HcmV?d00001 diff --git a/docs/images/printerI2.png b/docs/images/printerI2.png new file mode 100644 index 0000000000000000000000000000000000000000..0ab6cfb1ea83b0cdd1a5f220243fc33ab6082ce0 GIT binary patch literal 7127 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 z + + + + + GSport - GSport Project Page + + + + + + + + +

    +
    +
    + +
    +
    +
    +
    +

    GSport

    +

    GSport is a portable (in the programming sense) Apple IIgs emulator, based on the KEGS cross-platform IIgs emulator by Kent Dickey. The base emulator builds and runs on all of the same platforms that KEGS did, and the new capabilities are being integrated as contributors have time and interest.

    +
    +

    Project Goals

    +

    The main goal for GSport is to provide a free, open ecosystem for the continuation of cross-platform development of IIgs emulation.

    +

    Some interesting advances that initially spawned this project are Uthernet and printer support. As those objectives are met, we will move on to the next objectives. Do you have something that you wish a GS emulator did? Submit a request here, or better yet - dive in and contribute!

    +
    +
    +
    +
    +
    + + + diff --git a/docs/operating.html b/docs/operating.html new file mode 100644 index 0000000..291773c --- /dev/null +++ b/docs/operating.html @@ -0,0 +1,417 @@ + + + + + + GSport - Operating GSport + + + + + + + + + + +
    + +
    +
    +
    +
    +

    Operating GSport

    +
    +

    Getting a ROM file

    +

    The required ROM for GSport is not part of the distribution, as it is not freely distributable. You must own a IIgs ROM (i.e. a IIgs machine) in order to legally use a ROM file that you may find on the internet.

    +

    GSport can use the ROM image from either a ROM01 or ROM03 IIgs machine. By default, that file should be named rom and be placed in the same folder as the GSport program/app. The name and location are configurable options, but it will "just work" with the defaults.

    +
    +

    Running GSport

    +

    On all platforms except Windows and Mac, you must start GSport from a terminal window. GSport will open a new window and use the window you started it from as a "debug" window.

    +

    GSport will look in a number of places for two files it requires: config.txt and rom. The suggested place for these files is right alongside the GSport application itself.

    +

    Start GSport by Double-clicking the GSport icon on a Mac, or by running the executable (gsport.exe on Windows, and gsportx on Linux). GSport can be run from the Terminal window on a Mac as well (which enables access to more debug information) by typing: ./GSport.app/Contents/MacOS/GSport from the folder GSport is in. This also enables the automatic mounting/booting feature by allowing you to specify a disk image of your choice on that command line; for example:
    ./GSport.app/Contents/MacOS/GSport /path/to/my/disk.po

    +

    Assuming all goes well, GSport will then boot up but probably not find any disk images. Hit the "F4" key and see below for how to tell GSport what disk images to use. Tip: Hitting "F8" locks the mouse in the window (and hides the host cursor) until you hit "F8" again.

    +

    See the the developing page for information about developing GSport and compiliing it for yourself.

    +
    +

    Configuration Panel

    +

    The Configuration panel is accessed by pressing the F4 key at any time. (If GSport couldn't find a ROM file when it started, you will be forced into the Configuration Panel mode until you select a valid ROM file).

    +

    To select a ROM file, select "ROM File Selection" and then select your ROM file. If you were not forced into the panel at startup, then GSport found one and it is working.

    +
    +

    Disk Images

    +

    The primary use of the Configuration Panel is to select disk images. To change disk images being used, select "Disk Configuration". Each slot and drive that can be loaded with an image is listed. "s5d1" means slot 5, drive 1. Slot 5 devices are 3.5" 800K disks, and slot 6 devices are 5.25" 140K disks. Slot 7 devices are virtual hard drives, and can be any size at all (although ProDOS-formatted images should be less than 32MB).

    +

    Just use the arrow keys to navigate to the device entry to change, and then select it by pressing the Enter or Return key. A scrollable file selection interface is presented, letting you locate your image files. To quickly jump to a particular path, you can press Tab to toggle between entering a path manually, and using the file selector. Press Return on ".." entries to go up a directory level. When you find the image you want, just press the Enter or Return key.

    +

    If the image has partitions that GSport supports, another selection dialog will have you select which partition to mount. You will probably only have partitions on direct devices you mount (or on a Mac, of .dmg images of CDs). For instance, on a Mac, /dev/disk1 can sometimes be the CDROM drive.

    +

    GSport can handle "raw", .dsk, .po, 2IMG, 5.25" ".nib" images, most Mac Diskcopy images and partitioned images. The .dsk and .po formats you often find on the web are really "raw" formats, and so they work fine. GSport uses the host file permissions to encode the read/write status of the image. GSport can open any image file compressed with gzip (with the extension ".gz") automatically as a read-only disk image.

    +

    An image is the representation of an Apple IIgs disk, but in a file on your computer. For 3.5" disks, for example, a raw image would be exactly 800K bytes long (819200 bytes). GSport directs the emulated GS accesses to the image, and does the correct reads and writes of the Unix file instead.

    +

    If you do not have any disk mounted in s7d1, GSport will jump into the monitor. To boot slot 6 (or slot 5), use the Apple IIgs Control Panel by pressing Ctrl-Command-ESC.

    +

    Support for 5.25" nibblized images is read-only for now (since the format is simplistic, it's tricky for GSport to write to it since GSport has more information than fits in that format). Just select your image, like "disk.nib" in the config.txt file like any .dsk or .po image.

    +

    In addition to changing disks, you can also just "eject" and image by moving the cursor to select that slot/drive and then press "E". The emulated IIgs will immediately detect changes to s5d1 and s5d2.

    +

    Care should be taken when changing images in slot 7--GSport does not notify GSOS that images have changed (or been ejected), and so it's best to make changes when GSOS is not running.

    +
    +

    Keyboard Summary

    +
    +
    F1:     Alias of Command
    +F2:     Alias of Option
    +F3:     Alias of ESC
    +F4:     Configuration Panel
    +F5, Shift-Insert: Paste from clipboard (on Windows and Mac)
    +F6:     Toggle through the 4 speeds: Unlimited, 1MHz, 2.8MHz, 8.0MHz
    +Shift-F6: Enter GSport debugger
    +F7:     Toggle fast_disk_emul on/off
    +F8:     Toggle pointer hiding on/off.
    +F9:     Invert the sense of the joystick.
    +Shift-F9: Swap x and y joystick/paddle axes.
    +F10:    Attempt to change the a2vid_palette (only useful on 256-color displays)
    +Shift-F10:      Toggle visibility of the debug status lines (on Windows only)
    +F11:    Full screen mode (on Mac OS X and Windows).
    +F12:    Alias of Pause/Break which is treated as Reset
    +
    +F2, Alt_R, Meta_r, Menu, Print, Mode_switch, Option:   Option key
    +F1, Alt_L, Meta_L, Cancel, Scroll_lock, Command:       Command key
    +Num_Lock:               Keypad "Clear".
    +F12, Pause, Break:      Reset
    +
    + "Home": Alias for "=" on the keypad (since my Unix keyboard doesn't have an =).
    +
    +
    +

    Using GSport

    +

    The host computer mouse is the Apple IIgs mouse and joystick by default. By default, the host pointer is not constrained inside the window and remains visible. Press F8 to hide the cursor and constrain the mouse. F8 again toggles out of constrain mode. When the GSOS desktop is running, GSport hides the host cursor automatically and enables special tracking which forces the emulated cursor to follow the host cursor. If this doesn't work right under some program, just press F8 for better compatibility.

    +

    The middle mouse button or Shift-F6 causes GSport to stop emulation, and enter the debugger. You can continue with "g" then return in the debug window. You can also disassemble memory, etc. The section "Debugging GSport" above describes the debugger interface a little more.

    +

    GSport has no pop-up menus or other interactive interfaces (other than the debug window, and the occasional error dialogs on Mac OS X). Input to the debug window is only acted upon when the emulation is stopped (Shift-F6, middle mouse button, or hitting a breakpoint).

    +
    +

    Quitting GSport

    +

    Just close the main GSport window, and GSport will exit cleanly. Or you can select Quit from the menu. Or enter ctrl-c in the debugger window. Or press the middle-mouse button in the emulation window, and then type "q" return in the debug window.

    +
    +

    Command/Option keys

    +

    If you have a keyboard with the special Windows keys, you can use them as the command/option keys. For those without those keys, there are several alternatives.

    +

    The following keys are Option (closed-apple) (not all keyboards have all keys): F2, Meta_R, Alt_R, Cancel, Print_screen, Mode_switch, Option, or the Windows key just to the right of the spacebar. The following keys are Command (open-apple): F1, Meta_L, Alt_L, Menu, Scroll_lock, Command, the Windows key left of the spacebar, and the Windows key on the far right that looks like a pull-down menu. You can use F1 and F2 if you cannot make anything else work (especially useful if your OS is intercepting some Alt or Command key sequences).

    +

    Note that X Windows often has other things mapped to Meta- and Alt- key sequences, so they often don't get passed through to GSport. So it's best to use another key instead of Alt or Meta.

    +

    The joystick/paddle buttons are just the Command and Option keys.

    +
    +

    Reset

    +

    The reset key is Pause/Break or F12. You must hit it with Ctrl to get it to take effect (just like a real Apple IIgs). Ctrl-Command-Reset forces a reboot. Ctrl-Command-Option-Reset enters selftests. Selftests will pass if you force speed to 2.8MHz using the middle button or F6 (and also set Enable Text Page 2 shadow = Disabled for ROM 01). Watch out for ctrl-shift-Break--it will likely kill an X Windows session. Also note that the Unix olvwm X window manager interprets ctrl-F12 and will not pass it on to GSport--you'll need to use Break for reset in that case.

    +
    +

    Full Screen mode (Mac OS X only)

    +

    GSport can run in full screen mode--which is especially useful when letting small kids use GSport (but it is not really a lock, so do not let a 2 year old bang on the keyboard while running GSport).

    +

    Full Screen mode is toggled with F11 (or Ctrl-F11, since Expose on a Mac is intercepting F11). If GSport stops in the debugger for any reason, full screen mode is toggled off automatically.

    +
    +

    Joystick Emulation (Mouse, Keypad, or real native joystick)

    +

    The default joystick is the mouse position. Upper left is 0,0. Lower right is 255,255. Press Shift-F9 to swap the X and Y axes. Press F9 to reverse the sense of both paddles (so 0 becomes 255, etc). Swapping and reversing are convenient with paddle-based games like "Little Brick Out" so that the mouse will be moving like the paddle on the screen. "Little Brick Out" is on the DOS 3.3 master disk. The joystick does not work properly if the pointer is constrained in the window.

    +

    You can also select from a "Keypad Joystick" or a real joystick from the Configuration panel. Press return on the "Joystick Configuration" entry, and then select between Mouse Joystick, Keypad Joystick, or one of two native joysticks. The Keypad Joystick uses your keypad number keys as a joystick, where keypad 7 means move to the upper left, and keypad 3 means move to the lower right. Pressing multiple keys together averages the results, allowing finer control than just 8 directions. Also, joystick scaling is selectable here for games which require a greater range of motion to work correctly, along with trim adjustment which moves the centering point. Adjusting scaling usually means you will need to adjust the trim as well.

    +

    The left mouse button is the mouse button for GSport. The right mouse button (if you have it) or F6 toggles between four speed modes. Mode 0 (the default) means run as fast as possible. Mode 1 means run at 1MHz. Mode 2 means run at 2.8MHz. Mode 3 means run at 8.0MHz (about the speed of a ZipGS accelerator). Most Apple //e (or earlier) games need to be run at 1MHz. Many Apple IIgs demos must run at 2.8MHz or they will not operate correctly. Try running ornery programs at 2.8MHz. 3200 pictures generally only display correctly at 2.8MHz or sometimes 8.0MHz.

    +
    +

    Debugging GSport

    +

    GSport by default now continues emulation even when it detects buggy programs running. (Now I know why Appleworks GS always seemed to crash!).

    +

    GSport divides buggy programs into two severities: Code Yellow and Code Red. The status is displayed in words in the text area under the emulation window. If nothing's wrong, nothing is printed.

    +

    A Yellow bug is a mild bug where an Apple IIgs program merely read an invalid location. Although completely harmless, it indicates the potential for some Apple IIgs program bug which may become more severe shortly. For instance, closing the "About This Apple IIgs" window in the Finder causes a code yellow alert, but it seems quite harmless.

    +

    A Code Red bug is a more serious problem. The Apple IIgs program either tried to write non-existent memory, entered an invalid system state, or perhaps just tried to use an Apple IIgs feature which GSport does not implement yet. Note that entering GSBUG tends to cause a Code Red alert always, so if you intended to enter it, you can ignore it. My recommendation is to save work immediately (to new files) and restart GSport if you get into the Red mode.

    +

    GSport also supports breakpoints and watchpoints. In the debug window, you set a breakpoint at an address by typing the address, followed by a 'B' (it must be in caps). To set a breakpoint on the interrupt jump point, type:

    +
    +
    e1/0010B
    +
    +

    The format is "bank/address" then "B", where the B must be in caps and the address must use lower-case hex. For Apple IIe programs, just use a bank of 0.

    +

    To list all breakpoints, just type 'B' with no number in front of it. To delete a breakpoint, enter its address followed by 'D', so

    +
    +
    e1/0010D
    +
    +

    deletes the above breakpoint. The addresses work like the IIgs monitor: once you change banks, you can use shortcut addresses:

    +
    +
    e1/0010B
    +14B
    +
    +

    will add breakpoints at e1/0010 and e1/0014.

    +

    This is a "transparent" breakpoint--memory is not changed. But any read or write to that address will cause GSport to halt. So you can set breakpoints on I/O addresses, or ROM, or whatever. Setting a breakpoint slows GSport down somewhat, but only on accesses to the 256 byte "page" the breakpoint is on. Breakpoints are not just instruction breakpoints, they also cause GSport to halt on any data access, too (usually called watchpoints).

    +

    Frederic Devernay has written a nice help screen available in the debugger when you type "h".

    +

    Useful locations for setting breakpoints: 0/3f0B - Break handler 0/c000B - Keyboard latch, programs read keys from this address

    +
    +

    GSport command-line option summary

    +

    There are others, but the Configuration panel provides a better way to set them so they are no longer listed here.

    +
    +
    -skip:  GSport will "skip" that many screen redraws between refreshes.
    +        -skip 0 will do 60 frames per second, -skip 1 will do 30 fps,
    +        -skip 5 will do 10 fps.
    +-audio [0/1]: Forces audio [off/on].  By default, audio is on unless
    +        the X display is a remote machine or shared memory is off.
    +        This switch can override the default.  -audio 0 causes GSport to
    +        not fork the background audio process, but Ensoniq emulation
    +        is still 100% accurate, just the sound is not sent to the
    +        workstation speaker.  Audio defaults off on Linux for now.
    +-arate {num}: Forces audio sample rate to {num}.  44100 and 48000 are
    +        usual, you can try 22050 to reduce GSport's overhead.  On a reasonably
    +        fast machine (>250MHz or so), you shouldn't need to mess with this.
    +-dhr140: Will use the old Double-hires color algorithm that results in
    +        exactly 140 colors across the screen, as opposed to the blending
    +        being done by default.
    +
    +

    X-Windows/Linux options:

    +
    +
    -15:    GSport will only look for a 15-bit X-Window display.
    +-16:    GSport will only look for a 16-bit X-Window display (not tested, probably
    +         will get red colors wrong).
    +-24:    GSport will only look for a 24-bit X-Window display.
    +-display {machine:0.0}: Same as setting the environment variable DISPLAY.
    +        Sends X display to {machine:0.0}.
    +-noshm: GSport will not try to used shared memory for the X graphics display.
    +        This will make GSport much slower on graphics-intensive tasks,
    +        by as much as a factor of 10!  By default, -noshm causes an
    +        effective -skip of 3 which is 15 fps.  You can override this
    +        default by specifying a -skip explicitly.
    +
    +
    +

    Apple IIgs Control Panel

    +

    You can get to the Apple IIgs control panel (unless some application has locked it out) using Ctrl-Command-Esc.

    +
    +

    Details on config.txt and disk images

    +

    The file config.txt describes the images GSport will use. Although you can edit the file manually, in general you can use the Configuration Panel to make all the changes you need. This information is for reference.

    +

    GSport by default will boot s7d1 (unless you've changed that using the Apple IIgs control panel), so you should put an image in that slot.

    +

    GSport, by default, runs the IWM (3.5" and 5.25" disks) emulation in an "approximate" mode, called "fast_disk_emul". In this mode, GSport emulates the hardware "faster" than real, meaning the data the code being emulated expects is made available much faster than on a real Apple IIgs, providing a nice speed boost. For instance, the 5.25" drives run 10x the real speed usually. Almost everything will work except for nibble copiers, which don't like the data coming this fast. (Meaning, unless you're using a nibble copier, you shouldn't run into an issue. All games/demos/etc run fine in this mode). To make nibble copiers work, Press F7.

    +

    GSport can read in the ".nib" nibblized disk format, but as read-only mode. If the emulated image is no longer ProDOS or DOS 3.3 standard, GSport will automatically treat the image as "Not-write-through-to-Image" from then on. This mode means GSport will continue to emulate the disk properly in memory, but it cannot encode the changes in the standard .dsk or .nib image format. It prints a message saying it has done so. However, the "disk" in emulation is fully useable as long as GSport is running. A standard reformatting will not cause an image to flip to not-write- through-to-Image, but running things like a "drive-speed" test will cause further changes not to propagate to the Unix file. You will need to "eject" the image and re-insert it before writes will take effect.

    +

    In full accuracy mode (i.e., not fast_disk_emul), 5.25" drive accesses force GSport to run at 1MHz, and 3.5" drive accesses force GSport to run at 2.8MHz.

    +
    +

    GSport Timing

    +

    GSport supports running at four speeds: 1MHz, 2.8MHz, 8.0MHz, and Unlimited. Pressing the middle mouse button cycles between these modes. The 1MHz and 2.8MHz speeds force GSport to run at exactly those speeds, providing accurate reproduction of a real Apple IIgs.

    +

    GSport will always run at 1MHz at least. If it is unable to keep up, it will extend the emulated time to maintain the illusion of running at 1MHz. That is, it may do just 40 screen refreshes per real second, instead of the usual 60. This happens rarely.

    +

    If you force GSport to run at 1MHz, it will strive to run at exactly 1MHz (well, really 1.024MHz). If it is running faster (almost always), it will pause briefly several times a second to maintain the 1MHz speed. It does this in a friendly way that makes time available to other tasks. This makes older Apple II games very playable just like a real Apple IIgs on slow speed. GSport is running at exactly the same speed as an Apple //e when in 1MHz mode. The 1MHz mode you set through the right mouse button overrides the "fast" mode you can access through the control panel. But, 3.5" accesses will "speed up" to 2.8MHz to enable that code to operate correctly while the 3.5" disk is being accessed.

    +

    If you force GSport to run at 2.8MHz, GSport tries to run at exactly 2.8MHz. But like a real unaccelerated Apple IIgs, if you set the control panel to "slow", it will really be running at 1MHz. Accesses to 5.25" disk automatically slow down to 1MHz, when running the IWM in accurate mode (F7). GSport may not be able to keep up with some programs running at 2.8MHz due to video and sound overheads on lower-end machines. If that happens, it effectively runs slower by extending the emulated "second", like in the 1MHz mode. You can tell this is happening when Eff MHz in the status area falls below 2.8MHz. If GSport is running faster than 2.8MHz, it takes small pauses to slow down, just like in 1MHz. Many Apple IIgs demos must be run at 2.8MHz. The built-in selftests (cmd-option-ctrl-Reset) must run at 2.8MHz. Many Apple IIgs action games are more playable at 2.8MHz.

    +

    The 8.0MHz setting means follow the ZipGS-selected speed, but don't go faster than 8.0MHz. If your host computer cannot keep up, then the emulated second will be extended. You can use the ZipGS control panel, or ZIPPY.GS on the sample disk image to set the emulated ZipGS speed to anything from 1MHz to 8MHz in .5MHz increments.

    +

    The Unlimited setting means run as fast as possible, whatever speed that is (but always above 1MHz). Eff MHz gives you the current Apple IIgs equivalent speed. Many games will be unplayable at the unlimited setting. Setting the IIgs control panel speed to "slow" will slow down to 1MHz.

    +

    Sound output has an important relationship to GSport timing. GSport must play one second of sound per second of emulated time. Normally, this works out exactly right. But as noted above, if GSport can't maintain the needed speed, it extends the emulated second. If it extends the second to 1.4 real seconds, that means GSport only produces 1.0 second of sound data every 1.4 seconds--the sound breaks up!

    +

    In all cases, 1MHz to GSport is 1.024MHz. And 2.8MHz to GSport is 2.56MHz (trying to approximate the slowdown causes by memory refresh on a real Apple IIgs). It's just easier to say 1MHz and 2.8MHz.

    +
    +

    GSport: What Works

    +

    Basically, just about every Apple II program works.

    +

    Some old Apple II 5.25" games require the old C600 ROM image, and don't work with the default Apple IIgs ROM. This is not GSport's fault--these games don't run on a real Apple IIgs either. GSport has built-in the old Apple II Disk PROM which you can enable by using the IIgs control panel to set Slot 6 to "Your Card". This allows many more Apple II games to run, and is the recommended setting.

    +

    The NinjaForce Megademo mostly works, but sometimes hangs in the BBS Demo. Just skip that demo if it happens.

    +

    The California Demo hangs at startup unless you use the IIgs control panel to boot from slot 5, and then do a ctrl-Open_Apple-Reset to boot--doing the above lets it work fine. This seems to be a bug in the demo.

    +
    +

    GSport bugs

    +

    On a ROM03, GSport makes a patch to the ROM image (inside emulation, not to the ROM file) to fix a bug in the ROM code. Both ROM01 and ROM03 are patched to enable use of more than 8MB of memory. It then patches the ROM self-tests to make the ROM checksum pass. But other programs, like the Apple IIgs Diagnostic Disk, will detect a ROM checksum mismatch. Don't worry about it.

    +

    Sound breaks up if GSport is unable to keep up--it should only be happening if you are trying to force GSport to run at 2.8MHz, but cannot due to sound and video overhead.

    +
    +

    Sound emulation

    +

    GSport supports very accurate classic Apple II sound (clicking of the speaker using $C030) and fairly accurate Ensoniq sound.

    +

    When GSport determines that no sound has been produced for more than 5 seconds, it turns off the sound calculation routines for a small speedup. It describes that it has done this by saying "Pausing sound" in the debug window. However, when sound restarts, it sometimes "breaks-up" a little.

    +

    If your display is not using shared memory, audio defaults to off unless you override it with "-audio 1".

    +
    +

    SCC (Serial Port) emulation

    +

    You may use the SCC ports as either a LocalTalk networking connection or as traditional serial ports. GSport emulates the two serial ports on a IIgs as being two Unix sockets. Port 1 (printer port) is at socket address 6501, and port 2 (modem) is at socket address 6502.

    +

    By default, slot 1 is emulated using a simple receive socket, and slot 2 emulates a Virtual Modem.

    +

    A Virtual Modem means GSport acts as if a modem is on the serial port allowing Apple II communcation programs to fully work, but connected to internet-enabled sockets. GSport emulates a "Hayes- Compatible" modem, meaning it accepts "AT" commands. You can use GSport to connect to free telnet-BBSs, or run a BBS program on GSport and become a telnet BBS yourself.

    +

    The two main AT commands are: ATDT for dialing out, and ATA for receiving calls. To dial out, enter "ATDThostname", or for example, "ATDTboycot.no-ip.com" (which is down at the moment, unfortunately). You can also enter an IP address, like "ATDT127.0.0.1". On a Mac, to create a telnet server to allow telnet connections (do not use over the internet, but on a private network behind a firewall, this should be fine), in a Terminal window type: "sudo /usr/libexec/telnetd -debug". You must then enable telnet on port 23 through your Mac OS X Firewall in the System Preferences->Sharing->Firewall page (just add port 23 as open--you'll need to use the "New..." button and then select Other for Port Name, and enter Port Number as 23). Then from GSport in a communications program, do "ATDT127.0.0.1", and then log-in to your Mac.

    +

    GSport also accepts incoming "calls". Start GSport, and initialize the Virtual Modem with some AT command (ATZ resets all state, and is a useful start). GSport now has a socket port open, 6502 for slot 2, which you can connect to using any telnet program. In a Terminal window, then type "telnet 127.0.0.1 6502" and you will connect to GSport. The Virtual Modem then starts printing "RING" every 2 seconds until you answer with "ATA". You are now connected.

    +

    On Windows XP SP2, when GSport tries to open this incoming socket, you'll need to enable it and click Unblock to the dialog that Windows pops up. If you do not want incoming connections, you can block it instead.

    +

    Once connected, you can go back to talking to the Virtual Modem by pressing + three times quickly (+++), and then not type anything for a second. This goes back to the AT-command mode. You can now "ATH" to hang up, or "ATO" to go back online.

    +

    On Windows, the socket code is very preliminary and there are problems receiving connections.

    +

    GSport also supports an older, simpler socket interface, which it defaults to using on slot 1. In GSport, from APPLESOFT, if you PR#1, all output will then be sent to socket port 6501. You can see it by connecting to the port using telnet. In another terminal window, do: "telnet localhost 6501" and then you will see all the output going to the "printer".

    +

    Under APPLESOFT, you can PR#1 and IN#1. This gets input from the socket also. You can type in the telnet window, it will be sent on to the emulated IIgs. You may want to go to the F4 Config Panel and set "mask off high bit" for serial port accesses to make PR#1 work a little nicer.

    +

    You can "print" from BASIC by using something like PR#1 in GSport and "telnet localhost 6501 | tee file.out" in another window.

    +
    +

    GSport status area

    +

    The status area is updated once each second. It displays internal emulation information.

    +
    +
    Line 1: (Emulation speed info)
    +dcycs:  number of seconds since GSport was started
    +sim MHz:  Effective speed of GSport instruction emulation, not counting
    +                overhead for video or sound routines.
    +Eff MHz:  Above, but with overhead accounted for.  Eff MHz is the
    +                speed of an equivalent true Apple IIgs.  This is extremely
    +                accurate.
    +sec:    The number of real seconds that have passed during on of GSport's
    +                emulated seconds. Should be 1.00 +/- .01.  Under 1
    +                means GSport is running a bit fast, over 1 means GSport is
    +                running slow.  When you force speed to 2.8MHz, if GSport
    +                can't keep up, it extends sec, so you can see how slow
    +                it's really going here.
    +vol:    Apple IIgs main audio volume control, in hex, from 0-F.
    +pal:    Super-hires palette that is unavailable.  GSport needs one palette
    +                for the standard Apple // graphics mode on an 8-bit display,
    +                and it grabs the least-used palette.  Defaults to 0xe.
    +                You can try changing it with F10.  If you change it to a
    +                palette that is not least used, GSport changes it back in
    +                one second.  Any superhires lines using the unavailable
    +                palette will have their colors mapped into the
    +                closest-matching "lores" colors, to minimize visual
    +                impact.
    +Limit:  Prints which speed setting the user has requested: 1MHz, 2.8MHz,
    +                or Unlimited.
    +
    +Line 2: (Video and X info)
    +xfer:  In hex, number of bytes transferred to the X screen per second.
    +xred_cs:        Percentage of Unix processor cycles that were spent in the X
    +                server (or other processes on the machine).
    +ch_in:  Percentage of Unix processor cycles spent checking for X input Events.
    +ref_l:  Percentage of Unix processor cycles spent scanning the Apple IIgs
    +                memory for changes to the current display screen memory,
    +                and copying those changes to internal XImage buffers.
    +ref_x:  Percentage of Unix processor cycles spent sending those XImage buffers
    +                to the X server.  Very similar to xred_cs.
    +
    +Line 3: (Interpreter overhead)
    +Ints:  Number of Apple IIgs interrupts over the last second.
    +I/O:    Rate of I/O through the fake smartport interface (hard drives).
    +                Does not count 3.5" or 5.25" disk accesses.
    +BRK:    Number of BRKs over the last second.
    +COP:    Number of COPs over the last second.
    +Eng:    Number of calls to the main instruction interpreter loop in the
    +                last second.  All "interrupts" or other special behavior
    +                causes the main interpreter loop to exit.  A high call
    +                rate here indicates a lot of overhead.  12000-15000 is normal.
    +                20000+ indicates some sort of problem.
    +act:    Some instructions are handled by the main interpreter loop returning
    +                special status "actions" to main event loop.  This is the
    +                number over the last second.  Should be low.
    +hev:    This tracks HALT_EVENTs.  GSport returns to the main loop to recalc
    +                effective speed whenever any speed-changing I/O location is
    +                touched.  See the code, mostly in moremem.c
    +esi:    This counts the number of superhires scan-line interrupts
    +                taken in the last second.
    +edi:    This counts the number of Ensoniq "special events" over the last
    +                second.  A sound that stops playing always causes a GSport
    +                event, even if it doesn't cause a IIgs interrupt.
    +
    +Line 4: (Ensoniq DOC info)
    +snd1,2,3,4:  Percentage of Unix processor cycles spent handling various
    +                sound activities.  snd1 is the total sum of all sound overhead.
    +st:     Percentage of Unix cycles spent starting new Ensoniq oscillators.
    +est:    Percentage of Unix cycles spent looking for 0 bytes in sounds.
    +x.yz:   This final number is the average number of oscillators playing
    +                over the last second.  Up to 4.00 is low overhead, over
    +                20.0 is high overhead.
    +
    +Line 5: (Ensoniq DOC info)
    +snd_plays:      Number of calls to a routine called sound_play, which
    +                plays Ensoniq sounds.  Always called at least 60 times per sec.
    +doc_ev: Number of Ensoniq (DOC) events in the last second.  A sound
    +                stopping is an event, but changing a parameter of a sound
    +                while it is playing is also an event.
    +st_snd:  Number of sounds that were started in the last second.
    +snd_parms:      Number of times a sound parameter was changed while it
    +                was playing.
    +
    +Line 6: (IWM info)
    +For each IWM device, this line displays the current track (and side for
    +3.5" disks).  If a disk is spinning, there will be an "*" next to the
    +track number.  Only updated once a second, so the disk arm moving may
    +appear to jump by several tracks.  "fast_disk_emul:1" shows that GSport
    +is using less accurate, but faster, IWM emulation.  Press F7 to toggle
    +to accurate disk emulation.
    +
    +
    +

    X Window (Linux) interface information

    +

    If GSport fails to start under Linux, first try the following options:

    +
    +
    GSport -audio 0 -noshm
    +
    +

    There may be a bug with drawing the border on x86 Linux with Shared Memory-- add the options "-noshm -skip 0" to fix this up (but lose some graphics performance, sorry). Try GSport without these options first, but use this as a workaround if necessary.

    +

    If you want the display to go somewhere different, make sure the shell environment variable $DISPLAY is set, or give the command-line argument "-display foo".

    +

    GSport also forks off a subprocess to help handle the sound if audio is active. If GSport crashes in a unusual way (a core dump, for instance), you may have to manually kill the subprocess. ("ps -ef| grep GSport;kill xxxxx").

    +

    Geoff Weiss adds some notes for mounting disks/floppies/CDs under Solaris 7 through Solaris 10:

    +

    To use a CDROM, insert the CD and let Volume Management mount it. Edit config.txt and use the filesystem that shows up in the "df -k" listing. The volume name of the CDROM must be included. For example, a CDROM in an IDE drive would look like this:

    +
    +
      /vol/dev/dsk/c1t0d0/ciscocd
    +
    +

    A CDROM in a SCSI drive would look like this:

    +
    +
      /vol/dev/dsk/c0t6d0/j1170_10804
    +
    +

    To provide low-level ADB emulation, GSport turns off Unix key repeat when the focus is in the GSport window. It should be turned back on every time the pointer leaves the GSport window, but sometimes it doesn't. Re-running GSport (and then quitting it quickly) should turn key-repeat back on, or you can type 'xset r' in another terminal window.

    +

    Sometimes the converse is true--key repeat is "on" when the cursor is in the GSport window. Moving the cursor out of the window and then back in should solve it. This is sometimes noticeable when running Wolfenstein 3D GS.

    +

    GSport uses a private color-map for its X-window in 8-bit mode. This may cause colormap "flash" when your cursor enters the window.

    +
    +

    GSport details/troubleshooting

    +

    GSport will work on all platforms with a 15/16-bit, 24-bit, or 32-bit color display. GSport also supports an 8-bit display on X windows only. On all platforms, it autodetects the color depth--no color switching is necessary as long as you're at a supported depth.

    +
    +

    Disk Image Details

    +

    Images loaded into slot 6 (drive 1 or 2) are assumed to be 140K 5.25" disks, which is usually have the extension ".dsk". Images loaded into slot 5 (drive 1 or 2) are assumed to be 800K disk images and can be in any supported imahe format (including partitions, if you have 800K partitions). Images loaded into slot 7 (drives 1 through 32) can be in any format and can be any size up to 4GB.

    +

    GSport boots s7d1 by default. You can change this using the emulated IIgs control panel, just like a real Apple IIgs. GSport emulates a IIgs with two 5.25" drives in slot 6, two 3.5" drives in slot 5, and up to 32 "hard drives" in slot 7. However, the current Configuration Panel only lets you set through s7d11. ProDOS 8 can access disks up to s7d8, but GSOS has no limit, so it's best to put HFS images past s7d8 in order to leave more slots for ProDOS images.

    +

    If you're trying to use a real host device (CD-ROM, or hard drive, or floppy), you should make the permissions on the /dev/disk* files something like (meaning, everyone should have read permission):

    +
    +
    brw-r--r--  1 root  operator  14, 0 Jun 10 00:01 /dev/disk2
    +
    +

    You can do this on a Mac with:

    +
    +
    sudo chmod 644 /dev/disk2
    +
    +
    +
    +
    +
    +
    + + + diff --git a/docs/printer.html b/docs/printer.html new file mode 100644 index 0000000..712ab44 --- /dev/null +++ b/docs/printer.html @@ -0,0 +1,155 @@ + + + + + + GSport - GSport Printers + + + + + + + + + + +
    + +
    +
    +
    +
    +

    GSport Emulated Printers

    +

    There are two classes of printers emulated by GSport: an Epson LQ connected by a virtual serial card in slot 1, and an Apple Imagewriter LQ or Imagewriter II attached to serial port 1. Set up for common printing scenarios is detailed below:

    +
      +
    • Emulated Imagewriter LQ/II - when you want to emulate an Imagewriter LQ or Imagewriter II specifically in slot 1
    • +
    • Windows Bitmap or Postscript (B&W) - when you want a graphical file saved on the host computer
    • +
    • Direct to host printer - when you want a real, paper-based copy immediately (or, a Postscript file with an appropriate printer driver)
    • +
    • Text File - when you want a file of plain text saved on the host computer
    +

    When configuring the virtual printer (details below), these notes apply in all situations:

    +
      +
    • The "Printer Timeout" setting configures how long until a form feed is automatically sent to the printer (which forces the emulator to kick out a "page"). This value should be set to a value like 15 seconds or more for PR#1-type printing to work as you might expect. If it is set to "Never", you must manually send a form feed, fill a page with text, or exit the emulator before output is saved. This behavior is similar to modern laser/inkjet printers when they are used with Applesoft. Most applications are good about sending form feeds at page end, so this issue doesn't usually come up.
    • +
    • The Roman font is used in graphical printing by default, and the matching lib/letgothl.ttf is included in the distribution package. Printing emulation won't work if no fonts at all are defined. Any other mono-spaced TrueType font you have may also be used.
    +
    +

    Emulated Imagewriter LQ/II

    +

    In GSport's internal control panel:

    +
      +
    1. Under "Serial Port Configuration" set Port 0 to "Virtual Imagewriter"
    2. +
    3. Under "Virtual Imagewriter Configuration" you need to configure fonts. GSport comes with a fixed width font installed and pre-configured. Set any proportional font you wish to use. If you plan on using native Windows printer output or Postscript, set Multipage Files to "Yes". The default printer timeout of 2 seconds is fine if you are running the machine in 8Mhz or unlimited speed modes. Set it higher if you are running at 1Mhz or 2.8Mhz since the printer may time out while the computer is "thinking" during print jobs.
    +

    Printer DPI should be set to at least 720x720dpi for Imagewriter LQ resolution output (mostly GS/OS). Use 1440x1440dpi if you have a high resolution inkjet printer and plan on printing pure text documents. It also minimizes scaling artifacts when printing graphics.

    +

    Printer Type just changes the self ID string sent by the printer when the "ESC-?" command is sent. This is used by the driver included in GS/OS to determine what type of printer is connected and whether a color ribbon is installed. Set it to Imagewriter LQ in most cases.

    +

    Save your settings and restart GSport to apply your configuration changes! (This will likely be fixed in a future release.)

    +

    In the native IIgs control panel:

    +
      +
    1. Under "Slots", Slot 1 should be set to "Printer Port"
    2. +
    3. Under "Printer Port" leave everything at its default setting, but set baud rate to 19200. It is highly recommended that you install the QuickPort CDA and set the port speed to "57600". Since we are using the SCC emulation, the speed that data is transferred to the virtual printer is limited by the baud rate set by the emulated environment.
    +

    8-bit and non-Printer Manager IIgs applications (like Printshop GS) should work without a problem after configuring them to print to an Imagewriter connected to slot 1. When printing text in programs like Appleworks, be sure to set page margins. By default, the emulator starts printing at the upper left hand corner of the virtual "page".

    +

    GS/OS requires configuration in the "DC Printer" control panel. Make sure you install the printer drivers from your GS/OS disk set. Set the port to "Printer" and type to "Imagewriter.LQ". If you have Harmonie, use its "Printer57.6" port driver as it greatly speeds up printing (the built in port driver appears to be hard coded to 19200 baud max). Do not use its "Printer.HAR" port driver as it sends junk text to the printer for some reason. Harmonie's "IWriterLQ.HAR" and "Imagewriter.HAR" drivers have been tested and are fully compatible with the printer emulator. They do not query the printer with ESC-?, so the setting of Printer Type in the GSport control panel doesn't matter with these. Both Harmonie and Pointless are highly recommended for the best quality output in GS/OS.

    +

    The printer emulator supports all Imagewriter II and LQ functions documented in Apple's official reference manuals. Mousetext and custom character definitions are NOT supported. This is consistent with a real Imagewriter LQ. Only the Imagewriter II supported those functions.

    +
    +

    Windows Bitmap or Postscript

    +

    To set up GSport to write .BMP or .PS files for each "page" produced, apply the following settings:

    +

    Enter the GS native control panel and set slot 1 to "Your Card", then save and exit the control panel. You will need to reboot the emulated GS (with a cold boot - Ctrl-Alt-F12, etc.) or restart GSport to have this change take effect, just like a real GS:

    +

    Press F4 to enter the text-based GSport menu and select the "Parallel Card Configuration" option. By default, printer emulation is turned off. Enable it by setting "Parallel Card in Slot 1" to "On," and leave the "Parallel Output" option set to its default value, "Send full 8-bit data:"

    +

    Next, navigate back to the main menu and select the "Virtual Printer Configuration" option and set "Printer Output Type" to either "Windows Bitmap" or "Postscript (B&W)" based on your preference:

    +

    Save the configuration, and printed output will be saved as files in GSport's current working directory.

    +
    +

    Direct to Host Printer

    +

    The "Direct to host printer" feature is only implemented on the Windows platform. To set up GSport to send page-oriented output directly to your system's printer, apply the following settings:

    +

    Enter the GS native control panel and set slot 1 to "Your Card", then save and exit the control panel. Note that you will need to restart GSport after all of the changes below are made, so don't restart just yet:

    +

    Press F4 to enter the text-based GSport menu and select the "Parallel Card Configuration" option. By default, printer emulation is turned off. Enable it by setting "Parallel Card in Slot 1" to "On," and leave the "Parallel Output" option set to its default value, "Send full 8-bit data:"

    +

    Next, navigate back to the main menu and select the "Virtual Printer Configuration" option and set "Printer Output Type" to "Direct to host printer:"

    +

    Save the configuration, and stop the GSport application altogether and restart it. You should be presented with your system's default printer selection dialog box:

    +

    The printer you choose here will be the place that page-oriented output is sent, subject to the page ejection timeouts discussed earlier. Note that it is even possible to use a printer driver that itself produces PDF output instead of physical paper.

    +
    +

    Text File

    +

    Printing to a text file will bypass all printer emulation and simply append printed data to a file named printer.txt in GSport's current working directory. This is especially useful for text-based operations like Applesoft listings using the traditional PR#1:LIST:PR#0 command sequences. Output from GSOS applications like TeachText are not actually textual in nature - they are graphical. It would be more appropriate to use a different type of printer output in that situation.

    +

    To set up GSport to append printed text to a printer.txt file, apply the following settings:

    +

    Enter the GS native control panel and set slot 1 to "Your Card", then save and exit the control panel. You will need to reboot the emulated GS (with a cold boot - Ctrl-Alt-F12, etc.) or restart GSport to have this change take effect, just like a real GS:

    +

    Press F4 to enter the text-based GSport menu and select the "Parallel Card Configuration" option. By default, printer emulation is turned off. Enable it by setting "Parallel Card in Slot 1" to "On." Also change the "Parallel Output" option to "Mask off high bit:"

    +

    Next, navigate back to the main menu and select the "Virtual Printer Configuration" option and set "Printer Output Type" to "Text file:"

    +

    Save the configuration, and printed output will be appended in the printer.txt file in GSport's current working directory.

    +
    +
    +
    +
    +
    + + +