Commodore Datasette - Physical Coding

Physical Coding

To record physical data, the zero-crossing from positive to negative voltage of the analog signal is measured. The resulting time between these positive to negative crossings is then compared to a threshold to determine whether the time since the last crossing is short (0) or long (1). Note the lower amplitude for the shorter periods.

A circuit in the tape unit transforms the analog signal into a logical one or zero, which is then transmitted to the computer via the tape connector. Inside the computer, the first Complex Interface Adapter (6526) in the C64 senses when the signal goes from one to zero. This event is called trigger and causes an interrupt request. This event can be handled by a handler code, or simply discovered by testing bit 4 of location $DC0D. The points that trigger this event are indicated by the black circles in the figure.

Inside the tape device the read head signal is fed into an operational amplifier (1) whose output signal is DC-filtered. Op-amp (2) amplifies and feeds an RC-filter. Op-amp (3) amplifies the signal again followed by another DC-filter. Op-amp (4) amplifies the signal into clipping the sine formed signal. The positive and negative rails for all op-amps are wired to +5V DC and GND. The clipped signal therefore fits into the TTL electrical level window of the schmitt trigger step that in turn feeds the digital cassette port.

On the PAL version of the C64, the time granularity is 1.014 µs (for NTSC 0.978 µs). For a 300 bit/s data rate, equivalent to about 3333 µs/bit, this means each data bit takes 3284 clock cycles.

Once the bits can be decoded, they are fed into a shift register and are continuously compared to a special bit sequence. This bit sequence can also be seen as a byte. A bit-sequence match means that the stream is byte-synchronized. The first byte to compare with is called lead-in byte. If matched, it's compared to the sync byte as well.

An example: Turbo Tape 64 has a lead-in byte $02 (binary 00000010), sync byte $09 (binary 00001001) and a following sync sequence of $08, $07, $06, $05, $03, $02, $01.

Read more about this topic:  Commodore Datasette

Famous quotes containing the word physical:

    The price we pay for the complexity of life is too high. When you think of all the effort you have to put in—telephonic, technological and relational—to alter even the slightest bit of behaviour in this strange world we call social life, you are left pining for the straightforwardness of primitive peoples and their physical work.
    Jean Baudrillard (b. 1929)