summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--system/kegs/README.Slackware35
-rw-r--r--system/kegs/allow_sound_open_fail.diff15
-rw-r--r--system/kegs/allow_window_close.diff63
-rw-r--r--system/kegs/config.kegs.default2
-rw-r--r--system/kegs/doinst.sh6
-rw-r--r--system/kegs/icons/128.png (renamed from system/kegs/kegs.png)bin40005 -> 40005 bytes
-rw-r--r--system/kegs/icons/16.pngbin0 -> 941 bytes
-rw-r--r--system/kegs/icons/32.pngbin0 -> 3067 bytes
-rw-r--r--system/kegs/icons/48.pngbin0 -> 6483 bytes
-rw-r--r--system/kegs/kegs.SlackBuild100
-rw-r--r--system/kegs/kegs.desktop4
-rw-r--r--system/kegs/kegs.info8
-rw-r--r--system/kegs/makevars/vars.alsa7
-rw-r--r--system/kegs/makevars/vars.oss7
-rw-r--r--system/kegs/makevars/vars.pulse7
-rw-r--r--system/kegs/man/partls.1 (renamed from system/kegs/partls.1)0
-rw-r--r--system/kegs/man/to_pro.1 (renamed from system/kegs/to_pro.1)0
-rw-r--r--system/kegs/man/xkegs.1 (renamed from system/kegs/xkegs.1)3
-rw-r--r--system/kegs/slack-desc2
-rw-r--r--system/kegs/xkegs.sh7
20 files changed, 139 insertions, 127 deletions
diff --git a/system/kegs/README.Slackware b/system/kegs/README.Slackware
index 03e0ebf940..7a66ba8fb8 100644
--- a/system/kegs/README.Slackware
+++ b/system/kegs/README.Slackware
@@ -1,34 +1,23 @@
ROM Images
==========
-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.
+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 includes the
+"rom03" file. If you want to also use the older ROM01 file, copy it to
+/usr/share/kegs after the package is installed, and select it from the
+config menu (F4) or edit the path in ~/.config.kegs.
Audio
=====
-kegs uses OSS for audio. To get sound working, you have 3 options:
+As of version 1.05, kegs uses PulseAudio by default. This is the default
+in the SlackBuild, so most users won't have to do anything special.
-1. Run kegs as "aoss xkegs", or launch it from your desktop's application
- menu (which does the same thing).
-
-2. Enable ALSA OSS emulation:
- # chmod +x /etc/rc.d/rc.alsa-oss
- # /etc/rc.d/rc.alsa-oss
-
- However, this may interfere with other applications' use of the
- sound card.
-
-3. If you already use OSSv4 (audio/oss from slackbuilds.org), kegs
- should be able to use it. It's not recommended to switch to OSSv4
- just to get audio working in kegs, though.
+It's also possible to build kegs for OSS audio, or ALSA using the
+aoss "shim" layer. To do this, set 'AUDIO=oss' or 'AUDIO=alsa' in the
+script's environment.
GS/OS Disk Images
=================
diff --git a/system/kegs/allow_sound_open_fail.diff b/system/kegs/allow_sound_open_fail.diff
deleted file mode 100644
index bf9086f72d..0000000000
--- a/system/kegs/allow_sound_open_fail.diff
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -Naur kegs.0.91/src/sound.c kegs.0.91.patched/src/sound.c
---- kegs.0.91/src/sound.c 2004-12-06 19:42:47.000000000 -0500
-+++ kegs.0.91.patched/src/sound.c 2015-06-21 17:48:21.000000000 -0400
-@@ -363,9 +363,9 @@
-
- ret = read(read_fd, &tmp, 4);
- if(ret != 4) {
-- printf("parent dying, could not get sample rate from child\n");
-+ printf("parent could not get audio sample rate from child, disabling sound.\n");
- printf("ret: %d, fd: %d errno:%d\n", ret, read_fd, errno);
-- exit(1);
-+ g_audio_enable = 0;
- }
- close(read_fd);
-
diff --git a/system/kegs/allow_window_close.diff b/system/kegs/allow_window_close.diff
index 538022e044..b1343b2e89 100644
--- a/system/kegs/allow_window_close.diff
+++ b/system/kegs/allow_window_close.diff
@@ -1,35 +1,36 @@
-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 @@
+diff -Naur kegs.1.05/src/xdriver.c kegs.1.05.patched/src/xdriver.c
+--- kegs.1.05/src/xdriver.c 2021-01-24 18:37:34.000000000 -0500
++++ kegs.1.05.patched/src/xdriver.c 2021-02-25 17:53:28.054595900 -0500
+@@ -629,13 +629,10 @@
0, &my_winSizeHints, 0, &my_winClassHint);
- XMapRaised(g_display, g_a2_win);
+ XMapRaised(g_display, x_win);
+
+- if(win_info_ptr != &g_mainwin_info) {
+- // Debugger window
+ win_info_ptr->delete_atom = XInternAtom(g_display,
+ "WM_DELETE_WINDOW", False);
+ XSetWMProtocols(g_display, x_win, &(win_info_ptr->delete_atom),
+ 1);
+- }
-+ 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);
+@@ -1092,9 +1089,15 @@
+ case ClientMessage:
+ win_info_ptr = x_find_xwin(ev.xclient.window);
+ if(ev.xclient.data.l[0] == win_info_ptr->delete_atom) {
+- // This is a WM_DELETE_WINDOW event
+- // Just unmap the window
+- win_info_ptr->kimage_ptr->active = 0;
++ if(win_info_ptr == &g_debugwin_info) {
++ // This is a WM_DELETE_WINDOW event
++ // Just unmap the window
++ win_info_ptr->kimage_ptr->active = 0;
++ } else {
++ x_auto_repeat_on(1);
++ XCloseDisplay(g_display);
++ exit(0);
++ }
+ } else {
+ printf("unknown ClientMessage\n");
+ }
diff --git a/system/kegs/config.kegs.default b/system/kegs/config.kegs.default
index 782bfb8f3a..4408cee760 100644
--- a/system/kegs/config.kegs.default
+++ b/system/kegs/config.kegs.default
@@ -8,4 +8,4 @@ s6d2 =
s7d1 = #NUCLEUS03
-g_cfg_rom_path = @ROM@
+g_cfg_rom_path = /usr/share/kegs/rom03
diff --git a/system/kegs/doinst.sh b/system/kegs/doinst.sh
index 5fb28930db..f6a957d203 100644
--- a/system/kegs/doinst.sh
+++ b/system/kegs/doinst.sh
@@ -1,3 +1,9 @@
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
+
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi
diff --git a/system/kegs/kegs.png b/system/kegs/icons/128.png
index 578329931f..578329931f 100644
--- a/system/kegs/kegs.png
+++ b/system/kegs/icons/128.png
Binary files differ
diff --git a/system/kegs/icons/16.png b/system/kegs/icons/16.png
new file mode 100644
index 0000000000..7dbbef05e5
--- /dev/null
+++ b/system/kegs/icons/16.png
Binary files differ
diff --git a/system/kegs/icons/32.png b/system/kegs/icons/32.png
new file mode 100644
index 0000000000..15b49662ca
--- /dev/null
+++ b/system/kegs/icons/32.png
Binary files differ
diff --git a/system/kegs/icons/48.png b/system/kegs/icons/48.png
new file mode 100644
index 0000000000..7caf94efd2
--- /dev/null
+++ b/system/kegs/icons/48.png
Binary files differ
diff --git a/system/kegs/kegs.SlackBuild b/system/kegs/kegs.SlackBuild
index 79883b8daa..851b036d01 100644
--- a/system/kegs/kegs.SlackBuild
+++ b/system/kegs/kegs.SlackBuild
@@ -6,6 +6,15 @@
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+# 20210225 bkw: update for v1.05. lots of changes:
+# - include the ROM image in the package (add it to DOWNLOAD)
+# - allow_sound_open_fail.diff no longer required
+# - rework allow_window_close.diff for v1.05
+# - .desktop file no longer needs Terminal=true
+# - upstream now supports pulseaudio, so build with it by default. add
+# AUDIO variable to build the old OSS sound support or ALSA via aoss
+# instead.
+
# 20170305 bkw:
# - fix building under installwatch, caused by a symlink in the
# tarball being listed before its target Why does this choke
@@ -19,8 +28,8 @@
# - "Exec=aoss xkegs" in .desktop file
PRGNAM=kegs
-VERSION=${VERSION:-0.91}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-1.05}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
if [ -z "$ARCH" ]; then
@@ -48,45 +57,48 @@ fi
set -e
+AUDIO=${AUDIO:-pulse}
+VARS=$CWD/makevars/vars.$AUDIO
+
+if [ ! -e $VARS ]; then
+ echo -n "*** AUDIO=\"$AUDIO\" not supported. Use one of: " 1>&2
+ list="$( ls -1 $CWD/makevars/vars.* | cut -d. -f2 )"
+ echo $list 1>&2
+ exit 1
+fi
+
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM.$VERSION
-tar xvf $CWD/$PRGNAM.$VERSION.tar.gz --exclude vars
+tar xvf $CWD/$PRGNAM.$VERSION.tar.gz \
+ --exclude '*/KEGSMAC.app' \
+ --exclude xkegs
cd $PRGNAM.$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -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 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+
+# device name for joysticks has changed for the 21st century.
+sed -i 's,/dev/js,/dev/input/js,' src/joystick_driver.c
# 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.
+# 20210225 bkw: Years later. Patch had to change for 1.05. The README
+# for kegs *actually says* you can close the main KEGS window to quit,
+# *and you can't fucking close it* without this patch. Apologies if I
+# sound a bit strident, but...
patch -p1 < $CWD/allow_window_close.diff
-# Matthew Miller pointed out this patch to me. Since kegs uses OSS for
-# audio, and modern Slackware has ALSA OSS emulation disabled by default,
-# sound won't work unless xkegs is run via aoss, or OSS modules are
-# loaded. This patch allows the emulator to start with sound disabled if
-# it can't open the OSS audio device (instead of it being a fatal error).
-# I've also updated the README to explain how to get audio to work.
-patch -p1 < $CWD/allow_sound_open_fail.diff
-
cd src
rm -f vars
-ln -s vars_x86linux vars
-make CCOPTS="$SLKCFLAGS" x$PRGNAM to_pro partls
+cat $VARS > vars
+make SLKCFLAGS="$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 \
@@ -97,12 +109,26 @@ mkdir -p \
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/
+install -m0644 $CWD/config.$PRGNAM.default $PKG/usr/share/$PRGNAM
+
+# The icons were converted from the Mac OSX icon with icns2png.
+for i in 16 32 48 128; do
+ idir=$PKG/usr/share/icons/hicolor/${i}x${i}/apps
+ mkdir -p $idir
+ cat $CWD/icons/$i.png > $idir/$PRGNAM.png
+done
+
+# old-style icon (e.g. windowmaker, fvwm2)
+ln -s ../icons/hicolor/48x48/apps/$PRGNAM.png $PKG/usr/share/pixmaps/$PRGNAM.png
+
+# Include the ROM image in the package. It's been available on the
+# asimov site for at least 20 years now, Apple has never complained.
+unzip -p $CWD/gsrom03.zip > $PKG/usr/share/$PRGNAM/rom03
# Man pages are specific to the SlackBuild, though I've sent
# them upstream for consideration.
-for file in $CWD/*.1; do
+for file in $CWD/man/*.1; do
sed "s/@VERSION@/$VERSION/g" $file \
| gzip -9c \
> $PKG/usr/man/man1/$( basename $file ).gz
@@ -113,34 +139,12 @@ done
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
+sed "s,@AUDIO@,$AUDIO," $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
diff --git a/system/kegs/kegs.desktop b/system/kegs/kegs.desktop
index 229dc9fe7d..3339d2bafa 100644
--- a/system/kegs/kegs.desktop
+++ b/system/kegs/kegs.desktop
@@ -3,8 +3,8 @@ Version=1.0
Name=KEGS
GenericName=Apple IIgs Emulator
Type=Application
-Exec=aoss xkegs
+Exec=xkegs
Icon=kegs
-Terminal=true
+Terminal=false
StartupNotify=false
Categories=Game;Emulator;
diff --git a/system/kegs/kegs.info b/system/kegs/kegs.info
index db8446cf08..937cf787c0 100644
--- a/system/kegs/kegs.info
+++ b/system/kegs/kegs.info
@@ -1,8 +1,10 @@
PRGNAM="kegs"
-VERSION="0.91"
+VERSION="1.05"
HOMEPAGE="http://kegs.sourceforge.net/"
-DOWNLOAD="http://kegs.sourceforge.net/kegs.0.91.tar.gz"
-MD5SUM="ec3967d3276bb3d1dd601c7b8f750df5"
+DOWNLOAD="http://kegs.sourceforge.net/kegs.1.05.tar.gz \
+ https://mirrors.apple2.org.za/ftp.apple.asimov.net/emulators/rom_images/gsrom03.zip"
+MD5SUM="b7f0452bf173eecdfadf9a82c4f75bea \
+ 029ebd31845614636f6a34a19730cd57"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/system/kegs/makevars/vars.alsa b/system/kegs/makevars/vars.alsa
new file mode 100644
index 0000000000..c8eb5b26aa
--- /dev/null
+++ b/system/kegs/makevars/vars.alsa
@@ -0,0 +1,7 @@
+TARGET = xkegs
+OBJECTS1 = xdriver.o
+CCOPTS = $(SLKCFLAGS)
+NAME = xkegs
+LD = $(CC)
+EXTRA_LIBS = -lXext -laoss
+EXTRA_SPECIALS =
diff --git a/system/kegs/makevars/vars.oss b/system/kegs/makevars/vars.oss
new file mode 100644
index 0000000000..e71940cd21
--- /dev/null
+++ b/system/kegs/makevars/vars.oss
@@ -0,0 +1,7 @@
+TARGET = xkegs
+OBJECTS1 = xdriver.o
+CCOPTS = $(SLKCFLAGS)
+NAME = xkegs
+LD = $(CC)
+EXTRA_LIBS = -lXext
+EXTRA_SPECIALS =
diff --git a/system/kegs/makevars/vars.pulse b/system/kegs/makevars/vars.pulse
new file mode 100644
index 0000000000..8521ec9b6f
--- /dev/null
+++ b/system/kegs/makevars/vars.pulse
@@ -0,0 +1,7 @@
+TARGET = xkegs
+OBJECTS1 = pulseaudio_driver.o xdriver.o
+CCOPTS = $(SLKCFLAGS) -DPULSE_AUDIO
+NAME = xkegs
+LD = $(CC)
+EXTRA_LIBS = -lXext -lpulse
+EXTRA_SPECIALS =
diff --git a/system/kegs/partls.1 b/system/kegs/man/partls.1
index 1af148532b..1af148532b 100644
--- a/system/kegs/partls.1
+++ b/system/kegs/man/partls.1
diff --git a/system/kegs/to_pro.1 b/system/kegs/man/to_pro.1
index a58fada52d..a58fada52d 100644
--- a/system/kegs/to_pro.1
+++ b/system/kegs/man/to_pro.1
diff --git a/system/kegs/xkegs.1 b/system/kegs/man/xkegs.1
index 907a6095cd..eb14f217e6 100644
--- a/system/kegs/xkegs.1
+++ b/system/kegs/man/xkegs.1
@@ -86,8 +86,7 @@ Unlimited, 1MHz, 2.8MHz, 8.0MHz
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.
+The debugger is X\-based, and runs in a separate window.
.TP
\fBF7\fR
Toggle fast_disk_emul on/off
diff --git a/system/kegs/slack-desc b/system/kegs/slack-desc
index 5db61e7330..3ecf8b066b 100644
--- a/system/kegs/slack-desc
+++ b/system/kegs/slack-desc
@@ -13,7 +13,7 @@ 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: Package built with audio system '@AUDIO@'.
kegs:
kegs:
kegs:
diff --git a/system/kegs/xkegs.sh b/system/kegs/xkegs.sh
index 55f0719b73..a947f07f76 100644
--- a/system/kegs/xkegs.sh
+++ b/system/kegs/xkegs.sh
@@ -8,8 +8,13 @@
# read it from /usr/share/kegs/config.kegs, but it'll freeze if
# it doesn't have write permission!
+# Update for v1.05: kegs will now start without ~/.config.kegs,
+# but if you do that, it'll save its config in the current dir as
+# "config.kegs" (no leading dot). So this wrapper's still necessary.
+# Added the missing "$@" so options actually get passed to kegs.
+
if [ ! -e ~/.config.kegs ]; then
cat /usr/share/kegs/config.kegs.default > ~/.config.kegs
fi
-exec /usr/libexec/xkegs
+exec /usr/libexec/xkegs "$@"