[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: PC-to-Apple ][ File Transfer



Andy McFadden wrote:
BLuRry <brendan.robert@gmail.com> wrote:

And what's more, the emulated applewin sound doesn't quite match the
real thing -- CiderPress can't recognize it even if I comb out only the
770hz, 1khz and 2khz audio bands.  So I'll have to abuse a real apple
machine for this experiment I think.

Following what Andy McFadden wrote about the basics on cracking apple
casette programs, is it exactly 1khz and 2khz tone or is that just a
close approximation?  I think I can pretty easily generate very clean
apple tape data after reading the book of McFadden. :-)


It's pretty close.  I've uploaded a sample file, recorded from an Apple II
cassette tape (the Apple "StarTrek" tape).  The tape contains two copies
of the program, the first of which reads cleanly in "zero crossing" mode.
It may shed some light on what a real Apple II is producing / expecting.

http://www.faddensoftware.com/apple-startrek.wav (note: 4.2MB)

The cassette output of an Apple //e is a very clean "square" waveform
switching between 0v and about 35mv--suitable for a microphone input.

After it is recorded on a cassette and played back, its bandwidth has
been severely limited--to about 5kHz, and, in addition to being quite
rounded, it may have become somewhat assymetrical.  (Timing the interval
for the next *two* successive "zero crossings" helps cancel out the
effects of this assymetry.)

Cassette recorders are, by their nature, AC coupled, so preserving a
stable DC balance of the recorded signal at 50% is important to prevent
level shifts from distorting the "zero crossing" information.

The Apple cassette input port is also AC coupled, through a single-pole
highpass filter with a 3dB point of about 60Hz.  This has the effect of
eliminating any DC level shifts and cutting the effect of 60Hz hum by a
factor of two.

The input stage is an op amp connected as a Schmitt trigger.  The output
of the cassette recorder, nominally 1vpp, is passed through the DC
blocking highpass and then attenuated by a factor of two to 0.5vpp., or
+/-0.25v.  The Schmitt trigger is designed to trigger at levels of
+/-0.18v, so any signal less than about 70% amplitude is effectively
ignored.  You can see why I put "zero crossing" in quotes--the input
circuit is effective at recovering the durations of recorded pairs of
transitions, but what is sensed is not really the zero crossings--which
would be quite noisy when a weak signal or no signal was present.  (This
hysteresis also explains why linear audio signals recorded through the
cassette input tend to sound "bursty" or "fast squelched".)

It might be interesting to employ this kind of thresholding in decoding
difficult recordings.

-michael

Music synthesis for 8-bit Apple II's!
Home page:  http://members.aol.com/MJMahon/

"The wastebasket is our most important design
tool--and it is seriously underused."