games/yae: Added (Yet another Apple Emulator).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
parent
784b68cd9f
commit
cc3ee0bbc2
|
@ -0,0 +1,9 @@
|
|||
yae (Yet another Apple Emulator)
|
||||
|
||||
Emulates the 8-bit Apple II, II+, and //e computers.
|
||||
|
||||
This is an older emulator without a lot of fancy features.
|
||||
|
||||
The package includes the ROM images and an Apple DOS 3.3 disk image.
|
||||
|
||||
Audio is supported, but only if OSS modules are loaded.
|
|
@ -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
|
|
@ -0,0 +1,13 @@
|
|||
diff -Naur yae-0.7/screen.c yae-0.7.patched/screen.c
|
||||
--- yae-0.7/screen.c 2007-04-03 17:51:44.000000000 -0400
|
||||
+++ yae-0.7.patched/screen.c 2013-08-31 02:13:07.000000000 -0400
|
||||
@@ -40,6 +40,9 @@
|
||||
XImage *ScreenXImage;
|
||||
XShmSegmentInfo shminfo;
|
||||
|
||||
+XImage *createShmImage( DisplayContext *dc, int width, int height,
|
||||
+ XShmSegmentInfo *info );
|
||||
+
|
||||
/*
|
||||
* frame rate control
|
||||
*/
|
|
@ -0,0 +1,11 @@
|
|||
diff -Naur yae-0.7/confile.c yae-0.7.patched/confile.c
|
||||
--- yae-0.7/confile.c 2007-04-03 17:50:57.000000000 -0400
|
||||
+++ yae-0.7.patched/confile.c 2013-08-29 14:17:06.000000000 -0400
|
||||
@@ -216,6 +216,7 @@
|
||||
if (!strcmp(v, "MachineType")) {
|
||||
if (!strcmp(h,"IIe")) { MachineType=APPLE_IIE; }
|
||||
else if (!strcmp(h,"II+")) { MachineType=APPLE_II_PLUS; }
|
||||
+ else if (!strcmp(h,"II")) { MachineType=APPLE_II; }
|
||||
else fprintf(stderr,"Unknown MachineType %s in %s\n",h,cfile);
|
||||
continue;
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
diff -Naur yae-0.7/main.c yae-0.7.patched/main.c
|
||||
--- yae-0.7/main.c 2007-04-03 17:48:36.000000000 -0400
|
||||
+++ yae-0.7.patched/main.c 2013-08-28 19:20:59.000000000 -0400
|
||||
@@ -95,6 +95,7 @@
|
||||
processOptions(argc,argv);
|
||||
|
||||
/* mount disks */
|
||||
+ if (optind == argc) disk_name[6][0]="/usr/share/yae/Master.dsk";
|
||||
if (optind<argc) disk_name[6][0]=argv[optind++];
|
||||
if (optind<argc) disk_name[6][1]=argv[optind++];
|
||||
if (optind<argc) disk_name[5][0]=argv[optind++];
|
|
@ -0,0 +1,35 @@
|
|||
diff -Naur yae-0.7/disk2.c yae-0.7.patched/disk2.c
|
||||
--- yae-0.7/disk2.c 2007-04-03 17:49:22.000000000 -0400
|
||||
+++ yae-0.7.patched/disk2.c 2013-08-28 19:16:54.000000000 -0400
|
||||
@@ -105,8 +105,9 @@
|
||||
FILE *f;
|
||||
|
||||
f = fopen( DiskROM, "rb" );
|
||||
+ if(!f) f = fopen("/usr/share/yae/DISK.ROM", "rb");
|
||||
if ( !f ) {
|
||||
- fprintf( stderr, "Cannot read disk II boot rom %s\n", DiskROM );
|
||||
+ fprintf( stderr, "Cannot read disk II boot rom %s or /usr/share/yae/DISK.ROM\n", DiskROM );
|
||||
exit(1);
|
||||
}
|
||||
fread( boot_ROM, 1, 256, f );
|
||||
diff -Naur yae-0.7/memory.c yae-0.7.patched/memory.c
|
||||
--- yae-0.7/memory.c 2007-04-03 17:42:23.000000000 -0400
|
||||
+++ yae-0.7.patched/memory.c 2013-08-28 19:18:13.000000000 -0400
|
||||
@@ -88,10 +88,13 @@
|
||||
MainMemoryROM[i] = amp;
|
||||
}
|
||||
|
||||
- if (MachineType < APPLE_IIE)
|
||||
- loadROMFile( Apple2ROM );
|
||||
- else
|
||||
- loadROMFile( Apple2eROM );
|
||||
+ if (MachineType < APPLE_IIE) {
|
||||
+ if(loadROMFile( Apple2ROM ) != 0)
|
||||
+ loadROMFile("/usr/share/yae/APPLE2.ROM");
|
||||
+ } else {
|
||||
+ if(loadROMFile( Apple2eROM ) != 0)
|
||||
+ loadROMFile("/usr/share/yae/APPLE2E.ROM");
|
||||
+ }
|
||||
|
||||
for( i = 0; i < 8; i++ ) {
|
||||
expansion_slot_read[i] = NULL;
|
|
@ -0,0 +1,74 @@
|
|||
diff -Naur yae-0.7/x_window.c yae-0.7.patched/x_window.c
|
||||
--- yae-0.7/x_window.c 2007-04-03 17:47:59.000000000 -0400
|
||||
+++ yae-0.7.patched/x_window.c 2013-08-30 13:36:15.000000000 -0400
|
||||
@@ -29,6 +29,8 @@
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/wait.h>
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
#include <X11/keysym.h>
|
||||
@@ -238,13 +240,27 @@
|
||||
XCloseDisplay( dc->display );
|
||||
}
|
||||
|
||||
+static int kdialog_select_file(char *buffer) {
|
||||
+ void *i;
|
||||
+ int s;
|
||||
+ FILE *kdialog = popen(
|
||||
+ "kdialog --title 'YAE - Select Disk Image' --getopenfilename . '*.dsk'", "r");
|
||||
+ if(!kdialog) return -1; /* can't fork() or malloc() probably */
|
||||
+ i = fgets(buffer, 4096, kdialog);
|
||||
+ s = WEXITSTATUS(pclose(kdialog));
|
||||
+ if(s == 127) return -2; /* shell returns this if kdialog not found */
|
||||
+ return i != NULL; /* returns 0 if user hit cancel, 1 if filename OK */
|
||||
+}
|
||||
+
|
||||
void X_check_and_handle_event( void *arg )
|
||||
{
|
||||
DisplayContext *dc;
|
||||
XEvent event;
|
||||
- int count;
|
||||
+ int count, kdresult;
|
||||
BYTE key, Apple_Key();
|
||||
- char buffer[256];
|
||||
+ char buffer[4096] = "\0", *p;
|
||||
+
|
||||
+ static int diskname_freeable = 0;
|
||||
|
||||
dc = (DisplayContext*)arg;
|
||||
|
||||
@@ -266,15 +282,24 @@
|
||||
/* Should ask which drive, and should
|
||||
* free the existing string if possible - wkt
|
||||
*/
|
||||
- puts( "Mount new disk\n" );
|
||||
- buffer[0] = '\0';
|
||||
- fgets( buffer, 256, stdin );
|
||||
- if (buffer[0])
|
||||
- buffer[strlen( buffer ) - 1 ] = '\0';
|
||||
+ kdresult = kdialog_select_file(buffer);
|
||||
+ if(kdresult == 0) {
|
||||
+ break; /* don't do anything if cancelled */
|
||||
+ } else if(kdresult < 0) {
|
||||
+ /* only use stdin if kdialog not found */
|
||||
+ puts( "Mount new disk\n" );
|
||||
+ buffer[0] = '\0';
|
||||
+ fgets( buffer, 256, stdin );
|
||||
+ }
|
||||
+ /* remove trailing \n */
|
||||
+ for(p = buffer; *p; p++)
|
||||
+ if(*p == '\n') *p = '\0';
|
||||
+ if(buffer[0] == '\0') break; /* don't use empty filename */
|
||||
/* ctkwan: free previosly allocated string */
|
||||
- if( disk_name[6][0]!=NULL)
|
||||
+ if( diskname_freeable && disk_name[6][0]!=NULL)
|
||||
free( disk_name[6][0] );
|
||||
- disk_name[6][0]= strdup(buffer);
|
||||
+ disk_name[6][0]= strdup(buffer);
|
||||
+ diskname_freeable = 1;
|
||||
mount_disk(6,0);
|
||||
}
|
||||
break;
|
|
@ -0,0 +1,11 @@
|
|||
diff -Naur yae-0.7/main.c yae-0.7.patched/main.c
|
||||
--- yae-0.7/main.c 2007-04-03 17:48:36.000000000 -0400
|
||||
+++ yae-0.7.patched/main.c 2013-08-28 14:35:12.000000000 -0400
|
||||
@@ -70,6 +70,7 @@
|
||||
while((c=getopt(argc,argv,Options))!= EOF) {
|
||||
switch(c) {
|
||||
case '2':
|
||||
+ MachineType=APPLE_II;
|
||||
break;
|
||||
case 'e':
|
||||
MachineType=APPLE_IIE;
|
|
@ -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 ':' except on otherwise blank lines.
|
||||
|
||||
|-----handy-ruler------------------------------------------------------|
|
||||
yae: yae (Yet another Apple Emulator)
|
||||
yae:
|
||||
yae: Emulates the 8-bit Apple II, II+, and //e computers.
|
||||
yae:
|
||||
yae: This is an older emulator without a lot of fancy features.
|
||||
yae:
|
||||
yae: The package includes the ROM images and an Apple DOS 3.3 disk image.
|
||||
yae:
|
||||
yae:
|
||||
yae:
|
||||
yae:
|
|
@ -0,0 +1,220 @@
|
|||
.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.20)
|
||||
.\"
|
||||
.\" Standard preamble:
|
||||
.\" ========================================================================
|
||||
.de Sp \" Vertical space (when we can't use .PP)
|
||||
.if t .sp .5v
|
||||
.if n .sp
|
||||
..
|
||||
.de Vb \" Begin verbatim text
|
||||
.ft CW
|
||||
.nf
|
||||
.ne \\$1
|
||||
..
|
||||
.de Ve \" End verbatim text
|
||||
.ft R
|
||||
.fi
|
||||
..
|
||||
.\" Set up some character translations and predefined strings. \*(-- will
|
||||
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
|
||||
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
|
||||
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
|
||||
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
|
||||
.\" nothing in troff, for use with C<>.
|
||||
.tr \(*W-
|
||||
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
|
||||
.ie n \{\
|
||||
. ds -- \(*W-
|
||||
. ds PI pi
|
||||
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
|
||||
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
|
||||
. ds L" ""
|
||||
. ds R" ""
|
||||
. ds C` ""
|
||||
. ds C' ""
|
||||
'br\}
|
||||
.el\{\
|
||||
. ds -- \|\(em\|
|
||||
. ds PI \(*p
|
||||
. ds L" ``
|
||||
. ds R" ''
|
||||
'br\}
|
||||
.\"
|
||||
.\" Escape single quotes in literal strings from groff's Unicode transform.
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.\"
|
||||
.\" If the F register is turned on, we'll generate index entries on stderr for
|
||||
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
|
||||
.\" entries marked with X<> in POD. Of course, you'll have to process the
|
||||
.\" output yourself in some meaningful fashion.
|
||||
.ie \nF \{\
|
||||
. de IX
|
||||
. tm Index:\\$1\t\\n%\t"\\$2"
|
||||
..
|
||||
. nr % 0
|
||||
. rr F
|
||||
.\}
|
||||
.el \{\
|
||||
. de IX
|
||||
..
|
||||
.\}
|
||||
.\"
|
||||
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
|
||||
.\" Fear. Run. Save yourself. No user-serviceable parts.
|
||||
. \" fudge factors for nroff and troff
|
||||
.if n \{\
|
||||
. ds #H 0
|
||||
. ds #V .8m
|
||||
. ds #F .3m
|
||||
. ds #[ \f1
|
||||
. ds #] \fP
|
||||
.\}
|
||||
.if t \{\
|
||||
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
|
||||
. ds #V .6m
|
||||
. ds #F 0
|
||||
. ds #[ \&
|
||||
. ds #] \&
|
||||
.\}
|
||||
. \" simple accents for nroff and troff
|
||||
.if n \{\
|
||||
. ds ' \&
|
||||
. ds ` \&
|
||||
. ds ^ \&
|
||||
. ds , \&
|
||||
. ds ~ ~
|
||||
. ds /
|
||||
.\}
|
||||
.if t \{\
|
||||
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
|
||||
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
|
||||
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
|
||||
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
|
||||
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
|
||||
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
|
||||
.\}
|
||||
. \" troff and (daisy-wheel) nroff accents
|
||||
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
|
||||
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
|
||||
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
|
||||
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
|
||||
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
|
||||
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
|
||||
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
|
||||
.ds ae a\h'-(\w'a'u*4/10)'e
|
||||
.ds Ae A\h'-(\w'A'u*4/10)'E
|
||||
. \" corrections for vroff
|
||||
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
|
||||
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
|
||||
. \" for low resolution devices (crt and lpr)
|
||||
.if \n(.H>23 .if \n(.V>19 \
|
||||
\{\
|
||||
. ds : e
|
||||
. ds 8 ss
|
||||
. ds o a
|
||||
. ds d- d\h'-1'\(ga
|
||||
. ds D- D\h'-1'\(hy
|
||||
. ds th \o'bp'
|
||||
. ds Th \o'LP'
|
||||
. ds ae ae
|
||||
. ds Ae AE
|
||||
.\}
|
||||
.rm #[ #] #H #V #F C
|
||||
.\" ========================================================================
|
||||
.\"
|
||||
.IX Title "YAE 1"
|
||||
.TH YAE 1 "2013-08-29" "0.7" "yae"
|
||||
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
||||
.\" way too many mistakes in technical documents.
|
||||
.if n .ad l
|
||||
.nh
|
||||
.SH "NAME"
|
||||
yae \- Yet another Apple Emulator
|
||||
.SH "SYNOPSIS"
|
||||
.IX Header "SYNOPSIS"
|
||||
\&\fByae\fR [\-2|\-e|\-+] [disk\-image] ...
|
||||
.SH "DESCRIPTION"
|
||||
.IX Header "DESCRIPTION"
|
||||
\&\fByae\fR emulates the Apple \s-1II\s0, \s-1II+\s0, and //e 8\-bit computers from Apple,
|
||||
Inc. Standard .dsk images are supported. If \fByae\fR is run without any
|
||||
disk image arguments, \fI/usr/share/yae/Master.dsk\fR will be booted.
|
||||
.PP
|
||||
\&\s-1ROM\s0 image files are required; see \fB\s-1FILES\s0\fR for details.
|
||||
.PP
|
||||
\&\s-1OSS\s0 audio is supported, using the /dev/audio device. For Linux systems
|
||||
using \s-1ALSA\s0, \s-1OSS\s0 audio is provided by the snd_pcm_oss and snd_mixer_oss
|
||||
kernel modules. If /dev/audio can't be opened, the emulator will run
|
||||
with sound disabled.
|
||||
.SH "OPTIONS"
|
||||
.IX Header "OPTIONS"
|
||||
.IP "\-2" 4
|
||||
.IX Item "-2"
|
||||
Emulate the Apple \s-1II\s0.
|
||||
.Sp
|
||||
Note that the emulator uses the same \s-1ROM\s0 image for \s-1II\s0 and \s-1II+\s0, so the
|
||||
emulated \s-1II\s0 will have Applesoft and autostart (which the original \s-1II\s0
|
||||
didn't ship with).
|
||||
.IP "\-+" 4
|
||||
Emulate the Apple \s-1II+\s0.
|
||||
.IP "\-e" 4
|
||||
.IX Item "-e"
|
||||
Emulate the Apple //e (the default).
|
||||
.SH "KEYSTROKES"
|
||||
.IX Header "KEYSTROKES"
|
||||
.IP "Backspace" 4
|
||||
.IX Item "Backspace"
|
||||
Alias for the left-arrow key.
|
||||
.IP "Control+Delete" 4
|
||||
.IX Item "Control+Delete"
|
||||
Apple Reset key.
|
||||
.IP "Left Alt" 4
|
||||
.IX Item "Left Alt"
|
||||
The left (open) apple key on the //e keyboard.
|
||||
.IP "Right Alt" 4
|
||||
.IX Item "Right Alt"
|
||||
The right (closed) apple key on the //e keyboard.
|
||||
.IP "F1" 4
|
||||
.IX Item "F1"
|
||||
Change disks in the first drive (slot 6, drive 0). This will either
|
||||
read a filename on standard input (if kdialog can't be run), or display
|
||||
a kdialog file-selector. Either way, the emulator stops and its window
|
||||
becomes unresponsive until a file has been chosen.
|
||||
.IP "F2" 4
|
||||
.IX Item "F2"
|
||||
Exit the emulator immediately. No confirmation dialog, so
|
||||
be careful.
|
||||
.PP
|
||||
All other keystrokes are translated to their equivalent Apple \s-1II\s0
|
||||
keystrokes, or ignored if there is no equivalent key on the Apple
|
||||
keyboard.
|
||||
.SH "FILES"
|
||||
.IX Header "FILES"
|
||||
.IP "\fB.yaerc\fR, \fB~/.yaerc\fR" 4
|
||||
.IX Item ".yaerc, ~/.yaerc"
|
||||
Config file. Searched for first in the current directory,
|
||||
then in user's home directory. For config file syntax, see
|
||||
\&\fI/usr/share/yae/yaerc.sample\fR.
|
||||
.IP "\s-1ROM\s0 files" 4
|
||||
.IX Item "ROM files"
|
||||
For \s-1II\s0 and \s-1II+\s0 emulation, the required \s-1ROM\s0 image is called \fB\s-1APPLE2\s0.ROM\fR.
|
||||
For the //e, the image is \fB\s-1APPLE2E\s0.ROM\fR. For all modes, \fB\s-1DISK\s0.ROM\fR is
|
||||
required.
|
||||
.Sp
|
||||
\&\s-1ROM\s0 file locations can be set in the config file. By default, they're
|
||||
searched for in the current directory. If the ROMs can't be found in
|
||||
the configured location or the current directory, they will searched
|
||||
for in \fI/usr/share/yae\fR.
|
||||
.Sp
|
||||
If the required \s-1ROM\s0 files can't be found, the emulator will refuse
|
||||
to start.
|
||||
.SH "SEE ALSO"
|
||||
.IX Header "SEE ALSO"
|
||||
\&\fBkegs\fR(1), \fBdos33fsutils\fR(1)
|
||||
.SH "AUTHORS"
|
||||
.IX Header "AUTHORS"
|
||||
\&\fByae\fR was originally written by Doug Kwan, and includes enhancements by
|
||||
Warren Toomey. The version documented here also has some small bugfixes
|
||||
and enhancements by B. Watson.
|
||||
.PP
|
||||
This man page was written by B. Watson.
|
|
@ -0,0 +1,149 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Slackware build script for yae
|
||||
|
||||
# Written by B. Watson (yalhcru@gmail.com)
|
||||
|
||||
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
|
||||
|
||||
PRGNAM=yae
|
||||
VERSION=${VERSION:-0.7}
|
||||
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"
|
||||
LIBDIRSUFFIX=""
|
||||
elif [ "$ARCH" = "i686" ]; then
|
||||
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
|
||||
LIBDIRSUFFIX=""
|
||||
else
|
||||
SLKCFLAGS="-O2 -fPIC"
|
||||
LIBDIRSUFFIX="64"
|
||||
fi
|
||||
|
||||
set -e
|
||||
|
||||
rm -rf $PKG
|
||||
mkdir -p $TMP $PKG $OUTPUT
|
||||
cd $TMP
|
||||
rm -rf $PRGNAM-$VERSION
|
||||
tar xvf $CWD/$PRGNAM-$VERSION.tgz
|
||||
cd $PRGNAM-$VERSION
|
||||
chown -R root:root .
|
||||
|
||||
# Diverging from standard boilerplate here due to annoying permissions in
|
||||
# upstream tarball. SBo admins, please don't "fix" this, it's for a reason.
|
||||
find . \
|
||||
-type d \
|
||||
-exec chmod 755 {} \; -o \
|
||||
-type f \
|
||||
-exec chmod 644 {} \;
|
||||
|
||||
# This is old code with lots of bugs, sorry about all the patches.
|
||||
|
||||
# Fix the -2 option so it actually starts apple II emulation.
|
||||
patch -p1 < $CWD/patches/fix2option.diff
|
||||
|
||||
# Allow 'MachineType II' in .yaerc
|
||||
patch -p1 < $CWD/patches/confile_apple2.diff
|
||||
|
||||
# Use kdialog for disk selection.
|
||||
# Also stop trying to free() the disk name passed in argv.
|
||||
patch -p1 < $CWD/patches/disk_selection.diff
|
||||
|
||||
# If no disk images given on command line, use Master.dsk. This is because
|
||||
# the emulator has a bug where it hangs if disk boot fails. Actually it
|
||||
# isn't a bug: it's taking forever to time out, the same way a real Apple
|
||||
# would, if you booted from disk with no disk in the drive.
|
||||
patch -p1 < $CWD/patches/defaultmasterdisk.diff
|
||||
|
||||
# If ROMs not found either in current dir or .yaerc configured location,
|
||||
# fall back to /usr/share/yae/*.ROM. This allows us to include ROMs in
|
||||
# this package, which Just Work instead of requiring user configuration.
|
||||
patch -p1 < $CWD/patches/defaultromlocation.diff
|
||||
|
||||
# Try to make 64-bit work. This seems OK, the scanline code seems to
|
||||
# assume sizeof(long)==4, which is wrong on x86_64. Using int (which
|
||||
# is still 4 bytes) fixes the display issues. There still might be
|
||||
# other less-obvious problems with 64-bit, please let me know if
|
||||
# you find any.
|
||||
if [ "$LIBDIRSUFFIX" = "64" ]; then
|
||||
patch -p1 < $CWD/patches/64.diff
|
||||
sed -i 's,unsigned *long,unsigned int,g' scanline*.c
|
||||
fi
|
||||
|
||||
# distributed configure script is too darn old
|
||||
rm -f config.sub config.guess configure
|
||||
cp /usr/share/libtool/config/config.sub .
|
||||
autoreconf -if
|
||||
|
||||
CFLAGS="$SLKCFLAGS" \
|
||||
CXXFLAGS="$SLKCFLAGS" \
|
||||
./configure \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/lib${LIBDIRSUFFIX} \
|
||||
--sysconfdir=/etc \
|
||||
--localstatedir=/var \
|
||||
--mandir=/usr/man \
|
||||
--docdir=/usr/doc/$PRGNAM-$VERSION \
|
||||
--build=$ARCH-slackware-linux
|
||||
|
||||
make
|
||||
|
||||
# no install target
|
||||
mkdir -p $PKG/usr/bin
|
||||
install -s -m0755 apple2 $PKG/usr/bin/$PRGNAM
|
||||
|
||||
# man page written for this build. If you want to modify it, use yae.pod,
|
||||
# don't edit yae.1 directly.
|
||||
mkdir -p $PKG/usr/man/man1
|
||||
gzip -9c < $CWD/$PRGNAM.1 > $PKG/usr/man/man1/$PRGNAM.1.gz
|
||||
|
||||
# ROMs. Master.dsk is the same as what's distributed with linapple.
|
||||
# The others are renamed copies of stuff from asimov. Probably not legal
|
||||
# to distribute for copyright reasons, but ftp.asimov.net has had this stuff
|
||||
# available for maybe 15 years and nobody's complained yet.
|
||||
tar xvf $CWD/$PRGNAM-roms.tar.gz
|
||||
mkdir -p $PKG/usr/share/$PRGNAM
|
||||
install -m0644 -oroot -groot \
|
||||
$PRGNAM-roms/*.ROM $PRGNAM-roms/*.dsk \
|
||||
$PKG/usr/share/$PRGNAM
|
||||
|
||||
# Sample config file, created for this build (upstream's docs say there's
|
||||
# one included with the src, but there isn't).
|
||||
cat $CWD/${PRGNAM}rc.sample > $PKG/usr/share/$PRGNAM/${PRGNAM}rc.sample
|
||||
|
||||
# .desktop created for this build
|
||||
mkdir -p $PKG/usr/share/applications
|
||||
cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop
|
||||
|
||||
# icon created for this build, based on
|
||||
# http://www.callapple.org/soft/images/icons/apple.gif
|
||||
mkdir -p $PKG/usr/share/pixmaps
|
||||
cat $CWD/$PRGNAM.png > $PKG/usr/share/pixmaps/$PRGNAM.png
|
||||
|
||||
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
|
||||
cat $PRGNAM-roms/README > $PKG/usr/doc/$PRGNAM-$VERSION/README.roms
|
||||
cp -a README* Readme* ChangeLog *.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}
|
|
@ -0,0 +1,9 @@
|
|||
[Desktop Entry]
|
||||
Name=YAE
|
||||
Comment=Apple II Emulator
|
||||
StartupNotify=true
|
||||
Exec=yae
|
||||
Icon=yae
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=System;
|
|
@ -0,0 +1,12 @@
|
|||
PRGNAM="yae"
|
||||
VERSION="0.7"
|
||||
HOMEPAGE="http://sourceforge.net/projects/yae-gpl/"
|
||||
DOWNLOAD="http://downloads.sourceforge.net/project/yae-gpl/yae-gpl/yae-0.7/yae-0.7.tgz \
|
||||
http://urchlay.naptime.net/~urchlay/src/yae-roms.tar.gz"
|
||||
MD5SUM="4c8b1d40f1ad7dc451f3679466d9e6cf \
|
||||
e816c4e83cf302030dc2da8d84ab745b"
|
||||
DOWNLOAD_x86_64=""
|
||||
MD5SUM_x86_64=""
|
||||
REQUIRES=""
|
||||
MAINTAINER="B. Watson"
|
||||
EMAIL="yalhcru@gmail.com"
|
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
|
@ -0,0 +1,122 @@
|
|||
# pod2man -r0.7 -s1 --stderr -cyae yae.pod > yae.1
|
||||
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
B<yae> - Yet another Apple Emulator
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
B<yae> [-2|-e|-+] [disk-image] ...
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
B<yae> emulates the Apple II, II+, and //e 8-bit computers from Apple,
|
||||
Inc. Standard .dsk images are supported. If B<yae> is run without any
|
||||
disk image arguments, I</usr/share/yae/Master.dsk> will be booted.
|
||||
|
||||
ROM image files are required; see B<FILES> for details.
|
||||
|
||||
OSS audio is supported, using the /dev/audio device. For Linux systems
|
||||
using ALSA, OSS audio is provided by the snd_pcm_oss and snd_mixer_oss
|
||||
kernel modules. If /dev/audio can't be opened, the emulator will run
|
||||
with sound disabled.
|
||||
|
||||
=head1 OPTIONS
|
||||
|
||||
=over
|
||||
|
||||
=item -2
|
||||
|
||||
Emulate the Apple II.
|
||||
|
||||
Note that the emulator uses the same ROM image for II and II+, so the
|
||||
emulated II will have Applesoft and autostart (which the original II
|
||||
didn't ship with).
|
||||
|
||||
=item -+
|
||||
|
||||
Emulate the Apple II+.
|
||||
|
||||
=item -e
|
||||
|
||||
Emulate the Apple //e (the default).
|
||||
|
||||
=back
|
||||
|
||||
=head1 KEYSTROKES
|
||||
|
||||
=over
|
||||
|
||||
=item Backspace
|
||||
|
||||
Alias for the left-arrow key.
|
||||
|
||||
=item Control+Delete
|
||||
|
||||
Apple Reset key.
|
||||
|
||||
=item Left Alt
|
||||
|
||||
The left (open) apple key on the //e keyboard.
|
||||
|
||||
=item Right Alt
|
||||
|
||||
The right (closed) apple key on the //e keyboard.
|
||||
|
||||
=item F1
|
||||
|
||||
Change disks in the first drive (slot 6, drive 0). This will either
|
||||
read a filename on standard input (if kdialog can't be run), or display
|
||||
a kdialog file-selector. Either way, the emulator stops and its window
|
||||
becomes unresponsive until a file has been chosen.
|
||||
|
||||
=item F2
|
||||
|
||||
Exit the emulator immediately. No confirmation dialog, so
|
||||
be careful.
|
||||
|
||||
=back
|
||||
|
||||
All other keystrokes are translated to their equivalent Apple II
|
||||
keystrokes, or ignored if there is no equivalent key on the Apple
|
||||
keyboard.
|
||||
|
||||
=head1 FILES
|
||||
|
||||
=over
|
||||
|
||||
=item B<.yaerc>, B<~/.yaerc>
|
||||
|
||||
Config file. Searched for first in the current directory,
|
||||
then in user's home directory. For config file syntax, see
|
||||
I</usr/share/yae/yaerc.sample>.
|
||||
|
||||
=item ROM files
|
||||
|
||||
For II and II+ emulation, the required ROM image is called B<APPLE2.ROM>.
|
||||
For the //e, the image is B<APPLE2E.ROM>. For all modes, B<DISK.ROM> is
|
||||
required.
|
||||
|
||||
ROM file locations can be set in the config file. By default, they're
|
||||
searched for in the current directory. If the ROMs can't be found in
|
||||
the configured location or the current directory, they will searched
|
||||
for in I</usr/share/yae>.
|
||||
|
||||
If the required ROM files can't be found, the emulator will refuse
|
||||
to start.
|
||||
|
||||
=back
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
B<kegs>(1), B<dos33fsutils>(1)
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
B<yae> was originally written by Doug Kwan, and includes enhancements by
|
||||
Warren Toomey. The version documented here also has some small bugfixes
|
||||
and enhancements by B. Watson.
|
||||
|
||||
This man page was written by B. Watson.
|
|
@ -0,0 +1,69 @@
|
|||
# Sample .yaerc file for yae apple emulator.
|
||||
|
||||
# Comments (like this one) begin with a hash
|
||||
# Non-comment lines are key and value, separated by whitespace.
|
||||
|
||||
### ROM image files
|
||||
|
||||
# These can be absolute paths, otherwise they're searched for in the current
|
||||
# directory. No matter what's defined here, the emulator will always fall
|
||||
# back to looking for DISK.ROM and either APPLE2.ROM or APPLE2E.ROM in
|
||||
# /usr/share/yae, if the files defined here can't be found.
|
||||
|
||||
#Apple2ROM APPLE2.ROM
|
||||
#Apple2eROM APPLE2E.ROM
|
||||
#DiskROM DISK.ROM
|
||||
|
||||
### Disk image files
|
||||
|
||||
# 4 drives are emulated. The emulated Apple boots from Slot 6, Drive 1.
|
||||
# Again, filenames can be absolute paths, or in the current
|
||||
# directory. As a fallback, yae will use /usr/share/yae/Master.dsk if
|
||||
# nothing is defined here, or if the DiskS6D1 file can't be found.
|
||||
|
||||
#DiskS6D1 /usr/share/yae/Master.dsk
|
||||
#DiskS6D2 /some/other.dsk
|
||||
#DiskS5D1 /some/other.dsk
|
||||
#DiskS5D2 /some/other.dsk
|
||||
|
||||
### Printer emulation
|
||||
|
||||
# By default, anything sent to slot 1 (the standard way to print on Apples)
|
||||
# will be echoed to standard output. If Printer is set here, slot 1's output
|
||||
# will go to the named file instead.
|
||||
|
||||
#Printer yae_output.txt
|
||||
|
||||
### Machine type
|
||||
|
||||
# 3 machine types are supported:
|
||||
|
||||
# II - Original Apple II (aka ][)
|
||||
# II+ - Apple II+ (added hi res graphics and bank-switched RAM)
|
||||
# IIe - Apple //e (added lowercase and 80 columns)
|
||||
|
||||
# If nothing is defined here, the default is IIe. This setting can be
|
||||
# overridden by the -2, -+, or -e command-line options. Note that
|
||||
# the emulator uses the same ROM for II and II+, so the emulated II will
|
||||
# have Applesoft and autostart (which the original II didn't ship with).
|
||||
|
||||
#MachineType IIe
|
||||
|
||||
### Misc options
|
||||
|
||||
# Default emulated CPU speed (in Hz, apparently). The emulator tries to
|
||||
# maintain this speed, but may slow down on loaded systems.
|
||||
|
||||
#Speed 1022727
|
||||
|
||||
# Which set of MouseText characters to use, when emulating the IIe/IIc.
|
||||
# The original version had characters FG as a "running man" glyph, and the
|
||||
# newer (IIgs only?) revision has a j-shaped left arrow and some horizontal
|
||||
# lines instead. Can be set to FALSE (the default) or TRUE.
|
||||
|
||||
#RunningMan FALSE
|
||||
|
||||
# Use X11 shared memory to speed up display? Can be set to TRUE (default)
|
||||
# or FALSE.
|
||||
|
||||
#UseXShm TRUE
|
Loading…
Reference in New Issue