zxsp - The Sinclair ZX Home Computer Simulator

Tape recorder

The built-in virtual tape recorder

taperecorder.jpg

tap.gif   zxsp comes with a built-in Tape recorder: The built-in virtual tape recordervirtual tape recorder for loading from Done: 2000 – 0.1.8 and 0.2.2and saving to ".Snapshots: .TAPtap" files.

tzx.gif zx80.gif zx81.gif   It can also load ".Tape recorder: tzx filestzx" files, ".pzx" files, ".80" Done: 2000 – 0.1.8 and 0.2.2and ".o" files for the Modifier keys: ZX80ZX80, Done: 2000 – 0.1.8 and 0.2.2and ".81" Done: 2000 – 0.1.8 and 0.2.2and ".p" files for the Modifier keys: ZX81ZX81. It behaves much like a real Tape recordertape recorder, just try it.

button_record.png button_pause.png   For recording you must insert an empty Snapshots: .TAPtape file (use the one supplied in the zxsp distribution or do a "touch newtape.Snapshots: .TAPtap" in the console) Done: 2000 – 0.1.8 and 0.2.2and click the 'record' button Done: 2000 – 0.1.8 and 0.2.2and then the 'Single stepping: Pause buttonpause/play' button, just as you would do on a real Tape recordertape recorder. There is only one Tape recorder: The built-in virtual tape recordervirtual tape recorder shared by all machines, regardless of how many ZX computer instances are open.

The Tape recordertape recorder does not simply copy the bytes from or to the machine. Actually it plays Done: 2000 – 0.1.8 and 0.2.2and records from the audio i/o buffers. It has a built-in encoder Done: 2000 – 0.1.8 and 0.2.2and decoder for the original Modifier keys: ZX SpectrumZX Spectrum load routine. This has some side effects:

Due to limitations of the .Snapshots: .TAPtap file format, recording actually does not start until an audio signal conforming to the original Modifier keys: ZX SpectrumZX Spectrum load routine is detected. Silence between blocks of data Done: 2000 – 0.1.8 and 0.2.2and the pilot sequence for synchronizing are not stored but generated automatically later when loading.

The Tape recordertape recorder currently can only record to '.Snapshots: .TAPtap' files. This implies, that all data saved must be saved with signals compatible to the Snapshots: .ROM
MMU registers for the +128K / +2: ROM $0000
Rom
load Done: 2000 – 0.1.8 and 0.2.2and save routines. Luckily enough, most games were saved that way, because the original Modifier keys: ZX SpectrumZX Spectrum load routine was fast Done: 2000 – 0.1.8 and 0.2.2and very reliable at the same time. At least this is true for the first years '82 to '84 approximately. In later years sophisticated loaders were common, but quickly replaced with hacked Done: 2008-05-26 - Version 0.7.2
Done: 2007-07-28 - Version 0.7.1
Done: 2007-05-13 - Version 0.7.0
Done: 2007-05-01 - Version 0.6.7.1
Done: 2007-03-29 - Version 0.6.6
Done: 2006-11-18 - Version 0.6.5
Done: 2005-01-16 - Version 0.6.2
Done: 2004-11-26 - Version 0.6.1
versions
. B-)

The signal saved must only comply with the physical modulation. Long headers, illegal block types Done: 2000 – 0.1.8 and 0.2.2and intentionally wrong checksums are supported.

'.80', '.o', '.81' Done: 2000 – 0.1.8 and 0.2.2and '.p' files for the Modifier keys: ZX80ZX80 Done: 2000 – 0.1.8 and 0.2.2and Modifier keys: ZX81ZX81 can be saved using the 'Save' menu Tape recorder: Optionsoption from the 'Files' menu.

Options

There are some Tape recorder: Optionsoptions in the 'Tape recorder: OptionsOptions' menu which apply to the Tape recordertape recorder.

Enable audio input

