oh my, I remember building one of these in 1979 at 13yrs of age with my neighbor who programmed embedded computers for industrial systems. I was lucky to have Tom as a customer on my paper route.
Subscribed :) Kudos for going the discrete logic way about this. When I went through this a few months ago I realized Don Lancaster didn’t really have a 6502 in mind when he made his circuits for tape. That’s why I decided I would do the decoding in software on the 6502 instead - that way all you need is a comparator IC for input from tape and a low pass filter for converting squares to sines. That’s turned into a nice little 1.5x4cm board with a mini jack on one end and IO on the other end that’s easily connected to the 6522 VIA - you can check out my video using it to save to 7” tape reels if you didn’t already :)
I have only seen two methods used for tape storage. The first method was identical to the MFM storage method used on hard drives: All bits recorded took exactly the same time to record, with the time divided into four portions. Only portion 3 would change for 0 and 1 bits. First there was a clock pulse of a fixed length, then a pause of the same length, then the data bit which would either be a second pulse of the same length as the first or a pause the same length as the clock pulse, then there would be a pause of the same length. The advantage of this method is that the timing could "drift" slightly but the CPU could re-synchronise with each leading clock pulse, so any drift would not accumulate. The other method was Frequency Shift Keying which recorded two different frequencies and in at least one system I saw, used a Phase-Locked Loop to detect one of the two frequencies so that it would put out the correct bit at the right time. This method required that there be a re-synchronisation periodically to take care of any drift in the tape speed, which was taken care of by the "stop" bits and the "start" bit. The MFM method was notably used by the TRS-80 and due to an error in the cassette timing code, reading back tapes was nowhere near as reliable as it should have been. A later correction to the code fixed this mistake by adjusting the read timing, but by then the computer had earned its eternal nickname of "trash-80" and the lack of reliable cassette recording played a large part in that.
This is a great presentation. You must have put a lot of work into illustrating the concepts. When I first read the description of the number of cycles for each symbol, I did not understand why they had different cycle counts. But your illustration showed me that the time of each symbol, so defined, is the same. Brilliant.
Sure, first few Altairs were just the front panel and a minimal RAM configuration, but most folks upgraded their machines in short order to be more interactive. Glad to see the classic KSC being given some time, and low level examination. I look forward to seeing how this progresses.
Saw this on beneater Reddit! I think it’s super interesting that it’s 2400Hz FSK because around the same time, Linear Time Code was defined and it’s the same modulation and speed (for ntsc). (Oh, and subscribed and added the playlist. I’m gonna also try to adapt this circuit to my LTC project!)
Oh that's interesting! Would love to hear more about what you're doing. Will you share on Reddit? If you Google some of the peoples names from the symposium in the video, you'll see that they were all pretty involved across the computer scene. I wouldn't be surprised if the similarities were purposeful. Even the stream of data on tape is just standard UART, so they definitely adapted proven methods that already existed.
The pictured Atari wasn't actually using the 6502 itself, but a derivative of it. The 400 and 800 Atari computers did use the 6502, as well as the Apple II, in several versions, and all the clones of the Apple II that I have ever encountered.
Similarly the "BBC Micro" pictured was actually an Acorn Electron. Same manufacturer that also had a 6502, plus it used a variant of KCS called CUTS to store data on cassette tapes - see the Wikipedia page for more info.
For a brief moment in time all computers could read each others cassettes and write cassettes that could be read by all other computers. What a joy it must have been to live in a that glorious era of early computing. And then it all was spoiled by some people who thought they knew better. Oh what a tragedy!
Are you perchance referring to the TRS-80 which used MFM instead of FSK? That was a debacle mostly because whoever programmed the timing got it wrong, and it took a year or more before it was corrected for new TRS-80s but by that time, other systems with more reliable tape storage and better graphics had become popular.
Hey! Thanks for the kind words and for being here! It seriously means a lot. There are a few more videos on this and am working on the last one now. I've also made this into a kit (ruclips.net/user/shortsCVAkuIm3Mp4) and will release the final Kansas City Standard video when the kit is ready.
Interesting! I wonder if you could use a L4LS221 for the detection? It seems ideally suited. Perhaps with a 74LS14 at the front to square off the signal? I'm here thanks to the reddit post, BTW. Some great content you have here!
Is the '221 retriggerable? I've never used one. My go-to monostable chip is the '123, which is retriggerable but doesn't have Schmitt inputs, so will definitely need a '14.
Hey Gary, glad you liked it! :) Not sure if you saw, but there are three other videos in the KCS series. In the last one, I released a kit to do just that. And yes, it is bizarre... So bizarre and I love it! :)
I would do it completely by software. The only hardware thing needed is a zero-cross detector feeding pulse to CPU when signal crosses zero voltage point. CPU can easily determine freqency by counting pulses in constant time or counting time between pulses. Zero-crossing detection is far better because it is not affected by signal level and low affected by noise in signal. This is BTW how it worked in C64 datasette for example. You also need some kind of synchronization logic (also doable in software) which offers a way to compensate for varying tape speed and possible difference of recording and playback speed (when recording is done on the different recorder than playback) which affects frequency.
Hey mskk2004! If you haven't seen it yet, check out Ander's Universal Modem (ruclips.net/video/KLn8S8x0VVo/видео.html ), he's doing it very much that way which also provides the ability to have multiple baud rates. My next video will be covering the synchronization to the start bit and the latching, with the added bonus of being able to teach some of the electrical/logical concepts. Thanks for being here man!
Here's the first look at the kit! I plan to release the schematic at the same time as the kit. I had a timing issue that's taken a long time for me to resolve. Just want to make sure it's all good beforehand! ruclips.net/user/shortsCVAkuIm3Mp4
"He did this using only transistors." Oh? When did they make transistors whose model numbers you could read basically like the values of through-hole resistors, and some that even look like capacitors, then? And are those resistor-looking ones BJTs or FETs?
I used Zx81 and C64 cassettes way back when, why on Earth would you put your self through this? I was so glad when I was able to get my first floppy drive and leave cassettes behind.
Here's the first look at the kit. Schematic's not up yet. I plan to release the schematic at the same time as the kit. I had a timing issue that's taken a long time for me to resolve. Just want to make sure it's all good beforehand! ruclips.net/user/shortsCVAkuIm3Mp4
"How to read data off a cassette tape." That's strange. Why would they want to remove the data while reading it, instead of merely reading it *FROM* the tape?
Huh, pretty amateur of them to specify frequencies that are integer multiples -- distortion will create harmonics so the 1200 Hz carrier will trigger the 2400 Hz detector as well. Obviously it works well enough but if there's noise or degradation of the signal it probably would have worked better to choose e.g. 2100 or 2700 instead of 2400...
Seems like a good example of digital is not analog, but actually it is. That is, from the perspective of someone practiced in analog design (or who understands Fourier/freq space well), harmonics are obvious. If one comes at the problem from the perspective of pushing discrete bits across a bus (for example), harmonics are essentially, or completely, invisible.
Especially considering that DTMF already existed. They could have either encoded each frequency as a bit (non telephone compatible and technically no longer DTMF but more efficient), or each telephone key as a 4-bit nibble (telephone compatible but half the tape data capacity) en.m.wikipedia.org/wiki/Dual-tone_multi-frequency_signaling
"Two thousand eighteen..." Guess what: there's an easier way to say years like 2018: Remember how you said 1975 as "NINETEEN-seventy-five" instead of "one thousand..." (blah blah blahh)? Why do you think we say it that way? Is it incorrect to say "one thousand, nine hundred..." (whatever)? No. But why bother saying it that way when there's an easier way? Why not say the years from _this_ century that way too, then? Enter "TWENTY-eighteen." See how it has fewer syllables, just like "nineteen-seventy-five" does? So try it today, and have a happy Christmas!
oh my, I remember building one of these in 1979 at 13yrs of age with my neighbor who programmed embedded computers for industrial systems.
I was lucky to have Tom as a customer on my paper route.
Tom sounds awesome.
Subscribed :)
Kudos for going the discrete logic way about this. When I went through this a few months ago I realized Don Lancaster didn’t really have a 6502 in mind when he made his circuits for tape. That’s why I decided I would do the decoding in software on the 6502 instead - that way all you need is a comparator IC for input from tape and a low pass filter for converting squares to sines.
That’s turned into a nice little 1.5x4cm board with a mini jack on one end and IO on the other end that’s easily connected to the 6522 VIA - you can check out my video using it to save to 7” tape reels if you didn’t already :)
I have only seen two methods used for tape storage.
The first method was identical to the MFM storage method used on hard drives: All bits recorded took exactly the same time to record, with the time divided into four portions. Only portion 3 would change for 0 and 1 bits. First there was a clock pulse of a fixed length, then a pause of the same length, then the data bit which would either be a second pulse of the same length as the first or a pause the same length as the clock pulse, then there would be a pause of the same length. The advantage of this method is that the timing could "drift" slightly but the CPU could re-synchronise with each leading clock pulse, so any drift would not accumulate.
The other method was Frequency Shift Keying which recorded two different frequencies and in at least one system I saw, used a Phase-Locked Loop to detect one of the two frequencies so that it would put out the correct bit at the right time. This method required that there be a re-synchronisation periodically to take care of any drift in the tape speed, which was taken care of by the "stop" bits and the "start" bit.
The MFM method was notably used by the TRS-80 and due to an error in the cassette timing code, reading back tapes was nowhere near as reliable as it should have been. A later correction to the code fixed this mistake by adjusting the read timing, but by then the computer had earned its eternal nickname of "trash-80" and the lack of reliable cassette recording played a large part in that.
This is a great presentation. You must have put a lot of work into illustrating the concepts. When I first read the description of the number of cycles for each symbol, I did not understand why they had different cycle counts. But your illustration showed me that the time of each symbol, so defined, is the same. Brilliant.
Hey Eric! I'm glad you enjoyed it! Thanks for the feedback. It means a ton!
Very cool video! Thanks for the info
Sure, first few Altairs were just the front panel and a minimal RAM configuration, but most folks upgraded their machines in short order to be more interactive.
Glad to see the classic KSC being given some time, and low level examination. I look forward to seeing how this progresses.
Wow, this is great! Thanks for taking the time to make this.
Thanks Curt! I'm really glad you liked it!
I was thinking where to go next with my Ben Eater 6502. I would definitely be interested in a kit. looking forward to the next video.
Hey Stuart! It's been a while since you left this comment, but, I wanted to let you know that I did end up making the kits!
>lists 6502 computers
>Forgots THE 6502 computer, the Commodore 64
Duuuuude!
Back in the day I knew the sound of the data-on tape, but never knew how it was encoded. Thanks for this info.
Saw this on beneater Reddit!
I think it’s super interesting that it’s 2400Hz FSK because around the same time, Linear Time Code was defined and it’s the same modulation and speed (for ntsc).
(Oh, and subscribed and added the playlist. I’m gonna also try to adapt this circuit to my LTC project!)
Oh that's interesting! Would love to hear more about what you're doing. Will you share on Reddit? If you Google some of the peoples names from the symposium in the video, you'll see that they were all pretty involved across the computer scene. I wouldn't be surprised if the similarities were purposeful. Even the stream of data on tape is just standard UART, so they definitely adapted proven methods that already existed.
@@GregStrike I’ll comment on your Reddit post.
fascinating.
Indeed!
The pictured Atari wasn't actually using the 6502 itself, but a derivative of it. The 400 and 800 Atari computers did use the 6502, as well as the Apple II, in several versions, and all the clones of the Apple II that I have ever encountered.
Similarly the "BBC Micro" pictured was actually an Acorn Electron. Same manufacturer that also had a 6502, plus it used a variant of KCS called CUTS to store data on cassette tapes - see the Wikipedia page for more info.
if you listen carefully, he said some of the atari models...
For a brief moment in time all computers could read each others cassettes and write cassettes that could be read by all other computers. What a joy it must have been to live in a that glorious era of early computing.
And then it all was spoiled by some people who thought they knew better.
Oh what a tragedy!
Are you perchance referring to the TRS-80 which used MFM instead of FSK? That was a debacle mostly because whoever programmed the timing got it wrong, and it took a year or more before it was corrected for new TRS-80s but by that time, other systems with more reliable tape storage and better graphics had become popular.
Fantastic presentation and very didactic, I was looking for videos like this. Thank you very much. +1 subscribed.
Hey! Thanks for the kind words and for being here! It seriously means a lot. There are a few more videos on this and am working on the last one now. I've also made this into a kit (ruclips.net/user/shortsCVAkuIm3Mp4) and will release the final Kansas City Standard video when the kit is ready.
Interesting! I wonder if you could use a L4LS221 for the detection? It seems ideally suited. Perhaps with a 74LS14 at the front to square off the signal?
I'm here thanks to the reddit post, BTW. Some great content you have here!
Is the '221 retriggerable? I've never used one. My go-to monostable chip is the '123, which is retriggerable but doesn't have Schmitt inputs, so will definitely need a '14.
@@johnm2012 I thought it was just a pair of 123s in the same package iirc
Brilliant, for some bizarre reason I’d love to connect a raspberry pi to a tape and save python programs to it just to mirror old times…
Hey Gary, glad you liked it! :) Not sure if you saw, but there are three other videos in the KCS series. In the last one, I released a kit to do just that. And yes, it is bizarre... So bizarre and I love it! :)
@@GregStrike great will take a look thanks
You need to pull down the logic with a 10k resistor connected to ground to prevent it floating when the voltage is changing.
I would do it completely by software. The only hardware thing needed is a zero-cross detector feeding pulse to CPU when signal crosses zero voltage point. CPU can easily determine freqency by counting pulses in constant time or counting time between pulses. Zero-crossing detection is far better because it is not affected by signal level and low affected by noise in signal. This is BTW how it worked in C64 datasette for example.
You also need some kind of synchronization logic (also doable in software) which offers a way to compensate for varying tape speed and possible difference of recording and playback speed (when recording is done on the different recorder than playback) which affects frequency.
Hey mskk2004! If you haven't seen it yet, check out Ander's Universal Modem (ruclips.net/video/KLn8S8x0VVo/видео.html ), he's doing it very much that way which also provides the ability to have multiple baud rates. My next video will be covering the synchronization to the start bit and the latching, with the added bonus of being able to teach some of the electrical/logical concepts. Thanks for being here man!
Oooh. I’d be interested in a kit. If not, a schematic and parts list are cool too.
Hey Donald, Thanks for the feedback. Kits are coming soon!
Here's the first look at the kit! I plan to release the schematic at the same time as the kit. I had a timing issue that's taken a long time for me to resolve. Just want to make sure it's all good beforehand!
ruclips.net/user/shortsCVAkuIm3Mp4
Hey Donald! I finally posted the last video on this and along with it RELEASED the kits!! A schematic is also available now too!
@@GregStrike whoa cool, can’t wait to check out the new video, kits and schematics tonight! Glad to see your reply notification
@@GregStrike correction: I just ordered the kit and will check out the video tonight haha
Awesome explanation! :D
You missed your calling! where were you when I was having to sit through Russian History in 6th grade! You made this so interesting!
"He did this using only transistors."
Oh? When did they make transistors whose model numbers you could read basically like the values of through-hole resistors, and some that even look like capacitors, then? And are those resistor-looking ones BJTs or FETs?
So for highs, what's Mr. Monostable's usual drug of choice?
I used Zx81 and C64 cassettes way back when, why on Earth would you put your self through this? I was so glad when I was able to get my first floppy drive and leave cassettes behind.
"But it wasn't too long after that that computers became usable."
They already were for decades; just not much by the general population.
"When the first start playing..."
But not the 2nd, 3rd, or 4th+ times you play them from there?
we use this PSK in ham radio to send data in data modes, packet radio
Well hello there fellow ham! :). 73!
@@GregStrike yes I pretty mush like only data modes :)
I want a kit to build this
Nice! Check out my latest short and posting on my channel. Kits are coming soon! I turned it into a soldering kit vs a breadboard. What do you think?
Here's the first look at the kit. Schematic's not up yet. I plan to release the schematic at the same time as the kit. I had a timing issue that's taken a long time for me to resolve. Just want to make sure it's all good beforehand!
ruclips.net/user/shortsCVAkuIm3Mp4
Hey John! I just wanted to follow up and let you know that the latest video is up and the KITS ARE FINALLY available! Thanks for being here man!
"How to read data off a cassette tape."
That's strange. Why would they want to remove the data while reading it, instead of merely reading it *FROM* the tape?
Huh, pretty amateur of them to specify frequencies that are integer multiples -- distortion will create harmonics so the 1200 Hz carrier will trigger the 2400 Hz detector as well. Obviously it works well enough but if there's noise or degradation of the signal it probably would have worked better to choose e.g. 2100 or 2700 instead of 2400...
Seems like a good example of digital is not analog, but actually it is. That is, from the perspective of someone practiced in analog design (or who understands Fourier/freq space well), harmonics are obvious. If one comes at the problem from the perspective of pushing discrete bits across a bus (for example), harmonics are essentially, or completely, invisible.
Especially considering that DTMF already existed. They could have either encoded each frequency as a bit (non telephone compatible and technically no longer DTMF but more efficient), or each telephone key as a 4-bit nibble (telephone compatible but half the tape data capacity)
en.m.wikipedia.org/wiki/Dual-tone_multi-frequency_signaling
Turns out we used tape based recordings for years and this wasn't a problem.
"Until 30... _has_ passed...? Oops.
"Now... now..."?
Jo s
"Two thousand eighteen..." Guess what: there's an easier way to say years like 2018: Remember how you said 1975 as "NINETEEN-seventy-five" instead of "one thousand..." (blah blah blahh)? Why do you think we say it that way? Is it incorrect to say "one thousand, nine hundred..." (whatever)? No. But why bother saying it that way when there's an easier way? Why not say the years from _this_ century that way too, then? Enter "TWENTY-eighteen." See how it has fewer syllables, just like "nineteen-seventy-five" does? So try it today, and have a happy Christmas!