Copying tape to disk

The place for codemasters or beginners to talk about programming any language for the Spectrum.
Post Reply
User avatar
fenderjaguar
Drutt
Posts: 23
Joined: Wed Mar 07, 2018 11:48 am

Copying tape to disk

Post by fenderjaguar »

I have a spectrum +3 with quite a few floppy disks. I was wanting to copy from tape to disk and have been following this guide:

http://www.thespectrumshow.co.uk/Feature4.aspx

https://www.youtube.com/watch?v=EfI3ACO8SLQ&t=388s

However helpful the guide is, it seems to be missing vital information out for me. For example at exactly the 8 minute mark, the video is edited out how he got from here:

10 CLEAR VAL “54554”: LOAD “v2” CODE: RANDOMIZE USR VAL “54555”

To here:

10 BORDER 0: INK 4: PAPER 0: CLS 11 CLEAR VAL “54554” 12 LOAD “egg2” CODE 13 PRINT AT 10,8; “Press Any Key” 14 PAUSE 0 20 RANDOMIZE USR VAL “54555”

Are you supposed to just delete all of the first entry, then type in the second? Also, I don't know at what points to press play on the tape. Could anyone help me with clear steps with everything included? I don't really know much about basic, I only typed a few games out in +3 basic, like bomber city, out of a library book back in the late 80's/early 90's.

Thanks :)
Rorschak
Drutt
Posts: 6
Joined: Mon Nov 13, 2017 5:04 pm

Re: Copying tape to disk

Post by Rorschak »

Here are the steps you need to go through.

1. Convert the .SNA to .TAP and then to .WAV, possibly adjusting the volume if you can't load the file on the spectrum.
2. Switch the +3's loading to the tape drive and merge the basic loader from tape. Stop the tape after the basic block.
3. Make a note of the "CLEAR" address and the "RANDOMIZE USR" address. The "RANDOMIZE USR" address should be the CLEAR address + 1.
4. Replace the basic program with:

10 INK 0: PAPER 0: BORDER 0: CLEAR <address of CLEAR from original basic program>
20 LOAD "<CODENAME>" CODE
30 INK 4
40 PRINT AT 10,8; “Press Any Key”: PAUSE 0: RANDOMIZE USR <address of RANDOMIZE USR from original basic program>

This program will be the same for every tape you convert. The only things that change are the two addresses and the name you choose for the codeblock.
5. Switch the +3 to disksaving and save the basic with SAVE "GAMENAME" LINE 10
6. Check the startaddress and length of the datablock as he demonstrates at 8:49 in the video. Alternatively you should be able to calculate the numbers. The startaddress is the <RANDOMIZE USR> address and the length is 65536 - the <RANDOMIZE USR> address.
7. Delete line 40 in the basic program. Switch the +3 to tapeloading.
8. Run the program and play the tape. The compressed program is now loaded from tape. After the program loads you will be returned to basic with a yellow cursor on black paper.
9. Switch the +3 to disksaving and save the compressed program with SAVE "<CODENAME>" CODE <start address from tape browser>,<length from tape browser>
10. That's it. Test the program by loading it from the disk.
Post Reply