Here we go. It’s one thing to make a VIC 20 with bespoke components but watching him also recreate the VIC IC with them is worth getting the popcorn. Subscribed. ❤
Wow, this is bringing back some old memories! A got a big giggle when you described your digital scope as old, given that my own CRO is an ancient analog Tek.
Nice work Matt 😎 This is exactly how I used to prototype years ago but now its so cheap, quick and easy to get PCBs made, for me it actually saves time and makes everything tidier. I think I will duplicate your project on PCB when finished for my own use and make freely available if thats ok 😁
Well that's going to be interesting, looking forward to seeing this and revisiting my childhood with a VIC-20 build. Thank you for the excellent content you upload.
This is going to be a great trip down memory lane. Even seeing your old oscilloscope brought a smile to my face. I have one - currently in bits because its power supply blew.
The video actually requires 3 look-ups per cpu clock. Character, colour and bitmask. The actual VIC chip does the character and colour look up simultanously.
@@DrMattReganan idea for the future. The 6564/5 vic chip does 40 columns by caching the character code, like the Vic 2 chip does. It would take some kernal changes and games won't like it. But you could probably make it switchable back to 22 columns. Commodore were going to sell it as an upgrade for the vic20, but the c64 put paid to it.
@@DrMattReganIs this why there was separate RAM for the colour attributes? The VIC could access both RAM banks at the same time if there were separate address and data busses for each.
I found this note from Tynemouth Software: “The 2114 is 4 bits by 1K, so the colour RAM is only 4 bits wide. Here is the colour RAM, UE1, on the schematic. It shares the address lines with the other two 2114 chips which form the first 1K of RAM. The colour RAM databus is connected separately to the VIC chip, as data bits 8-11. To allow the 6502 to write to the colour RAM, this is multiplexed with bits 0-3 of the main databus using a 4066.” So shared addresses with first 1K of RAM - but it appears only 512 bytes is used and it’s memory mapped to $9600-$97ff or $9400-$95ff with a RAM expansion - and a 4-bit address bus presumably referring to a colour palette. This appears to be the foreground colour, with one global background colour. Screen resolution is 176 x 184, which is 22 columns by 23 rows, a total of 506 8 by 8 characters. With one colour attribute for each, this easily fits within the first 512 bytes.
Yep, the character value and the character colour have the same address bits A0-A8 (the screen space location of the character to be displayed), so the VIC can output one address and read both.
Omg, I have never thought about wiring kynar wire like you did here. I.e. solder a blank piece of wire, then cut the kynar mantle to length and push it down the wire to where it's supposed to go. I pride myself for my ability for thinking laterally. But this teaches me again that a capability of lateral thinking is only any good if you actually think of applying it to a problem. ;) I mean: my solution is to use enameled wire for most of the buses (parallel wires with many connections), and use kynar wire for the rest. That's a great working solution, and wiring with enameled wire is still faster than your way. But kynar just looks better and is longer lasting (no chance of scratching the enamel and making a short). But the best thing: kynar has really colorful colors which you can use for the different subsystems/buses, and which really, really help in debugging later on. And also helps a lot when you want to add expansions to the circuit. Why didn't I think of it? It's so obvious! :D
Give it a go. The trick is that you need to stretch the wire a little, or else the kynar doesn't slide. I haven't tried enameled wire, might be good for some busses.
This is how we were required to do board layouts in my 1991 electronics classes. We were graded on the appearance as much as function because "one day you'll need to troubleshoot it or want to upgrade it."
Inspiring video Matt. Your soldering on the perfboard is a piece of art. One day I hope to build a 6502 system too, not on perfboard but in aa pcb created with Kicad.
Glad to hear you will go over your soldering method later. When I do P to P, I use the iron to melt the insulation at the position I want to solder, and I find it messy. It might be I'm using too large of an iron, so finding out what iron you use would be great too.
So the trick is to pre-stretch the wire by ~2%. Not enough to snap it, but enough to be able to move the insulation, then i just use a regular wire wrapping tool to cut the insulation. Occasionally to do have to melt the insulation, but that's only when i've cut it to the wrong length.
Address LEDs 0-7 lower than other And data LEDs next to 8-15 address LEDs. (for some reason I prefer consistency over design 😂) 🎉 I can't thank you enough for these videos!!!. 🎉 I do wanna see LCData & LCDaddress conected instead LEDs 😅😊 Time seem to keep running away from me to sit down and look through your channel, and money flying away on other stuff too. 😂 (need this need that and the other needs over hobby). Hence only admiring your success in/on this. THANK YOU.!
I made a display controller for a 128x32 plasma module entirely out of 74xx chips all on a breadboard. Lots and lots of counters. Since I was clocking the display I made it so that whenev the CPU (high speed 8051) needed to access video ram it'd pause the display controller's clock yeilding access to the CPU. Each pixel was 2 bits so four intensities which was implemented by scanning each row multiple times. Took me about a month to get the glitches out, was my first project for these people and really wanted to impress em. To do VIC20 gfx imagine it's gonna a lot more than the 16 or so chips i used :)
@@DrMattRegan OMG, I did the same thing feeding my 3 bit 'sub-row' count, 8-bits from RAM, and the first 2-bits of pixel counts to the addr lines of the EPROM and D0 spit out the pixel data. My first ever job was repairing old arcade games and I got a lot of my inspiration from those. Good luck (i thought u were gonna support all of em right? :P)
@@ForbiddenMagicunless you count switch between 8 pixel high characters and 16 pixel high characters as a mode, then the Vic 20 only has 1. Things like the movable memory map, when you add extra ram, or moving the borders or displaying characters from ROM or RAM aren't really modes.
So I guess that this plasma panel has 128 + 32 pins to connect to? 8 chips you say? They would need to have 32 pins each. Ah 6502 has 40? 6510 has 64 pins. Is TTL similar?
Ok, now im subscribed. lol Ive watched quite a few of your videos when they have come up and enjoyed them. If your going to show how to make a VGA card for this, Im in!
This is amazing content... cant wait for the next part. have liked + subed. edit. cant figure out if the multiplexors are for bank switching eprom content, the first pre-emptive multitasking VIC20, or the first quad core VIC20 :)
I started making a ZX81 clone on vero/perf board about 3 years ago, but when my health took a nose dive I had to stop. I'd even made a custom ROM that was still (mostly) compatible with the ZX81. It would have been a fun machine to play on. (esp with all the expansions I had planned for it)
Just as I'm almost finished making my kicad schematic for the SAP6502, the next thing to distract me appears (oh ... look, a squirrel!). My confidence in building the TTL 6502 was a bit shaken in the last 2 videos (status and decimal mode): there are enough chips that there's about a 95% chance I'll get something wrong enough that I won't be able to troubleshoot. (Planning to wirewrap so defects would be easier to find. Plus, wirewrap prototyping boards have reasonable ground & power routing). I better get it done quickly so I can move on to the VIC20.
I'm actually planning to get rid of the status card and decimal card in the TTL Apple2e series, probably in 1-2 videos time in that series. It will morph a bit closer to the Turing6502 and status and decimal will be done in the sequencer.
11:40 let's see, the CPU and VIC alternates on phi clock phases, and the VIC alternates on parallel color + character index fetch and 8-bit character raster fetch, so that makes a neat 4-phase bus arbitration state machine at 2MHz, VIC C+CI / CPU / VIC CR / CPU, but that only uses 3 ports to the memory, so there's one port left. But given VGA video timing, the VIC needs to run twice as fast anyway, so that can use 3 ports for VIC color / char index / char raster instead, and the CPU only really cares about the back half-ish of PHI2, so you might run a 4-phase arbitration at 4MHz instead, VIC C / VIC CI / VIC CR / CPU. I did something like that to solve A/D-demuxing and D-settling issues for CPU writes in an unfinished 65c816 breadboard project a few years ago, but I was worried about CPU read timing and still kept the CPU on bus for the full PHI2. Never got to designing a video generator, so I had no immediate use for the potential extra cycles anyway. I guess timing constraints for CPU reads will get pretty tight, so perhaps a more funky 5-phase arbitration at 5 MHz instead, with the 3 VIC slots and a 2-wide CPU slot.
The CPU and VIA use the same phase of phi2. The CPU and the VIC chip use different cycles, are you talking about the VIC in your post? The normal VIC-20 VIC chip can do a character lookup and a colour look-up at the same time because they are in different physical devices. Then it does the bitmask lookup (which requires the character number) from the ROM. The VIC-20 has a ~4MHz dot clock and a 1MHz CPU clock, so it can do two memory access per character (8-pixels) as the character rate is 0.5MHz. In the VGA systems, we double HSYNC, so the character rate is 1MHz. That means we need to all the memory look-ups for a character in one phi2=0 cycle. To make things worse, the character number and the colour are in the same physical memory. So, when phi2 is high, the CPU has access. When phi2 is low, we do a character read, colour read and a bit-mask read. This requires 3 different addresses + the CPU address, hence the 4:1 multiplexer. I actually have an empty dot-clock slot when phi2=0, which i could use for the bit-mask read because is may come from slower EPROMs.
@@DrMattRegan yes, I was reasoning about the VIC, not the VIAs. Assuming 150ns ROM for the VIC state machine would limit to ~6 MHz, which is not enough to have separate VIC states for each memory fetch. But the color / char index fetch can still share state slot like the original, and multiplex color / char index fetch on the 8Mhz VGA dot clock phase instead of introducing extra states. Also means there’s no need to steal parts of PHI2 from the CPU. Neat.
It annoys me in the movie Tron the character Sark decrees 'Bring in the Logic Probe!' then proceeds to force the state of the IO port with a Logic Pulser.
Why 4:1 multiplexers? Perhaps something to do with allowing video timing for VGA instead of NTSC ? Or perhaps you'll be adding another processor or doing dma for something else ?
Close, i have to generate 8 pixels per 1 CPU clock. For this i need a character look-up, a colour look-up and a bitmap look-up. So there are 3 video memory lookups per CPU memory access.
Hi DrMatt, it appears that your design employs the faster cycle times and larger capacities of later era SRAMs and ROMS than the devices available at the time. e.g. 70ns or faster vs 450ns of the 2114 & 2716, 32K vs 1K. These capability improvements allow you to greatly reduce part count and wiring. e.g. The memory can be used for 4 different functions within a single CPU/video memory access cycle.
Correct, my actual VIC 20 has 2114 - 300ns parts, and i could get away with those if wanted a PAL or NTSC output. VGA requires faster parts. Personally wiring up a bunch of chips that could easily be replaced by a higher density part doesn't have much appeal. From a teaching/understanding point of view, i don't think it makes a whole lot of difference. The principle of operation for a 628128 is basically the same as a 2114. Similarly, a 27c040 is just a much bigger 2764.
@@DrMattReganI would like to see how much speed we could squeeze out of C64 DRAM using modern parts. With nice scope traces. Most transistors of the C64 were in those chips. Utilize them to the max. I want to know how much Commodore left on the floor.
I've tried your soldering technique and I just can't seem to get it. I think one reason is that I have junky wire. I bought some off eBay that claimed to be Kynar (or however it's spelled). Do you have a part number of the exact wire you use? I would like to get some wire that is of great quality. 🙂Thanks!
I usually use wire from Jaycar www.jaycar.com.au/black-wire-wrap-wire-on-spool/p/WW4345 It's kynar shielding. The trick is to stretch the wire a little, i'll show it in the next video
This project could be what the 8-BIT GUY was dreaming of about 5 years ago. No FPGA's and easy to understand and code. Unfortunately its last version is far from that.
Is that 30ga Kynar insulated wire wrap wire? NOT cheap from what I've found, especially if one wants a color assortment. PVC insulated is cheaper, but I wonder how much it melts/shrinks back. I haven't tried it, but have you ever used similar gauge magnet wire with an insulation type removed by soldering? Anyone else is welcome to comment on these questions.
Yep, 30 gauge wire. I have some cheaper wire i got from China, where as soon as you touch the insulation it melts. I do occasionally use the technique you mention, mainly when i cut the wire to the wrong length. The reason i personally prefer the kynar is that if you have to solder a wire that crosses another wire nearby, the heat from the joint can cause the PVC shielding nearby to melt and cause a short circuit. I've had that happen a few-ish times, but it's really hard to debug. That's the main reason i stick with kynar. Kynar's resistant to the stray soldering iron as well. If i have to use very long wires, i will use the cheaper wiring with the other PVC insulation.
What type of wire are you using for the point to point, where you can have the solid strand separate from the kynar sheath? I can't find anything like that when I search for it.
I tend to use www.jaycar.com.au/black-wire-wrap-wire-on-spool/p/WW4345 The trick is to stretch the wire by about 2%, that lets the kynar move over the wire. Doesn't work with all types of wire though.
Hi Matt. How possible is it to make this design compatible with the ttl video Pets' machine code software? I had thought that it was a shame they didn't just do a colour 80 coloumn version of the Pet TTL video machines instead of the Vic20 and 64 and 128. Dropping all buses for the serial bus and cartridge bus and joystick (replaced by usb these days).
I haven't looked at the Pet design for a while. Without colour, the dot clock is about twice the rate, so you can double the horizontal resolution straight away. Not sure what they did in the PET to get to 80 columns though.
@@DrMattReganYes, it may need a dual configuration. The 80 column was often the Motorola chip they used in cga and incompatible with the TTL machine code where most games were done. But doubling the ttl clock to get 80 columns is one solution, programmable characters and 4 unique colours per 2 bit colour character mode (160*200 vicpet-20 - 320*200 vicpet-64), would make a decent video output.
@@DrMattRegan I had a similar thought. Since you're going thru a monochrome stage might you give PET v2 or v4 ROMs a try before moving onto the colour phase. No need for 80 columns, but discussion of keyboard layout implementation would be cool.
@@MattKasdorf I think in terms of what people missed out on, and what they could have done. The mixup in these companies, of competing inadequate designs ultimately tanked things. Ultimately Acorn won, except for a few things like the electron compromises (which hit games compatibility and performance, which c16 and 128 had similar performance issues in Commodore. Atari two or three times hit outside solutions that could have helped, only the ex Sinclair people did. Amstrad just slid through until it was a bit late to upgrade with a spec they should have in 1985). I had come up with a simplistic cpu stalling graphics format that allows a decent level of basic ability compared to pcengine or mega drive (not that it's going to be as sophisticated graphics handling, but look at sonic the hedge hog on the Commodore 64, on a bit of limited ability). It's a simple TTL level upgrade. 80 columns allows 2 bits at 320, 4 bits at 160. Sacrificing CPU enabled a slower system better graphics. On a 1970's design 80 Columns would be pretty good, even if a lot of the time the CPU is paused. You wouldn't need much. The mistake was blocking video instead of CPU on those days, leading to unacceptable glitches. In my scheme you only stall the CPU sometimes when doing more colorful objects. And a little buffer cache for backgrounds. Pretty much gives ability to look like an 1990 Amstrad 8 bit in a 1970's level, or cheap 1980's machine. Something so incredibly simple. We didn't even really need the c64 sprite system, and close to single chip MCU instead of the vic2 (you can replace most of the non video/audio/cartridge expansion IO with serial busses off a MCU and use peripherals made for it under license, and convertors to others. We lived in dark times, just blinded by the flashy lights.
@@waynemorellini2110 I wasn't thinking too deeply, just how he might put a bit of a PET spin on the next presentation seeing as it was the precursor to the VIC20. I love the idea of a 40/80 column colour PET but isn't Fachat already working on that.
I think C64 was the big brother. It uses the updated VIC II chip, which allows the higher capacity DRAM. It also allows smooth scrolling which is cool, but probably the biggest change is the introduction of sprites. But the basic process for putting text on the display is somewhat similar (just faster) to the VIC-20
4:1 muxes because you are going to run 4x CPU clock on the bus? So you get 4 memory access slots, probably 2 for "VIC", 1 for CPU and the bonus one is a mystery for now 😉
@@DrMattRegan Im sure there would be interested the way the Retro Scene is going at the mo. Id Like todo the Zx Spectrum build if that was a Kit? Bringing my Vic20's Back to life would be really cool! I have a Vic20 Emulator written in BlitzMax but it's not seeing Memory for some reason? I need the real thing to test.
@@DrMattReganThis is one of those bot comments that probes your banned word list to find your real name. Not that you don't have you real name already available...
Thanks, Yes, i was originally under Turing6502, but i want to talk about some projects that are published, so it wouldn't be hard to figure out my name. That and i didn't want to stick with just the 6502.
I can’t tell you how excited I am for this series. Thank you so much for the high-quality content you produce.
@@FlyGamingChannel glad to hear it. Thanks for the feedback. I’ll try and get these out a little quicker than normal.
Its been 6 hours! How long must we wait for part 2!
Ha ha, am working on it.
Here we go. It’s one thing to make a VIC 20 with bespoke components but watching him also recreate the VIC IC with them is worth getting the popcorn. Subscribed. ❤
ditto
Thanks, enjoy!
As someone who is both a VIC-20 enthusiast and a homebrewer doing my own TTL video circuitry, I watch with great interest.
Excellent, just uploading part 2 now.
Really appreciate these, takes all the magic of 80's computers and frankly increases it witnessing every miracle along the way.
Thanks, i'm trying to do a deep dive into these machines. The VIC-20 was the second computer i ever owned, lots of fond memories.
Looking forward to this series
Enjoy. Thanks for the feedback.
Looking forward to this project. A friend of mine and I have been building our own version from Ben Eaters design.
Excellent, you should think about turning it into a VIC-20!
Congratulations on getting over 15 thousand views. It looks like there's a lot of interest in this build.
Thanks Martin. Yep, it also took me over 10K subs, so the channel is growing, although, i think you were one of the first subscribers!
Wow, this is bringing back some old memories! A got a big giggle when you described your digital scope as old, given that my own CRO is an ancient analog Tek.
Ha ha, yes. I know most people don't want to go out and buy a new expensive scope (myself included).
Nice work Matt 😎
This is exactly how I used to prototype years ago but now its so cheap, quick and easy to get PCBs made, for me it actually saves time and makes everything tidier. I think I will duplicate your project on PCB when finished for my own use and make freely available if thats ok 😁
Yep, go for it. I'll be putting the ROMs for the raster generator online.
I'm definitely looking forward to the rest of this series 😀
Enjoy, working on Part 2 now.
Well that's going to be interesting, looking forward to seeing this and revisiting my childhood with a VIC-20 build.
Thank you for the excellent content you upload.
Hope you enjoy it!
I'm so looking forward to this!! Thank you!
Hope you like it!
This is going to be a great trip down memory lane. Even seeing your old oscilloscope brought a smile to my face. I have one - currently in bits because its power supply blew.
They were pretty snazzy back in the day. Getting old now.
Subscribed and looking forward to the series. Thank you for sharing. Great stuff!
Thanks.
Thanks for sharing your knowledge 😀
My pleasure!
4:1 multiplexers. Video DMA and possibly mass storage DMA as well. Looking forward to the next bit. Subbed.
The video actually requires 3 look-ups per cpu clock. Character, colour and bitmask. The actual VIC chip does the character and colour look up simultanously.
@@DrMattReganan idea for the future.
The 6564/5 vic chip does 40 columns by caching the character code, like the Vic 2 chip does. It would take some kernal changes and games won't like it. But you could probably make it switchable back to 22 columns.
Commodore were going to sell it as an upgrade for the vic20, but the c64 put paid to it.
@@DrMattReganIs this why there was separate RAM for the colour attributes? The VIC could access both RAM banks at the same time if there were separate address and data busses for each.
I found this note from Tynemouth Software:
“The 2114 is 4 bits by 1K, so the colour RAM is only 4 bits wide. Here is the colour RAM, UE1, on the schematic. It shares the address lines with the other two 2114 chips which form the first 1K of RAM. The colour RAM databus is connected separately to the VIC chip, as data bits 8-11. To allow the 6502 to write to the colour RAM, this is multiplexed with bits 0-3 of the main databus using a 4066.”
So shared addresses with first 1K of RAM - but it appears only 512 bytes is used and it’s memory mapped to $9600-$97ff or $9400-$95ff with a RAM expansion - and a 4-bit address bus presumably referring to a colour palette. This appears to be the foreground colour, with one global background colour. Screen resolution is 176 x 184, which is 22 columns by 23 rows, a total of 506 8 by 8 characters. With one colour attribute for each, this easily fits within the first 512 bytes.
Yep, the character value and the character colour have the same address bits A0-A8 (the screen space
location of the character to be displayed), so the VIC can output one address and read both.
Excellent project and video! Thanks for sharing!
Thanks for watching!
Omg, I have never thought about wiring kynar wire like you did here. I.e. solder a blank piece of wire, then cut the kynar mantle to length and push it down the wire to where it's supposed to go. I pride myself for my ability for thinking laterally. But this teaches me again that a capability of lateral thinking is only any good if you actually think of applying it to a problem. ;)
I mean: my solution is to use enameled wire for most of the buses (parallel wires with many connections), and use kynar wire for the rest.
That's a great working solution, and wiring with enameled wire is still faster than your way. But kynar just looks better and is longer lasting (no chance of scratching the enamel and making a short).
But the best thing: kynar has really colorful colors which you can use for the different subsystems/buses, and which really, really help in debugging later on. And also helps a lot when you want to add expansions to the circuit.
Why didn't I think of it? It's so obvious! :D
Give it a go. The trick is that you need to stretch the wire a little, or else the kynar doesn't slide.
I haven't tried enameled wire, might be good for some busses.
This is how we were required to do board layouts in my 1991 electronics classes. We were graded on the appearance as much as function because "one day you'll need to troubleshoot it or want to upgrade it."
Interesting. I try to do a placement that makes sense, but as the design evolves it can get a bit messy.
Great video, nicely put together. I look forward to the next video in the series.
Thank you. Vic20-Ian
Glad you enjoyed it!
Inspiring video Matt. Your soldering on the perfboard is a piece of art. One day I hope to build a 6502 system too, not on perfboard but in aa pcb created with Kicad.
Thanks, yep, once it's debugged a PCB is the way to go.
This kind of reminds me of the videos Ben Heck used to make way back. Definitely subscribed.
Thanks, welcome, check out some of the other videos on the channel.
Great idea can't wait to see what you get up to
Thanks, should be fun.
Glad to hear you will go over your soldering method later. When I do P to P, I use the iron to melt the insulation at the position I want to solder, and I find it messy. It might be I'm using too large of an iron, so finding out what iron you use would be great too.
So the trick is to pre-stretch the wire by ~2%. Not enough to snap it, but enough to be able to move the insulation, then i just use a regular wire wrapping tool to cut the insulation. Occasionally to do have to melt the insulation, but that's only when i've cut it to the wrong length.
Address LEDs 0-7 lower than other
And data LEDs next to 8-15 address LEDs. (for some reason I prefer consistency over design 😂)
🎉 I can't thank you enough for these videos!!!. 🎉
I do wanna see LCData & LCDaddress conected instead LEDs 😅😊
Time seem to keep running away from me to sit down and look through your channel, and money flying away on other stuff too. 😂 (need this need that and the other needs over hobby). Hence only admiring your success in/on this. THANK YOU.!
Ha ha, yes. I basically put the LEDs where i could find a slot.
Glad you're getting some value from them. It's a fun project.
This is going to be awesome, I just subscribed, so I won't miss any future parts :)
Welcome aboard!
VIC-20 was the first computer I got as a teenager. Thanks to Capt. Kirk
It was actually my second computer, i had a ZX81, but managed to blow it up.
Yessss. We need more like this.
Great, hope you like it.
Most exciting.
Thanks, enjoy.
So etwas haben wir in den 80ern an einem Wochenende gebaut... vc20 und c64 ... war abenteuerlich aber eine geile Zeit
Cool, let us know more about it!
@@DrMattRegan looks like UA-cam blocks my comment because of the lionk I posted ...
btw. you are also using Wirewrap wires?
I made a display controller for a 128x32 plasma module entirely out of 74xx chips all on a breadboard. Lots and lots of counters. Since I was clocking the display I made it so that whenev the CPU (high speed 8051) needed to access video ram it'd pause the display controller's clock yeilding access to the CPU. Each pixel was 2 bits so four intensities which was implemented by scanning each row multiple times. Took me about a month to get the glitches out, was my first project for these people and really wanted to impress em. To do VIC20 gfx imagine it's gonna a lot more than the 16 or so chips i used :)
Using the EPROMs for the raster generator should save a lot of chips. It's just a question of how many graphics modes i want to support.
@@DrMattRegan OMG, I did the same thing feeding my 3 bit 'sub-row' count, 8-bits from RAM, and the first 2-bits of pixel counts to the addr lines of the EPROM and D0 spit out the pixel data. My first ever job was repairing old arcade games and I got a lot of my inspiration from those. Good luck (i thought u were gonna support all of em right? :P)
@@ForbiddenMagicunless you count switch between 8 pixel high characters and 16 pixel high characters as a mode, then the Vic 20 only has 1. Things like the movable memory map, when you add extra ram, or moving the borders or displaying characters from ROM or RAM aren't really modes.
So I guess that this plasma panel has 128 + 32 pins to connect to? 8 chips you say? They would need to have 32 pins each. Ah 6502 has 40? 6510 has 64 pins. Is TTL similar?
I'm always looking forward to your videos😁
Happy to hear that! Enjoy.
What a cool project. Subscribed.
Awesome, thank you!
My first ever computer was a VIC-20. Hours spent playing Blitz from tape and Radar Rat Race from cartridge. Kids today…pah! ;)
Yep, i can't remember exactly which games i played. I remember playing Q*Bert and Shamus
Hell yeah! im so up for this.
Excellent, thanks for the feedback.
Ok, now im subscribed. lol
Ive watched quite a few of your videos when they have come up and enjoyed them. If your going to show how to make a VGA card for this, Im in!
Thanks for the sub!
These videos are great.
Thanks for that!
Very exciting!
Thanks for the feedback.
I'M going for it all in gathering the BITS to build the thing like it
Excellent. You might want to wait for a couple of videos to see what direction i take it.
More of a 64 man myself but this is a hella cool project!
Thanks, the VIC-20 is a good warm up for the C64
This is amazing content... cant wait for the next part. have liked + subed. edit. cant figure out if the multiplexors are for bank switching eprom content, the first pre-emptive multitasking VIC20, or the first quad core VIC20 :)
Welcome. The mux is for video. For each CPU access, we need to look up a character, it's colour and it's bitmap..
This is going to be so good 😊
Thanks for watching!
Just fantastic
Thanks for the feedback.
I started making a ZX81 clone on vero/perf board about 3 years ago, but when my health took a nose dive I had to stop. I'd even made a custom ROM that was still (mostly) compatible with the ZX81. It would have been a fun machine to play on. (esp with all the expansions I had planned for it)
I have a playlist on the ZX81 if you are interested
ua-cam.com/play/PLjQDRjQfW-84WG47-5UjPz1BrXxc1acvd.html
@@DrMattRegan I think that series is how I found your channel. 👍
I still have one VC20 from 82? Plus green screen display... Great projects, activates some memories.
I had one in 82, but sold it in 83.
This title sounds promising! Thank you in advance!
Now add your Spectrum to it and make it a C128 =)
Yeah, this is a bit of a warm up to go into the C64. Sprites will be interesting.
oooh excited for this
Thanks for watching.
Great content, cheers.
Much appreciated!
Hey can you do the TV typewriter next? That would be very interesting and useful maybe! Awesome video!
Thanks for the idea!
@@DrMattRegan not a problem at all!! I still have some of the books from Don Lancaster and one of them is the TV typewriter cookbook!
This is awesome!
Thanks.
Great project 👍👍👍
Thanks for the feedback!
Just as I'm almost finished making my kicad schematic for the SAP6502, the next thing to distract me appears (oh ... look, a squirrel!). My confidence in building the TTL 6502 was a bit shaken in the last 2 videos (status and decimal mode): there are enough chips that there's about a 95% chance I'll get something wrong enough that I won't be able to troubleshoot. (Planning to wirewrap so defects would be easier to find. Plus, wirewrap prototyping boards have reasonable ground & power routing). I better get it done quickly so I can move on to the VIC20.
I'm actually planning to get rid of the status card and decimal card in the TTL Apple2e series, probably in 1-2 videos time in that series. It will morph a bit closer to the Turing6502 and status and decimal will be done in the sequencer.
madness ! Love it :)
Glad you like it!
Fantastic...
Thank you! Cheers!
Just awesome
Thanks David.
11:40 let's see, the CPU and VIC alternates on phi clock phases, and the VIC alternates on parallel color + character index fetch and 8-bit character raster fetch, so that makes a neat 4-phase bus arbitration state machine at 2MHz, VIC C+CI / CPU / VIC CR / CPU, but that only uses 3 ports to the memory, so there's one port left.
But given VGA video timing, the VIC needs to run twice as fast anyway, so that can use 3 ports for VIC color / char index / char raster instead, and the CPU only really cares about the back half-ish of PHI2, so you might run a 4-phase arbitration at 4MHz instead, VIC C / VIC CI / VIC CR / CPU. I did something like that to solve A/D-demuxing and D-settling issues for CPU writes in an unfinished 65c816 breadboard project a few years ago, but I was worried about CPU read timing and still kept the CPU on bus for the full PHI2. Never got to designing a video generator, so I had no immediate use for the potential extra cycles anyway.
I guess timing constraints for CPU reads will get pretty tight, so perhaps a more funky 5-phase arbitration at 5 MHz instead, with the 3 VIC slots and a 2-wide CPU slot.
The CPU and VIA use the same phase of phi2. The CPU and the VIC chip use different cycles, are you talking about the VIC in your post?
The normal VIC-20 VIC chip can do a character lookup and a colour look-up at the same time because they are in different physical devices. Then it does the bitmask lookup (which requires the character number) from the ROM.
The VIC-20 has a ~4MHz dot clock and a 1MHz CPU clock, so it can do two memory access per character (8-pixels) as the character rate is 0.5MHz.
In the VGA systems, we double HSYNC, so the character rate is 1MHz. That means we need to all the memory look-ups for a character in one phi2=0 cycle. To make things worse, the character number and the colour are in the same physical memory.
So, when phi2 is high, the CPU has access.
When phi2 is low, we do a character read, colour read and a bit-mask read. This requires 3 different addresses + the CPU address, hence the 4:1 multiplexer.
I actually have an empty dot-clock slot when phi2=0, which i could use for the bit-mask read because is may come from slower EPROMs.
@@DrMattRegan yes, I was reasoning about the VIC, not the VIAs. Assuming 150ns ROM for the VIC state machine would limit to ~6 MHz, which is not enough to have separate VIC states for each memory fetch. But the color / char index fetch can still share state slot like the original, and multiplex color / char index fetch on the 8Mhz VGA dot clock phase instead of introducing extra states. Also means there’s no need to steal parts of PHI2 from the CPU. Neat.
Are there any plans to do the same but for C64?
Yeah, i'll probably do a C64. Will be a bit more challenging. Will probably design a "sprite" card on PCB and stack 8 of them together.
@@DrMattRegan That sounds awsome but is gonna be a threat to the world's supply of 74-Latches. I'm in for it! =)
@@DrMattRegan Sounds amazing. I guess SID is out of the question... still discrete VIC2 sounds like a winner.
Yep, i think the non-sprite stuff will be somewhat similar, just faster. The sprites would be easier with FPGAs but i'd rather use TTL logic.
I'll try get sound working on the VIC-20 first. Not sure about the SID chip yet.
It annoys me in the movie Tron the character Sark decrees 'Bring in the Logic Probe!' then proceeds to force the state of the IO port with a Logic Pulser.
Why 4:1 multiplexers? Perhaps something to do with allowing video timing for VGA instead of NTSC ? Or perhaps you'll be adding another processor or doing dma for something else ?
Close, i have to generate 8 pixels per 1 CPU clock. For this i need a character look-up, a colour look-up and a bitmap look-up. So there are 3 video memory lookups per CPU memory access.
Hi DrMatt, it appears that your design employs the faster cycle times and larger capacities of later era SRAMs and ROMS than the devices available at the time. e.g. 70ns or faster vs 450ns of the 2114 & 2716, 32K vs 1K. These capability improvements allow you to greatly reduce part count and wiring. e.g. The memory can be used for 4 different functions within a single CPU/video memory access cycle.
Correct, my actual VIC 20 has 2114 - 300ns parts, and i could get away with those if wanted a PAL or NTSC output. VGA requires faster parts. Personally wiring up a bunch of chips that could easily be replaced by a higher density part doesn't have much appeal. From a teaching/understanding point of view, i don't think it makes a whole lot of difference. The principle of operation for a 628128 is basically the same as a 2114. Similarly, a 27c040 is just a much bigger 2764.
@@DrMattReganI would like to see how much speed we could squeeze out of C64 DRAM using modern parts. With nice scope traces. Most transistors of the C64 were in those chips. Utilize them to the max. I want to know how much Commodore left on the floor.
great!
Thanks, enjoy!
Hi where did you get the LED strips - Thanks - looking forward to the series
Oh, i had these made by PCBWay. If you're interested, i can make them public on PCBWay.
@@DrMattRegan 😀
thank you
You're welcome.
I've tried your soldering technique and I just can't seem to get it. I think one reason is that I have junky wire. I bought some off eBay that claimed to be Kynar (or however it's spelled).
Do you have a part number of the exact wire you use? I would like to get some wire that is of great quality. 🙂Thanks!
I usually use wire from Jaycar
www.jaycar.com.au/black-wire-wrap-wire-on-spool/p/WW4345
It's kynar shielding.
The trick is to stretch the wire a little, i'll show it in the next video
Popcorn time🎉 so interesting stuf
Enjoy!
This project could be what the 8-BIT GUY was dreaming of about 5 years ago. No FPGA's and easy to understand and code. Unfortunately its last version is far from that.
Yeah, for some reason the 8-bit guy went for more complexity at the cost of compatibility. Both mistakes in my humble opinion.
My guess is that the extra bus channels are for a DMA controller and/or a second CPU.
Good guess, but i need 1 port for CPU. one for character, one for colour and one for bitmask.
I'm suspecting that instead of just multiplexing between CPU and video, you'll also be doing some bank switching later on. That's why the 4:1 muxes.
Will probably save the bank switching for the C64. The video system needs 3 look-ups, character, colour and bitmap.
Immediately hit the subscribe button.
Thanks welcome aboard.
Is that 30ga Kynar insulated wire wrap wire? NOT cheap from what I've found, especially if one wants a color assortment. PVC insulated is cheaper, but I wonder how much it melts/shrinks back. I haven't tried it, but have you ever used similar gauge magnet wire with an insulation type removed by soldering? Anyone else is welcome to comment on these questions.
Yep, 30 gauge wire. I have some cheaper wire i got from China, where as soon as you touch the insulation it melts. I do occasionally use the technique you mention, mainly when i cut the wire to the wrong length. The reason i personally prefer the kynar is that if you have to solder a wire that crosses another wire nearby, the heat from the joint can cause the PVC shielding nearby to melt and cause a short circuit. I've had that happen a few-ish times, but it's really hard to debug. That's the main reason i stick with kynar. Kynar's resistant to the stray soldering iron as well. If i have to use very long wires, i will use the cheaper wiring with the other PVC insulation.
What type of wire are you using for the point to point, where you can have the solid strand separate from the kynar sheath? I can't find anything like that when I search for it.
I tend to use
www.jaycar.com.au/black-wire-wrap-wire-on-spool/p/WW4345
The trick is to stretch the wire by about 2%, that lets the kynar move
over the wire.
Doesn't work with all types of wire though.
This is VERY cool. However should be done with the US Gold standard C64.
Yep, working up to the C64, still thinking of the best way to implement the sprites.
you'd be doing us a huge solid if you showed us how to make an RTX 4090 for your next project....
Ha ha, The last GPU I worked on had the Fermi architecture, which was the GeForce 400 and 500 series. So a little while ago now.
Is the final product going to be 100% compatible with Vic-20 software, graphics, sound, I/O and all?
We'll see. I'm not planning to support the light pen or paddles.
@@DrMattRegan I'm fine with it. I never used the light pen or paddles when I had access to a vic-20 before. Thank you.
Any chances for gerbers maybe?
I'll make something available once it's all up and running.
Any chance of a PCB at the end of this series?
Yeah, i'll be swapping out the 6502 for a TTL CPU (either SAP6502 or Turing6502) an will try to make a PCB for that.
Hi Matt. How possible is it to make this design compatible with the ttl video Pets' machine code software?
I had thought that it was a shame they didn't just do a colour 80 coloumn version of the Pet TTL video machines instead of the Vic20 and 64 and 128. Dropping all buses for the serial bus and cartridge bus and joystick (replaced by usb these days).
I haven't looked at the Pet design for a while. Without colour, the dot clock is about twice the rate, so you can double the horizontal resolution straight away. Not sure what they did in the PET to get to 80 columns though.
@@DrMattReganYes, it may need a dual configuration. The 80 column was often the Motorola chip they used in cga and incompatible with the TTL machine code where most games were done. But doubling the ttl clock to get 80 columns is one solution, programmable characters and 4 unique colours per 2 bit colour character mode (160*200 vicpet-20 - 320*200 vicpet-64), would make a decent video output.
@@DrMattRegan I had a similar thought. Since you're going thru a monochrome stage might you give PET v2 or v4 ROMs a try before moving onto the colour phase. No need for 80 columns, but discussion of keyboard layout implementation would be cool.
@@MattKasdorf I think in terms of what people missed out on, and what they could have done. The mixup in these companies, of competing inadequate designs ultimately tanked things. Ultimately Acorn won, except for a few things like the electron compromises (which hit games compatibility and performance, which c16 and 128 had similar performance issues in Commodore. Atari two or three times hit outside solutions that could have helped, only the ex Sinclair people did. Amstrad just slid through until it was a bit late to upgrade with a spec they should have in 1985). I had come up with a simplistic cpu stalling graphics format that allows a decent level of basic ability compared to pcengine or mega drive (not that it's going to be as sophisticated graphics handling, but look at sonic the hedge hog on the Commodore 64, on a bit of limited ability). It's a simple TTL level upgrade. 80 columns allows 2 bits at 320, 4 bits at 160. Sacrificing CPU enabled a slower system better graphics. On a 1970's design 80 Columns would be pretty good, even if a lot of the time the CPU is paused. You wouldn't need much. The mistake was blocking video instead of CPU on those days, leading to unacceptable glitches. In my scheme you only stall the CPU sometimes when doing more colorful objects. And a little buffer cache for backgrounds. Pretty much gives ability to look like an 1990 Amstrad 8 bit in a 1970's level, or cheap 1980's machine. Something so incredibly simple. We didn't even really need the c64 sprite system, and close to single chip MCU instead of the vic2 (you can replace most of the non video/audio/cartridge expansion IO with serial busses off a MCU and use peripherals made for it under license, and convertors to others. We lived in dark times, just blinded by the flashy lights.
@@waynemorellini2110 I wasn't thinking too deeply, just how he might put a bit of a PET spin on the next presentation seeing as it was the precursor to the VIC20. I love the idea of a 40/80 column colour PET but isn't Fachat already working on that.
You want to use an nmos 6502 and 6522 if you want to make it vic 20 compatible.
Actually i'm eventually planning to use a SAP6502 or Turing 6502, we'll see how close we can get it.
Was the Vic20 a small C64 or is the C64 the successer ie Vic20s big brother?
I think C64 was the big brother. It uses the updated VIC II chip, which allows the higher capacity DRAM. It also allows
smooth scrolling which is cool, but probably the biggest change is the introduction of sprites.
But the basic process for putting text on the display is somewhat similar (just faster) to the VIC-20
you wont make a little pcb on pcbway or jlc to make a little hand held portable VIC-20
1:56 You have thr SRAM and EEPROM backwards
Thanks, i'll make a correction in the next video.
4:1 muxes because you are going to run 4x CPU clock on the bus? So you get 4 memory access slots, probably 2 for "VIC", 1 for CPU and the bonus one is a mystery for now 😉
Close, actually 3 are for the video per CPU clock, character lookup, colour lookup and bitmap lookup.
@@DrMattRegan I completely forgot VIC is character based 😂
Stop it! Your channel is turning into computer porn Click Bait!🥰 Another awesome video i have 2 x Vic20's with dead VIC's! Cant wait for the Kit!? 😃
Ha ha. I think I'll replace the 6502 with an SAP6502 or a Turing6502 (or a mix), and will turn that into a kit if there is interest.
@@DrMattRegan Im sure there would be interested the way the Retro Scene is going at the mo. Id Like todo the Zx Spectrum build if that was a Kit?
Bringing my Vic20's Back to life would be really cool! I have a Vic20 Emulator written in BlitzMax but it's not seeing Memory for some reason? I need the real thing to test.
I've also got a ZX Spectrum series with the Turing Z80 on the boil ie no ULA and no Z80 cpu. Just TTL logic, EPROMs and SRAM.
Gonzalez Edward Martin Gary Harris Ronald
Huh?
@@DrMattReganThis is one of those bot comments that probes your banned word list to find your real name. Not that you don't have you real name already available...
Thanks, Yes, i was originally under Turing6502, but i want to talk about some projects that are published, so it wouldn't be hard to figure out my name. That and i didn't want to stick with just the 6502.