Transfering software from cassette

From CPCWiki - THE Amstrad CPC encyclopedia!
Revision as of 17:16, 17 January 2009 by Octoate (Talk | contribs) (adding credits to Kevin Thacker, removed title)

Jump to: navigation, search
This article originally came from Kevin Thackers' archive at http://www.cpctech.org.uk.
  1. connect a cassette recorder to the input of your sound card
  2. record the sound:
    • I use "Goldwave" to record the sound. I used the default settings which was 22Khz, 16-bit.
    • adjust the volume output of the cassette recorder until you see a wave similar to that shown in the picture (it should be a smooth triangular like shape).
    • Adjust the amplitude of the sound wave so that it remains the same shape, but takes up approximatly 3/4 of the display. (see diagram) It may not be possible to make it take up 3/4 of the display for some sounds, so adjust it to the maximum volume possible without the shape changing. (If you are using Goldwave, try to adjust the volume so that it is in the middle of the yellow blocks. If the volume hits the red block too much you will need to reduce the volume.)
      The signal on the cassette should be clean (free from extra noise and other sounds), otherwise voc2tzx will have difficulty decoding it.
      Xfer.gif
    • While recording try not to do anything else that could slow down the computer as this may cause the recorder software to miss some of the signal, resulting in a bad recording.
  3. save the file as "VOC" 8-bit mono unsigned (this format is guaranteed to work with voc2tzx).
  4. Open the command-line (DOS prompt in W9x, or Command-Line under WinNT/Win2000). Type the following:
    voc2tzx /maxp 20 /pilot 2048 <voc filename> <cdt filename>
    Replace <voc filename> with the filename of the VOC sample file.
    Replace >cdt filename> with the name for the resulting CDT tape-image file.
    The "/maxp 20" defines the maximum % difference between each pilot pulse. I found the value 20 to be about right for most programs, although I did need to change this for some programs to decode.
    I found that if the value is too small or too large, then voc2tzx will fail to find any blocks. There should be a value where voc2tzx will decode the blocks correctly.

If "/cpc" option is specified, then voc2tzx will report the filenames of data stored by the standard OS loading/saving method. This option will also insert a block which identifies this file for CPC464 only.

Using this I transfered "OH MUMMY" and got the resulting output:

ZXTape Utilities - VOC to TZX Converter v0.53b
Sampling Rate: 22222 Hz
Loading File (6168221 bytes) ...
Actual RAW size of file in memory: 6168188 bytes
Creating 1.02 version Amstrad CPC .CDT file ... 
*OH MUMMY     P-2388,4092 S-1260/1260 0-1233,1-2465 F-2C B7 L-  263 Cù P-0.019
*------------ P-2391,4092 S-1260/1260 0-1224,1-2448 F-16 B7 L- 2069 Cù P-2.650
*OH MUMMY     P-2393,4093 S-1260/1260 0-1237,1-2474 F-2C B7 L-  263 Cù P-0.021
*------------ P-2396,4090 S-1260/1260 0-1229,1-2459 F-16 B7 L-  521 Cù P-11.809
*MUMMY1       P-2395,4092 S-1260/1260 0-1236,1-2472 F-2C B7 L-  263 Cù P-0.019
*------------ P-2395,4092 S-1260/1260 0-1216,1-2434 F-16 B7 L- 2069 Cù P-2.652
*MUMMY1       P-2399,4093 S-1260/1260 0-1237,1-2473 F-2C B7 L-  263 Cù P-0.020
*------------ P-2399,4091 S-1260/1103 0-1217,1-2434 F-16 B7 L- 2069 Cù P-2.650
*MUMMY1       P-2399,4093 S-1260/1260 0-1237,1-2474 F-2C B7 L-  263 Cù P-0.021
*------------ P-2400,4090 S-1260/1260 0-1218,1-2437 F-16 B7 L- 2069 Cù P-2.649
*MUMMY1       P-2398,4093 S-1418/1103 0-1236,1-2472 F-2C B7 L-  263 Cù P-0.020
*------------ P-2395,4090 S-1260/1260 0-1221,1-2443 F-16 B7 L- 2069 Cù P-2.655
*MUMMY1       P-2406,4094 S-1260/1260 0-1240,1-2479 F-2C B7 L-  263 Cù P-0.020
*------------ P-2404,4093 S-1418/1260 0-1237,1-2473 F-16 B7 L- 2069 Cù P-2.647
*MUMMY1       P-2394,4092 S-1418/1103 0-1237,1-2474 F-2C B7 L-  263 Cù P-0.019
*------------ P-2395,4092 S-1418/1260 0-1226,1-2452 F-16 B7 L- 2069 Cù P-2.648
*MUMMY1       P-2396,4092 S-1260/1260 0-1236,1-2470 F-2C B7 L-  263 Cù P-0.019
*------------ P-2395,4092 S-1260/1260 0-1236,1-2471 F-16 B7 L- 1037 Cù 

In this example, "OH MUMMY" takes 2 blocks and "MUMMY1" takes 7 blocks.

If there are more than one "------------" line between a line with a name on it, then voc2tzx may have had problems identifying that data block. Adjust the percentage until the listing is good.

Always test the tape image completely with a emulator that supports tape-images before accepting the tape image as good.

I found that voc2tzx does not appear to include a pause at the start of the tape-image. The Amstrad waits for the tape-motor to achieve full speed before attempting to read it. Therefore you might need to "rewind tape to start" for the emulator to detect the first block properly.

This method can be used to transfer any program stored using the standard Amstrad loading system.

For preservation purposes I suggest the following options are not used: "/cpc" and "/force".

It is possible to transfer other loading systems using this method and I have been successful transfering lots of different types.