I saw the title in my notifications and said out loud "no way". I never thought I'd learn so much about the absolute lowest level parts of computing. But you have singlehandedly made it accessible, entertaining, and interesting for me.
Ah, the memories. My friends and I played with this stuff back when we wre in high school and the 6502 was new. There was no open source of MSBASIC back then, so we wrote our own disassembler (in FORTRAN!), went through the MSBASIC code and figured out what everything did and produced an buildable source, which we could then modify and assemble with our own assembler (also written in FORTRAN). OSI Superboard was our breadboard. Good times.
Wow, that sounds like a fun time! Sometimes I wish I grew up when computers were somewhat "simpler" and lower level. My first experience (2008?) with computers was the web, specifically HTML, I skipped JavaScript and dove right into PHP and MySQL, and to this day I still prefer Python over JavaScript (side note, look up Brython, which is a cool project that translates Python into JavaScript)
@@Schlupssoftware developer for 40+ years. Medical technology, aerospace, banking, all sorts of things. Disassembling & then understanding MSBASIC was one of the best learning experiences ever. We learned about the basics of parsing, expression evaluation, graphics, ... the list goes on and on. We hacked that OSI superboard to support raster graphics (it only did character graphics out of the box). That's why I love Ben's 6502 series - for me, it was a great way to learn about how computers REALLY work, and that foundation has served me well for 40+ years.
SCRTCH ("scratch") clears the memory, it's basically the same as the "NEW" statement. No idea why different implementations call it at different times during init, but I agree with you that it does not really matter at all as long as it is called *somewhere* ...
My bet goes on memory timing. Some architectures might fire a memory reset and run some CPU ops instead of wasting cycles waiting for the memory chip reset.
@@Darkstar2342 It makes sense if you ever read timing diagrams in documentations for old ICs of old computers. Changing the order of the opcodes is a classical optimisation trick.
On my Uni course in 92 we made single board 68000 computers using wire wrap etc Then wrote assembler. So I got an understanding of how computers work from this basic level. I since had 30y as a Software engineer and knowing how the low level worked was invaluable Most modern software engineers haven’t a clue about this stuff 🤷♂️ Great videos, Ben. 🎉
Amazing where this series started and where you are now. I've been considered a computer professional my entire life. How much I didn't know until following along with you....
Yeah, as a software dev nearly half my life now seeing how he writes code and creates/works with hardware is insane and on a whole different level. Really makes you think how much more there is yet to learn! Ben out here schooling us in the best way!
I don't have a 6502 or the ability to justify buying a whole bunch of parts right now, but I do have an 8085, enough parts already lying around that I'm able to make something work most of the time, and the stubbornness to try following along at home even with the intermediate step of translating the entire thing to this different architecture before getting to the part where I add it to the 8085 breadboard computer and honestly? I think it's taught me even more this way! just watching these videos is educational enough, and you make the content so accessible and easy to understand, building something from them definitely gives me more of an idea of how things work and why, but taking it that one step further and getting a version of what you were showing to work with my computer? it's like I'm testing my knowledge of what I just learned, by taking what I learned and doing something with it, asking myself questions like do I understand it well enough that I can recreate it on my own 8085 computer? when I'm using different parts that have different datasheets, do I know where to start looking in mine for the closest thing to an analogue of what you showed from yours? do I understand what this code does and how it does it well enough that I can write my own version of it in 8085 assembly code? and the answer is usually yes, because your videos do an excellent job of teaching a wider concept by narrowing down on one specific instance. It doesn't HAVE to be a 6502, that's just the specific part you used, and the actual concepts are so much more applicable. since I'm on an 8085, I also won't have wozmon*, but that's okay because it doesn't HAVE to be wozmon, it just needed to be a simpler starting point than MS-BASIC, etc., etc. *I might try to port wozmon over anyway just for the practice. and to make sure everything so far is working. and also because that'd be fun, I think I guess what I'm trying to say is thank you, I'm learning so much more from these videos than I ever thought I could, and I'm enjoying every minute of it. and with these past few videos it's looking more and more like my end goal of running CP/M 80 on this breadboard thing I built myself is also possibly achievable for me someday
But then you find out why Ben chose the 6502 over many other microprocessors: because a LOT of software had already been developed for it. Of course, there was a lot of software written for the 8080 as well, in particular for CP/M, so best of luck to you in getting that running!
The best thing if you're interested in the SW aspect of it all is to buy a small Raspberry Pi Pico or a a dev board from either Infineon or ST for ARM, or Microchip for AVR or TI for MSP430, they cost between $5 and $40 and you don't need a programmer and you will have something that fits in your pocket that will give you the HW to port this to. If it's the HW you're after then Ben's project or your own 8085 it is.
I had a great day, an amazing concert, late dinner, a few videos, now let's go to bed. _Ben Eater video pops up_ - LIKE - Play - Notice the "cmp 3" at 30:35 and yell "#3 !!", glad to still be able to notice it - Read comments and enjoy this moment back in time Thank you, this was great!
Fabulous work. I've been directing my college students to your videos for years (and I know and appreciate your feelings about higher ed), keep up the amazing work.
24:40 is such a cool moment for the series since the whole thing started with Ben scoffing at the triviality of writing Hello World in Python. Then it comes full circle doing the same in BASIC but now understanding so much more of what's happening underneath.
The memory map of the C64 treated zero page addresses $00 and $01 differently one was the data direction for the other, which was used for bank switching and cassette hardware control.
That's because the 6510 processor explicitly supported memory banking with these two addresses. It had two internal registers that could be written to (at 0x00 and 0x01). These addresses when read, returned the last value written. The CPU was then wired to the extra address lines from specific pins assigned to this purpose.
Absolutely incredible how you are able to make every topic you share so understandable and absolutely a joy to watch and learn. One of my absolute favorite content creators to view on YT and I cannot wait to se what you share next.
i was randomly suggested by this men on youtube home page with 7 years old making gate on breadboard.and i come his channel and shocked after all of this.respect bro for this video.
you Sir are an ABSOLUTE legend! I adore your vids! Rarely are there vids that are that excellent and educational and just extremely entertaining as well! It just sparks so much interest and brings out the passion to just go and build/code/learn stuff! THANK YOU!
Thank you so much for this series. I've been following along since the start and loving it. I grew up with a C64, and while I've been using it and other 8bit machines my whole life, I never imagined I'd really understand them the way I do now.
I have never thought of even touching basic, but here Im know how it all works even. I can see why this could be useful at the time, I actually like the way it codes... but im just grateful I can still copy paste and review code live, thanks future. And Ben this series should be on a museum of tech, is just so complete... should be a 101 on computer science everywhere
For your next trick, build an interface that connects to a cassette tape drive that uses a DAC/ADC pair to generate/decode FSK tones, and then write code for LOAD and SAVE that use that to perform those functions!
Great stuff Ben. I have been working with an INS8073 recently that has Tiny BASIC in rom. It only works with a terminal and echos everything back to the terminal. For backspace, it sends
I love your content. An amazing introduction to how computers work, and this new series is incredible for understanding the lowest levels of what allows programming languages to exist and work.
Oh man these are some of the best computer engineering videos around! I see those empty LOAD and SAVE subroutines - time to add USB / SD card / file storage next? :P
@@TheRavenCoder if my memory serves me right SD cards can be accessed through SPI... considering the fact that he already bitbanged a serial interface onto this system i think bitbanging SPI shouldnt bee too difficult for him. might be slow, but hey the thing will feel more like its reading from a cassette if its slow to load stuff XD
This is really cool. I [finally] got this working on my breadboard. Had trouble with the windows download for the compiler and all so used cygwin, which is a linux environment that runs on Windows. Not binary compatible with linux but you can get source code for things like the ms basic and cc65 compilers and compile them. Used the Xgpro programmer (windows based) to put the bin file on the ROM. Next is to do the input buffer and see how that goes. Ben Eater - appreciate all the work you put into these.
But that's just it: he didn't reinvent the wheel. He took something that already had a ton of development into it, and adapted it to his own hardware. Which if you ask me, is far superior to trying to emulate or reverse-engineer the custom chips in, say, a C-64.
@@kreuner11 Not sure that the V2 version here corresponds to the C64 "V2", especially since it is a rebranded version, and the C64 has quite extensive KERNAL routines. They probably modified a lot of the input/output routines
@@kreuner11 I'm sure it's just a matter of writing routines for those. Note that Ben chose a particular port as his starting point (cbmbasic2), which he never explained. It's likely that he looked at all of the implementations and found this to be the one with the fewest needs for hardware-specific functions. I also recall that the Commodore Pet had editing features that allowed you to edit any program line that was showing on the screen, but this also would have required choosing ASCII characters for the four arrow keys, and writing functions to detect those. I suspect that the "backspace" feature he showed here was intended only for development, where programming was being done from a serial terminal.
This has been an enormously educational and entertaining series! Thankyou so much for making it! Is there any chance you could do a very quick summary of the development stages you’ve gone through to get to this point? This has been a long series and it might be hard for new viewers to catch up to the amazing place you’re at now.
Which is great because it helps people new to this get over the fear of the technology. Now, whether it ever actually IS that easy and pleasant is still up for debate.
Interesting to see MICROTAN as a build option for Microsoft BASIC. The UK based Tangerine Microtan 65 was my first computer, built from a kit. I only programmed it in assembler as I couldn't afford to expand it to include BASIC. I am now following along with your build, but instead of using Wozmon, I'm using TanBug. It's all very similar, so easy to adapt.
This whole series is such a fantastic introduction to how a computer actually works. Anxiously awaiting the video where you make LOAD and SAVE do something... 😁
I appreciate your description of some error, and some solution to fix it (5:10). Nowadays when a "bug" has been found, the blame is more of "you did this" instead of "why" and then fix the problem.
SAVING PROGRAMS TO FLASH - Have been working on a way to save basic code from this board to a Flash device. Used a SST39SF040 Flash chip and am able to save a currently loaded program to the Flash and load back into memory. Currently it only saves to Flash starting at zero. Now that this part works will be working on some kind of crude file system to allow saving multiple programs. Am running the 6502 at 4mhz and had trouble with instability due to ringing. Moved the flash device to the 6522 on port B, sharing with the LCD panel and bit-banging the control lines. I'm not a programmer so have no idea how to put the code up online for anyone to look at. Will work on getting that done if anyone is interested. Will also put up a schematic as well. Now that this is working will be adding a second 6522 to use with a dot matrix printer, old Epson or Panasonic, whatever i can get my hands on.
Hi, in the ISCNTC (around 30:48) - wouldn't it be better to conditionaly jump if it was control-c and let it through to rts if it wasn't? And (I do realize it's only 2 instances, however) would it be possible to jump to label to output 0d0a? wouldn't it save a byte or two?
I believe (and I can be wrong) that line editing of __ was when we used old terminal and needed to convey backspace and didnt need to output or could not output a backspace. I dont remember, I know I had dealt with stuff like that in the 70's
Wow! I certainly don't understand this stuff 😂 Amazing to see CRLF goes back so far! Nowadays, CRLF is still generally what MS-DOS & Windows expect for each newline, whereas Unix and Linux just expect LF.
The Unix and Macintosh operating systems used I/O libraries that handled cursor or printer head repositioning. DOS, BASIC, early Fortran, and some other bare metal languages left the programmer to deal with those details.
CR/LF goes back as far as ASCII, maybe even further. There were some printing terminals that couldn't do a CR without also advancing the paper, and others, like the Teletype 7-bit models, that separated these functions.
NGL seeing that running made my jaw drop. Also, please implement some sound hardware and code where when you press ^C it emits a loud and obnoxious beep, shared with ^G for “bell”.
10 For X=1 to 10 20 Print "Great Video ! "; 30 Next X >Run Great Video ! Great Video ! Great Video ! Great Video ! Great Video ! Great Video ! Great Video ! Great Video ! Great Video ! Great Video !
10 REM "This is a comment". 20 GOTO 10 >RUN I suppose the command REM comes from "Remark"? I learnt BASIC on a ZX Spectrum 48K with rubber keyboard and later on I graduated to the the great Comodore 64 which had a proper keyboard. Loading a simple game from tape could take from half an hour to maybe an hour. A floppy disk was a huge luxury back then. Time flies and so does computer tech.
I am a simple man, I see new Ben Eater thumbnail, I like before getting 3 seconds into video. Thank you Ben Eater, I think I speak for us all when I say we love you.
I would watch a full size documentary of this guys life just to understand how he got to this level of knowledge, entertaining value and fearlessness. Awesome video and I've never thought we would run BASIC on the breadboard computer. Next step is a second computer with a working network stack?
True. In my time coding MC on the 128 i have bitten off more than i could chew and it was mostly my keyboard. If i ever come up with building a compiler for my own language again, someone please hit me with a 2by4 🤪
That's why i always add a reset button on all ways microcontroller projects. Well, on my first telemetry controller for my solar installation i didn't, which had me try to powercycle the damn thing by unscrewing 12V cables outside in the pooring rain. That PCB got redesigned the very same evening :-)
Interestingly, the Commodore64 originally had wozmon like features in the form of Peek and Poke. Poke allowing you to write a series of bytes to am address and peek read them. It also had a form of asm built in. If I were coding this that would have been my method. After wozmon was prepped, autoload msbasic then add functions that pass the input to wozmon as needed. After all even in MSBasic you should be able to use commands directly without making a script.
I saw the title in my notifications and said out loud "no way".
I never thought I'd learn so much about the absolute lowest level parts of computing. But you have singlehandedly made it accessible, entertaining, and interesting for me.
I used to think I knew the basics, until he did this series. He has taught me way more than any book. I hope he builds more soon.
Ben Eater is a National treasure and you are lucky to have him
I did the EXACT same thing lol
Exactly!!
this guy started from explaining how silicon gates work!
And now he's running BASIC.... mind blowing
@@13mudit 🤣🤣🤣 Couldn't get any crazier....
Ah, the memories. My friends and I played with this stuff back when we wre in high school and the 6502 was new. There was no open source of MSBASIC back then, so we wrote our own disassembler (in FORTRAN!), went through the MSBASIC code and figured out what everything did and produced an buildable source, which we could then modify and assemble with our own assembler (also written in FORTRAN). OSI Superboard was our breadboard. Good times.
That sounds super impressive. What are you doing now?
Wow, that sounds like a fun time! Sometimes I wish I grew up when computers were somewhat "simpler" and lower level. My first experience (2008?) with computers was the web, specifically HTML, I skipped JavaScript and dove right into PHP and MySQL, and to this day I still prefer Python over JavaScript (side note, look up Brython, which is a cool project that translates Python into JavaScript)
@@Schlupssoftware developer for 40+ years. Medical technology, aerospace, banking, all sorts of things. Disassembling & then understanding MSBASIC was one of the best learning experiences ever. We learned about the basics of parsing, expression evaluation, graphics, ... the list goes on and on. We hacked that OSI superboard to support raster graphics (it only did character graphics out of the box). That's why I love Ben's 6502 series - for me, it was a great way to learn about how computers REALLY work, and that foundation has served me well for 40+ years.
This is super cool
@@carldaniel6510fascinating
4:39 Ah, the tried and true method of "just keep hacking away until the compiler stops yelling at you" method. My favorite.
me trying to use linux
@@Rx7man The definition of progress right there! 😂
SCRTCH ("scratch") clears the memory, it's basically the same as the "NEW" statement. No idea why different implementations call it at different times during init, but I agree with you that it does not really matter at all as long as it is called *somewhere* ...
I'd guess it's one of those micro optimizations for specific implications.
@@TaeruAlethea You know, because of the implication.
My bet goes on memory timing. Some architectures might fire a memory reset and run some CPU ops instead of wasting cycles waiting for the memory chip reset.
@@ecosta what? that makes no sense. what even are "cpu ops" supposed to be? this is not HW initialization if you mean that
@@Darkstar2342 It makes sense if you ever read timing diagrams in documentations for old ICs of old computers. Changing the order of the opcodes is a classical optimisation trick.
On my Uni course in 92 we made single board 68000 computers using wire wrap etc
Then wrote assembler. So I got an understanding of how computers work from this basic level.
I since had 30y as a Software engineer and knowing how the low level worked was invaluable
Most modern software engineers haven’t a clue about this stuff 🤷♂️
Great videos, Ben. 🎉
Unbelievable incredible videos with the best teacher on the internet. Thanks!
Wow, that's nearly $30 USD!
@@SanchoPanza-m8m Yeah... 29,35 USD today. 🙂
Amazing where this series started and where you are now. I've been considered a computer professional my entire life. How much I didn't know until following along with you....
Yeah, as a software dev nearly half my life now seeing how he writes code and creates/works with hardware is insane and on a whole different level. Really makes you think how much more there is yet to learn! Ben out here schooling us in the best way!
I don't have a 6502 or the ability to justify buying a whole bunch of parts right now, but I do have an 8085, enough parts already lying around that I'm able to make something work most of the time, and the stubbornness to try following along at home even with the intermediate step of translating the entire thing to this different architecture before getting to the part where I add it to the 8085 breadboard computer
and honestly? I think it's taught me even more this way! just watching these videos is educational enough, and you make the content so accessible and easy to understand, building something from them definitely gives me more of an idea of how things work and why, but taking it that one step further and getting a version of what you were showing to work with my computer? it's like I'm testing my knowledge of what I just learned, by taking what I learned and doing something with it, asking myself questions like do I understand it well enough that I can recreate it on my own 8085 computer? when I'm using different parts that have different datasheets, do I know where to start looking in mine for the closest thing to an analogue of what you showed from yours? do I understand what this code does and how it does it well enough that I can write my own version of it in 8085 assembly code?
and the answer is usually yes, because your videos do an excellent job of teaching a wider concept by narrowing down on one specific instance. It doesn't HAVE to be a 6502, that's just the specific part you used, and the actual concepts are so much more applicable. since I'm on an 8085, I also won't have wozmon*, but that's okay because it doesn't HAVE to be wozmon, it just needed to be a simpler starting point than MS-BASIC, etc., etc.
*I might try to port wozmon over anyway just for the practice. and to make sure everything so far is working. and also because that'd be fun, I think
I guess what I'm trying to say is thank you, I'm learning so much more from these videos than I ever thought I could, and I'm enjoying every minute of it. and with these past few videos it's looking more and more like my end goal of running CP/M 80 on this breadboard thing I built myself is also possibly achievable for me someday
But then you find out why Ben chose the 6502 over many other microprocessors: because a LOT of software had already been developed for it. Of course, there was a lot of software written for the 8080 as well, in particular for CP/M, so best of luck to you in getting that running!
The 8085 is my FAVORITE CPU.
The best thing if you're interested in the SW aspect of it all is to buy a small Raspberry Pi Pico or a a dev board from either Infineon or ST for ARM, or Microchip for AVR or TI for MSP430, they cost between $5 and $40 and you don't need a programmer and you will have something that fits in your pocket that will give you the HW to port this to.
If it's the HW you're after then Ben's project or your own 8085 it is.
4:27 "i will be equal to eater". You ARE Eater!!
if he is Eater then sentence "i will be equal to eater" is true ;)
@@works4me89 "will be" is not true
ROFL :D
@@CompressedSoup He was equal to eater, he is equal to eater, he will be equal to eater.
Checks out to me.
if (i == eater && me == watching) then with world { all_is_right = TRUE );
I had a great day, an amazing concert, late dinner, a few videos, now let's go to bed.
_Ben Eater video pops up_
- LIKE
- Play
- Notice the "cmp 3" at 30:35 and yell "#3 !!", glad to still be able to notice it
- Read comments and enjoy this moment back in time
Thank you, this was great!
Yes! Also noticed the suboptimal branching there - why not just BEQ is_cntc and "else" continue to RTS :)
Fabulous work. I've been directing my college students to your videos for years (and I know and appreciate your feelings about higher ed), keep up the amazing work.
That little software product started a revolution. Nice seeing you bring it to your setup. Cheers!
24:40 is such a cool moment for the series since the whole thing started with Ben scoffing at the triviality of writing Hello World in Python. Then it comes full circle doing the same in BASIC but now understanding so much more of what's happening underneath.
I always feel like a kid on Christmas morning every time Ben uploads.
It is better than Christmas! At least, I'm not checking for Christmas 5 times per day.
Count me in the party!!
Very cool! The 6502 and Z80 were our go-to micros 40+ years ago. These units allowed the creation of many new career paths for many people as well.
And with videos like this, I'm sure will inspire many more :)
Next we run DOOM!
yes
Lol
over a serial line?
file system? operating system?
Yess
Fantastic! This whole 6502 breadboard project never ceases to amaze.
The memory map of the C64 treated zero page addresses $00 and $01 differently one was the data direction for the other, which was used for bank switching and cassette hardware control.
That's because the 6510 processor explicitly supported memory banking with these two addresses. It had two internal registers that could be written to (at 0x00 and 0x01). These addresses when read, returned the last value written. The CPU was then wired to the extra address lines from specific pins assigned to this purpose.
Definitely a hardware feature of the 6510 CPU: You loose two bytes to gain access to many more bytes.
Thank you, love this. Helps demystify what was incomprehensible to me those many years ago.
People took months, if not years to develop that in the first place, but Ben can explain it in 30something minutes.
Just brilliant. Thank you!
Absolutely incredible how you are able to make every topic you share so understandable and absolutely a joy to watch and learn. One of my absolute favorite content creators to view on YT and I cannot wait to se what you share next.
Your videos took me from a basic understanding of a transistor to BASIC. It’s been a great journey!
i was randomly suggested by this men on youtube home page with 7 years old making gate on breadboard.and i come his channel and shocked after all of this.respect bro for this video.
Amazing! I got into computer science thanks to you. You are so good at explaining these concepts!
The BEST teacher as always… Waiting for the Save and Load commands with file system support for basic 😊
As for me, I'm waiting for his flash-based floppy emulator
@@BrightBlueJim NO! Cassette tape drive!
Thanks!
you Sir are an ABSOLUTE legend! I adore your vids!
Rarely are there vids that are that excellent and educational and just extremely entertaining as well!
It just sparks so much interest and brings out the passion to just go and build/code/learn stuff!
THANK YOU!
Thank you so much for this series. I've been following along since the start and loving it. I grew up with a C64, and while I've been using it and other 8bit machines my whole life, I never imagined I'd really understand them the way I do now.
This guy is a legend.
I have never thought of even touching basic, but here Im know how it all works even. I can see why this could be useful at the time, I actually like the way it codes... but im just grateful I can still copy paste and review code live, thanks future. And Ben this series should be on a museum of tech, is just so complete... should be a 101 on computer science everywhere
Amazing clear and efficient breakdown, impressive work, thanks for clearing up the mysteries
Well done Sir, pushing the envelope of the breadboard computer! Thank you.
wozmon and ms basic are awesome additions to your computer. ive followed along, built the computer but not yet implemented the code, great job.
Hi, I'm a kid just 12 years old and I made a computer using a 6502 processor by learning from you. Thanks !
For your next trick, build an interface that connects to a cassette tape drive that uses a DAC/ADC pair to generate/decode FSK tones, and then write code for LOAD and SAVE that use that to perform those functions!
been following this project since I was still In school. I am a CS masters student. Love it
this is really cool! im working on my own operating system for the 65c02 inspired by ur videos
Love your work. Like A LOT! it's awesome, also the story telling, the way you count and show the modifications of the code... just awesome. great!
just realised it's been almost exactly 5 years I started watching this channel
time flies
fruit flies like a banana
Right. I have been re-watching the videos and following along on an FPGA. The weird part is seeing my comments from 4+ years ago!
@@m1geo watching your own old youtube comments is gold
except I was 11 and they're fucking cringe :D
Your skill-set is incredible. Even your vim game is tight.
Honestly amazed by your fearlessness more than anything. "Well let's just comment everything and see if it complains".
Thanks Ben, that was way more interesting than I thought it would be.
Great stuff Ben. I have been working with an INS8073 recently that has Tiny BASIC in rom. It only works with a terminal and echos everything back to the terminal. For backspace, it sends
Madness! Truly impressive progress and great explanation!
It's an AMAZING start to the day when I see a Ben Eater video notification!
the best computer engineering ever !
Love from Morocco !
This is such a blast to the past, thanks for this entire series :D
Watched the whole video. was great
lol
So fun to ride along.
I remember typing an assember / editor into memory on the commadore, so I could then type in and assemble a game.
Cant wait to see the debian fork to run on this
Awesome video series Ben, thank you ❤
I love your content. An amazing introduction to how computers work, and this new series is incredible for understanding the lowest levels of what allows programming languages to exist and work.
Oh man these are some of the best computer engineering videos around! I see those empty LOAD and SAVE subroutines - time to add USB / SD card / file storage next? :P
That would be awesome. Even battery backed RAM
USB and SD card file storage is complicated. Probably be a lot easier to use SATA based storage.
@@TheRavenCoder
if my memory serves me right SD cards can be accessed through SPI... considering the fact that he already bitbanged a serial interface onto this system i think bitbanging SPI shouldnt bee too difficult for him.
might be slow, but hey the thing will feel more like its reading from a cassette if its slow to load stuff XD
@@TheRavenCoderGeogre Foot (YT and Reddit) has made some code (I think C/asm) to use an SD card for his computer's file system
@@TheScarvig I did not know that. But yeah, looking at some documentation, that should be doable.
Dude this is so nostalgic, brings me back to uni in my operating systems class
This is really cool. I [finally] got this working on my breadboard. Had trouble with the windows download for the compiler and all so used cygwin, which is a linux environment that runs on Windows. Not binary compatible with linux but you can get source code for things like the ms basic and cc65 compilers and compile them. Used the Xgpro programmer (windows based) to put the bin file on the ROM. Next is to do the input buffer and see how that goes. Ben Eater - appreciate all the work you put into these.
Update: Added a "BYE" command to MSBasic to exit back to WOZMON so we don't have to reset to exit the program.
“Reinventing the wheel”, also in informatic, is NOT always a waste of time … as is said at work…
Fascinating 😍
But that's just it: he didn't reinvent the wheel. He took something that already had a ton of development into it, and adapted it to his own hardware. Which if you ask me, is far superior to trying to emulate or reverse-engineer the custom chips in, say, a C-64.
I understand what do you mean, and yes you also are right 😊
But he also write all from scratch, of course reusing knowledge already solidified
Oh yes, this is what I was looking forward to. Need to get mine out and finish it
Great to hear about this open source minipro software, Time to revive this gem of a device from my parts bin!
It's good to hear that the black T48 is now supported as the older white ones are getting difficult to find.
Great work, Ben! You make it look so easy.
This series continues to delight
Nice to see the codes from Bill and Steve run hand in hand on this computer :D
Do you mean Bill and Paul?
@@jimhark I mean Bill Gates and Steve Wozniak
One of your best videos yet!
That is so cool !
Basic brings back memories.
Amazing how this works out of the box by simply pointing it to a few locations, and just needs 3 bios routines.
Simplest thing Microsoft ever made!
I wonder how it worked on C64 where you could also move the cursor up and down
@@kreuner11 Not sure that the V2 version here corresponds to the C64 "V2", especially since it is a rebranded version, and the C64 has quite extensive KERNAL routines. They probably modified a lot of the input/output routines
@@kreuner11 I'm sure it's just a matter of writing routines for those. Note that Ben chose a particular port as his starting point (cbmbasic2), which he never explained. It's likely that he looked at all of the implementations and found this to be the one with the fewest needs for hardware-specific functions. I also recall that the Commodore Pet had editing features that allowed you to edit any program line that was showing on the screen, but this also would have required choosing ASCII characters for the four arrow keys, and writing functions to detect those. I suspect that the "backspace" feature he showed here was intended only for development, where programming was being done from a serial terminal.
This has been an enormously educational and entertaining series! Thankyou so much for making it! Is there any chance you could do a very quick summary of the development stages you’ve gone through to get to this point? This has been a long series and it might be hard for new viewers to catch up to the amazing place you’re at now.
Ben makes everything seems so easy and ordinary
Which is great because it helps people new to this get over the fear of the technology. Now, whether it ever actually IS that easy and pleasant is still up for debate.
Amazing video again, awesome work
Sweet I love the continuity
Interesting to see MICROTAN as a build option for Microsoft BASIC. The UK based Tangerine Microtan 65 was my first computer, built from a kit. I only programmed it in assembler as I couldn't afford to expand it to include BASIC.
I am now following along with your build, but instead of using Wozmon, I'm using TanBug. It's all very similar, so easy to adapt.
Ditto here! Many hours punching a hex keypad. Half way through building up a Microtan65 as the one I built has long disappeared.
This series is one of the best educational series ever made.
After not going for development all those decades ago, I'm finally learning some assembly :D
Agreed. I my digital hardware professor does not come close to this.
This whole series is such a fantastic introduction to how a computer actually works. Anxiously awaiting the video where you make LOAD and SAVE do something... 😁
via Datasette!
Well, you started with chips and breadboards and now you're running the first programming language I learned as a kid.
These videos are great! Thank you so much
I appreciate your description of some error, and some solution to fix it (5:10). Nowadays when a "bug" has been found, the blame is more of "you did this" instead of "why" and then fix the problem.
Wonderful!
SAVING PROGRAMS TO FLASH - Have been working on a way to save basic code from this board to a Flash device. Used a SST39SF040 Flash chip and am able to save a currently loaded program to the Flash and load back into memory. Currently it only saves to Flash starting at zero. Now that this part works will be working on some kind of crude file system to allow saving multiple programs. Am running the 6502 at 4mhz and had trouble with instability due to ringing. Moved the flash device to the 6522 on port B, sharing with the LCD panel and bit-banging the control lines. I'm not a programmer so have no idea how to put the code up online for anyone to look at. Will work on getting that done if anyone is interested. Will also put up a schematic as well. Now that this is working will be adding a second 6522 to use with a dot matrix printer, old Epson or Panasonic, whatever i can get my hands on.
I love this for the nostalgia. Would you try making a tape deck disk system next? perhaps a mouse?
Hi,
in the ISCNTC (around 30:48) - wouldn't it be better to conditionaly jump if it was control-c and let it through to rts if it wasn't? And (I do realize it's only 2 instances, however) would it be possible to jump to label to output 0d0a? wouldn't it save a byte or two?
Those bugged me too. Might fit back in 250 bytes?
@@renakunisaki Might fit - exactly, if I'm counting right it might save 3 bytes (if all the instructions and addresses are 1byte)
I believe (and I can be wrong) that line editing of __ was when we used old terminal and needed to convey backspace and didnt need to output or could not output a backspace. I dont remember, I know I had dealt with stuff like that in the 70's
A delightful watch as always.
Wow! I certainly don't understand this stuff 😂
Amazing to see CRLF goes back so far! Nowadays, CRLF is still generally what MS-DOS & Windows expect for each newline, whereas Unix and Linux just expect LF.
The Unix and Macintosh operating systems used I/O libraries that handled cursor or printer head repositioning. DOS, BASIC, early Fortran, and some other bare metal languages left the programmer to deal with those details.
CR/LF goes back as far as ASCII, maybe even further. There were some printing terminals that couldn't do a CR without also advancing the paper, and others, like the Teletype 7-bit models, that separated these functions.
NGL seeing that running made my jaw drop. Also, please implement some sound hardware and code where when you press ^C it emits a loud and obnoxious beep, shared with ^G for “bell”.
Informative and yes still nostalgic
Nice Video! Thanks for this :)
This stuff is awesome, thanks for sharing this knowledge.
A full physical screen for the terminal with the USB keyboard interface you did a while back would be awesome.
Wow, that's amazing!
10 For X=1 to 10
20 Print "Great Video ! ";
30 Next X
>Run
Great Video ! Great Video ! Great Video ! Great Video ! Great Video ! Great Video ! Great Video ! Great Video ! Great Video ! Great Video !
I was wondering if the semicolon would work over the serial. By the time you loop you have the CR.
10 REM "This is a comment".
20 GOTO 10
>RUN
I suppose the command REM comes from "Remark"?
I learnt BASIC on a ZX Spectrum 48K with rubber keyboard and later on I graduated to the the great Comodore 64 which had a proper keyboard. Loading a simple game from tape could take from half an hour to maybe an hour. A floppy disk was a huge luxury back then.
Time flies and so does computer tech.
I love when ben uploads
I am a simple man, I see new Ben Eater thumbnail, I like before getting 3 seconds into video. Thank you Ben Eater, I think I speak for us all when I say we love you.
Very insightful. Thanks
Genuinely amazing, I wish I could do what you do 😭
lol, I was going to suggest he run Dave Plummer’s Primes test on this 6502 but someone has already added it to the repository.
Nicely done!
I would watch a full size documentary of this guys life just to understand how he got to this level of knowledge, entertaining value and fearlessness. Awesome video and I've never thought we would run BASIC on the breadboard computer. Next step is a second computer with a working network stack?
34:50 This mistake always happens to the best of us
True. In my time coding MC on the 128 i have bitten off more than i could chew and it was mostly my keyboard.
If i ever come up with building a compiler for my own language again, someone please hit me with a 2by4 🤪
That's why i always add a reset button on all ways microcontroller projects. Well, on my first telemetry controller for my solar installation i didn't, which had me try to powercycle the damn thing by unscrewing 12V cables outside in the pooring rain. That PCB got redesigned the very same evening :-)
You should add a means to save and load programs like old computers did with cassette tapes
You are one smart cookie. 👍
Outstanding
Interestingly, the Commodore64 originally had wozmon like features in the form of Peek and Poke. Poke allowing you to write a series of bytes to am address and peek read them.
It also had a form of asm built in. If I were coding this that would have been my method. After wozmon was prepped, autoload msbasic then add functions that pass the input to wozmon as needed. After all even in MSBasic you should be able to use commands directly without making a script.