system/kegs: Added (Kent's Emulated GS)

Signed-off-by: Niels Horn <niels.horn@slackbuilds.org>
This commit is contained in:
B. Watson 2011-08-23 08:55:48 -03:00 committed by Niels Horn
parent 6b3dd7e281
commit 6b6c8ec350
13 changed files with 511 additions and 0 deletions

29
system/kegs/README Normal file
View file

@ -0,0 +1,29 @@
KEGS (Kent's Emulated GS)
KEGS is an Apple IIgs emulator for Mac OS X, Linux, and Win32. The Apple
IIgs was the most powerful computer in the Apple II line. It first was
sold in 1986. An Apple IIgs has the capability to run almost all Apple
II, Apple IIe, and Apple IIc programs.
KEGS requires a ROM image dumped from an Apple IIgs. This will typically
be called either "rom01" (131072 bytes) or "rom03" (262144 bytes),
and will often be distributed in zip files called apple2g1.zip and
apple2gs.zip (for use with MESS). This package can optionally include
the ROM file. To do this, place the ROM image in the slackbuild
directory before running the script. The image will be installed
as /usr/share/kegs/rom03 (or rom01). If you do not include the ROM
in the package, you will need to manually copy the rom03 image to
/usr/share/kegs/rom03 before the emulator will work properly.
Optional dependency: If you intend to run Apple's GS/OS in
the emulator, you will need macutils to extract the .sea.bin
archives from Apple's website. Download disk image(s) from
http://www.info.apple.com/support/oldersoftwarelist.html and then
run e.g.:
$ macunpack -d Disk_2_of_7-System.Disk.sea.bin
$ mv Disk_2_of_7-System.Disk.data system_disk.dsk
Mount system_disk.dsk on slot 5 using the config menu within xkegs,
set slot 5 as the default startup device in the IIgs control panel,
and you should be booting into the IIgs native GUI environment.

View file

@ -0,0 +1,35 @@
diff -Naur kegs.0.91/src/xdriver.c kegs.0.91.patched//src/xdriver.c
--- kegs.0.91/src/xdriver.c 2004-12-06 19:42:47.000000000 -0500
+++ kegs.0.91.patched//src/xdriver.c 2011-01-27 04:28:42.000000000 -0500
@@ -57,6 +57,7 @@
Display *g_display = 0;
Visual *g_vis = 0;
Window g_a2_win;
+Atom g_wmdelete_atom;
GC g_a2_winGC;
XFontStruct *g_text_FontSt;
Colormap g_a2_colormap = 0;
@@ -582,6 +583,9 @@
0, &my_winSizeHints, 0, &my_winClassHint);
XMapRaised(g_display, g_a2_win);
+ g_wmdelete_atom = XInternAtom(g_display, "WM_DELETE_WINDOW", True);
+ XSetWMProtocols(g_display, g_a2_win, &g_wmdelete_atom, 1);
+
XSync(g_display, False);
g_a2_winGC = XCreateGC(g_display, g_a2_win, 0, (XGCValues *) 0);
@@ -1086,6 +1090,13 @@
(word32)ev.xcolormap.colormap,
ev.xcolormap.new, ev.xcolormap.state);
break;
+ case ClientMessage:
+ if(ev.xclient.data.l[0] == g_wmdelete_atom) {
+ x_auto_repeat_on(1);
+ XCloseDisplay(g_display);
+ exit(0);
+ }
+ break;
default:
printf("X event 0x%08x is unknown!\n",
ev.type);

View file

@ -0,0 +1,11 @@
# KEGS configuration file version 0.91
s5d1 = #XMAS_DEMO
s5d2 =
s6d1 = #dos33.dsk
s6d2 =
s7d1 = #NUCLEUS03
g_cfg_rom_path = @ROM@

3
system/kegs/doinst.sh Normal file
View file

@ -0,0 +1,3 @@
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi

125
system/kegs/kegs.SlackBuild Normal file
View file

