diff options
Diffstat (limited to 'system')
26 files changed, 641 insertions, 0 deletions
diff --git a/system/atari800/README b/system/atari800/README new file mode 100644 index 0000000000..92662c7b31 --- /dev/null +++ b/system/atari800/README @@ -0,0 +1,13 @@ +Atari800 is an Atari 800, 800XL, 130XE and 5200 emulator for Unix, Amiga, +MS-DOS, Atari TT/Falcon, SDL and WinCE. Our main objective is to create a +freely distributable portable emulator (i.e. with source code available). + +This build of atari800 uses SDL for graphics/sound, and has no other +dependencies. + +To use the emulator, you will need a set of Atari ROM images. Install +the atari800_roms package to get the official (proprietary) ROM images, +or the atari800_os++ package to use an Open Source replacement ROM, +with some loss of compatibility/functionality. + +See README_SBo.txt for more information. diff --git a/system/atari800/README_SBo.txt b/system/atari800/README_SBo.txt new file mode 100644 index 0000000000..176cdf9d38 --- /dev/null +++ b/system/atari800/README_SBo.txt @@ -0,0 +1,61 @@ +Atari800 is an Atari 800, 800XL, 130XE and 5200 emulator for Unix, Amiga, +MS-DOS, Atari TT/Falcon, SDL and WinCE. Our main objective is to create a +freely distributable portable emulator (i.e. with source code available). + +This build of atari800 uses SDL for graphics/sound, and has no other +dependencies. + +To use the emulator, you will need a set of Atari ROM images. Install +the atari800_roms package to get the official (proprietary) ROM images, +or the atari800_os++ package to use an Open Source replacement ROM, +with some loss of compatibility/functionality. + +(Actually, a very small handful of cartridge games will run with no OS +ROM image at all: Star Raiders, Montezuma's Revenge, and Atari Basketball +all work fine. Most other carts won't work, and no disks or tapes will). + +This package registers new MIME types for Atari-related files in the +shared-mime-info database. After installation, it should be possible to +run Atari machine language executables (XEX files), Atari BASIC programs, +and disk/cartridge/cassette images by double-clicking them in Konqueror +or on the KDE desktop (or GNOME, if you've installed that). If you +don't want the package to include the MIME types and auto-registration, +set MIME_TYPES=no in the environment. + +This package, by default, enables serial port emulation via a TCP port. +When an Atari program that uses the R: (serial port) device is run, the +emulator listens for connections on a TCP port, and the Atari program +"sees" data received from the port as though it were coming from the +Atari serial port. Although there are no known security issues with +this, the security-conscious types may wish to disable this behaviour. +To disable, set RIO_DEVICE=no in the environment. + +Optionally, the various Atari file formats can be registered with the +Linux kernel's binfmt_misc mechanism, so it's possible to run Atari +native executables from the shell, if their executable bits are turned +on (e.g. with "chmod +x"). To enable this, add lines like these to your +/etc/rc.d/rc.local: + +if [ -x /etc/rc.d/rc.atari8bit_binfmt_misc ]; then + /etc/rc.d/rc.atari8bit_binfmt_misc start +fi + +...then "chmod +x /etc/rc.d/rc.atari8bit_binfmt_misc" to +enable on the next boot. If you don't want to reboot, run +"/etc/rc.d/rc.atari8bit_binfmt_misc start". + +If you're using a custom kernel, make sure binfmt_misc is compiled in, +either statically or as a module. The Slackware 12.x -generic kernels +ship with binfmt_misc as a module, which will be loaded by the rc script +if necessary. + +Note that the neither the KDE desktop integration nor the binfmt_misc +script will handle raw ROM cartridge images. This is because there's no +"signature" that can be used to auto-detect them, and filename globbing +is a bad idea since many emulators use raw dumps with .rom as the default +filename extension. Also, the current version of atari800 requires an +extra -cart argument for raw ROM images. To convert a raw ROM to a CART +image that can be used with KDE or binfmt_misc, load it with "atari800 +-cart filename.rom", choose the cartridge type, then press F1 to enter +atari800's menu, select "Cartridge Management", then "Create cartridge +from ROM image". Save the file with .car or .cart as the extension. diff --git a/system/atari800/README_rom_images.txt b/system/atari800/README_rom_images.txt new file mode 100644 index 0000000000..cd6da843f4 --- /dev/null +++ b/system/atari800/README_rom_images.txt @@ -0,0 +1,37 @@ + +The Atari 8-bit computer's operating system is stored on a ROM chip inside +the Atari. Without the OS, the Atari isn't capable of doing anything +useful. Also, many Atari programs are written in the Atari BASIC language, +which was an optional ROM cartridge on the 400/800 and 1200XL, but was +included as a built-in ROM in the 600XL, 800XL, and all XE machines. + +To use the Atari800 emulator, you'll need suitable ROM images/dumps. You +can either use the original OS and BASIC from Atari, or an open source +OS replacement called OS++. + +The original ROMs of course provide the best compatibility with software +for the Atari, but they are still copyrighted by Atari. In practice, +this doesn't cause a problem: the ROM images have been widely available +on the 'net for many years, and there has never been any legal action +taken regarding their use. + +If you'd prefer to use Open Source code, there is a replacement ROM called +OS++, written from scratch by Thomas Richter (author of the Atari++ +emulator) and released under the TPL (a variant of the Mozilla Public +License). Be aware that OS++ isn't 100% compatible with all software for +the Atari: it contains no support for the BASIC language or floating point +math. However, if your main purpose is to play games, you'll find that +(almost) all game cartridge ROMs work perfectly well with OS++. Many boot +disk games and XEX (binary load file) games work as well. OS++ runs on +XL/XE machines only, so you won't be able to emulate the original 400/800. + +To use the original proprietary Atari ROMs, install the atari800_roms +package from slackbuilds.org + +To use OS++ (a version slightly modified for use with Atari800 rather +than Atari++), install the atari800_os++ package instead. + +If you like, you can install both packages and choose between them at +runtime by altering the symlink at /usr/share/atari800/roms/atarixl.rom, by +running atari800 with the -xlxe_rom switch, or by editing the config file +(~/.atari800.cfg, created the first time you run the emulator). diff --git a/system/atari800/atari800.SlackBuild b/system/atari800/atari800.SlackBuild new file mode 100644 index 0000000000..0ef81eebc0 --- /dev/null +++ b/system/atari800/atari800.SlackBuild @@ -0,0 +1,121 @@ +#!/bin/sh + +# Slackware build script for atari800 + +# Written by B. Watson (yalhcru@gmail.com) +# Modified by the SlackBuilds.org project. + +PRGNAM=atari800 +VERSION=${VERSION:-2.1.0} +ARCH=${ARCH:-i486} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +# Do you want the emulated serial port to listen on a TCP port? +# This is enabled by default, build with RIO_DEVICE=no to disable. +RIO_DEVICE=${RIO_DEVICE:-yes} + +# Do you want the package to automatically associate itself with +# the various Atari 8-bit file formats (disk/cart/tape images)? +# Build with MIME_TYPES=no to disable +MIME_TYPES=${MIME_TYPES:-yes} + +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" +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 . +chmod -R a-s,u+w,go+r-w . + +if [ "$RIO_DEVICE" = "yes" ]; then + RIO="--enable-riodevice"; +else + RIO="--disable-riodevice"; +fi + +cd src +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ + ./configure \ + --target=sdl \ + --prefix=/usr \ + --enable-monitorprofile \ + --enable-seriosound \ + --enable-clipsound \ + --enable-readline \ + $RIO \ + --enable-monitorbreakpoints \ + --enable-monitortrace + +make + +# The Makefile ignores --datarootdir, --mandir, --docdir, so force it: +make install DESTDIR=$PKG \ + DOC_DIR=/usr/doc/$PRGNAM-$VERSION MAN_DIR=/usr/man/man1 + +chmod 755 $PKG/usr/bin/* +strip $PKG/usr/bin/$PRGNAM + +gzip -9 $PKG/usr/man/man1/$PRGNAM.1 + +# Package-specific docs +for i in README_rom_images.txt $PRGNAM.SlackBuild; do + cat $CWD/$i > $PKG/usr/doc/$PRGNAM-$VERSION/$i +done + +cat $CWD/README_SBo.txt > $PKG/usr/doc/$PRGNAM-$VERSION/README_SBo.txt + +# Sample code and contrib stuff, throw it in the doc dir +cp -r ../act ../util $PKG/usr/doc/$PRGNAM-$VERSION + +# Link a copy of the ROM doc to the ROM dir (we really want them to read this) +mkdir -p $PKG/usr/share/$PRGNAM +( cd $PKG/usr/share/$PRGNAM && \ + ln -s ../../doc/$PRGNAM-$VERSION/README_rom_images.txt . ) + +mkdir -p $PKG/usr/share/{applications,pixmaps} +cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop +cp $CWD/pixmaps/* $PKG/usr/share/pixmaps/ + +# All these .desktop, XML, and icon files are extras, not part of the +# atari800 release. They've been submitted to the atari800 mailing list, +# but have not yet been imported into the tree. +if [ "$MIME_TYPES" = "yes" ]; then + + mkdir -p $PKG/usr/share/{mime/packages,mimelnk/application} + cat $CWD/mime/$PRGNAM.xml > $PKG/usr/share/mime/packages/$PRGNAM.xml + cp $CWD/mime/*.desktop $PKG/usr/share/mimelnk/application/ + + # Add the MimeType stuff to the .desktop file + cat $CWD/mime/atari800_desktop_mime >> $PKG/usr/share/applications/$PRGNAM.desktop + +fi + +# Optional binfmt_misc support script (admin must enable by hand) +mkdir -p $PKG/etc/rc.d +cat $CWD/rc.atari800_binfmt_misc.new \ + > $PKG/etc/rc.d/rc.atari800_binfmt_misc.new + +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 y $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.tgz diff --git a/system/atari800/atari800.desktop b/system/atari800/atari800.desktop new file mode 100644 index 0000000000..7fdd780cb3 --- /dev/null +++ b/system/atari800/atari800.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Name=Atari800 Emulator +GenericName=Atari 8-Bit Emulator +Type=Application +Exec=atari800 +Icon=atarixe +Terminal=false +StartupNotify=false +Categories=Emulator;System; diff --git a/system/atari800/atari800.info b/system/atari800/atari800.info new file mode 100644 index 0000000000..38f15d6c04 --- /dev/null +++ b/system/atari800/atari800.info @@ -0,0 +1,8 @@ +PRGNAM="atari800" +VERSION="2.1.0" +HOMEPAGE="http://atari800.sourceforge.net/" +DOWNLOAD="http://downloads.sourceforge.net/atari800/atari800-2.1.0.tar.gz" +MD5SUM="53fdbaad6cb7752fb35895c6375ac9a7" +MAINTAINER="B. Watson" +EMAIL="yalhcru@gmail.com" +APPROVED="dsomero" diff --git a/system/atari800/doinst.sh b/system/atari800/doinst.sh new file mode 100644 index 0000000000..7a769bfbdd --- /dev/null +++ b/system/atari800/doinst.sh @@ -0,0 +1,30 @@ +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then + # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +# Keep same perms on rc.atari800_binfmt_misc.new: +if [ -e etc/rc.d/rc.atari800_binfmt_misc ]; then + cp -a etc/rc.d/rc.atari800_binfmt_misc etc/rc.d/rc.atari800_binfmt_misc.new.incoming + cat etc/rc.d/rc.atari800_binfmt_misc.new > etc/rc.d/rc.atari800_binfmt_misc.new.incoming + mv etc/rc.d/rc.atari800_binfmt_misc.new.incoming etc/rc.d/rc.atari800_binfmt_misc.new +fi + +config etc/rc.d/rc.atari800_binfmt_misc.new + +if [ -x /usr/bin/update-desktop-database ]; then + /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1 +fi + +if [ -x /usr/bin/update-mime-database ]; then + /usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1 +fi + diff --git a/system/atari800/mime/atari800.xml b/system/atari800/mime/atari800.xml new file mode 100644 index 0000000000..4451e70287 --- /dev/null +++ b/system/atari800/mime/atari800.xml @@ -0,0 +1,107 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- 20080823 bkw: is all this leading cruft really necessary? --> +<!DOCTYPE mime-info [ + <!ELEMENT mime-info (mime-type)+> + <!ATTLIST mime-info xmlns CDATA #FIXED "http://www.freedesktop.org/standards/shared-mime-info"> + + <!ELEMENT mime-type (comment|acronym|expanded-acronym|glob|magic|root-XML|alias|sub-class-of)*> + <!ATTLIST mime-type type CDATA #REQUIRED> + + <!-- a comment describing a document with the respective MIME type. Example: "WMV video" --> + <!ELEMENT comment (#PCDATA)> + <!ATTLIST comment xml:lang CDATA #IMPLIED> + + <!-- a comment describing a the respective unexpanded MIME type acronym. Example: "WMV" --> + <!ELEMENT acronym (#PCDATA)> + <!ATTLIST acronym xml:lang CDATA #IMPLIED> + + <!-- a comment describing a the respective unexpanded MIME type acronym. Example: "Windows Media Video" --> + <!ELEMENT expanded-acronym (#PCDATA)> + <!ATTLIST expanded-acronym xml:lang CDATA #IMPLIED> + + <!ELEMENT glob EMPTY> + <!ATTLIST glob pattern CDATA #REQUIRED> + + <!ELEMENT magic (match)+> + <!ATTLIST magic priority CDATA #IMPLIED> + + <!ELEMENT match (match)*> + <!ATTLIST match offset CDATA #REQUIRED> + <!ATTLIST match type (string|big16|big32|little16|little32|host16|host32|byte) #REQUIRED> + <!ATTLIST match value CDATA #REQUIRED> + <!ATTLIST match mask CDATA #IMPLIED> + + <!ELEMENT root-XML EMPTY> + <!ATTLIST root-XML + namespaceURI CDATA #REQUIRED + localName CDATA #REQUIRED> + + <!ELEMENT alias EMPTY> + <!ATTLIST alias + type CDATA #REQUIRED> + + <!ELEMENT sub-class-of EMPTY> + <!ATTLIST sub-class-of + type CDATA #REQUIRED> +]> +<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> + <mime-type type="application/x-atari-8bit-executable"> + <comment>Atari 8-Bit Executable</comment> + <acronym>XEX</acronym> + <expanded-acronym>XE eXecutable</expanded-acronym> + <magic priority="30"> + <match value="0xffff" type="big16" offset="0"/> + </magic> + <glob pattern="*.xex"/> + </mime-type> + <mime-type type="application/x-atari-8bit-saved-basic"> + <comment>Atari 8-Bit BASIC Program</comment> + <acronym>BAS</acronym> + <expanded-acronym>BASic</expanded-acronym> + <magic priority="50"> + <match value="0x0000" type="big16" offset="0"/> + </magic> + <glob pattern="*.bas"/> + </mime-type> + <mime-type type="application/x-atari-8bit-cartridge-image"> + <comment>Atari 8-Bit Cartridge Image</comment> + <acronym>CART</acronym> + <expanded-acronym>CARTridge</expanded-acronym> + <magic priority="50"> + <match value="CART" type="string" offset="0"/> + </magic> + <glob pattern="*.cart"/> + <glob pattern="*.car"/> + </mime-type> + <mime-type type="application/x-atari-8bit-disk-image"> + <comment>Atari 8-Bit Disk Image</comment> + <acronym>ATR</acronym> + <expanded-acronym>ATaRi</expanded-acronym> + <magic priority="50"> + <match value="0x9602" type="big16" offset="0"/> + </magic> + <glob pattern="*.atr"/> + </mime-type> + <mime-type type="application/x-atari-8bit-raw-disk-image"> + <comment>Atari 8-Bit Disk Image (Raw)</comment> + <acronym>XFD</acronym> + <expanded-acronym>XFormer Disk</expanded-acronym> + <glob pattern="*.xfd"/> + </mime-type> + <mime-type type="application/x-atari-8bit-cassette-image"> + <comment>Atari 8-Bit Cassette Image</comment> + <acronym>CAS</acronym> + <expanded-acronym>CASsette</expanded-acronym> + <magic priority="50"> + <match value="FUJI" type="string" offset="0"/> + </magic> + <glob pattern="*.cas"/> + </mime-type> + <mime-type type="application/x-atari800-saved-state"> + <sub-class-of type="application/x-gzip"/> + <comment>Atari800 Emulator Saved State</comment> + <acronym>A8S</acronym> + <expanded-acronym>Atari800 State</expanded-acronym> + <glob pattern="*.a8s"/> + </mime-type> +</mime-info> diff --git a/system/atari800/mime/atari800_desktop_mime b/system/atari800/mime/atari800_desktop_mime new file mode 100644 index 0000000000..a4d5cbd956 --- /dev/null +++ b/system/atari800/mime/atari800_desktop_mime @@ -0,0 +1 @@ +MimeType=application/x-atari-8bit-executable;application/x-atari-8bit-saved-basic;application/x-atari-8bit-cartridge-image;application/x-atari-8bit-disk-image;application/x-atari-8bit-raw-disk-image;application/x-atari-8bit-cassette-image;application/x-atari800-saved-state; diff --git a/system/atari800/mime/x-atari-8bit-cartridge-image.desktop b/system/atari800/mime/x-atari-8bit-cartridge-image.desktop new file mode 100644 index 0000000000..0db832bb27 --- /dev/null +++ b/system/atari800/mime/x-atari-8bit-cartridge-image.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=MimeType +MimeType=application/x-atari-8bit-cartridge-image +Icon=atari-cart +Patterns=*.car;*.CAR;*.cart;*.CART; +#X-KDE-PatternsAccuracy=80 +Comment=Atari 8-bit Cartridge Image diff --git a/system/atari800/mime/x-atari-8bit-cassette-image.desktop b/system/atari800/mime/x-atari-8bit-cassette-image.desktop new file mode 100644 index 0000000000..e67a95cffa --- /dev/null +++ b/system/atari800/mime/x-atari-8bit-cassette-image.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=MimeType +MimeType=application/x-atari-8bit-cassette-image +Icon=atari-cas +Patterns=*.cas;*.CAS; +#X-KDE-PatternsAccuracy=80 +Comment=Atari 8-bit Cassette Image diff --git a/system/atari800/mime/x-atari-8bit-disk-image.desktop b/system/atari800/mime/x-atari-8bit-disk-image.desktop new file mode 100644 index 0000000000..63b06b51aa --- /dev/null +++ b/system/atari800/mime/x-atari-8bit-disk-image.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=MimeType +MimeType=application/x-atari-8bit-disk-image +Icon=atari-atr +Patterns=*.atr;*.ATR; +# X-KDE-PatternsAccuracy=80 +Comment=Atari 8-bit Disk Image diff --git a/system/atari800/mime/x-atari-8bit-executable.desktop b/system/atari800/mime/x-atari-8bit-executable.desktop new file mode 100644 index 0000000000..18f0a8708c --- /dev/null +++ b/system/atari800/mime/x-atari-8bit-executable.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=MimeType +MimeType=application/x-atari-8bit-executable +Icon=atari-xex +Patterns=*.xex;*.XEX; +#X-KDE-PatternsAccuracy=95 +Comment=Atari 8-bit Executable diff --git a/system/atari800/mime/x-atari-8bit-raw-disk-image.desktop b/system/atari800/mime/x-atari-8bit-raw-disk-image.desktop new file mode 100644 index 0000000000..8d6cb15376 --- /dev/null +++ b/system/atari800/mime/x-atari-8bit-raw-disk-image.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=MimeType +MimeType=application/x-atari-8bit-raw-disk-image +Icon=atari-xfd +Patterns=*.xfd;*.XFD; +#X-KDE-PatternsAccuracy=80 +Comment=Atari 8-bit Raw Disk Image diff --git a/system/atari800/mime/x-atari-8bit-saved-basic.desktop b/system/atari800/mime/x-atari-8bit-saved-basic.desktop new file mode 100644 index 0000000000..aa5f80e6ce --- /dev/null +++ b/system/atari800/mime/x-atari-8bit-saved-basic.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=MimeType +MimeType=application/x-atari-8bit-saved-basic +Icon=atari-bas +Patterns=*.bas;*.BAS; +#X-KDE-PatternsAccuracy=80 +Comment=Atari 8-bit BASIC Program diff --git a/system/atari800/mime/x-atari800-saved-state.desktop b/system/atari800/mime/x-atari800-saved-state.desktop new file mode 100644 index 0000000000..b8dc739fbf --- /dev/null +++ b/system/atari800/mime/x-atari800-saved-state.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=MimeType +MimeType=application/x-atari800-saved-state +Icon=atari-a8s +Patterns=*.a8s;*.A8S; +#X-KDE-PatternsAccuracy=80 +Comment=Atari800 Emulator Saved State diff --git a/system/atari800/pixmaps/atari-a8s.png b/system/atari800/pixmaps/atari-a8s.png Binary files differnew file mode 100644 index 0000000000..89f212dad2 --- /dev/null +++ b/system/atari800/pixmaps/atari-a8s.png diff --git a/system/atari800/pixmaps/atari-atr.png b/system/atari800/pixmaps/atari-atr.png Binary files differnew file mode 100644 index 0000000000..2772d33ac9 --- /dev/null +++ b/system/atari800/pixmaps/atari-atr.png diff --git a/system/atari800/pixmaps/atari-bas.png b/system/atari800/pixmaps/atari-bas.png Binary files differnew file mode 100644 index 0000000000..7b986e05a7 --- /dev/null +++ b/system/atari800/pixmaps/atari-bas.png diff --git a/system/atari800/pixmaps/atari-cart.png b/system/atari800/pixmaps/atari-cart.png Binary files differnew file mode 100644 index 0000000000..4ef9d57414 --- /dev/null +++ b/system/atari800/pixmaps/atari-cart.png diff --git a/system/atari800/pixmaps/atari-cas.png b/system/atari800/pixmaps/atari-cas.png Binary files differnew file mode 100644 index 0000000000..0118656885 --- /dev/null +++ b/system/atari800/pixmaps/atari-cas.png diff --git a/system/atari800/pixmaps/atari-xex.png b/system/atari800/pixmaps/atari-xex.png Binary files differnew file mode 100644 index 0000000000..cedb30cf39 --- /dev/null +++ b/system/atari800/pixmaps/atari-xex.png diff --git a/system/atari800/pixmaps/atari-xfd.png b/system/atari800/pixmaps/atari-xfd.png Binary files differnew file mode 100644 index 0000000000..08b59e588e --- /dev/null +++ b/system/atari800/pixmaps/atari-xfd.png diff --git a/system/atari800/pixmaps/atarixe.png b/system/atari800/pixmaps/atarixe.png Binary files differnew file mode 100644 index 0000000000..19d0efe7c8 --- /dev/null +++ b/system/atari800/pixmaps/atarixe.png diff --git a/system/atari800/rc.atari800_binfmt_misc.new b/system/atari800/rc.atari800_binfmt_misc.new new file mode 100644 index 0000000000..65bc5f20f2 --- /dev/null +++ b/system/atari800/rc.atari800_binfmt_misc.new @@ -0,0 +1,178 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: atari800_binfmt_misc +# Required-Start: +# Required-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: +# Short-Description: Register Atari 8-bit file formats with binfmt_misc +### END INIT INFO + +# atari800_binfmt_misc: register Atari 8-bit file formats with binfmt_misc. +# Allows direct execution of Atari executables, disk images, boot cassette +# images, BASIC programs, and cartridge images, via the atari800 emulator. + +PROCDIR=/proc/sys/fs/binfmt_misc +EMUDIRS="/usr/local/bin /usr/bin /bin" + +### Functions. This script doesn't depend on any external function library. + +die() { + echo $1 1>&2 + exit 1 +} + +usage() { + cat <<EOF +Usage: $0 stop | start | restart + +This service registers Atari 8-bit file types with the kernel's binfmt_misc +driver, to allow users to directly execute Atari software (disk images, +executables, BASIC programs, boot cassette images, and cartridge images) +as though they were native Linux executables. + +To run Atari software, the atari800 emulator is required. Normally, atari800 +requires X to be running (it may be possible to compile it for console use). +Get atari800 from: http://atari800.sourceforge.net + +If you get a "Can't find atari800 emulator" error, either install atari800 +in one of these directories: $EMUDIRS + +...or set ATARI800_BIN in the environment to the full path of the emulator +binary: export ATARI800_BIN=/opt/atari800/bin/atari800 +EOF + + exit 1 +} + +find_atari800() { + if [ -z "$ATARI800_BIN" ]; then + ATARI800_BIN=none + + for path in $EMUDIRS; do + if [ -x $path/atari800 ]; then + ATARI800_BIN=$path/atari800 + fi + done + + if [ "$ATARI800_BIN" = "none" ]; then + die "Can't find atari800 emulator in $EMUDIRS" + fi + fi +} + +init_binfmt_misc() { + # Load/init binfmt_misc, if needed. + /sbin/modprobe binfmt_misc 2>/dev/null + mount -t binfmt_misc none $PROCDIR 2>/dev/null +} + +check_binfmt_misc() { + # sanity check + cd $PROCDIR && [ -f status ] + if [ "$?" != "0" ]; then + die "binfmt_misc not available in kernel" + fi +} + +unregister_filetypes() { + local type + cd $PROCDIR || die "$PROCDIR does not exist" + + # Unregister filetypes, if already registered + # (not an error if already unregistered) + for type in \ + atari8_xex atari8_basic atari8_atr \ + atari8_xfd atari8_Xfd atari8_XFD \ + atari8_cas atari8_cart + do + [ -f $type ] && echo -1 > $type + done +} + +register_filetypes() { + cd $PROCDIR || die "$PROCDIR does not exist" + + # Register filetypes + # :name:type:offset:magic:mask:interpreter:flags + # see /usr/src/linux/Documentation/binfmt_misc.txt or + # http://www.tat.physik.uni-tuebingen.de/~rguenth/linux/binfmt_misc.html + # for explanation of this. + echo ':atari8_xex:M::\xff\xff::'$ATARI800_BIN':' > register + echo ':atari8_basic:M::\x00\x00::'$ATARI800_BIN':' > register + echo ':atari8_atr:M::\x96\x02::'$ATARI800_BIN':' > register + echo ':atari8_xfd:E::xfd::'$ATARI800_BIN':' > register + echo ':atari8_Xfd:E::Xfd::'$ATARI800_BIN':' > register + echo ':atari8_XFD:E::XFD::'$ATARI800_BIN':' > register + echo ':atari8_cas:M::FUJI::'$ATARI800_BIN':' > register + echo ':atari8_cart:M::CART::'$ATARI800_BIN':' > register + + # This is disabled because (a) lots of emulators use .rom files, and + # (b) current version of atari800 needs the -cart parameter for raw + # ROM dumps, which we can't provide via binfmt_misc. + #echo ':atari8_rom:E::rom::'$ATARI800_BIN':' > register + + # see if it worked: + if [ ! -f atari8_xex ]; then + die "Failed to register filetypes, are you root?" + fi +} + +### main() +case "$1" in + stop) + unregister_filetypes + ;; + + start) + init_binfmt_misc + check_binfmt_misc + find_atari800 + register_filetypes + ;; + + restart) + init_binfmt_misc + check_binfmt_misc + unregister_filetypes + find_atari800 + register_filetypes + ;; + + *) + usage + ;; + +esac + +exit 0 + +# notes: + +# NO parameters allowed when calling the emulator, use a wrapper +# script if you need to always pass e.g. -windowed or -ntscemu, or +# just put on the command line when you run an Atari program. + +# there's no "magic" for recognizing XFD images. Instead, they're +# recognized by filename extension... which is case-sensitive, hence +# the xfd/Xfd/XFD combination. Feel free to add xFD or xFd, etc, if +# you have a bunch of files named like that (better solution would be +# to rename them!) + +# There's no way to determine whether a given disk or tape image +# requires BASIC. The wrapper scripts assume that a boot disk, XEX +# file, or boot tape, does not require BASIC... and that a BASIC +# program (obviously) does. Unfortunately there's no easy way to +# have the emulator run CLOAD, for a non-bootable BASIC tape, so +# CAS support can only work with boot tapes. + +# Likewise, there's no way to tell whether a given tape or disk +# image is in fact bootable (well, not really true, the wrappers +# *could* examine boot records, etc, but they don't). + +# If you have a XEX, ATR/XFD image, or boot CAS image that requires +# BASIC, you can enable it, by adding the -basic parameter to the +# command line (e.g. "myimage.atr -basic"). More generally, you +# can pass arbitrary atari800 options just by putting them on the +# image command line (see atari800 -help for full list). + diff --git a/system/atari800/slack-desc b/system/atari800/slack-desc new file mode 100644 index 0000000000..2ad3bcd028 --- /dev/null +++ b/system/atari800/slack-desc @@ -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------------------------------------------------------| +atari800: atari800 (emulator for Atari 800/XL/XE computers and 5200 console) +atari800: +atari800: Atari800 is an Atari 800, 800XL, 130XE and 5200 emulator for Unix, +atari800: Amiga, MS-DOS, Atari TT/Falcon, SDL and WinCE. Our main objective is +atari800: to create a freely distributable portable emulator (i.e. with source +atari800: code available). +atari800: +atari800: To use the emulator, you will need a set of Atari ROM images. Install +atari800: the atari800_roms package to get the official (proprietary) ROM images, +atari800: or the atari800_os++ package to use an Open Source replacement ROM, +atari800: with some loss of compatibility/functionality. |