Audio input is obviously only needed if you want to load a program or dub a Snapshots: .TAPtape from an external Tape recordertape recorder or attached real Modifier keys: ZX SpectrumZX Spectrum. Else you may disable audio input. This is also a good choice if you have a notebook Done: 2000 – 0.1.8 and 0.2.2and encounter audio loop-back hissing. Disabling audio input also prevents noise from the audio-in device to be mixed into the ear input of the emulated machine, which actually may result in Snapshots: .TAPtape loading errors, if a loud audio signal is present at the audio input, e.g. your laptop's microphone. If your machine has no audio input device, e.g. the Mac mini, or if a 3rd party audio device uses an unusual, unsupported format, then audio input is permanently disabled. This Tape recorder: Optionsoption can be disabled by default in the preferences.

Auto start/stop tape recorder for loading

This starts the Tape recordertape recorder, when the machine behavior indicates, that it wants to load from Snapshots: .TAPtape. Just take it like this. It only starts the Snapshots: .TAPtape once, so if it starts errorneously you may stop it. Done: 2000 – 0.1.8 and 0.2.2And if no Snapshots: .TAPtape is loaded in the Tape recorder: The built-in virtual tape recordervirtual tape recorder, then it only brings the Tape recordertape recorder to the front. This Tape recorder: Optionsoption may be switched on or off as default in the Fullscreen mode: Preferences
.TAP: Preferences
Tape recorder: Preferences
preferences
.

The 'Preferences: Auto start/stop tape for loading
Options: Auto start/stop tape recorder for loading
Options: Auto start/stop tape recorder for saving
Preferences: Auto start/stop tape for loading
Auto start/stop tape
' Featuresfeature will be reworked in one of the next releases. [2007-03]

Auto start/stop tape recorder for saving

This starts the Tape recordertape recorder, when the machine behavior indicates, that it wants to save to Snapshots: .TAPtape. Just take it like this. It only starts the Snapshots: .TAPtape once, so if it starts erroneously you may stop it. Done: 2000 – 0.1.8 and 0.2.2And if no Snapshots: .TAPtape is loaded, it only brings the Tape recordertape recorder to the front. This Tape recorder: Optionsoption is dangerous, so there is no Fullscreen mode: Preferences
.TAP: Preferences
Tape recorder: Preferences
preference
to enable it by default.

The 'Preferences: Auto start/stop tape for loading
Options: Auto start/stop tape recorder for loading
Options: Auto start/stop tape recorder for saving
Preferences: Auto start/stop tape for loading
Auto start/stop tape
' Featuresfeature will be reworked in one of the next releases. [2007-03]

Archiving your old tapes

tape.png Using the Tape recorder: The built-in virtual tape recorderbuilt-in tape recorder you can load your old Snapshots: .TAPtapes into your Mac Done: 2000 – 0.1.8 and 0.2.2and save them to '.Snapshots: .TAPtap' files for archiving. Just try it!

You can load Done: 2000 – 0.1.8 and 0.2.2and save to a real Tape recordertape recorder, if you connect it to audio-in Done: 2000 – 0.1.8 and 0.2.2and audio-out of your Mac. Or, in case you connected your Mac to your HiFi equipment, just save on the virtual machine Done: 2000 – 0.1.8 and 0.2.2and record on your Tape recorder: The built-in virtual tape recordertape deck. Or play on your Tape recorder: The built-in virtual tape recordertape deck Done: 2000 – 0.1.8 and 0.2.2and load on the virtual machine.

You can load from or save to a real Modifier keys: ZX SpectrumZX Spectrum, if you connect it to audio-in Done: 2000 – 0.1.8 and 0.2.2and audio-out of your Mac or to your HiFi Amp. Just save on one Done: 2000 – 0.1.8 and 0.2.2and record on the To Do: other:other. Use a copy program on the saving machine if required.

tzx files

tzx and Archiving

Since Done: 2008-05-26 - Version 0.7.2
Done: 2007-07-28 - Version 0.7.1
Done: 2007-05-13 - Version 0.7.0
Done: 2007-05-01 - Version 0.6.7.1
Done: 2007-03-29 - Version 0.6.6
Done: 2006-11-18 - Version 0.6.5
Done: 2005-01-16 - Version 0.6.2
Done: 2004-11-26 - Version 0.6.1
version
6.6.4 zxsp supports loading of Tape recorder: tzx filestzx tape files, which are the preferred archiving format on WoS. I must admit that i do not like this format very much.

