45

First, many thanks for the great question. This may well be my favourite retrocomputing video of them all, so I contemplated having a look at the executable for a while myself. So, this is what I did: To download the audio, I went to the same YouTube video and used 4K Video Downloader (mainly because it clearly shows which audio is the original one, so that ...


43

If (and only if) your audio player is battery powered, and your Spectrum is the 48K or 128K toastrack model, try the following procedure, intended to boost the volume of your wave signal, as seen by the Spectrum EAR circuitry: Get one of these audio cables. They are very common. And yes, they are stereo. Why do we need it to be stereo? The trick is that ...


27

These programs usually had a mono-color background with very little text. By setting the color of the screen as "black ink on black paper" or "white ink on white paper", it is possible to relocate the whole software in video RAM and hide it from view. These programs were tiny asm utilities (they used 1 or 2 kilobytes or RAM) which copied themselves to ...


23

There's so much to go wrong in a cassette mechanism that it's amazing they worked at all. can you adjust tape head azimuth? Misalignment is responsible for a lot of sound problems. how clean are your tape player heads? Are the capstan and various drive rollers clean too? are the pressure pads behind the tape intact? Sometimes the little felt pads come ...


23

Actually, the screen stripes while loading from tape first occurred on the ZX-81 - Where they were a result of Sinclair's typical savvy nature - the display and the "EAR IN/MIC OUT" had to share a pin on the ULA and thus made the (whole) screen flicker in stripes during tape loading and saving. This actually proved useful as a visual clue the computer still ...


20

There are multiple techniques used by tape copy programs to be able to copy large blocks of data. By large we mean close to the whole RAM capacity (48 KiB) or even more! Using maximum of the available RAM ZX Spectrum 48K (and ZX Spectrum+) has 48 KiB (49152 B) of RAM from which 6 KiB (monochrome pixels) + 768 B (colour attributes) are being used for video ...


19

The Sprint cassette player/recorder, specially designed for the ZX Spectrum, allowed 4X load and save speeds. It works by speeding up the tape four times the standard playing speed. It is meant to load programs originally recorded at the Spectrum ROM standard speed (1500 bps). It provides a shadow ROM that pages in when the CPU starts executing a SAVE or ...


18

I've confirmed that mcleod_ideafix's method is reliable for regular tape images. Here is a shell script to do (effectively) the same thing: #!/bin/bash # wav2differential.sh - convert mono game tape audio to 2× stereo # usage: wav2differential.sh infile.wav # (creates infile-differential.wav) # scruss - 2016-06-07 # method by ‘mcleod_ideafix’; ...


18

You need to use OpenMSX, and get the system ROMs for the machine in question. Then run OpenMSX, set the machine to the FS-A1WSX. There's a little menu button at the top left of the OpenMSX window. In there, set your tape to the WAV file. Then: 10 M$ = "E4E8O3G16G32R32G2G4R4O4C8D8E8F8G2G8F8E8F4E8D8E4D8C4" 20 PLAY M$+M$ The listing above is the content of ...


17

Commodore 64 uses two CIA (Complex Interface Adapter) chips. CIA#1 is responsible for the keyboard, joystick, paddles, datasette and IRQ control, while CIA#2 controls the serial bus, RS-232, VIC memory and NMI. If you check the CIA#1 address map you will see that: Memory address $DC00 (Port A) is used for keyboard matrix columns and Joystick #2 at the same ...


17

As you guessed, LOAD "" loads a BASIC loader. LOAD "" CODE loads a machine code program saved on the tape straight into memory, at the addresses given when using SAVE name CODE start, length Doing it this way means you can squeeze the most code into the memory, not wasting any on the loader or a loading screen.


16

The Apple II recorded data as a frequency-modulated sine wave. A standard consumer cassette deck could be connected to the dedicated cassette port on the Apple ][, ][+, and //e. The //c, ///, and IIgs did not have this port. A tape could hold one or more chunks of data, each of which had the following structure: Entry tone: 10.6 seconds of 770Hz (8192 ...


16

In theory, it is fairly simple duplicating a tape. The problem with analog tape-to-tape copies is that sound quality lowers and spurious noises are also copied and more are generated into each new consecutive copy generation. It did not contribute to improve the situation, that later tape copy protection methods/turbo loaders (SpeedLock, Alcatraz...) were ...


15

The simple reason is that interoperability was not a primary drive for this kind of storage, especially at the consumer level. Honestly, what's the point of reading a Commodore cassette on an Atari for 99% of the use cases? I look at the hardware on the sample diagram and, you know what? It's a lot. Most interfaces are a few bits of analog components like ...


14

No, they're purely for communication with the user. Coloured stripes = loading, slow colour changes = not loading. Setting the border colour on the Spectrum is achieved with a simple port output. The stripes are an elementary raster effect — all that's happening is that the tape loading routine is changing the border lots of times within a frame. If you ...


13

Most of this info comes from the Color Computer 3 Service Manual (26-3334), except for the actual frequencies used on the cassette: On the tape, frequency shift keying is used, with a zero bit encoded by a single 1200 Hz sine wave, and a one bit encoded by a single 2400 Hz sine wave. (Yes, this means some bytes play faster than others.) The service manual ...


13

A quick glance at the 'Theory of Operation, Tape Interface' section of the Exidy Sorcerer Technical Manual reveals that at 300 baud a 0 is encoded as four cycles of a 1200Hz square wave and a 1 is eight cycles at 2400Hz. At 1200 baud a 0 is half a cycle at 600Hz and a 1 is one cycle at 1200Hz tone. Or, if you prefer, at 1200 baud the output level is always ...


13

The analogue audio is turned into a 1-bit signal — either high or low. The machine then detects positive transitions, counting the amount of time between each. That allows them to be bucketed into one of three types: short, which are those closest to a 364 microseconds; long, which are those closest to 524 microseconds; and mark, which are 684 microseconds....


12

I'm not sure what you mean with "EAR/MIC I/O was level based". In the ZX Spectrum, the EAR input is a digital input, so it can only be 1 or 0. You cannot measure the input level beyond that. The main reason to use edges is for the system to work independently of the audio source. Other systems, such as the Commodore 64, need the datasette to supply a signal ...


12

No, you won't need any 'HiFi' like recorders. After all, these were the very same devices you also used to record your own programs and/or data. While copying from recorder to recorder does always carry a loss in quality, this is of no big influence on a first or second degree copy (*1). The most important factor is volume. It's much the same as when ...


11

Obviously, you can just switch tapes as you go, but systems that used cassette tapes for storage weren't really viable for collaborative development. Simply because with a cassette tape, you had "what's in memory" and "what's on tape", and the occasional task of saving and loading from a tape. So you could have someone walk over with a cassette so they can ...


11

My father had one bought in Singapore in the 1970s. Their appeal was that they were portable recording devices. A microphone with a long lead would plug into the mic and rem sockets. The microphone would have a switch on the side which could be used to pause the recording or playback of the tape. Journalists, academics etc would put the recorder in a bag ...


10

Probably, no serious software development was done purely on tapes. Floppies were used extensively, as well as cross-tools, ROM emulators etc. This nice and free book, telling about the creation of the famous ZX Spectrum game named "R-Type", has also some insights into the typical development process for ZX Spectrum.


9

If you're changing just CPU clock speed, leaving the other components as is then amongst those that would continue to read tapes correctly are: The Vic-20 and the Commodore 64. In the case of the Vic-20 tape input is connected to one of the control lines of a 6522 VIA. Wave length determination is achieved by loading a timer on that VIA and checking its ...


9

Since you mentioned the Apple II, it is worth pointing out that accelerators were available for that platform "back in the day". I can speak to how the CPU replacement ones worked (e.g. Zip/RocketChip) since some others simply took over the bus and some did RAM mirroring with faster SRAM which is a bit more complicated than a simple overclock. As with most ...


9

I’m not sure whether this counts as early enough, but the Atari 1010 cassette drive could be daisy-chained; it was produced from 1983 to 1985, replacing the earlier 410 which had to end the SIO chain. The XC11 (1986) could also be daisy-chained, but the XC12 couldn’t. (Although as Raffzahn points out, you can’t use more than one cassette drive on an SIO bus; ...


9

You are talking about two different things, the Commodore Datasette, which had an idiosyncratic connector (like the Atari SIO as mentioned in another answer here), and ordinary cassette drives as used with other home computers (BBC Micro, Tandy TRS-80, MSX, Dragon, et al.). The latter were ordinary analogue audio equipment. They weren't computer ...


9

So that got me thinking... did anyone use the second channel for storage? Well yes, everyone - They simply used the same signals for both channels. But that was obviously not your question. You simply could not assume everyone had a stereo recorder. While it might seem "normal" today, it wasn't in the 80ies Coding and decoding one channel already max out a ...


9

I'd bet on some kind of prehistoric "copy protection", or the oddity of the software house production process. The most usual way was to have a short BASIC loader (e.g. 10 CLEAR 24899: LOAD "" CODE: RANDOMIZE USR 24900) saved with LINE 10 for autostart after load. The second file was a code itself. BASIC made the necessary operations: prepare the memory ...


9

Use of error-correcting codes was not common in home computers until at least 33.6Kbps modems and/or gigabyte-sized hard disks were available. One of the earliest consumer applications of ECC (in the form of two-dimensional Reed-Solomon codes) was the Compact Disc. Until then, error-detecting codes such as parity and CRC were reasonably common, including ...


Only top voted, non community-wiki answers of a minimum length are eligible