Absolutely splendid! Thanks for sharing these fantastic recipes. - Talk about squeezing everything possible (and a little "impossible" as well) from these small chips ... Very nice indeed!
Fantastic! I think you can do it with only one chip to achieve RCA output, there are those libraries called TVout and PS2Keyboard you can load in one single chip so you can type and recieve with only one chip onstead of three! Please do a video about it :)
@@slu467 I tried it, and for the most part, it works. Alice does its job. As for Bob, the text is barely legible, it displays the characters unstably/flashy, and dimly. (Don't know how to better describe it) The text position and alignment on the screen are stable. I double-checked the wiring, and all seems ok. I even changed the WIDTH to 40 (both in the .ino and .s files) to see if it would change something. Alas, same result. Timing issue maybe? The monitor detects a signal of 720x480, rather than 640x480. Do you have any pointers? I really want to make this work... it's too cool of a project!
@ Since the text position is stable, this does not sound like a timing issue. If you see the characters too dim (but at their correct place) the pixel data is maybe not driven correctly? I'd double-check the output stage of the 74166 to the VGA connector pins 1, 2, 3 via 150 Ohm. Hmm, but it is also possible that your monitor "misunderstands" the sync signals and therefore switches off brightness... I've only tested the circuit on my older VGA monitor and newer TV which both worked okay... good luck! Due to timing constraints the Arduino can't match the VGA timing perfectly. Most monitors are pretty forgiving, though...
Very nice video as always. It was fun to watch. As soon as I have a bit more time, I will try to recreate this. Thanks for your time and sharing the knowledge with us. Grüße
@@slu467 I will do it. The "Datasette" videos were also very educational and I had a reason to get my old C64 + accessory box out again (in my possession for 30 years).
@@slu467 Well I'm glad we are both interested in the same thing. I don't know if the terminal would be much use to me but it's cool to see. Your minimalistic CPU is worthy of the minicomputer title. :-)
@@slu467 I think I will use wire wrapping for my CPU since it's more stable than breadboards and less easy to mess up. PCBs seem nice but how do you know your schematic is correct.
Wire-wrapping IS kind of interesting for larger projects. Very reliable electrical connections, indeed! BTW I am now at iteration 5 with my PSB computer :-D
@@slu467 Oooh... I'm curious what is your CPU's instruction set. I want to compare clock efficiency with mine and yours doing the same tasks. Your CPU design seems very chip efficient and powerful.
Another great video. I've got all the parts and PCB to make your Minimal UART CPU but haven't got time to build it at the moment. When I get it running I'll let you know and I'll be very interested in adding the terminal to it too.
Nice project. Certainly gonna build it, since I finished building the minimal v1.5 board now. Would it be possible to replace ps/2 for usb keyboard by replacing atmega328p by an atmega32u4 ?
Hey Waldo, USB has a more complicated protocol, so I'd say you definitely would have to upgrade the µCs for that... probably the whole point of this design (squeeze out oldschool stuff) becomes obsolete then ;-)
Is the limitation of the lines and columns related to the clock or could this generate a 80x24 (+status line (25 total)). What is the minimum baud that this can support (9600?)?
IMHO 80 cols is not possible. 60 cols is *just* possible with 24MHz overclocking. I'd like you very much to prove me wrong :-) Min. baudrate in my design is 28800 (can be set by a jumper) but lower rates might be possible if you are playing around with the Arduino timers a bit.
@@slu467 Thanks! Yeah I've come across his website before but I don't think I have the skill to fully understand his design yet, but I'll keep learning and get to that level eventually.
This is great. Almost perfect. Would it be possible to use 3 chips instead of one for bob, one for R,G, and B respectively? Alice could use "Chip Select" pins to decide which ones should be active, but send the same data to all 3. It would require 7 Chips instead of 3, But would allow for 8 colors. Alternatively, you could use another µC to implement ANSI music control codes for some sound output.
Hi, I recently tried building this but for some reason I'm not getting any output on the monitor. I was able to change the fuse bytes and upload the bootloader to both of the microcontrollers, and verify that it worked with the blink sketch. I also uploaded the Alice and Bob sketches, and wired everything according to your github schematic. The only difference is that I used a 62 ohm resistor for the vsync and hsync signals since I didn't have a 75 ohm resistor. Any ideas on what I could be doing wrong?
Hi, this design is known to work, i. e. it has successfully been built by others. 62ohms should be fine. I am using 68 all the time. Hard to tell, what is going wrong with your build. I'd recommend using a cheap PC scope to look at all the signals (VSYNC, HSYNC etc.).
Hey Slu, I've got some socketed Arduino Unos here, do you think if I programmed them with this code in place I could take them out and used this setup it would work? Assuming I changed the fuses of course!
Future Aaron here- the boards file is now located at: C:\Users\(USER)\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6 For the 2023 version of the IDE.
Hey Aaron, as long as you can get your hands on some raw AtMega328s it should work out fine. Happy tinkering 🙂 Any ambitions for a future "Minimal 64" build? ;-)
@@slu467I've got a whole tube of them here! I followed through the instructions here and got the blinky example working fine on the 16mhz clock but I've had trouble with the 24mhz crystal. I've made an active one with a 74HC04 and some passive and am hoping that will work out better. I was thinking about making the new Minimal but thought I'd wait in case you revised it again, I've now got two of them here. I'm currently working on a ZX80/81 clone that's been quite a lot of trouble!
@@slu467 If I am using an active oscillator for the input of bob would I need to change the fuse bits on bob to expect an active signal for it to work? I've assembled the whole thing, I can load Blinky but none of the functionality works after I upload the code to the pair, no VGA, no seral data. I've checked on the scope and there are no video signals coming out of Bob, but I *am* getting the 24mhz signal out of pin 14 of bob.
@@colonelbarker It might be good to make sure that each µC receives it's program correctly (via 16MHz I guess) and *runs* it's code corretly, too, at a higher rate. I'd test that procedure with some "dummy" blinkenlights code. The fuse bits need to match the oscillator setup you intend to use. But keep in mind that all this is using the AtMega *out of spec*. I might just have been lucky with my production run. Never had any problems though... good luck!
Hello, that's great guide, but I have a problem. Burning of bootloader seems be ok but control LED doesn't glow for me. I have checked wiring even tried another Atmega 328P. I doun't know where could be problem :'(
Hm, difficult to help here from afar. I assume you do not have a digital scope at hand to really take a look at the signals... polarity of the LED is okay, too?
Hi Carlos, well, I have the strong feeling that the ATMega is pretty much at its limit here. One would have to sacrifice resolution for color. If you really want more features it may be time for a more powerful µC.
It's actually very easy to make a colour terminal with the much more powerful ESP32 module and the FabGL library. You can program it using the Arduino IDE if you add them using the Board Manager and Library Manager, respectively. There's even a sketch called ANSI Terminal in the Examples folder that works without modification. There are pre-built boards available cheaply that combine an ESP32, a VGA socket and a pair of PS/2 connectors for keyboard and mouse. You can connect "logic level RS232" signals directly to it or add a MAX3232 board for true 9-pin RS232 compatibility. Search for "ESP32 VGA" and "FabGL".
Well, for me it's impossible on the ATmega328. Be sure, I would have done the 80 x 25 if I saw a way... hopefully someone out there proves me wrong ;-)
Thanks for tuning in. This is a free DIY project. I do not plan on selling any of this. However, the design is so minimal that it is very easy and reliable to build on a breadboard. Cheers!
thats what I'm searching for..... not the "serial terminal", no it is the process to get sketches into an 328P without an UNO board.... Until now I put an 328 DIP in the UNO Board an programming it to run it in alone the free world. Now I can design my own board with an 328 TQFP soldered on it an programming it with arduino sketches. Thanks.
Only three chips! Are you aware of how much processing power a bare bone Arduino has? It is capable of doing all the work the flight control computer had to do during the MOONLANDING and singing Daisy Daisy at the same time.
Can you eventual Show how to build an VGA or HDMI Capture Card. Which capture VGA Input Into USB -- so that you could Capture it via Python Into an PNG? That would bei realy cool ^^
Hello! I have just made this on breadboards and I was just wondering because every time I try to use it, the only character that will show is @ symbols instead of the character I want to type. I was wondering if you had this issue while building? and if so what you did to solve it. thanks!
also, if it matters at all, I am using a 74HC165 instead of a 74HC166. although i used this on your minimal vga project and it seemed to work fine. I also do not have a ps2 keyboard so I am just using PuTTY as a serial terminal. I was thinking it might be my baud rate, so on my speed select I tied both my pins to ground. I was assuming this meant it was running at 28800 baud but i might be wrong as i could not find a key anywhere telling what the different baud rate selections were. And one more thing, sorry when i try to connect the B microprocessor RX / TX lines the screen goes crazy and wont show a stable picture. Thank you! i know that was a lot.
Did you have the TR0-TR7 lines installed properly? They do not show up as "lines" on the schematic but their connection is indicated by the labels. You are talking about the loop back test, right?
@@slu467 thank you so much! I did not realize there was lines right there. I hooked it up and I got it to sort of work, it puts a stable picture and shows a blinking cursor. sometimes when i turn it on it will work fine and other times it wont. also, when i connect the RX / TX lines to Bob it makes the screen go crazy. and since i do not have a ps2 keyboard i have those lines tied to ground and i am using PuTTY as a serial terminal program on my computer.
Henry, this build is so critical that I recommend you do not change *anything* at all. You cannot expect the circuit to work properly when using different ICs. I have chose the the 74HC166 for a reason. You are right about the Baudrate but I have no idea what you are doing with the RX/TX lines. They are *only* for in-situ programming of the Arduino B. Do not use them for anything else. Good luck!
Hello! As you told me, I am trying to do the terminal from grant searle’s website. I am currently running into some problems when trying to upload code. I never did this and files seem to be in .hex. I was wondering if you could help me in anyway and if you had other platforms we could communicate other than UA-cam comments. (By the way I subscribed!!)
Hi Maxim, I've never used Grant's code for composite video and can't be of any help with that, I'm afraid. Just explore it slowly step by step... cheers!
Absolutely splendid! Thanks for sharing these fantastic recipes. - Talk about squeezing everything possible (and a little "impossible" as well) from these small chips ... Very nice indeed!
Thanks Nisse, glad you like this stuff, too :-D BTW the sketch uses 2048 of 2048 bytes of SRAM :)))
@@slu467 I thought as much :-D - Couldn't have been easy to squeeze the final drops out of the chips. Impressive!
Wow THIS is cool! Danke für so viel geniale Arbeit, ich weiß das sehr zu schätzen, gerade wenn man noch nicht so erfahren ist.
Dankeschön :-) es stecken tatsächlich viele Stunden drin... viel Spaß damit!
Fantastic! I think you can do it with only one chip to achieve RCA output, there are those libraries called TVout and PS2Keyboard you can load in one single chip so you can type and recieve with only one chip onstead of three! Please do a video about it :)
Impressive! And some ANSI escape sequences to boot. I find it amazing what you can do with these micros.
Thanks, glad you like it!
I'm so impressed, I'm going to implement it on my 6502 homebrew. So far, it's the best Arduino to VGA I've seen.
That's great. Please let me know how it goes!
@@slu467 I tried it, and for the most part, it works. Alice does its job. As for Bob, the text is barely legible, it displays the characters unstably/flashy, and dimly. (Don't know how to better describe it) The text position and alignment on the screen are stable. I double-checked the wiring, and all seems ok. I even changed the WIDTH to 40 (both in the .ino and .s files) to see if it would change something. Alas, same result. Timing issue maybe? The monitor detects a signal of 720x480, rather than 640x480. Do you have any pointers? I really want to make this work... it's too cool of a project!
@ Since the text position is stable, this does not sound like a timing issue. If you see the characters too dim (but at their correct place) the pixel data is maybe not driven correctly? I'd double-check the output stage of the 74166 to the VGA connector pins 1, 2, 3 via 150 Ohm. Hmm, but it is also possible that your monitor "misunderstands" the sync signals and therefore switches off brightness... I've only tested the circuit on my older VGA monitor and newer TV which both worked okay... good luck!
Due to timing constraints the Arduino can't match the VGA timing perfectly. Most monitors are pretty forgiving, though...
Love seeing new videos from you! Please keep them coming!
Thanks a lot ... keeps me motivated :-)
Fantastic work and great video!
Glad you like it :-) Thanks!
That's almost exactly what I need for my breadboard pc
It's adding that extra bit of vintage touch... :-D
Very nice video as always. It was fun to watch. As soon as I have a bit more time, I will try to recreate this. Thanks for your time and sharing the knowledge with us. Grüße
Hi Adam, pls let me know how it goes...
@@slu467 I will do it. The "Datasette" videos were also very educational and I had a reason to get my old C64 + accessory box out again (in my possession for 30 years).
Man you never disappoint, do you?
Brilliant! you got a new subscriber 👍
Welcome aboard, Stuart :-) glad you like my stuff
This reminds me of Don Lancaster's TV Typewriter only easier to build! :)
This is really interesting, what's your secret to achieving so many great videos in a row?
Thanks Duckson Plays, glad you like my stuff. I guess I just do what feels interesting to me :-)
@@slu467 Well I'm glad we are both interested in the same thing. I don't know if the terminal would be much use to me but it's cool to see. Your minimalistic CPU is worthy of the minicomputer title. :-)
@@slu467 I think I will use wire wrapping for my CPU since it's more stable than breadboards and less easy to mess up. PCBs seem nice but how do you know your schematic is correct.
Wire-wrapping IS kind of interesting for larger projects. Very reliable electrical connections, indeed! BTW I am now at iteration 5 with my PSB computer :-D
@@slu467 Oooh... I'm curious what is your CPU's instruction set. I want to compare clock efficiency with mine and yours doing the same tasks. Your CPU design seems very chip efficient and powerful.
Another great video. I've got all the parts and PCB to make your Minimal UART CPU but haven't got time to build it at the moment. When I get it running I'll let you know and I'll be very interested in adding the terminal to it too.
Hi David, good to hear you plan on joining the 'Minimal' club :-D let me know how it goes!
Very impressive!
Glad you like it!
I always wondered how to program the barebones microcontroller. Now I know. And now I don't have to embed an entire Arduino Nano in my designs.
Nice project. Certainly gonna build it, since I finished building the minimal v1.5 board now. Would it be possible to replace ps/2 for usb keyboard by replacing atmega328p by an atmega32u4 ?
Hey Waldo, USB has a more complicated protocol, so I'd say you definitely would have to upgrade the µCs for that... probably the whole point of this design (squeeze out oldschool stuff) becomes obsolete then ;-)
really nice project. are slower bitrates possible. i have some old hardware that only run on 9600 and not 28800?
Should be a tiny mod.
Is the limitation of the lines and columns related to the clock or could this generate a 80x24 (+status line (25 total)). What is the minimum baud that this can support (9600?)?
IMHO 80 cols is not possible. 60 cols is *just* possible with 24MHz overclocking. I'd like you very much to prove me wrong :-) Min. baudrate in my design is 28800 (can be set by a jumper) but lower rates might be possible if you are playing around with the Arduino timers a bit.
This is so awesome!!! Could you possibly make a video on making it work with composite video instead of VGA?
Hi, search for the website of Grant Searle. He has done exactly that ;-)
@@slu467 Thanks! Yeah I've come across his website before but I don't think I have the skill to fully understand his design yet, but I'll keep learning and get to that level eventually.
This is awesome
This is great. Almost perfect.
Would it be possible to use 3 chips instead of one for bob, one for R,G, and B respectively?
Alice could use "Chip Select" pins to decide which ones should be active, but send the same data to all 3.
It would require 7 Chips instead of 3, But would allow for 8 colors.
Alternatively, you could use another µC to implement ANSI music control codes for some sound output.
Great ideas! Sounds like a new project, though ;-)
@@slu467 Well, since the last manufacturer of serial terminals has closed, you have all the market to yourself ;-)
First! I'm always waiting these :)
Thanks for watching, Samu :-) It has been a while...
very cool! do you think this could work at 80x25??
The short answer is: No way! ...but maybe somebody proves me wrong in the future :-D
7:41 nice to see how you look like! I don't know if this was intentional. Interesting video as always
Thanks, Barto10, I wouldn't have recognized myself in that reflection... but no, that wasn't intentional :-D
Is this 80-column wide? Much CP/M software requires that... ?
Nope, it can't do 80 in time. Would love to see someone pull it off on the Nano.
Hi, I recently tried building this but for some reason I'm not getting any output on the monitor. I was able to change the fuse bytes and upload the bootloader to both of the microcontrollers, and verify that it worked with the blink sketch. I also uploaded the Alice and Bob sketches, and wired everything according to your github schematic. The only difference is that I used a 62 ohm resistor for the vsync and hsync signals since I didn't have a 75 ohm resistor. Any ideas on what I could be doing wrong?
Hi, this design is known to work, i. e. it has successfully been built by others. 62ohms should be fine. I am using 68 all the time. Hard to tell, what is going wrong with your build. I'd recommend using a cheap PC scope to look at all the signals (VSYNC, HSYNC etc.).
8:05 was the breadboard connected only to the keyboard and monitor?
Yep, except for the 5V supply of cause :-)
@@slu467 Good , thanks for information.
Hey Slu, I've got some socketed Arduino Unos here, do you think if I programmed them with this code in place I could take them out and used this setup it would work? Assuming I changed the fuses of course!
Future Aaron here- the boards file is now located at:
C:\Users\(USER)\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6
For the 2023 version of the IDE.
Hey Aaron, as long as you can get your hands on some raw AtMega328s it should work out fine. Happy tinkering 🙂 Any ambitions for a future "Minimal 64" build? ;-)
@@slu467I've got a whole tube of them here! I followed through the instructions here and got the blinky example working fine on the 16mhz clock but I've had trouble with the 24mhz crystal. I've made an active one with a 74HC04 and some passive and am hoping that will work out better.
I was thinking about making the new Minimal but thought I'd wait in case you revised it again, I've now got two of them here. I'm currently working on a ZX80/81 clone that's been quite a lot of trouble!
@@slu467 If I am using an active oscillator for the input of bob would I need to change the fuse bits on bob to expect an active signal for it to work? I've assembled the whole thing, I can load Blinky but none of the functionality works after I upload the code to the pair, no VGA, no seral data. I've checked on the scope and there are no video signals coming out of Bob, but I *am* getting the 24mhz signal out of pin 14 of bob.
@@colonelbarker It might be good to make sure that each µC receives it's program correctly (via 16MHz I guess) and *runs* it's code corretly, too, at a higher rate. I'd test that procedure with some "dummy" blinkenlights code. The fuse bits need to match the oscillator setup you intend to use. But keep in mind that all this is using the AtMega *out of spec*. I might just have been lucky with my production run. Never had any problems though... good luck!
Hello, that's great guide, but I have a problem. Burning of bootloader seems be ok but control LED doesn't glow for me. I have checked wiring even tried another Atmega 328P. I doun't know where could be problem :'(
Hm, difficult to help here from afar. I assume you do not have a digital scope at hand to really take a look at the signals... polarity of the LED is okay, too?
Very nice.
Splendid!! One Question. It's possible to make a color terminal?
Hi Carlos,
well, I have the strong feeling that the ATMega is pretty much at its limit here. One would have to sacrifice resolution for color. If you really want more features it may be time for a more powerful µC.
It's actually very easy to make a colour terminal with the much more powerful ESP32 module and the FabGL library. You can program it using the Arduino IDE if you add them using the Board Manager and Library Manager, respectively. There's even a sketch called ANSI Terminal in the Examples folder that works without modification. There are pre-built boards available cheaply that combine an ESP32, a VGA socket and a pair of PS/2 connectors for keyboard and mouse. You can connect "logic level RS232" signals directly to it or add a MAX3232 board for true 9-pin RS232 compatibility. Search for "ESP32 VGA" and "FabGL".
How hard is it to make it 80x25 Characters?
Well, for me it's impossible on the ATmega328. Be sure, I would have done the 80 x 25 if I saw a way... hopefully someone out there proves me wrong ;-)
Hi Sir! Wow! Do you sell a ready to use unit? if yes, how much? Thank you for any information....
Thanks for tuning in. This is a free DIY project. I do not plan on selling any of this. However, the design is so minimal that it is very easy and reliable to build on a breadboard. Cheers!
very cool
Glad you like my videos!
thats what I'm searching for..... not the "serial terminal", no it is the process to get sketches into an 328P without an UNO board....
Until now I put an 328 DIP in the UNO Board an programming it to run it in alone the free world.
Now I can design my own board with an 328 TQFP soldered on it an programming it with arduino sketches. Thanks.
Only three chips!
Are you aware of how much processing power a bare bone Arduino has? It is capable of doing all the work the flight control computer had to do during the MOONLANDING and singing Daisy Daisy at the same time.
Hi vanhetgoor, I absolutely wasn't aware of that. Thanks for pointing me to a new and fascinating project :-) Cheers!
awesome
Wonder if you can hook this to a linux box.
You can hook this up to any serial device.
Did you try to connect to linux with it?
This is my next project
Glad I got you hooked :-) let me know how it goes...
Can you eventual Show how to build an VGA or HDMI Capture Card. Which capture VGA Input Into USB -- so that you could Capture it via Python Into an PNG? That would bei realy cool ^^
Hi there,
for the moment that would be a bit off-track for me ;-)
How the connections was made? I mean the atmegas does not use spi or i2c for data transfer
Hi James, just a plain parallel bus and a "new data" toggle.
Is there a way to make this work using composite video?
Hi Maxim, composite is a little easier to implement (slower timing). Search for 'Grant Searle' terminal. Cheers!
Thanks!
HI sir think you so mutch please sir can you build or make the vga monitor work as screen scrolling display a like 8x8 led matrix or dmd p10
Hello! I have just made this on breadboards and I was just wondering because every time I try to use it, the only character that will show is @ symbols instead of the character I want to type. I was wondering if you had this issue while building? and if so what you did to solve it. thanks!
also, if it matters at all, I am using a 74HC165 instead of a 74HC166. although i used this on your minimal vga project and it seemed to work fine. I also do not have a ps2 keyboard so I am just using PuTTY as a serial terminal. I was thinking it might be my baud rate, so on my speed select I tied both my pins to ground. I was assuming this meant it was running at 28800 baud but i might be wrong as i could not find a key anywhere telling what the different baud rate selections were. And one more thing, sorry when i try to connect the B microprocessor RX / TX lines the screen goes crazy and wont show a stable picture. Thank you! i know that was a lot.
Did you have the TR0-TR7 lines installed properly? They do not show up as "lines" on the schematic but their connection is indicated by the labels. You are talking about the loop back test, right?
@@slu467 thank you so much! I did not realize there was lines right there. I hooked it up and I got it to sort of work, it puts a stable picture and shows a blinking cursor. sometimes when i turn it on it will work fine and other times it wont. also, when i connect the RX / TX lines to Bob it makes the screen go crazy. and since i do not have a ps2 keyboard i have those lines tied to ground and i am using PuTTY as a serial terminal program on my computer.
I also have both my baud rate select lines tied to ground and i think that means it is at 28800 baud? But that could be a problem
Henry, this build is so critical that I recommend you do not change *anything* at all. You cannot expect the circuit to work properly when using different ICs. I have chose the the 74HC166 for a reason. You are right about the Baudrate but I have no idea what you are doing with the RX/TX lines. They are *only* for in-situ programming of the Arduino B. Do not use them for anything else. Good luck!
Very cool! Way too fast for most of what I'd use it for, but I'll have to look at the code (and Mr. Baffa's adaptation) just the same. 🙂
The fuses was changed... But why?
for the shift register's clock... and to save a crystal along the way...
@@slu467 thanks I am a noob
Why not 80x25?
Hi Stephen, the already heavily overclocked ATmega328 can't pump it out fast enough within the VGA timing.
@@slu467 Ok, perhaps an STM32 or RP2040 (say Raspberry Pi Pico) will be capable to do 80x25 VT100 emulation, right?
@@stephenwong9723 I am thinking Pi Pico, too. Actually, it is pure madness to try and implement VGA on an ATmega328 ;-)
@@slu467 True, Video signaling is too too much for an ATmega328.
Poor overworked Bob.
Jep, Alice has got the easier job...
I miss real computers.
Hello! As you told me, I am trying to do the terminal from grant searle’s website. I am currently running into some problems when trying to upload code. I never did this and files seem to be in .hex. I was wondering if you could help me in anyway and if you had other platforms we could communicate other than UA-cam comments. (By the way I subscribed!!)
Hi Maxim, I've never used Grant's code for composite video and can't be of any help with that, I'm afraid. Just explore it slowly step by step... cheers!
Ok thanks anyways but I wanted you to know I really like your videos. If this ends up not working I’ll make your design as I am sure it works!