@ -0,0 +1,125 @@
#!/bin/bash
# Slackware build script for kegs
# Written by B. Watson (yalhcru@gmail.com)
PRGNAM=kegs
VERSION=${VERSION:-0.91}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i486 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
else
SLKCFLAGS="-O2"
fi
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM.$VERSION
tar xvf $CWD/$PRGNAM.$VERSION.tar.gz
cd $PRGNAM.$VERSION
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
-exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
# xkegs refuses to close (close button greyed-out by window manager).
# Small patch by SlackBuild author fixes this large annoyance (which is
# extra-annoying because there's also no Quit option in the kegs menu).
# I've sent this upstream, maybe it'll get integrated in future versions.
patch -p1 < $CWD/allow_window_close.diff
cd src
rm -f vars
ln -s vars_x86linux vars
make CCOPTS="$SLKCFLAGS" x$PRGNAM to_pro partls
cd -
# No install target, just stick it all where it goes.
# The icon was converted from the Mac OSX icon with icns2png.
# The .desktop has 'Terminal=true' because xkegs *really* wants
# to be started from a terminal (the debugger uses stdio, and
# is too easy to accidentally enter by center-clicking the window).
mkdir -p \
$PKG/usr/bin \
$PKG/usr/libexec \
$PKG/usr/share/pixmaps \
$PKG/usr/share/applications \
$PKG/usr/share/$PRGNAM \
$PKG/usr/man/man1
install -s -m0755 x$PRGNAM $PKG/usr/libexec/
install -s -m0755 src/to_pro src/partls $PKG/usr/bin/
install -m0755 $CWD/x$PRGNAM.sh $PKG/usr/bin/x$PRGNAM
install -m0644 $CWD/$PRGNAM.png $PKG/usr/share/pixmaps/
install -m0644 $CWD/$PRGNAM.desktop $PKG/usr/share/applications/
# Man pages are specific to the SlackBuild, though I've sent
# them upstream for consideration.
for file in $CWD/*.1; do
sed "s/@VERSION@/$VERSION/g" $file \
| gzip -9c \
> $PKG/usr/man/man1/$( basename $file ).gz
done
# Half the supplied documentation refers to it as "kegs" and
# the other half calls it "xkegs". To avoid confusion:
ln -s x$PRGNAM.1.gz $PKG/usr/man/man1/$PRGNAM.1.gz
ln -s x$PRGNAM $PKG/usr/bin/$PRGNAM
# Handle the ROM image, if we find it. Filenames are listed in
# reverse order of preference.
for file in ROM01 rom01 ROM03 rom03; do
if [ -e "$CWD/$file" ]; then
ROMFILE="$CWD/$file"
fi
done
if [ -e "$ROMFILE" ]; then
ROMNAME="$( basename "$ROMFILE" )"
install -m0644 "$ROMFILE" $PKG/usr/share/$PRGNAM
else
# We don't have a ROM, so we don't include one in the package, but we
# do still set the path to /usr/share/kegs/rom03 in the config file,
# so all the user has to do is copy the ROM there later.
ROMNAME=rom03
fi
sed "s,@ROM@,/usr/share/$PRGNAM/$ROMNAME," \
< $CWD/config.$PRGNAM.default \
> $PKG/usr/share/$PRGNAM/config.$PRGNAM.default
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
install -m0644 *.txt $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}

10
system/kegs/kegs.desktop Normal file
View file

@ -0,0 +1,10 @@
[Desktop Entry]
Version=1.0
Name=KEGS
GenericName=Apple IIgs Emulator
Type=Application
Exec=xkegs
Icon=kegs
Terminal=true
StartupNotify=false
Categories=Game;Emulator;

10
system/kegs/kegs.info Normal file
View file

@ -0,0 +1,10 @@
PRGNAM="kegs"
VERSION="0.91"
HOMEPAGE="http://kegs.sourceforge.net/"
DOWNLOAD="http://kegs.sourceforge.net/kegs.0.91.tar.gz"
MD5SUM="ec3967d3276bb3d1dd601c7b8f750df5"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
MAINTAINER="B. Watson"
EMAIL="yalhcru@gmail.com"
APPROVED="Niels Horn"

BIN
system/kegs/kegs.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

23
system/kegs/partls.1 Normal file
View file

@ -0,0 +1,23 @@
.TH PARTLS "1" "January 2011" "SlackBuilds.org" "User Commands"
.SH NAME
partls \- Lists partitions on Apple\-partitioned hard drives or CD-ROMs
.SH SYNOPSIS
.B partls
<\fI-l\fR>
[\fIfile-or-device\fR]
.SH DESCRIPTION
partls is distributed with the KEGS emulator.
.PP
partls displays the partition table on an Apple\-partitioned disk or
disk image file. Generally, these partitions will use the Apple HFS filesystem.
.PP
With the \fB\-l\fR option, more information is displayed.
.SH SEE ALSO
xkegs(1)
.br
to_pro(1)
.SH AUTHORS
KEGS and partls are by Kent Dickey <kadickey at princeton dot edu>.
.PP
This manual page was written by B. Watson for the SlackBuilds.org project (but
may be used by anyone for any reason).

19
system/kegs/slack-desc Normal file
View file

@ -0,0 +1,19 @@
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description. Line
# up the first '|' above the ':' following the base package name, and the '|'
# on the right side marks the last column you can put a character in. You must
# make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
kegs: KEGS (Kent's Emulated GS)
kegs:
kegs: KEGS is an Apple IIgs emulator for Mac OS X, Linux, and Win32. The
kegs: Apple IIgs was the most powerful computer in the Apple II line. It
kegs: first was sold in 1986. An Apple IIgs has the capability to run almost
kegs: all Apple II, Apple IIe, and Apple IIc programs.
kegs:
kegs:
kegs:
kegs:
kegs:

55
system/kegs/to_pro.1 Normal file
View file

@ -0,0 +1,55 @@
.TH TO_PRO "1" "January 2011" "SlackBuilds.org" "User Commands"
.SH NAME
to_pro \- creates and copies files to Apple ProDOS disk images
.SH SYNOPSIS
.B to_pro
[\fI-size\fR]
[\fIfile\fR]
<\fIfile\fR ...>
.SH DESCRIPTION
to_pro is intended for use with the KEGS emulator.
.PP
to_pro creates a new ProDOS disk image called POOF1 in the current
directory, of the given size, containing the specified file(s). At
least one file must be given (to_pro cannot create a completely blank
image), and up to 51 file arguments are allowed.
.PP
The size argument is in kilobytes (1024 bytes each), and must be larger than the total size of
all the files (no checking is done, it's up to the user). ProDOS has a limit
of 32MB per partition, so the \-size argument should always less than
32767.
.PP
Long UNIX filenames are truncated to the 15\-character
ProDOS limit.
.PP
The author warns that the generated disk image files should only be used
temporarily, to copy files from the image to another ProDOS disk image
that was formatted within KEGS using ProDOS itself (or, the generated
image may be formatted within KEGS to create a proper blank disk image).
.PP
to_pro automatically sets the ProDOS filetype of files ending in ".shk"
to $E0.
.SH EXAMPLES
.TP
to_pro \-800 wolfdemo.bxy
Creates an 800KB disk image called POOF1, containing the file "wolfdemo.bxy"
(which is likely an Apple IIgs archive, downloaded from an FTP or web site).
Probably the next thing you will do be "mv POOF1 wolfdemo.dsk".
.TP
to_pro \-4096 wolfdemo.bxy
Same as above, but creates a 4MB POOF1 image file instead.
.TP
to_pro \-32000 *.shk
put all *.shk files in the current Unix directory into a 31.25MB
image called POOF1.
.SH SEE ALSO
xkegs(1)
.br
partls(1)
.PP
More information on to_pro in /usr/doc/kegs\-@VERSION@/README.kegs.txt
.SH AUTHORS
KEGS and to_pro are by Kent Dickey <kadickey at princeton dot edu>.
.PP
This manual page was written by B. Watson for the SlackBuilds.org project (but
may be used by anyone for any reason).

176
system/kegs/xkegs.1 Normal file
View file

@ -0,0 +1,176 @@
.TH KEGS "1" "January 2011" "SlackBuilds.org" "User Commands"
.SH NAME
xkegs \- Apple IIgs emulator
.SH SYNOPSIS
.B xkegs
[\fI-options\fR]
.SH DESCRIPTION
KEGS (Kent's Emulated GS)
is an Apple IIgs emulator for Mac OS X, Linux, and Win32. The Apple
IIgs was the most powerful computer in the Apple II line. It first was
sold in 1986. An Apple IIgs has the capability to run almost all Apple
II, Apple IIe, and Apple IIc programs.
.PP
xkegs is the KEGS binary, compiled for Linux and X\-Window support.
.PP
This manual page only documents the command\-line options and key mappings.
For the full documentation, see /usr/doc/kegs\-@VERSION@/README.kegs.txt
(and the other files in the same directory).
.PP
\fINote:\fR There is no way to specify disk or ROM images on the command line.
Use the configuration menu (F4) from within the emulator to select images.
.SH OPTIONS
.TP
\fB\-skip\fR \fI[num]\fR
KEGS 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.
.TP
\fB\-audio\fR \fI[0/1]\fR
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 KEGS to
not fork the background audio process, but Ensoniq emulation
is still 100% accurate, just the sound is not sent to the
workstation speaker.
.TP
\fB\-arate\fR \fI[num]\fR
Forces audio sample rate to \fI[num]\fR. 44100 and 48000 are
usual, you can try 22050 to reduce KEGS's overhead. On a reasonably
fast machine (>250MHz or so), you shouldn't need to mess with this.
.TP
\fB\-dhr140\fR
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.
.TP
\fB\-15\fR
KEGS will only look for a 15\-bit X\-Window display.
.TP
\fB\-16\fR
KEGS will only look for a 16\-bit X\-Window display (not tested, probably
will get red colors wrong).
.TP
\fB\-24\fR
KEGS will only look for a 24\-bit X\-Window display.
.TP
\fB\-display\fR \fI[xdisplay]\fR
Same as setting the environment variable DISPLAY.
Sends X display to \fI[xdisplay]\fR
.TP
\fB\-noshm\fR
KEGS will not try to used shared memory for the X graphics display.
This will make KEGS 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.
.SH KEY BINDINGS
.TP
\fBF1\fR
Alias of Command
.TP
\fBF2\fR
Alias of Option
.TP
\fBF3\fR
Alias of ESC for OS/2 compatibility.
.TP
\fBF4\fR
Configuration Panel
.TP
\fBF6\fR
Toggle through the 4 speeds:
Unlimited, 1MHz, 2.8MHz, 8.0MHz
.TP
\fBShift\-F6\fR
Enter KEGS debugger (can also be done by center\-clicking the mouse on
the xkegs window).
.br
The debugger is tty\-based, and runs on the terminal
that xkegs was started from.
.TP
\fBF7\fR
Toggle fast_disk_emul on/off
.TP
\fBF8\fR
Toggle pointer hiding on/off.
.TP
\fBF9\fR
Invert the sense of the joystick.
.TP
\fBShift\-F9\fR
Swap x and y joystick/paddle axes.
.TP
\fBF10\fR
Attempt to change the a2vid_palette (only useful on 256\-color displays)
.TP
\fBF11\fR
Full screen mode (only on Mac OS X).
.TP
\fBF12\fR
Alias of Pause/Break which is treated as Reset
.TP
\fBF2\fR, \fBAlt_R\fR, \fBMeta_r\fR, \fBMenu\fR, \fBPrint\fR, \fBMode_switch\fR, \fBOption\fR
Option key
.TP
\fBF1\fR, \fBAlt_L\fR, \fBMeta_L\fR, \fBCancel\fR, \fBScroll_lock\fR, \fBCommand\fR
Command key
.TP
\fBNum_Lock\fR
Keypad "Clear".
.TP
\fBF12\fR, \fBPause\fR, \fBBreak\fR
Reset
.TP
\fBHome\fR
Alias for "=" on the keypad
.SH FILES
.TP
\fB~/.config.kegs\fR
The KEGS configuration file. This can be directly edited if
necessary, but normally is changed by using the configuration
menu (F4) from within KEGS. To return to the default configuration,
you may remove this file.
.TP
\fB/usr/share/kegs/rom03\fR (or \fB/usr/share/kegs/rom01\fR)
The Apple IIgs BIOS ROM image. If KEGS can't find this ROM, it
will start up with a black display, full of white @ characters.
Press F4 for the config menu and use the UI to select the correct
ROM image file.
.PP
For reference, the ROM image details are:
.PP
\fBrom03\fR: size 262144 bytes, md5sum ba89edf2729a28a17cd9e0f7a0ac9a39
.br
\fBrom01\fR: size 131072 bytes, md5sum 20a0334c447cb069a040ae5be1d938df
.PP
Other versions of the IIgs ROMs may exist (this author isn't aware of any),
but these two images are known to work.
.TP
\fB/usr/bin/xkegs\fR
Wrapper script. xkegs will fail to run if it can't find its config file,
so this script creates one in the user's home directory if necessary,
then runs the real xkegs binary.
.TP
\fB/usr/libexec/xkegs\fR
Actual xkegs binary. Shouldn't be run directly (use the wrapper instead).
.TP
\fB/usr/share/kegs/config.kegs.default\fR
Copied to \fB~/.config.kegs\fR by the wrapper script, if \fB~/.config.kegs\fR
doesn't already exist. Can be used to set system\-wide defaults (such as the
path to the ROM image).
.SH SEE ALSO
to_pro(1)
.br
partls(1)
.br
Full KEGS docs in /usr/doc/kegs\-@VERSION@/*.txt
.br
KEGS homepage at http://kegs.sourceforge.net/
.SH AUTHORS
KEGS is by Kent Dickey <kadickey at princeton dot edu>.
.PP
This manual page was written by B. Watson for the SlackBuilds.org project (but
may be used by anyone for any reason).
.PP
Wrapper script also by B. Watson.

15
system/kegs/xkegs.sh Normal file
View file

@ -0,0 +1,15 @@
#!/bin/sh
# Wrapper script for xkegs, part of SlackBuilds.org kegs package
# By B. Watson
# xkegs is smart enough to read its conf file from ~/.config.kegs, but
# it will choke if the file's not found. Also, it's smart enough to
# read it from /usr/share/kegs/config.kegs, but it'll freeze if
# it doesn't have write permission!
if [ ! -e ~/.config.kegs ]; then
cat /usr/share/kegs/config.kegs.default > ~/.config.kegs
fi
exec /usr/libexec/xkegs