771 lines
25 KiB
Text
771 lines
25 KiB
Text
|
|
||
|
* * * * * * * * * * * * * * *
|
||
|
* *
|
||
|
* S P E C T E M U *
|
||
|
* *
|
||
|
* Version 0.94 *
|
||
|
* *
|
||
|
* * * * * * * * * * * * * * *
|
||
|
|
||
|
|
||
|
This package contains a 48k ZX-Spectrum emulator for Linux and other
|
||
|
UNIX operating systems, with full Z80 instruction set, comprehensive
|
||
|
screen, sound and tape emulation, and snapshot file saving and
|
||
|
loading. It can run on a Linux console, or in an X11 window.
|
||
|
|
||
|
The program is free software and is copyrighted under the GNU General
|
||
|
Public License. It comes with absolutely no warranty. See the file
|
||
|
COPYING for details.
|
||
|
|
||
|
Written by Miklos Szeredi
|
||
|
Email: mszeredi@inf.bme.hu
|
||
|
|
||
|
It can be downloaded by FTP from:
|
||
|
tsx-11.mit.edu:/pub/linux/ALPHA/spectemu/spectemu-0.94.tar.gz
|
||
|
or
|
||
|
sunsite.unc.edu:/pub/Linux/system/emulators/zx/spectemu-0.94.tar.gz
|
||
|
|
||
|
For news and updates have a look at the Spectemu Page:
|
||
|
http://www.inf.bme.hu/~mszeredi/spectemu/
|
||
|
|
||
|
|
||
|
You can also join a mailing list (at the Spectemu Page), to receive a
|
||
|
notice when new versions of spectemu are available.
|
||
|
|
||
|
|
||
|
Table of contents
|
||
|
=================
|
||
|
|
||
|
1. Requirements
|
||
|
|
||
|
2. Recommended
|
||
|
|
||
|
3. Features
|
||
|
|
||
|
4. Drawbacks
|
||
|
|
||
|
5. Compiling and installation
|
||
|
|
||
|
6. Using the emulator
|
||
|
|
||
|
6.1 Command line arguments and configuration files (NEW)
|
||
|
|
||
|
6.2 Using the Spectrum keyboard
|
||
|
|
||
|
6.3 Keys that control the emulator
|
||
|
|
||
|
6.4 Effects of changing frame frequency and sound buffer size
|
||
|
|
||
|
7. Where can I get ZX Spectrum games for this emulator
|
||
|
|
||
|
8. Tape files
|
||
|
|
||
|
8.1 Loading a tape file
|
||
|
|
||
|
8.2 Quick loading of tape files
|
||
|
|
||
|
8.3 Saving to a tape file
|
||
|
|
||
|
8.4 Saving a tape file to real tape
|
||
|
|
||
|
8.5 Making a tape file from a real tape
|
||
|
|
||
|
9. Bug reports
|
||
|
|
||
|
10. Credits
|
||
|
|
||
|
|
||
|
1. Requirements
|
||
|
===============
|
||
|
|
||
|
Linux or other UNIX OS.
|
||
|
Color X11 server (depths 8, 16 and 32 bits are supported)
|
||
|
and/or
|
||
|
SVGALIB console graphics library on Linux.
|
||
|
|
||
|
2. Recommended
|
||
|
==============
|
||
|
|
||
|
A sound-card on Linux for wonderful spectrum 1-bit sound. And well, a
|
||
|
fast enough processor... (Especially for the X11 version.)
|
||
|
|
||
|
3. Features
|
||
|
===========
|
||
|
|
||
|
- Very fast because of assembly code in emulation (only on Intel
|
||
|
processors).
|
||
|
|
||
|
- Emulation also in C, which is slower, but supports any processor.
|
||
|
|
||
|
- X support (with MITSHM if available, optionally double size window)
|
||
|
|
||
|
- Linux console graphics (with SVGALIB)
|
||
|
|
||
|
- Sound support (through Linux kernel sound-card driver,
|
||
|
or SUN sound drivers)
|
||
|
|
||
|
- Snapshot saving and loading (.Z80 and .SNA format)
|
||
|
|
||
|
- Tape emulation: loading from tape files (.TAP and .TZX format)
|
||
|
|
||
|
- Optional quick loading of tapes.
|
||
|
|
||
|
- Saving to tape files.
|
||
|
|
||
|
- Separate utility to save tape files to real tape
|
||
|
|
||
|
- Configurable with config files and from command line
|
||
|
|
||
|
4. Drawbacks
|
||
|
============
|
||
|
|
||
|
- Poor user interface
|
||
|
|
||
|
See the file TODO for a list of things which still need to be done (Maybe
|
||
|
by YOU)
|
||
|
|
||
|
5. Compiling and installation
|
||
|
=============================
|
||
|
|
||
|
To install the precompiled Linux executables just run 'make install'
|
||
|
as root.
|
||
|
|
||
|
To recompile the programs on other platforms first type
|
||
|
|
||
|
./configure
|
||
|
|
||
|
This tries to determine the system type and parameters. Probably you
|
||
|
won't have to give any options to configure, but here is the list of
|
||
|
the most important options:
|
||
|
|
||
|
--help Print a full list of options
|
||
|
|
||
|
--prefix=PREFIX Install files under PREFIX (default is /usr/local)
|
||
|
Executables go under PREFIX/bin, ...
|
||
|
|
||
|
--without-readline Do not use the readline library (default is to
|
||
|
use it if it's available on your system)
|
||
|
|
||
|
--without-i386asm Do not use the Intel assembly code (default is
|
||
|
to use it, if your system is Intel based)
|
||
|
|
||
|
You may want to have a look at the produced `Makefile' and `config.h'.
|
||
|
Then just type
|
||
|
|
||
|
make clean
|
||
|
make
|
||
|
|
||
|
Then to install the program, login as root, and run
|
||
|
|
||
|
make install
|
||
|
|
||
|
(If you want to compile on another machine be sure to `make realclean'
|
||
|
before re-configuring and re-making the program!)
|
||
|
|
||
|
At the moment, there are two executable programs for running the emulator:
|
||
|
|
||
|
xspect the X11 version
|
||
|
vgaspect the Linux console version
|
||
|
|
||
|
'vgaspect' uses the SVGALIB library. If you do not have this installed
|
||
|
on your system 'vgaspect' cannot be started. You _MUST_ have SVGALIB
|
||
|
version 1.2.10 or greater installed, and it is STRONGLY recommended,
|
||
|
that you get version 1.2.11 or later!
|
||
|
|
||
|
SVGALIB is available at:
|
||
|
sunsite.unc.edu:/pub/Linux/libs/graphics/
|
||
|
|
||
|
If you have SVGALIB version 1.2.11 or later, the emulator can run in
|
||
|
background when you switch virtual consoles.
|
||
|
|
||
|
6. Using the emulator
|
||
|
=====================
|
||
|
|
||
|
After starting 'xspect' or 'vgaspect' you should get the '(C) 1982 Sinclair
|
||
|
Research Ltd' message, and after pressing a key, the flashing cursor. If
|
||
|
not, then all I can say, is hard luck to you (if you are ambitious, compile
|
||
|
the programs with debug information, and try to figure out what is causing
|
||
|
the problem). Do not start the emulator processes in the background, the
|
||
|
terminal is needed when loading or saving files.
|
||
|
|
||
|
To load a snapshot immediately after the start of the emulator, you
|
||
|
can enter the name of the snapshot file on the command line. (Also see
|
||
|
section 6.1)
|
||
|
|
||
|
E.g.
|
||
|
|
||
|
xspect snap/chuckie2
|
||
|
|
||
|
In X you can resize the window. Window size can only be a multiple of
|
||
|
the smallest window size (320x256). Smaller window means faster
|
||
|
emulation, so if emulation doesn't run at full speed, try making the
|
||
|
window smaller.
|
||
|
|
||
|
6.1 Command line arguments and configuration files
|
||
|
--------------------------------------------------
|
||
|
|
||
|
You can give options to Spectemu in three different ways:
|
||
|
|
||
|
1) In a configuration file (either ~/.spectemurc, or
|
||
|
/usr/local/share/spectemu/spectemu.cfg)
|
||
|
|
||
|
2) With the X Resource Database (.Xdefaults), this applies only to 'xspect'
|
||
|
|
||
|
3) On the command line
|
||
|
|
||
|
Most of the options are common to all three methods, only the syntax
|
||
|
differs slightly. Here are examples of the different syntax:
|
||
|
|
||
|
Config File:
|
||
|
scale = 1
|
||
|
private-map = true
|
||
|
sound = false
|
||
|
color-type = grayscale
|
||
|
|
||
|
.Xdefaults:
|
||
|
xspect.scale: 1
|
||
|
xspect.privateMap: true
|
||
|
xspect.sound: false
|
||
|
xspect.colorType: grayscale
|
||
|
|
||
|
Command line:
|
||
|
xspect -scale 1 -private-map -no-sound -color-type grayscale
|
||
|
|
||
|
List of common options:
|
||
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
NAME RANGE DEFAULT DESCRIPTION
|
||
|
---- ----- ------- -----------
|
||
|
|
||
|
frame-skip 1... 2 The smaller this is, the more
|
||
|
often the screen is updatated
|
||
|
|
||
|
scale 1..4 2 Window size of 'xspect'
|
||
|
|
||
|
private-map yes/no no Use private colormap in 'xspect'
|
||
|
|
||
|
mit-shm yes/no yes Use MIT-SHM extension in X server
|
||
|
if available
|
||
|
|
||
|
vga-mode 320x200 320x240 Resolution to use in 'vgaspect',
|
||
|
320x240 320x200 is faster (but not so nice)
|
||
|
|
||
|
sound yes/no yes Spectrum sound, if availble
|
||
|
|
||
|
sound-delay 1... 4 The amount of frames (1/50 seconds)
|
||
|
to delay sound. See section 6.4
|
||
|
|
||
|
sound-device filename (system The name of the sound device
|
||
|
dependent)
|
||
|
|
||
|
sound-sample-rate 4000... ~15625 Sample rate of sound device
|
||
|
|
||
|
sound-autoclose yes/no yes Whether to close sound device when
|
||
|
unused (so other programs can use it)
|
||
|
|
||
|
sound-dsp-setfrag yes/no yes Set this to 'no' if you use PCSND
|
||
|
sound driver
|
||
|
|
||
|
keyboard-type extended extended Specifies the mapping of the keys,
|
||
|
spectrum from the PC keyboard to the spectrum
|
||
|
compat keys. See section 6.2
|
||
|
custom
|
||
|
|
||
|
cursor-type shifted shifted How to use the arrow keys on the
|
||
|
raw PC keyboard. See section 6.2
|
||
|
joystick
|
||
|
|
||
|
allow-ascii yes/no yes Interpret other keys on the PC
|
||
|
keyboard. See section 6.2
|
||
|
|
||
|
true-shift <modif>* alt Modifier to get shifted symbol
|
||
|
as on the PC.
|
||
|
|
||
|
func_shift <modif>* control Modifier to get control functions.
|
||
|
|
||
|
color-type normal normal What type of colors to use. Gray-
|
||
|
grayscale scale looks better on monochrome
|
||
|
custom displays.
|
||
|
|
||
|
pause-on-iconify yes/no no Whether to pause emulator, when it
|
||
|
is iconified ('xspect' only)
|
||
|
|
||
|
vga-pause-bg yes/no no Whether to pasue emulator, when you
|
||
|
switch to a different console
|
||
|
|
||
|
quick-load yes/no no Use built in (quick) loader for
|
||
|
tapefiles.
|
||
|
|
||
|
auto-stop yes/no no Pause tape after each segment when
|
||
|
quick loading.
|
||
|
|
||
|
load-immed yes/no no Load tapefile immediately (as if
|
||
|
you typed LOAD "" / ENTER)
|
||
|
|
||
|
pause yes/no no Pause the emulator on startup
|
||
|
|
||
|
|
||
|
* <modif> can be one of: none, shift, lock, control, alt,
|
||
|
mod2, mod3, mod4, mod5
|
||
|
|
||
|
Extra command line parameters:
|
||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
On the command line you may also use the following options:
|
||
|
|
||
|
-help Prints usage information, and a list of available
|
||
|
options
|
||
|
|
||
|
-version Prints out the version
|
||
|
|
||
|
|
||
|
Also on the command line, a snapshot file and/or a tapefile can be
|
||
|
specified. Spectemu figures out the type of file from the extension.
|
||
|
You can omit the extension, e.g. you have a snapshot file 'snap.z80'
|
||
|
and you start spectemu with 'xspect snap', then it will add the '.z80'
|
||
|
extension.
|
||
|
|
||
|
You can specify what type is the file by preceding it with one of
|
||
|
'-z80', '-sna', '-tap' or '-tzx' options. This is useful for cases,
|
||
|
when the filename does not have an extension (e.g. automatic starting
|
||
|
with the midnight commander).
|
||
|
|
||
|
Extra config file options:
|
||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
Color configuration
|
||
|
'''''''''''''''''''
|
||
|
You can configure the custom colors in the config files (and the X
|
||
|
Resource Database) with:
|
||
|
|
||
|
color[0..15] = R G B
|
||
|
|
||
|
e.g.
|
||
|
|
||
|
color-type = custom
|
||
|
|
||
|
color0 = 10 20 30
|
||
|
color7 = 40 50 60
|
||
|
|
||
|
changes the 0-th (black) and the 7-th (white) colors.
|
||
|
|
||
|
Keyboard configuration
|
||
|
''''''''''''''''''''''
|
||
|
You can set custom key bindings in the config file:
|
||
|
|
||
|
Key_<keysym_name> = K ...
|
||
|
...
|
||
|
|
||
|
Or in the X resource database:
|
||
|
|
||
|
xspect.keys: <keysym_name> = K ...; ...
|
||
|
|
||
|
|
||
|
The <keysym_name> can be set to any keysym (defined in 'spkey_p.h').
|
||
|
The K arguments are the spectrum keys to be assigned to the given PC
|
||
|
key. K can be any letter, number (a..z, 0..9) or the following:
|
||
|
|
||
|
none, space, enter, capsshift, symbolshift,
|
||
|
kempston_up, kempston_down, kempston_left, kempston_right, kempston_fire
|
||
|
|
||
|
e.g.
|
||
|
|
||
|
keyboard-type = custom
|
||
|
true-shift = none
|
||
|
|
||
|
Key_Insert = capsshift 9
|
||
|
Key_Tab = capsshift symbolshift
|
||
|
Key_Shift_R = kempston_fire
|
||
|
Key_Alt_L = symbolshift
|
||
|
Key_Alt_R = symbolshift
|
||
|
|
||
|
or as it would appear in a .Xdefaults file:
|
||
|
|
||
|
xspect.keyboardType: custom
|
||
|
xspect.trueShift: none
|
||
|
|
||
|
xspect.keys: Insert = capsshift 9; \
|
||
|
Tab = capsshift symbolshift; \
|
||
|
Shift_R = kempston_fire; \
|
||
|
Alt_L = symbolshift; Alt_R = symbolshift
|
||
|
|
||
|
6.2 Using the Spectrum keyboard
|
||
|
-------------------------------
|
||
|
|
||
|
Those of you that have at some time used a Spectrum know, that the keyboard
|
||
|
of this little computer is something very strange, with a LOT of keywords
|
||
|
and symbols on and around each key. If you have not seen this keyboard (or
|
||
|
have somehow managed to forget some bit of information that is on it) we
|
||
|
produced quite a good copy of it, found in the 'spectkey.gif' file.
|
||
|
|
||
|
If you are using 'xspect' than pressing 'Ctrl-k' brings up the picture
|
||
|
of the spectrum keyboard. You can press keys with the mouse (even more
|
||
|
than one if you like), and it also shows which keys are pressed. (You
|
||
|
can see what the emulator does when, for example you press 'BackSpace'
|
||
|
or a '[' key on the PC keyboard).
|
||
|
|
||
|
The default mapping of the spectrum's keyboard to the PC's is the
|
||
|
following:
|
||
|
|
||
|
The numbers, the letters, Enter and Space are the same. The left Shift on
|
||
|
the PC corresponds to the CAPS SHIFT key of the Spectrum, and the right
|
||
|
Shift corresponds to the SYMBOL SHIFT. This is quite simple and with these
|
||
|
keys you can get all the functionality of the original Spectrum (assuming
|
||
|
of course, you know how).
|
||
|
|
||
|
But...
|
||
|
|
||
|
To make life a bit easier, you can also use the Backspace, the arrow
|
||
|
keys, and the following symbols as on a PC keyboard: ,./;'-=<>?:"_+[]{}\|~
|
||
|
(unless you turn the 'allow-ascii' option off)
|
||
|
|
||
|
To get a symbol which is written above the numbers on the PC, and not
|
||
|
the function or symbol that is on the Spectrum, press Alt (actually
|
||
|
the value of the 'true-shift' option) instead of Shift.
|
||
|
|
||
|
You can slightly modify the mapping with the 'keyboard-type' and
|
||
|
'cursor-type' options. Every mapping includes the basic keys (letters,
|
||
|
numbers, Space and Enter). Here are the mappings special to each
|
||
|
keyboard type and cursor type:
|
||
|
|
||
|
PC Key Spectrum Key
|
||
|
------ ------------
|
||
|
|
||
|
(Keyboard Types)
|
||
|
|
||
|
extended: (default)
|
||
|
Left Shift -> Caps Shift
|
||
|
Right Shift -> Symbol Shift
|
||
|
Back Space -> Caps Shift + '0'
|
||
|
Escape -> Caps Shift + '1'
|
||
|
|
||
|
spectrum: (spectrum-like layout, useful for some games, e.g. Jumping Jack)
|
||
|
< same as extended, plus: >
|
||
|
Comma (,) -> Symbol Shift
|
||
|
Period (.) -> Space
|
||
|
Semicolon (;) -> Enter
|
||
|
|
||
|
compat: (similar to other emulators' layouts, e.g. Z80, X128, XZX ...)
|
||
|
Shift (both) -> Caps Shift
|
||
|
Alt -> Symbol Shift
|
||
|
Back Space -> Caps Shift + '0'
|
||
|
Escape -> Caps Shift + '1'
|
||
|
|
||
|
custom:
|
||
|
Use key bindings specified in the config file (see section 6.1)
|
||
|
|
||
|
(Cursor Types)
|
||
|
|
||
|
shifted: (default)
|
||
|
Left Arrow -> Caps Shift + '5'
|
||
|
Down Arrow -> Caps Shift + '6'
|
||
|
Up Arrow -> Caps Shift + '7'
|
||
|
Right Arrow -> Caps Shift + '8'
|
||
|
|
||
|
raw:
|
||
|
Left Arrow -> '5'
|
||
|
Down Arrow -> '6'
|
||
|
Up Arrow -> '7'
|
||
|
Right Arrow -> '8'
|
||
|
|
||
|
|
||
|
joystick:
|
||
|
Left Arrow -> Kempston Left
|
||
|
Down Arrow -> Kempston Down
|
||
|
Up Arrow -> Kempston Up
|
||
|
Right Arrow -> Kempston Right
|
||
|
Keypad Ins -> Kempston Fire
|
||
|
Keypad Del -> Kempston Fire
|
||
|
Keypad Home -> Kempston Up + Left
|
||
|
Keypad PgUp -> Kempston Up + Right
|
||
|
Keypad End -> Kempston Down + Left
|
||
|
Keypad PgDn -> Kempston Down + Right
|
||
|
|
||
|
|
||
|
6.3 Keys that control the emulator
|
||
|
----------------------------------
|
||
|
|
||
|
All control keys are produced by pressing the Ctrl key and another key.
|
||
|
|
||
|
Ctrl-c, F10 Quit the emulator immediately
|
||
|
|
||
|
Ctrl-l, F3 Load a snapshot file; you must type the path and
|
||
|
filename on the terminal where you started the emulator,
|
||
|
e.g. 'snap/chuckie2'. The type and extension of the
|
||
|
file is determined automatically (.z80 or .sna).
|
||
|
|
||
|
Ctrl-t, F2 Save the current state of the emulator in a snapshot file.
|
||
|
Format depends on the extension (.z80 or .sna). If no
|
||
|
extension is given, .z80 is appended.
|
||
|
|
||
|
Ctrl-w, Ctrl-F2 Save a snapshot to a temporary file
|
||
|
|
||
|
Ctrl-e, Ctrl-F3 Restore last temporary snapshot saved with 'Ctrl-w'
|
||
|
|
||
|
Ctrl-q, F5 Reset the Spectrum
|
||
|
|
||
|
Ctrl-f Fast mode
|
||
|
|
||
|
Ctrl-n Normal speed mode
|
||
|
|
||
|
Ctrl-b Pause/Unpause emulator (you can do operations like loading
|
||
|
a snapshot file, etc... in paused mode too)
|
||
|
|
||
|
Ctrl-m Toggle sound on/off
|
||
|
|
||
|
Ctrl-h, F1 Print help
|
||
|
|
||
|
Ctrl-k Display (undisplay) keyboard of spectrum. See section 6.2.
|
||
|
|
||
|
Ctrl-p, F4 Play tape. Tape file must be entered on the terminal.
|
||
|
Optionally the starting segment can be entered;
|
||
|
e.g. 'tape/tape1.tap' or 'tape/tape1.tzx 13'
|
||
|
|
||
|
Ctrl-s, F7 Stop tape
|
||
|
|
||
|
Ctrl-y Toggle quick loading
|
||
|
|
||
|
Ctrl-o, F6 Pause and unpause during tapefile playing (restarts the
|
||
|
current segment).
|
||
|
|
||
|
Ctrl-r Record to tape file. See section 8.3.
|
||
|
|
||
|
Ctrl-\, F9 Refresh screen, reset keyboard state and
|
||
|
refresh colors.
|
||
|
|
||
|
Ctrl-j Toggle private colormap mode (only X)
|
||
|
|
||
|
Ctrl-comma Decrease window size (only X)
|
||
|
|
||
|
Ctrl-dot Increase window size (only X)
|
||
|
|
||
|
Ctrl-equals Skip more screen frames
|
||
|
|
||
|
Ctrl-minus Skip less screen frames
|
||
|
|
||
|
Ctrl-] Increase sound buffer size
|
||
|
|
||
|
Ctrl-[ Decrease sound buffer size
|
||
|
|
||
|
|
||
|
6.4 Effects of changing frame frequency and sound buffer size
|
||
|
-------------------------------------------------------------
|
||
|
|
||
|
ONLY READ THIS IF YOU ARE NOT TOTALLY SATISFIED WITH THE EMULATOR'S
|
||
|
PERFORMANCE
|
||
|
|
||
|
This should be totally automatic, so I'm now programming you to do what
|
||
|
the emulator should. (Luckily you are much easier to program)
|
||
|
|
||
|
Frame skipping determines, after how many frames the emulator displays one
|
||
|
on the screen. There are 50 frames in one second, and normally every other
|
||
|
frame is displayed (25 per second). If the emulator is too slow under X,
|
||
|
increasing frame skipping can have a good effect on performance, but at the
|
||
|
cost of poorer quality. But the interesting thing is, that increasing frame
|
||
|
skipping may cause a worsening of both performance and of picture quality
|
||
|
(I will not explain it here why).
|
||
|
|
||
|
Decreasing frame skipping has the opposite effect of the above.
|
||
|
|
||
|
If the emulator uses sound, but sound is not continuous, then experiment
|
||
|
with increasing sound buffer size, and increasing frame skipping. If you
|
||
|
are lucky you can make things a bit better. Increasing sound buffer size
|
||
|
has also the negative effect of delaying more the sound effects.
|
||
|
|
||
|
7. Where can I get ZX Spectrum games for this emulator
|
||
|
======================================================
|
||
|
|
||
|
On the Spectemu homepage (http://www.inf.bme.hu/~mszeredi/spectemu/)
|
||
|
you can find a list of sites worth checking. Here are some:
|
||
|
|
||
|
http://www.void.demon.nl/spectrum.html
|
||
|
http://www.nvg.unit.no/sinclair/planet/
|
||
|
|
||
|
The fact is, that there were a lot of Spectrum games around on audio tapes,
|
||
|
and some of them are really good. There were always cracked and copyable
|
||
|
versions around, and nobody was interested in copyrights. Unfortunately the
|
||
|
big FTP archives do not allow non free software on their servers, so I
|
||
|
can't include any games in this distribution.
|
||
|
|
||
|
(Because Spectrums have died out, and perhaps some of the software
|
||
|
companies do not exist any more, probably some games could be distributed
|
||
|
freely. But I will not check on those things.)
|
||
|
|
||
|
I've included a program named 'spconv', written by Henk de Groot
|
||
|
(hegr@ensae.ericsson.se) which can convert between snapshot file formats.
|
||
|
|
||
|
Alternatively if you have some old spectrum tapes laying around, and you
|
||
|
are very brave, you can check out section 8.5.
|
||
|
|
||
|
8. Tape files
|
||
|
=============
|
||
|
|
||
|
8.1 Loading a tape file
|
||
|
-----------------------
|
||
|
|
||
|
The emulator now supports G.A. Lunter's .TAP and Tomaz Kac's .TZX tape
|
||
|
files. To load a file, enter
|
||
|
|
||
|
LOAD ""
|
||
|
|
||
|
to the spectrum (by pressing keys j""), then press 'Ctrl-p'.
|
||
|
On the terminal enter the name of the tape file to load, e.g.
|
||
|
|
||
|
tape/cnamemat
|
||
|
|
||
|
The emulator will now load from the tape file 'tape/cnamemat.tzx' or
|
||
|
'tape/cnamemat.tap' whichever exists. Playing automatically stops at
|
||
|
the end of the tape file. To stop loading before this press Ctrl-s.
|
||
|
|
||
|
The default extensions are '.tap' / '.tzx' or '.TAP' / '.TZX' depending
|
||
|
on whether the entered tape file is upper or lower case.
|
||
|
|
||
|
While loading try pressing Ctrl-f, which can speed things up. After loading
|
||
|
the file press press Ctrl-n to restore normal speed.
|
||
|
|
||
|
8.2 Quick loading of tape files
|
||
|
-------------------------------
|
||
|
|
||
|
Quick loading means bypassing of the tape loading routine in the
|
||
|
spectrum ROM, and loading of tape blocks directly into the memory.
|
||
|
Some programs use their own tape loading routines, and in that case
|
||
|
the tape blocks are always "slow loaded" (see above section).
|
||
|
|
||
|
Quick loading is optional and can be toggled with the 'Ctrl-y' key.
|
||
|
|
||
|
When quick loading is on, after entering 'LOAD ""' you are immediately
|
||
|
prompted for a tapefile. If the tapefile can't be loaded, the quick
|
||
|
loading of the first header block is cancelled, but you can still load
|
||
|
the rest of tape by pressing 'Ctrl-p' and entering the tapefile name.
|
||
|
|
||
|
Even in quick load mode, the playing of tapes is not automatically
|
||
|
paused, when the program doesn't load more blocks, so with '.tap'
|
||
|
files containing multipart games, you have to pause the tape at the
|
||
|
end of each part with 'Ctrl-o' ('.tzx' tapefiles can contain a
|
||
|
"Stop the Tape" mark, to automatically pause playing).
|
||
|
|
||
|
8.3 Saving to a tape file
|
||
|
-------------------------
|
||
|
|
||
|
If you want to save something to a tape file using the spectrum's "SAVE"
|
||
|
command, do the following:
|
||
|
|
||
|
1) Enter 'SAVE "file"' on the spectrum
|
||
|
2) press Ctrl-r to start the recording
|
||
|
3) on the terminal enter the name of the tapefile to use
|
||
|
4) press a key on the spectrum
|
||
|
5) wait for the recording to stop
|
||
|
6) press Ctrl-s to stop recording
|
||
|
|
||
|
If the specified tape file already exists, the newly saved segments are
|
||
|
appended to the old tapefile.
|
||
|
|
||
|
|
||
|
8.4 Saving a tape file to real tape
|
||
|
-----------------------------------
|
||
|
|
||
|
The utility 'tapeout' enables you to save tape files (.tap and .tzx)
|
||
|
to real tape via the soundcard. At the moment it only works on Linux,
|
||
|
because it uses the OSS sound driver. (You can compile it for non
|
||
|
linux systems, by adding -DNO_SOUNDCARD to CFLAGS in Makefile. Then
|
||
|
instead of writing to the sound device, the program writes to a
|
||
|
headerless wav file (bits: 8, sample rate: what you've given).)
|
||
|
|
||
|
You can compile 'tapeout' by entering
|
||
|
|
||
|
make tapeout
|
||
|
|
||
|
in the main directory of spectemu. The command line parameters are:
|
||
|
|
||
|
tapeout sample_rate tapefile [start_block [output_file]]
|
||
|
|
||
|
The default value for start_block is 0, for output_file it is "/dev/dsp"
|
||
|
(or if compiled -DNO_SOUNDCARD it is "tape.out").
|
||
|
|
||
|
You can stop recording to the tape by pressing Ctrl-C.
|
||
|
|
||
|
8.5 Making a tape file from a real tape
|
||
|
---------------------------------------
|
||
|
|
||
|
WARNING, ONLY TRY THIS IF YOU REALLY-REALLY WANT TO!
|
||
|
|
||
|
Well it's not so bad as that, I've digitized a lot Spectrum tapes with
|
||
|
ease, but I have the advantage of having played with tapes a lot on the
|
||
|
real Spectrum, and of being able to modify the code which does the
|
||
|
digitization.
|
||
|
|
||
|
First of all you must have a sound-card to do this. If you've got it, then
|
||
|
you have a small chance of succeeding.
|
||
|
|
||
|
First get the cassette player which you used to play Spectrum tapes. Then
|
||
|
plug it in your sound-card's 'line-in' or 'mic' inputs. Then somehow set the
|
||
|
sound driver so that it reads things form the input in which you plugged
|
||
|
your cassette (I use 'xmmix' the 'Motif Audio Mixer' to do this). And if
|
||
|
you've managed to get this far, go to the directory where you want to store
|
||
|
the tape files (remember, there will be a lot of little files: one for each
|
||
|
little segment!), and enter the following command:
|
||
|
|
||
|
recs - 32000 | filt | spload tapefile
|
||
|
|
||
|
or
|
||
|
|
||
|
recs - 32000 | spload tapefile
|
||
|
|
||
|
(The first type worked better for me)
|
||
|
|
||
|
Where 'recs', 'filt' and 'spload' are programs found in the utils
|
||
|
directory, and 'tapefile' is the name of the tape file without the '.spt'
|
||
|
extension.
|
||
|
|
||
|
'.spt' tape files only exist because of historical reasons (the tape
|
||
|
digitizing program preceeded the emulator, and also at that time I didn't
|
||
|
know of the '.TAP' format), and now it isn't suppurted by the emulator
|
||
|
any more. So you must convert '.spt' files to '.tap' with the utility
|
||
|
spt2tap (in the utils directory) to use it with the emulator.
|
||
|
|
||
|
(The contents of the utils directory can be remade by changing to that
|
||
|
directory and entering the command: 'make realclean; make')
|
||
|
|
||
|
Now you can put your favorite Spectrum cassette in the cassette player, and
|
||
|
press the Play button.
|
||
|
|
||
|
'spload' will write a lot of information on the terminal, of which you
|
||
|
might try to make some sense. Also you can do a 'tail -f tapefile.spt' in
|
||
|
another terminal, to see what is happening. Again if nothing happens, then
|
||
|
you are on your own (and most probably at first nothing will happen).
|
||
|
|
||
|
And remember that this digitizer is not better than the real Spectrum, so
|
||
|
if you cannot load a program with a Spectrum, you'll most probably will not
|
||
|
be able to load it with 'spload'.
|
||
|
|
||
|
Good Luck!
|
||
|
|
||
|
9. Bug reports
|
||
|
==============
|
||
|
|
||
|
Please send bug reports to:
|
||
|
|
||
|
mszeredi@inf.bme.hu
|
||
|
|
||
|
If you make any changes to the source, please mail me the 'diff -u' of the
|
||
|
file(s) changed, and also why were the changes needed.
|
||
|
|
||
|
Please also tell me if you would like to maintain, or to continue
|
||
|
developing spectemu.
|
||
|
|
||
|
10. Credits
|
||
|
===========
|
||
|
|
||
|
Szeredi Tamas, for testing the emulator, and for helping with the
|
||
|
'spectkey.gif'.
|
||
|
|
||
|
Egmont Koblinger for helping to write some parts of the emulator, and for
|
||
|
a lot of useful suggestions.
|
||
|
|
||
|
Dani Nagy and Zsazsa for helping to test the emulator.
|
||
|
|
||
|
G.A. Lunter for a very good description of the Spectrum, the undocumented
|
||
|
features of Z80, and the '.z80' snapshot file format.
|
||
|
|
||
|
And lots of others, who sent me good ideas and modifications.
|