84563 packages online


No screenshot available
Short:Sinclair ZX80/ZX81/TS1000 emulator
Author:Russell Marks, Ian Collier, Thunor, Chris Young
Uploader:chris unsatisfactorysoftware co uk (Chris Young)
Version:2.1.7 (
Architecture:ppc-amigaos >= 4.0.0
Download: - View contents

sz81   - a ZX81 and ZX80 emulator using SDL

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

* Contained within this document is information specific to sz81 only. *
* Please see README.z81 for information about [x]z81, zx81get and the  *
* contents of the games-etc and saverom folders.                       *

Table of Contents

    For the PC
    For the Amiga
    For the Sharp Zaurus
    For the GPH GP2X/Wiz
    General GUI Navigation
    Loading a Program File
    Saving a Program File
    Saving and Loading State Files
    Configuring a Joystick
    Remapping Joystick Controls
    Using the ZX Printer
    The Configuration File
    Exiting sz81
4.Compilation and Installation
    For desktop Linux
    For the Amiga
    For the Sharp Zaurus
    For the GPH GP2X/Wiz
5.Porting to Other Platforms
7.Contacting Us


sz81 is a Sinclair ZX80/ZX81 emulator very much based upon the work of
Ian Collier's xz80 and Russell Marks's z81 but employing the highly
portable SDL and including additional functionality and features for
desktop computers and portable devices.

 * Virtual keyboard with several adjustable properties
 * Control bar with icons for regularly used features
 * Load anytime file dialog (no need to use LOAD)
 * Save state system with 9 slots for each program
 * Runtime options including a joystick configurator
 * RAM configurations of 1 to 4, 16, 32, 48 and 56K
 * Quicksilva, BI-PAK ZON X-81 and VSYNC-based sound
 * Screenshot saving using the bitmap image format
 * Joystick control remapping within the emulator
 * Full keyboard, mouse and joystick support throughout
 * 3x runtime switchable scaling on supported platforms
 * Window and fullscreen toggling on supported platforms
 * Portrait orientated resolutions such as 240x320
 * The ability to run centred within any resolution
 * Source code support for *nix, AmigaOS4 and Win32
 * Maximum porting potential since it only requires SDL


For the PC:

    Click screen  - Toggle virtual keyboard and control bar
    Backspace     - Rubout i.e. equivalent to using SHIFT + 0
    Comma         - Equivalent to using SHIFT + .
    Cursors       - Equivalent to using SHIFT + 5, 6, 7 and 8
    -/=           - Decrease/increase the volume (if supported)
    ALT + R       - Cycle between 960x720, 640x480 and 320x240
    F11           - Toggle between fullscreen and a window
    F9            - Activate the control remapper for remapping
                    joystick controls to keyboard controls
    PrtScn        - Save a screenshot to the local scnsht folder
    Pause         - Place emulation on hold but not the GUI

    Clicking the screen (or F1) brings up the virtual keyboard and the
    control bar enabling access to several very useful features. These
    are listed below alongside their keyboard equivalents :-

    Exit          - Exit emulator (F10)
    Reset         - Reset emulator (F12)
    Autohide      - Toggle vkeyb between autohide and don't hide (F6)
    Shift Type    - Toggle between sticky shift and toggle shift (F7)
    Opacity DN/UP - Reduce (HOME) or increase (END) vkeyb opacity
    Invert Screen - Toggle between not inverse and inverse video (F8)
    Save State    - Toggle the save state dialog if available (F4)
    Load State    - Toggle the load state dialog if available (F5)
    Load File     - Toggle the load file dialog (F3)
    Options       - Toggle the runtime options (F2)

For the Amiga:

    As above section "For the PC" plus:


    sz81 can be configured using tooltypes:


    LOCALDATA=<dir to save user data> (default: PROGDIR:save)
    STATICLOADDIR - LOAD/SAVE always uses <LOCALDATA>/progrm (default is
                    to LOAD/SAVE from the directory last used)

    File Selector

    The Amiga build uses standard ASL requesters instead of sz81's
    built-in file selector.

For the Sharp Zaurus:

    Click screen  - Toggle virtual keyboard and control bar
    Backspace     - Rubout i.e. equivalent to using SHIFT + 0
    Comma         - Equivalent to using SHIFT + .
    Cursors       - Equivalent to using SHIFT + 5, 6, 7 and 8
    -/=           - Decrease/increase the volume (if supported)

    See PC controls for an explanation of the control bar.

For the GPH GP2X/Wiz:

    Within the emulator (remappable)   | Within the GUI
    LTrigger      - SHIFT              | SHIFT/Page up
    RTrigger      -                    | Page down
    Joy Left      - O                  | Selector left
    Joy Right     - P                  | Selector right
    Joy Up        - Q                  | Selector up
    Joy Down      - A                  | Selector down
    Select        - Load file dialog   | Control remapper
    Start         - Virtual keyboard   |
    Button A      - Newline            | Select (selector hit)
    Button B      - Newline            | Newline
    Button Y      - Rubout (SHIFT + 0) | Rubout (SHIFT + 0)
    Button X      - Space              | Space

    See PC controls for an explanation of the control bar.


    General GUI Navigation
    Every component has a green selector that can be moved around using
    the cursor keys or the joystick (the virtual keyboard and control
    bar's selector will only appear if a joystick is detected). The item
    currently selected can be activated with the enter key, a joystick
    button (selector hit) or by clicking with the mouse. If you use the
    mouse then of course you are free to activate items directly and can
    ignore the selector. Page up and page down (or joystick equivalents)
    will flip between pages and scroll through lists. Escape operates as
    you might expect: it closes the topmost dialog or component and will
    continue to do so until the emulator window is reached.

    Loading a Program File
    Typing the ZX80's LOAD ("W", newline) or the ZX81's LOAD "" ("J",
    SHIFT + "P" twice, newline) will show the load file dialog. There is
    a much easier way to show the same dialog and that's via the control
    bar icon or the F3 key (joystick select) but there is a fundamental
    difference in the way that these two methods work that you should be
    made aware of: a machine reset will occur if you load a program file
    by directly activating the dialog but not if you activate it via the
    machine's LOAD command. For the most part this won't matter at all,
    but if you are intending to set-up RAMTOP, load a program above it
    before loading another program then you will lose everything if you
    load a program by invoking the dialog directly.

    If you have an understanding of the ZX81 then you will know that it
    is possible to load a program by executing LOAD "PROG" in which case
    sz81's loading mechanism will search for prog.p or PROG.P within the
    last directory navigated to, or if you've yet to navigate anywhere
    then the start-up folder. If you'd like to load an .81 file instead
    then the .p extension can be overridden by appending an .81 suffix
    e.g LOAD "PROG.81".

    There are some additional ways to navigate and utilise the load file
    dialog that enhance its operability: directories can be opened and
    programs loaded with a single mouse or stylus click, the scrollbar
    is interactive and the list can be scrolled using a mouse wheel. It
    is also possible to select an item by typing its initial letter or
    number and then cycling to subsequent items with repeated presses.

    Saving a Program File
    On the ZX80 saving is achieved by executing SAVE ("E", newline), but
    since there is no way to pass a filename and indeed no native sz81
    save file dialog either, a choice of two naming methods have been
    made available: the first and default method is to save the program
    into the last folder navigated to with the load file dialog (or the
    start-up directory) with a sequential filename e.g. zx80prog0123.o.
    The second funkier method is to embed a BASIC line somewhere within
    the program e.g. 9999 REM SAVE "PROG". The line number used is not
    important, but the use of the SAVE keyword is so you'll need to type
    9999 SAVE "PROG" and then move the cursor back before SAVE and add
    a REM. When the program is saved by executing SAVE, sz81's program
    saving mechanism will look for this embedded BASIC REM statement and
    extract the filename. The default .o extension can be overridden by
    appending a .80 suffix. Please note that if you are using a version
    of sz81 that's been ported to a non *nix platform, these filenaming
    methods may have been replaced with a save dialog native to your OS.

    Saving and Loading State Files
    sz81 supports the saving and later reloading of images that are most
    commonly known as save state files. They are simply files containing
    dumps of the emulated machine's memory and the emulator's variables
    to enable a program to be restored to the same state at some other
    point in the future. So, after loading a game and playing the first
    level or two you find that your lunch break is over and you'd like
    to save your current position within the game to continue with later
    when distraction beckons - simply activate the save state dialog by
    pressing F4 or selecting it from the control bar and choose a slot.
    Slots that are inverse have an existing state already stored there
    (from the same program) so either choose a new slot or overwrite an
    existing one. This can be achieved by clicking a slot with the mouse
    or stylus, moving the selector and pressing enter (selector hit) or
    pressing a number from 1 to 9.

    Loading a save state file requires that the original game is loaded
    first and then the load state dialog can be activated with F5 or via
    the control bar. Then simply choose one of the previous slots that
    you've saved to and away you go.

    Configuring a Joystick
    If you have a digital or analogue joystick plugged in and you'd like
    to use it then open the runtime options (F2 from within the emulator
    or select the control bar icon) and employ the joystick configurator
    using either the cursor keys and enter, the mouse or stylus or the
    joystick once configured. Select a control on the graphical joystick
    representation (the selector will blink) and follow the instructions
    configuring as many of the controls as you possibly can for optimum

    Remapping Joystick Controls
    With the virtual keyboard and control bar visible, position the
    selector over the function that you'd like to assign to a joystick
    control and press the control remapper (the selector will blink).
    Then press a joystick control to remap the function to the control.
    Existing controls that have been remapped are active within the
    emulator (you cannot remap GUI controls) whilst new controls are
    universally active. It is possible to include the SHIFT modifier
    within the control as long as it is active before you initiate
    remapping. To cancel remapping press the control remapper again.

    Using the ZX Printer
    Emulated printer output is currently written to sequentially named
    pbm image files stored within the local prtout folder. A new file is
    created when either of the ZX81's LLIST or LPRINT commands are used
    and then closed when the emulator is reset or sz81 exited.

    The Configuration File
    Located within the local folder is the auto-generated configuration
    file sz81rc (or sz81.ini). It is possible to tweak sz81's operation
    by editing the contents of this file but the majority of people will
    leave it as is. Right at the top is show_input_id which can be set
    to TRUE to show input device id's (SDL_keysym's) which is useful if
    you are configuring an input device and would like to know the id's
    of the buttons. Additionally the entire control set is stored within
    this file and controls can be edited, added or removed. For example
    there is no print screen (SDLK_PRINT) key on a handheld device with
    no keyboard and so by default the user cannot take screenshots, but
    if they have a spare input button and they know its id then they can
    by adding the following ctrl_remap:

        ctrl_remap.device=DEVICE_JOYSTICK        // or DEVICE_KEYBOARD                         // 19 is an example

    Simply put, this ctrl_remap active across all program components,
    protected from being modified by the control remapper, will cause
    the joystick button with the id of 19 to be intercepted and a PrtScn
    keyboard key event generated in its place. remap_mod_id can be used
    to generate an additional event and this is how backspace generates
    SHIFT + 0 within the emulator. I recommend looking at sdl_input.c
    and sdl_input.h to understand this system in more detail.

    Exiting sz81
    Upon exiting, if you have modified any of the configurable options
    you will be presented with a dialog requesting that you confirm
    writing the changes to the configuration file (sz81rc, sz81.ini).
    If you choose "No" then the changes will be discarded. This is
    useful for when you have configured the emulator just how you like
    it and don't wish to disturb it with unimportant modifications.

4.Compilation and Installation

Extract the sz81 source package and change into the extracted directory.

For desktop Linux:

    Comment/uncomment the PREFIX BINDIR DOCDIR PACKAGE_DATA_DIR group at
    the top of the Makefile depending on whether you want to do a local
    install, system-wide install or run from the source folder (default)
    and then type :-

    make clean
    (If you're running from the source folder then that's it, but if
    you're installing this locally or system-wide then continue)
    (Installing system-wide requires that you login as root now)
    make install

For the Amiga (requires SDK):

    gmake -f Makefile.amigaos4

    To get all the required files together in RAM:sz81:
    gmake -f Makefile.amigaos4 install

    The directory can then be dragged to final location.

For the Sharp Zaurus (requires SDK):

    make clean
    make -f Makefile.zaurus

    Install sz81_2.1.x_zaurus.ipk using Add/Remove Software.

For the GPH GP2X/Wiz (requires SDK):

    make clean
    (For the GPH toolchain execute the following line only)
    make -f Makefile.gp2x
    (For the Open2x toolchain execute the following line only)
    make -f Makefile.open2x
    (For the OpenWiz toolchain execute the following line only)
    make -f Makefile.openwiz

    Extract sz81_2.1.x_{gp2x|open2x|openwiz}.tar.gz and copy the
    contents onto your SD card.

5.Porting to Other Platforms

This project requires SDL only, runs centred within any resolution, can
be scaled-up up to 3x, can be operated entirely with a keyboard, mouse
or joystick, ships with *nix, AmigaOS4 and Win32 source code support by
default and should port easily to many different platforms and devices.


Thanks go to Mr 2X and Neil L from the forums for assisting
with testing the Wiz build.

7.Contacting Us

Please visit the project's support page at


Version: 2.6.3in


Contents of misc/emu/sz81.lha
---------- ----------- ------- ------- ------ ---------- ------------ -------------
[unknown]                 9575   11420  83.8% -lh6- 107b Feb 13 14:35
[unknown]                  148     610  24.3% -lh6- 06c2 Feb 13 14:28 sz81/data/sz81.bmp
[unknown]                  549    3710  14.8% -lh6- b7df Feb 13 14:28 sz81/data/sz81icons.bmp
[unknown]                 3389    4096  82.7% -lh6- 5055 Feb 13 14:29 sz81/data/zx80.rom
[unknown]                  476    3906  12.2% -lh6- bff7 Feb 13 14:28 sz81/data/zx80font.bmp
[unknown]                 1559   17486   8.9% -lh6- c7d5 Feb 13 14:29 sz81/data/zx80kybd.bmp
[unknown]                 6796    8192  83.0% -lh6- eb8f Feb 13 14:29 sz81/data/zx81.rom
[unknown]                  455    3906  11.6% -lh6- bfc1 Feb 13 14:29 sz81/data/zx81font.bmp
[unknown]                 1876   17486  10.7% -lh6- 1d66 Feb 13 14:29 sz81/data/zx81kybd.bmp
[unknown]                  687    3906  17.6% -lh6- 9611 Feb 13 14:29 sz81/data/zx82font.bmp
[unknown]                 9578   11420  83.9% -lh6- 48a0 Feb 13 14:35 sz81/
[unknown]                  307     617  49.8% -lh6- ccaa Feb 13 14:28 sz81/Docs/authors
[unknown]                 3163    5120  61.8% -lh6- 00c5 Feb 13 14:35 sz81/Docs/
[unknown]                 5042   14863  33.9% -lh6- 5a1b Feb 13 14:28 sz81/Docs/ChangeLog
[unknown]                 3161    5120  61.7% -lh6- c147 Feb 13 14:35 sz81/Docs/
[unknown]                 6835   17987  38.0% -lh6- 6294 Feb 13 14:28 sz81/Docs/copying
[unknown]                 3163    5120  61.8% -lh6- 27bf Feb 13 14:35 sz81/Docs/
[unknown]                  372     592  62.8% -lh6- 7579 Mar 10  2010 sz81/Docs/gamenotes
[unknown]                 3161    5120  61.7% -lh6- 2d61 Feb 13 14:35 sz81/Docs/
[unknown]                 1058    2301  46.0% -lh6- 1bb9 Feb 13 14:28 sz81/Docs/news
[unknown]                 3162    5120  61.8% -lh6- ee62 Feb 13 14:35 sz81/Docs/
[unknown]                 6335   16888  37.5% -lh6- 7201 Feb 13 14:28 sz81/Docs/readme
[unknown]                 3164    5120  61.8% -lh6- 2d66 Feb 13 14:35 sz81/Docs/
[unknown]                 6524   17246  37.8% -lh6- 17f9 Feb 13 14:29 sz81/Docs/sz81.readme
[unknown]                 3164    5120  61.8% -lh6- 1f41 Feb 13 14:35 sz81/Docs/
[unknown]                 3890    4808  80.9% -lh6- f0bd Feb 13 14:28 sz81/Extras/def_icons/
[unknown]                 3795    4738  80.1% -lh6- 0d0e Feb 13 14:28 sz81/Extras/def_icons/
[unknown]                   50      50 100.0% -lh0- f392 Feb 13 14:28 sz81/Extras/def_icons/readme.icons
[unknown]                10377   10377 100.0% -lh0- 23c6 Mar 10  2010 sz81/games-etc/aydemo-src.tar.gz
[unknown]                 1695    7955  21.3% -lh6- 6146 Mar 10  2010 sz81/games-etc/aydemo.p
[unknown]                12183   35147  34.7% -lh6- 7994 Oct 12 20:43 sz81/games-etc/mctemplate/copying
[unknown]                  350     687  50.9% -lh6- c870 Dec  3 19:04 sz81/games-etc/mctemplate/Makefile
[unknown]                 2486    6435  38.6% -lh6- 8e8b Dec  3 19:04 sz81/games-etc/mctemplate/mctemplate.asm
[unknown]                  140     971  14.4% -lh6- c1a4 Oct 12 20:43 sz81/games-etc/mctemplate/mctemplate.p
[unknown]                  745    1305  57.1% -lh6- 63d1 Dec  3 19:04 sz81/games-etc/mctemplate/mctemplate.txt
[unknown]                17049   17049 100.0% -lh0- 1f26 Mar 10  2010 sz81/games-etc/mine81-src.tar.gz
[unknown]                 2907    6694  43.4% -lh6- e2d4 Mar 10  2010 sz81/games-etc/mine81.p
[unknown]                 1349    2584  52.2% -lh6- 71f5 Mar 10  2010 sz81/games-etc/mine81.txt
[unknown]                 2694    4876  55.3% -lh6- b8cb Jan 24 23:23 sz81/games-etc/panicohr.p
[unknown]                12182   35148  34.7% -lh6- a8f8 Oct 12 20:43 sz81/games-etc/pipepanic/copying
[unknown]                  347     686  50.6% -lh6- f89c Dec  3 19:04 sz81/games-etc/pipepanic/Makefile
[unknown]               210789  210789 100.0% -lh0- 5c3a Oct 12 20:43 sz81/games-etc/pipepanic/pipepanic-inlay.png
[unknown]                23091   96356  24.0% -lh6- 9521 Dec  3 19:04 sz81/games-etc/pipepanic/pipepanic.asm
[unknown]                 4820    8038  60.0% -lh6- c041 Oct 12 20:43 sz81/games-etc/pipepanic/pipepanic.p
[unknown]                  906    1687  53.7% -lh6- 8d05 Dec  3 19:04 sz81/games-etc/pipepanic/pipepanic.txt
[unknown]                31826   31826 100.0% -lh0- a0f2 Mar 10  2010 sz81/games-etc/tetris-src.tar.gz
[unknown]                 1889    4403  42.9% -lh6- 25ac Mar 10  2010 sz81/games-etc/tetris.p
[unknown]                 2583    5171  50.0% -lh6- 2b6a Mar 10  2010 sz81/games-etc/tetris.txt
[unknown]                 4048    4048 100.0% -lh0- e8f7 Mar 10  2010 sz81/games-etc/tetris1k-src-newer.tar.gz
[unknown]                  570     716  79.6% -lh6- 01fe Mar 10  2010 sz81/games-etc/tetris1k.p
[unknown]                 3757   11815  31.8% -lh6- 7825 Mar 10  2010 sz81/games-etc/tetrishr.p
[unknown]               138122  356973  38.7% -lh6- 6488 Feb 13 14:28 sz81/sz81
[unknown]                  776    1743  44.5% -lh6- 9a95 Feb 13 14:35 sz81/
---------- ----------- ------- ------- ------ ---------- ------------ -------------
 Total        53 files  579115 1065547  54.3%            Feb 13 21:15

Aminet © 1992-2024 Urban Müller and the Aminet team. Aminet contact address: <aminetaminet net>