Tape player and recorder for Sinclair ZX Spectrum on Atmega128

Магнитофон для zx spectrum на atmega

About ZX Spectrum

ZX Spectrum - a computer designed over 30 years ago with a 3.5 MHz processor and only 48 KB of RAM. For him, it developed a huge number of software and games. Moreover, new game releases are constantly in our days.

Previously, the program is loaded from the tape. And the loading is not always succeeds, sometimes the game had to try several times to load often getting message "R Tape loading error".

Alternatively audiotapes today suggests a memory card that stores the program files in the formats TAP, WAV and TZX. And as an alternative to tape recorder - microcontroller device that can play and store these files.

The recorder circuit

The circuit of such a device is shown below:

Digital recorder for ZX Spectrum and other retrocomputers onа ATMEGA128

The recorder is implemented on a microcontroller ATMega128, running at a clock frequency of 16 MHz. Resources of the MCU should be enough to implement all the necessary functionality and to improve it in the future.

Voltage regulator can be designed either on IC2-chip or on IC3-chip. The circuit shows both chips but in a real device should be installed, only one of them. If the device is supposed to integrate into the computer or powered from the power supply voltage not less than 5V, the chip IC2 (and inductor L1 and diode D1) must be excluded from the circuit. Otherwise it is necessary to exclude the chip IC3 from the circuit. In this case, it will be used boost voltage regulator on chip IC2, and for the supply scheme will need two 1.5V AA/AAA power elements.

The device uses the display of the Nokia 5110 and the 5-button joystick.

On-chip IC4 are made real-time clock. As IC4 can be used either PCF8583T or PCF8563T (which are designed for two different versions of the firmware).

Also, the device has a speaker for listening to the record / playback files. The speaker volume can be adjusted by the variable resistor.

To connect to retro-computers the device has "mini jack" sockets - input and output.

Appearance of the assembled circuit board in front and behind:

Appearance of the assembled circuit board of ZX Spectrum tape recorder in front

Appearance of the assembled circuit board of ZX Spectrum tape recorder in behind

Assembled device:

Assembled ZX Spectrum digital tape recorder on AVR

The firmware and user-interface

The main menu of the deveice:

The main menu of ZX Spectrum tape recorder

Here you can go to

  1. playback file from memory card
  2. save file to memory card
  3. settings of the user interface, date/time and input/output signal timings
  4. information about SD/SDHC memory card (size, type, used- and free-space, vendor, cluster size etc.)
  5. information about the device and firmware version

In the selection of the first menu item opens a file browser

ZX Spectrum tape player file browser

After selecting the file it starts loading. The screen displays the number of blocks in the file and the current block number as well as the time elapsed since the start of the loading. Loading can be stopped by pressing the Pause button. In pause mode, the keys up and down you can select the block from which you will continue playing (useful for games with loadable levels).

Loading of TAP-file

When you save a file to a first input file name:

On-screen keyboard

Navigating the on-screen keyboard - with cursor. Enter a character - the central key. To cancel the save enter an empty name.

After entering the name of the device will wait for receiving data from the computer. Then the screen will display number and size of blocks.

On the Settings screen, you can select the language (English or Russian), enable or disable keyboard sounds on load- and save-operations. Also here you can setup the screen highlight, the playback speed (x1, x2, x4, x8) and the current date / time

Settings screen of the ZX Spectrum tape recorder

Also you can customize the TAP-form parameters:

  • Pause: the delay between the blocks in milliseconds
  • Pilot: the duration of the pilot signal in milliseconds
  • Pilot.l: the pulse duration of the pilot in microseconds
  • Sync 1: the first synchro pulse duration in microseconds
  • Sync 2: the second synchro pulse duration in microseconds
  • Data: the data pulse duration (for "0" bits)
  • Capture: capture mode when receiving data from the computer

Also here you can reset the settings to default values or define them in the form of a signal from the computer.

Timing settings


Next on the links, you can download the Eagle project and firmware.

Downloadzx-tape-loader_8563_v1.1.hex (firmware for PCF8563T)
Downloadzx-tape-loader_8583_v1.1.hex (firmware for PCF8583T)
Downloadzx-tape-loader_8563_v1.1.1.hex (firmware for PCF8563T)
DownloadCircuit in pdf
DownloadCircuit in png, big resolution

Buy a device

You can buy from us a fully assembled and tested device with worldwide shipping.
The cost of device: 50 USD (shipping is paid for separately)
To make the order please use the site feedback form.

No votes yet