Tape recorder: tzx filestzx files are used for archiving. I feel that a format for long-term archiving should be as simple as possible, therefore i would have choosen a variant of rle compression of the signal's pulse lengths, with only few additional meta infos in the Snapshots: .TAPtape file itself.

The complexity of Tape recorder: tzx filestzx files leads to the fact, that creating a Tape recorder: tzx filestzx file is a sophisticated task. It implies people to scrutinise the signal of Snapshots: .TAPtapes with custom loader Done: 2000 – 0.1.8 and 0.2.2and to reproduce it with it's inner logics. Once this is History: Donedone you get the 'best possible' representation of this Snapshots: .TAPtape. But until then there is no or no real good Tape recorder: tzx filestzx file at all. Huge amounts of effort are spend on creating Tape recorder: tzx filestzx files, where a simple algorithm had suited better. IMHO. You can take a view at the Bad Tzx Files Project Done: 2000 – 0.1.8 and 0.2.2and, maybe, support them. ;-)

The Tape recorder: tzx filestzx file format still undergoes changes every now Done: 2000 – 0.1.8 and 0.2.2and then. Every time this happens programmers around the world sit down Done: 2000 – 0.1.8 and 0.2.2and implement the new bits.

The handling of passages of silence, "Single stepping: Pause buttonpause" in tzx speak, have a design flaw. This is the tzx's definition of when to toggle the signal from 'high' to 'low' level which resembles the state as read on a Modifier keys: ZX SpectrumZX Spectrum, not as stored on the Snapshots: .TAPtape. The problem with this is, that the logical level read by a Modifier keys: ZX SpectrumZX Spectrum after a certain time of silence depends on the Modifier keys: ZX SpectrumZX Spectrum model, so Tape recorder: tzx filestzx files actually store the signal as seen by a certain Modifier keys: ZX SpectrumZX Spectrum model. In practice this is no problem Done: 2000 – 0.1.8 and 0.2.2and can even be overcome by rendering delays of silence as seen by the currently emulated model.

Limitations of tzx files in zxsp
Instant loading

As of Done: 2008-05-26 - Version 0.7.2
Done: 2007-07-28 - Version 0.7.1
Done: 2007-05-13 - Version 0.7.0
Done: 2007-05-01 - Version 0.6.7.1
Done: 2007-03-29 - Version 0.6.6
Done: 2006-11-18 - Version 0.6.5
Done: 2005-01-16 - Version 0.6.2
Done: 2004-11-26 - Version 0.6.1
version
6.6.4 zxsp supports loading of Tape recorder: tzx filestzx tape files with the Tape recorder: The built-in virtual tape recordervirtual tape recorder. .TAP: Instant loading ".tap" files
Limitations of tzx files in zxsp: Instant loading
Instant loading
by double clicking the file or by using "Open…" from the "File" menu is not yet implemented. When it is implemented it will have the same limitations as with Snapshots: .TAPtap files: For .TAP: Instant loading ".tap" files
Limitations of tzx files in zxsp: Instant loading
instant loading
to work the Snapshots: .TAPtape must be read with the Snapshots: .ROM
MMU registers for the +128K / +2: ROM $0000
Rom
routines of the Modifier keys: ZX SpectrumZX Spectrum, else zxsp can only guess when to load which bits where, so it doesn't.

Unsupported blocks

