Keyboard interface hardware
Вставка
- Опубліковано 2 кві 2021
- Check out eater.net/6502 for more 6502 goodness
Support these videos on Patreon: / beneater or eater.net/support for other ways to support.
------------------
Social media:
Website: www.eater.net
Twitter: / ben_eater
Patreon: / beneater
Reddit: / beneater
Special thanks to these supporters for making this video possible:
Aleksey Smolenchuk, Alexander Wendland, Andrew C. Young, Anson VanDoren, Anthanasius, Armin Brauns, Asherah Connor, Ben Cochran, Ben Dyson, Ben Kamens, Ben Williams, Bill Cooksey, Binh Tran, Bouke Groenescheij, Bradley Pirtle, Bradley Stach, Brent Reusing, Brian T Hoover, Bryan Brickman, Bryan Glezerson, Carlos Ambrozak, Christopher Blackmon, Clint Bridges, Dale Andrew Darling, Daniel Jeppsson, Daniel Tang, dans, Dave Burley, Dave Walter, David Brown, David Clark, David Cox, David House, David Sastre Medina, David Turner, David Worsham, Dean Winger, Dissy, dko, Dmitry Guyvoronsky, Dušan Dželebdžić, Dzevad Trumic, Emilio Mendoza, Eric Dynowski, Erik Broeders, Eugene Bulkin, George Foot, George Miroshnykov, Harry McDow, Ian Tait, Ingo Eble, Ivan Sorokin, James Capuder, james schaefer, Jared Dziedzic, Jason DeStefano, Jason Specland, JavaXP, Jaxon Ketterman, Jay Binks, Jayne Gabriele, Jeremy A., Jim Kelly, Jim Knowler, Jim Van Meggelen, Joe Beda, Joe OConnor, Joe Pregracke, Joel Miller, John Fenwick, John Meade, Jon Dugan, Joseph Portaro, Joshua King, Jurģis Brigmanis, Kai Wells, Kefen, Kenneth Christensen, Kent Collins, Kitick, Koreo, Lambda GPU Workstations, Larry, László Bácsi, Lucky Resistor, Lukasz Pacholik, Marcos Fujisawa, Marcus Classon, Martin Roth, Mats Fredriksson, Matt Krueger, Matthäus Pawelczyk, melvin2001, Michael Tedder, Michael Timbrook, Michael Weitman, Miguel Ríos, mikebad, Mikel Lindsaar, Miles Macchiaroli, moi n, Nicholas Counts, Nicholas Moresco, Nick, Örn Arnarson, Paul Pluzhnikov, Paul Randal, Pete Dietl, Phil Dennis, Philip Hofstetter, Phillip Glau, PixelSergey, ProgrammerDor, Randal Masutani, Randy True, raoulvp, Renaldas Zioma, Ric King, Rob Bruno, Robert Comyn, Robert Diaz, Roland Bobek, sam raza, Scott Holmes, Sergey Kruk, SonOfSofaman, Stefan Nesinger, Stefanus Du Toit, Stephen, Stephen Riley, Stephen Smithstone, Steve Jones, Tayler Porter, TheWebMachine, Tom, Tyler Latham, Vincent Bernat, Vladimir Solomatin, Walter Montalvo, Warren Miller, Wraithan McCarroll, xisente, Yee Lam Wan
Soon he’s going to hook up the video card and make a text editor with it
Heck yeah
he is going to write the code and compile it to run, all in the 6502 computer
@@RobsonLanaNarvy and then he'll show us how to bank so he can get enough memory to hold the IDE
Next video: "vi on the 6502"
Operating system on 6502
I'm sitting here yelling "no, use a 7414 instead of a 7404" and then I remember Ben's teaching style. Then I sit back and watch for the object lesson. OMG, I wish I had a teacher like Ben many years ago. These videos stand out as some of the finest teaching I've ever seen.
whats the difference?
@@BichaelStevens He explains starting around 17:37. I think his tactic of starting with the 7404, then "discovering" the need to switch to a 7414 is a great teaching technique.
@@PixelSchnitzel yeah this video was amazing. Am studying electronics and it still stands out as one of the most intuitive tutorials I've seen
I was about o comment "SCHMITT TRIGGER" ;-)
I think a lot of the "well maybe we can do this.. wa... wa... wait we can just do this, can't we?" gets glossed over a lot of the time. Like no, you're right, but just sit with it a minute..
Eventually, it will run some simplistic version of Doom and then we will have come full circle lol
Nah, I would go old-school and program Zork!
Give him enough time and he will be playing his own UA-cam videos on a few breadboards. Now that will be full circle :)
@@MikePerigo He need to first make his own network card.
A few more LEDs should be enough for a rudimentary screen. Nearly there!
@@Izaltinodsouza dude is probably already working on it
I have never been so happy to see number 3 in my entire life
Ben Eater has nearly singlehandedly shown me how cool it would be to become an electrical engineer!
Same! I just love Ben's vibes
What about great Scott?
@@existential_fred He‘s great too
@@KubikDezimeter lol I see what you did there
@@existential_fred Ben's prototypes are neater and seem to be a little safer. 😀
On this episode, Ben teaches us how to make triangle and saw-toowth wave signals.
But I want to see pentagonal waves.
@@sdspivey I suppose that would look like a square wave with a triangle wave sitting on top where it’d normally be flat.
Hmm, wonder how that sounds. It wouldn’t be quite the same as just adding a triangle and square wave simply added together, one component waits for the other
@@kaitlyn__L One peak could be just a slope up then down, the next would be the lower part of the pentagon. (A triangle, followed by an inverted "mesa")
At the point we saw the different wave forms on the oscilloscope I thought he is gonna hook up a speaker 😅
When he was wondering about how to clean the inverted signal I thought to myself he needs to use a Schmitt trigger and then he pulls out the data sheet for a Schmitt trigger inverter. I feel so smart!
Same!! Initially I wasn't confident but I was pleasantly surprised. Unfortunately, my job isn't in this domain so my brain's a little rusty.
For some reason I thought it was called a Schottky trigger. I still felt smart, though.
My monke brain was like “low pass filter” until I saw bens solution which is so much more elegant lmao been doing too much signals and systems lately
Mounts it in a pc case.
Lemme just plug in my keyboard… proceeds to pull out 4 wires and place them in specific holes in the breadboard mother board.
Done!
He had already made that breakout cable in the previous video. Anyway, just like how his wires are always already the perfect length, it would just waste a lot of time if he showed stripping the wires and crimping the pins to the ends of each wire. Ben is really good at spending time on the things that are useful for learning, and not wasting it on things you can easily figure out for yourself.
I'm a student. This channel is a gold mine for me. Thank you for your effort greetings from Turkey.
Me too im from Germany, powerful knowledge is universal
I learn more about all of this with him than in school.
Yes. This shows 2 things: 1, how great the internet is as a learning resource and 2, how inefficient and honestly badly designed school is. I get easily aggravated by the lack of new info I’m learning at school and how it COULD be better.
@@saltysoyman6908 it also helps that you can pause and replay parts of the lesson you didn't quite grasp in the beginning. It's amazingly helpful to have the ability to re-watch lessons with the benefit of context that you picked up in later lessons.
I feel this. I pointed my fellow classmates to Ben's SR latch videos cause our prof is just awful at teaching
The problem with these lessons is, is that it takes way more time from the teacher to prepare these lessons. Most teachers would not like to take this time. Dont get me wrong, this is more of a complaint of how bad schools do it, trust me I know (just finished all my theory a month ago, only internships to do)
schools should be illegal
As barebones as this is, it really just boggles my mind that there is still a lot of heavy lifting being done by the Hitachi microcontroller inside of the character LCD display.
I would love to see a future video where he talks about what's going on inside of that microcontroller to display ASCII characters on the liquid crystal display and process and send out data like busy flags and whatnot.
Like, we don't need to know all that stuff now. Because that's not really in the scope of this lesson, but I would love to see it explored later.
2022: building an lcd screen microcontroller on bradboards
2030: building a 6502 on 1 thousand breadboards
2077: building a universe on breadboards
Also the signals from the keyboard are really convenient. I would like it if he explained how the keyboard prepares the signals
In the Apple 1, they used a terminal chip for a similar purpose.
@@U20E0 re building a 6502: see the MOnSter 6502 project. For a computer that doesn't use a microcontroller, there's one called Giga or something like that.
@@JohnDlugosz the gigatron
As a software engineer it is very fascinating to see how the hardware works under the hood.
It basically works the same, but different! I love it. Just like switching electrical systems.
It runs on some form of electricity
@@samibinol surprised_pikachu.jpg
i think the best thing is that everything runs at the same time
if you are interrested in "programming" hardware check out FPGAs
Nice profile picture.
I appreciate you taking the time to go over turning the per-bit clock into a per-key-code clock a step at a time. Thanks for leaving in the mistakes and glitches, and then showing how you solve them. Those are the practical skills that theory-based instruction rarely covers well.
I think the "mistakes" are there on purpose to also show how to debug and fix things
either way I aggree I appritiate it too
@@syralessthanthree I think hooking power and ground up backwards was a genuine mistake, the other bits were definitely intentional mistakes for the purpose of education, though.
This is turning in to a computer version of Bad Obsession Motorsport, lol.
Just need a sound card for the funk!
Coming up next: covox, FM and noise noise synthesis
Fortunately for us Ben is moving along at a much faster clip!
Just imagine building a computer using an angle grinder
@@BrightBlueJim And many, many, brackets...
Getting flashbacks to my analog electronics class at university when I heard "Schmitt Trigger". Thanks for the psychological trauma Ben :D
I have learned and forgotten what a schmitt trigger is probably about five times now. I'm hoping this one sticks!
Ben really should have put up a Schmitt Trigger Warning at the top of the video.
@@YagoTheFrood I don’t know whether to clap or groan
What could make a Saturday morning better than a new video from Ben?
Two Ben videos? 🤔😀
Ben & Curious Marc videos!!
I'm always sad when I get to the end of a Ben Eater video because I know it's going to be weeks or months until the next one and I enjoy them so much. Thanks Ben!
Good to know, I still remember this digital electronics stuff... As he is building the interrupt trigger, with the resistors, cap, and diode; I said to myself, "Wait, you can't do that with *just* an inverter, you need a _Schmitt trigger_ , to catch the indeterminate _hysteretic_ logic levels!"
My linear and digital teachers would be proud! I guess I was listening during those lectures 28 years ago!
Ben Eater does an excellent job, teaching this stuff!
this man has become my favorite UA-camr. when he needed to figure out how to distinguish between different sets of 11 bits, my first thought was exactly what he did here. You really are a better teacher than probably most college professors.
For the first time I anticipated an issue! I was guessing that the interrupt would count more than 3 with the 74HC04. I had no clue how to fix it though, and never heard of a schimitt trigger. So I've been learning so much from this video series that I knew there could be an issue and knew what needed to be fixed, but I'm glad that your still showing new techniques to solve problems. Thanks for all the amazing content!
Oh yeah just swap out a 7404 with a 7414 and your set!
Can't wait to build my breadboard projects. This channel always excites me. Thanks for discussing problems that we might run into.
Everyone: They is no way to create a truly random value with a computer.
Ben Eater: Hold my inverter
Technically, since it's actually some gate logic inside the chip that simplifies into "invert" they all have some amount of resistance, capacitance, inductance, etc, and so it fills up a little, tries to turn on, can't sustain it for long, then turns off.
Hence why we see it jitter 100 times before it's done, because it doesn't have enough energy to keep whatever gate open inside the logic.
Edit: I forgot to get to the whole point of this comment, since the characteristics of the gate are known, it should be possible to do the calculus to determine the oscillation rate and measure the values. Yes, it's almost random though.
What about using quantum mechanics? You can technically plug anything into a computer, including a quantum random number generator.
plus quantum computers are computers.
@@U20E0 we don't know wether it's actually random. It's just that we can't measure quantum mechanics well enough to pinpoint an electrons position down.
I think there is no real randomness, but because i don't know that for sure and neither does anyone else, it's a waste of time to debate it.
It's easy to generate random numbers electronically, it just cannot be done algorithmically.
@@MrCool-lo3ls We can measure an electron's position pretty much as precisely as we want. It is simultaneous measurement of position and momentum that is impossible. If you have, say, a resistive thermometer that is precise to say, 3 significant figures, and start reading its resistance to 10, you will be able to get truly random numbers in the last few digits. Real randomness does exist, and will exist forever, because our spatial resolution can not, even in theory, approach Planck levels of precision. Look into the Lorentz Attractor.
For those of you wondering: This is almost exactly the way modern x86-PCs handle PS/2 and internal (on a laptop) keyboards: After every byte there is an interrupt sent to the cpu (usually hardware-interrupt 2) from the keyboard controller (i8042). The cpu then reads the given byte (using the in-instruction on port 0x60) from the PS/2 device. The only difference is that the keyboard controller already checks the parity, buffers up to 16 bytes and adds some additional logic (e.g. translation from "modern" set-2/3 PS/2 codes to AT codes for very, very old software).
"And if we press a key on the keyboard, ... nothing happens." Ouch. That nasty color scheme! 🤣
Luckily, the keyboard has protection circuitry that keeps it from burning out chips when they're powered up backwards. I once burned up all twenty or so chips on a breadboard this way.
In the previous video, I remember thinking, "oh great, black for positive five volts, ground is orange. What could possibly go wrong?"
I think this might be my new favorite video of yours. The way you blended analog, digital, and software together for a keyboard is a work of art.
Ben in 15 years: Running windows 10 on a breadboard PC
On an old Intel cpu
@@MrCool-lo3ls running dos on a z80 or 8088
When trying to run a computer fast enough to handle NT, wire lengths have to be very precisely measured because the speed of light is a significant factor. Just the reflections from the contacts would make such a thing impossible.
He would probably run Linux because Microsoft wouldn't be interested in compiling Windows for a rare DIY architecture and Windows is closed source so he can't compile it himself.
ONE VIDEO PER MONTH ISN'T ENOUGH .... PLEASE GIVE US MOREEEEEEEEEEEEEE!!! 😭😭😭😭😭
Just discovered your channel today, it is awesome!
20:00 I "studied" this kind of things at school but already forget about it, but you explained that so well I finnaly understand what that symbol stands for!
That's a pretty sweet update. Look forward to working on this project in the summer.
vi and a vintage hp calculator - oldies, but goldies.
The work you put into this video series.. incredible. Stay awesome!
I'm wondering how you managed to connect the 8 data bits to PORTA, when previously 3 of those bits were occupied sending control signals to the LCD display (register select, read/write, and chip enable). How are the LCD subroutines still working now that it appears you disconnected those three lines to make room for the input data?
This was never addressed in a video; the previous video featuring the 6502 had these three lines connected, and they are mysteriously missing at the start of this video.
I saw this problem coming (only 5 bits of ports remaining on that chip) and was looking forward to hearing about how you worked around it.
Edit: Aha! Figured it out - the LCD module has two data modes (8 bit and 4 bit, explained in part 4 of your 6502 playlist), and from glimpses of the code it looks like you switched the hardware and software to 4 bit mode off camera to make some more room - allowing you to move these 3 flags to PORTB.
Thanks for this. I was puzzled about why the E, R/W, and RS pins on the LCD were no longer connected too. I'm in the process of designing a PCB of this circuit and this kind of change would be a headache to troubleshoot.
This channel is perfect. I love everything on here because it's so well explained and put together in a way that keeps you interested and teaches things you never thought you could learn.
These videos are absolutely fantastic -- thank you very much :) Very intuitive when you see the signal on the scope and tweak it to do what you need.
The effort you put into explaining is greatly appreciated.
Well, I just love watching you wire up the breadboards! thanks
You explain superbly!
Nice videos! I love to watch them!
i have learned so much on this channel and im super thankful
Thank you Ben for all your videos
Love your Hewlett-Packard calculator at 27:10! What a cool calculator. We had one growing up and I hadn’t seen one since then
Of course you have an HP 16C. Way to flex on us.
"oh - this old thing??"
They all love the RC circuit, but they don't know its timing involves differential equations
And temperature variability!
At least it's still a first order! Lol
Ben Eater, demystifying electronics since Oct 15, 2011 Thank you SIR!
As soon as I have a job again, I'm going to squirrel away some for you.
This is what I wished college training was like!
P.s. been slowly doing your computer build but in minecraft, been fun figuring this all out!.
I really appreciate the way you explain things. I'm also very envious of your 'scope.
Thanks for your videos, they are incredibly interesting and inspiring!
Great video Ben! I am just now debugging a Via VT82c42 problem and this was great timing. Keep up the good work.
One important thing you showed here was also the importance of hardware acceleration - sure you could have just fed the bits into the interrupt handler, but instead you built a hardware keyboard accelerator add-on and installed it, then wrote a driver for it. Much simpler code, works more elegantly, and way faster as far as CPU power is concerned. Very nice video, thank you!
There's this one thing I really like about your videos, and it's the honesty behind them... most people on youtube try hard to look like they don't make mistakes... you on the other hand, show your mistakes and solve them, teaching the importance of problem solving while doing a project of this kind... without that kind of mindset, this kind of work would fail for sure, but with what you teach, you make sure one can be ready to take on a project like this. Congrats! never regretted subscribing to your channel, best content out there hands out!
Just to clarify, I'm referring to the keyboard 5v-GND mishap... =P
I think that some of the blind alleys he runs down, such as the Schmidt trigger problem are recreations of what he ran into while developing the project.
Thanks for posting Ben love the videos
Love these videos. Awesome work!
Another brilliant video. Thanks !!!
OMG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Where were you for my high school electronics class!!!!!
You are the benchmark in human teaching. I have never been more curious about electronics till I found you. I love your low profile attitude. If you were my teacher I would have become something.
Most you -tubers like to show their faces and fail to communicate clearly...I feel like Im' in wonderland finally. All my questions are being answered. My questions I was afraid to ask are answered. You have the books in your bookshelf that you actually understand. Thank you feeding us this valuable knowledge.
I've been waiting for this.
i love your videos! I've learnt so much from you. Thanks
Really love this channel
Thank you for explaining everything. I learned an enormous amount of chip tech from your videos.
No sadder time than the end of a new Ben Eater video
Tru
I'm glad that powering up that nice keyboard in reverse didn't kill it.
No matter how complex the systems become. The excitement of knowing the basics will never get away.
Thanks for all your videos!
your projects are so cool!
Excellent video as always Mr Eater. You are a gift to youtube
After watching this I will never take my keyboards for granted ever again!
Thank you for creating this informative video. 😊🙏🙏🍰
In the tricky parts I find myself leaning towards the screen, as if that will help me understand it better. And this is all way outside anything I'll ever need to know! As always, well done!
I look forward to each of your videos
Awesome! Great video! very useful
Excelent job on the keyboard. I love it.
Excellent timing with the need to use Schmitt triggers, since I am teaching this right now :)
1:39 GND/+5V switched around!
2:38 thank you :-)
Thank you Ben. This is how real school should work ! In my 2 decade long experience in the field of electronics i've noticed that it is not the core problem that teaches us , but all those small things behind the curtains along the way. The path to solution is covered with small, invisible problems that you cannot stumble upon until you really dive into a practical realisation ! Example: You try to make lightbulb light up. Simple? Right? You connect battery to switch, then to lightbulb and back to other terminal of battery. And then - how do i create stable mechanical contact? What jacks should i use? What current flows in circuit? Wire gauge? Should i solder where is big amount of heat? .... So many questions arise just by doing the stuff. Nothing is simple, and everything we DO teaches us. My point - theory we mostly learn / teach in school should be tightly "coupled" with parallel practical problem solving ! First basic theory, then application of it , then solving small problems along the way , and then explaining and theory for every one of them... That is real "full" knowledge my friend.
Best regards.
Well done, with a clear explanation.
You're one of the amazing guy who teach how actually working inside the computer❤
These are excellent real world tutorials, thanks Ben
The HP 16C is my day to day calculator as well! It's about 35 years old and still works great.
Love Ben’s way of explaining Schmitt Trigger 👍
It's safe to say, you are a real asset to humanity!
Thank you.
Thank you ☺️
Now we just need a programmable interrupt controller, so we can turn off and on interrupts and add other things that would generate an interrupt to the mix :D
Thank u man u are an engineering genius...pls keep the videos on youtube...don't remove them🙏🙏👍
Thank you for this, Ben.
I'm in the process of figuring out how to connect the keyboard of an Amstrad PPC-512 to a more modern PC in the case.
While the built-in keyboard isn't PS/2, this (and the prior video) sort of approach should help me out a great deal.
Nicely done!!
Next video: Making a Quantum computer on breadboards
Well yes but no
@@ducksonplays4190 yesn't
In the early videos on 6502 we've used three pins of PORTA of the 6522 to control the LCD (E, RWB, RS). This time they were not connected and there was no mention of that. Did I miss a video where that was rerouted in some way?
I'm saying that because in this video we're using all 8 pins of PORTA for the inputs from the keyboard and I was interested in how that is going to conflict with how we were already using them.
I have exactly the same question. Searching for some mention of that now.
I found once a pdf about reset circuits. There was a big word of caution regarding use of RC circuits. I believe pdf was from one of component manufacturers. Very important for serious electronics enthusiast. I really recommend.
I've just finished watching previous video and here goes sequel :)
thank you for all the job you do 🖒🖒😊😊
Super interesting! Thanks.
Omg I finally understand what a peak rectifier is. Thanks Ben!
I am both delighted and unsurprised that you are a Vim user.
Excellent video!
wow ben your the best .......i learn alot from you God bless you
He is doing cool projects and he teaches things about electronics. I like it! 👍
Very cool video!
Superp explanation in for the 04 and 14. Thanks a lot
Does anyone else yet to picture Ben's workspace? I'm guessing it's very well organized with data sheets and notes
and have 19,487,683 breadboards laying around.
@@bsvenss2 he just has a button he pushes and a new breadboard just appears
That's an interesting approach! I thought about using XORs to calculate parity, then use ANDs to check if the start/stop/parity/my parity combo is correct. That output would be the interrupt trigger. It consumes more hardware, but it is "safer" and easier for the software, since it filters noise and corrupted inputs.
Another great video. I was wondering after the last video how you might ensure the CPU only reads the shift register at the completion of a scan code and you explain a simple but effective method. Also, great explanation of Schmitt input device.
thought lets look for part 2, lets check how long ago it came out. about as long ago as the video is long... guess ill have to wait some more.
I really enjoy the video's, keep up the good work!
This series is right on time for me. I'm about to build an SYM-1 from a new old stock (43 years old!) unused motherboard in the next few months (It's a variant, but it's from Synertek; I believe it's the SM-100 OEM line motherboard). It's 6502 based. I want to build the original KTM2 and/or KTM3 modules for it at some point, but they are much more complicated and pricey to make. I'm looking at possibly modding the KTM design with my own more modern KB interface so I don't have to build my own keyboard, and/or making a simpler KB interface direct to the machine.
That took an interesting turn. Since the stop bit is 1, that output (#11) of the shift register is a good interrupt trigger. Lower parts count, too.