1200-Baud Archeology 211
jamie found this singularly geeky article on reconstructing Apple I BASIC from a cassette tape. It claims to offer the first confirmed perfect dump (BIN) of the 4096 bytes of this venerable interpreter. Terrific fun for the whole family. "The Apple I is extremely rare. Only 200 were built, and less than 100 are believed to be in existence. Neither Steve nor Woz own an Apple I any more, and neither does Apple Inc. The cassettes are even rarer, as not every Apple I came with one... So here is how to decode the signal. Let us first open the audio file in Audacity and look at the waveform... It is now time to write a small program to measure and dump the width of the pulses."
Teach it! (Score:5, Insightful)
They don't feel confortable enough in less than 1 GB, what if they had just 4 KB?
Assembler (Score:1, Insightful)
Seriously... teach assembler in school, with the same memory limitation... let them squeeze out the last bit of the hardware, just like the hackers did with Commodore 64.
Re:Alternative tools (Score:5, Insightful)
I think the emphasis is more on the historical significance, given the rarity of the tapes and the fact that the only digitised copy floating about has been patched.
Re:Teach it! (Score:5, Insightful)
Functionally "forever".
Re:Teach it! (Score:5, Insightful)
If Apple tried to sue, Woz would likely pay for your defense.
Memories (Score:3, Insightful)
I tell my kids about loading programs off cassette tapes but they just don't get it. I guess they'll never know the agony of having a program ruined by fragility of magnetic tape.
Re:Teach it! (Score:3, Insightful)
Yeah, but runners sometime train with weights on to build strength. When they remove them their speed improves.
Re:Alternative tools (Score:3, Insightful)
The code being simple does not necessarily mean the though process of coming to those 15 lines was simple and/or straightforward.
Re:Teach it! (Score:3, Insightful)
How long is copyright nowdays?
How old is Mickey Mouse?
Re:Apple I BASIC? (Score:4, Insightful)
Who cares? The fun is in recovering it, not using it! I'm sure that the archeologists that find mummies don't want to mummify dead people, they just want to learn about how the ancient people lived.
Re:Alternative tools (Score:5, Insightful)
When I was a teenager, I used to decode FAT tables and directory structures by hand, using pen and paper and printouts from a raw hex dump of a hard disk. I didn't do this because there was a problem needed to be solved; I knew what was on the disk and there sure were plenty of tools to read the data (like MS-DOS). But it was a fun challenge and I learned how FAT worked.
I can see how this is a similar challenge. It's nothing more than a geeky sudoku.
The decoder uses a Schmitt trigger (Score:3, Insightful)
It's not quite equivalent. The recorded wave file is heavily bandlimited so you can't reliably use a comparator to convert it to a period shift signal.
Which is why the decoder uses two comparators: one at 32768/DIVISOR and one at -32768/DIVISOR. In order to count a pair of transitions, the decoder has to see the waveform cross below the negative threshold and then above the positive threshold. This Schmitt trigger [wikipedia.org] provides a bit of hysteresis that cleans up the signal. The value of this DIVISOR corresponds to the tape deck's volume control.
If there were any noise around the zero-crossing point, it wouldn't work at all.
Such noise is what the DIVISOR is supposed to filter out. I disassembled parts of the Apple II BIOS once, and it turned out that the original Apple I/II cassette interface also implemented period shift keying.
He's lucky that method works.
If there were more noise than the DIVISOR could reject, then wouldn't it fail to load on the original hardware too?
Re:The decoder uses a Schmitt trigger (Score:2, Insightful)
That's nice but,
Which is why the decoder uses two comparators: one at 32768/DIVISOR and one at -32768/DIVISOR. In order to count a pair of transitions, the decoder has to see the waveform cross below the negative threshold and then above the positive threshold. This Schmitt trigger provides a bit of hysteresis that cleans up the signal. The value of this DIVISOR corresponds to the tape deck's volume control.
He doesn't do that.
Such noise is what the DIVISOR is supposed to filter out. I disassembled parts of the Apple II BIOS once, and it turned out that the original Apple I/II cassette interface also implemented period shift keying.
He doesn't do that
If there were more noise than the DIVISOR could reject, then wouldn't it fail to load on the original hardware too?
Yes, he's lucky.
Re:The decoder uses a Schmitt trigger (Score:3, Insightful)
the decoder uses two comparators: one at 32768/DIVISOR and one at -32768/DIVISOR.
He doesn't do that.
Read the code in the article. I'll summarize the relevant part:
That looks like a Schmitt trigger to me.