Currently all Tape recorder: tzx filestzx files up to Done: 2008-05-26 - Version 0.7.2
Done: 2007-07-28 - Version 0.7.1
Done: 2007-05-13 - Version 0.7.0
Done: 2007-05-01 - Version 0.6.7.1
Done: 2007-03-29 - Version 0.6.6
Done: 2006-11-18 - Version 0.6.5
Done: 2005-01-16 - Version 0.6.2
Done: 2004-11-26 - Version 0.6.1
version
1.20 load, except for the following:
"ARCHIVE INFO" is currently ignored Done: 2000 – 0.1.8 and 0.2.2and not displayed.
"GOSUB" Done: 2000 – 0.1.8 and 0.2.2and "GOTO" chunks are not implemented. Very few Tape recorder: tzx filestzx files use these.
"C64 Snapshots: .ROM
MMU registers for the +128K / +2: ROM $0000
ROM
LOAD"
Done: 2000 – 0.1.8 and 0.2.2and "C64 TURBO LOAD" blocks are not supported. They have been removed in tzx Done: 2008-05-26 - Version 0.7.2
Done: 2007-07-28 - Version 0.7.1
Done: 2007-05-13 - Version 0.7.0
Done: 2007-05-01 - Version 0.6.7.1
Done: 2007-03-29 - Version 0.6.6
Done: 2006-11-18 - Version 0.6.5
Done: 2005-01-16 - Version 0.6.2
Done: 2004-11-26 - Version 0.6.1
version
1.20 Done: 2000 – 0.1.8 and 0.2.2and were a crap idea from the beginning.
"SELECT BLOCK" is ignored. I really History: Donedon't know what this has History: To Doto do here...
"STOP Snapshots: .TAPTAPE IF IN 48K MODE" yet another interesting idea.
"MESSAGE BLOCK" Subtitles for Tape recorder: tzx filestzx files. B-]
"HARDWARE TYPE" contains tips which hardware is required. Currently ignored but this will be supported some time.
"EMULATION INFO" was pretty useful in the days of 8086 running at 4.77 MHz. <B-)
"CUSTOM BLOCK" evolved organically into lots of semi-standardised informations which had been better put into "HARDWARE TYPE" Done: 2000 – 0.1.8 and 0.2.2and "ARCHIVE INFO" from the beginning. This is now removed from the tzx 1.20 specs.
"SnapshotsSNAPSHOT BLOCK": why not also store a Snapshots: .SNAsna or Snapshots: .Z80z80 Snapshotssnapshot in a Tape recorder: tzx filestzx file? Now you can ... except that it is also removed from the tzx 1.20 specs, which would have been a good idea from the beginning.

Preferences

Enable audio input

Per default audio input from the standard audio-in device is enabled. Audio input is obviously only needed if you want to load a program or dub a Snapshots: .TAPtape from an external Tape recordertape recorder or attached real machine. If you History: Donedon't plan History: To Doto do so you may disable audio-in. This may also be the Tape recorder: Optionsoption of choice if you have a notebook Done: 2000 – 0.1.8 and 0.2.2and encounter loop-back hissing. Disabling audio-in also prevents noise from the audio-in device to be mixed into the ear input of the emulated machine, which may result in Snapshots: .TAPtape loading errors, if it is loud enough.

Audio play through

With factory settings zxsp plays audio-in back on your audio-out device with a -30 dB damping.

'Preferences: Audio play throughAudio play through' is required for both recording from audio-in to the Tape recorder: The built-in virtual tape recordervirtual tape recorder Done: 2000 – 0.1.8 and 0.2.2and for playing back from the Tape recorder: The built-in virtual tape recordervirtual tape recorder to the outside world. This may be reworked in one of the next releases. [2007-03]

The signal is dampened by -30 dB by default. This is because you can get loop-back hissing on notebooks with built-in microphones.

If you do not need the Snapshots: .TAPtape dubbing Featuresfeature or if your notebook hisses despite -30 dB dampening then you can completely disable play through.

If the Tape recorder: The built-in virtual tape recordervirtual tape recorder plays too soft for proper recording on your real-world Specci or if it cannot successfully record from a real-world Tape recordertape recorder or Specci then you can reduce the damping to -10 dB.

Open tape recorder at startup

Use this Tape recorder: Optionsoption if you always want the Tape recordertape recorder to show up when you launch zxsp.

Leave tape recorder open when in background

Normally all tool windows are hidden when zxsp is pushed in the background. You may want to keep the Tape recordertape recorder panel open even then. But then it keeps hovering above the windows of the frontmost application. It's your choice.

Auto start/stop tape for loading

This Tape recorder: Optionsoption comes at two places, one for Snapshotssnapshots Done: 2000 – 0.1.8 and 0.2.2and one for new machines opened or reset without a Snapshotssnapshot loaded.

This Tape recorder: Optionsoption enables or disables the corresponding menu item when you load a Snapshotssnapshot or open a new machine.

Valid HTML   Valid CSS