- 24
- 33 142
P. Scott DeVos
United States
เข้าร่วมเมื่อ 30 ธ.ค. 2011
10 Mhz Ben Eater-style 6502 computer, interrupt requests, and you!
I demonstrate and describe interrupt handling on my 10 Mhz Ben Eater-style 6502 computer with 72k of RAM and how to make it work along side my single-stepper/debugger board.
6502 code:
github.com/pscottdevos/be6205/tree/irq-handling/6502
New VGA Signal ROM code:
raw.githubusercontent.com/pscottdevos/be6205/irq-handling/vga/sync_prom.py
6502 code:
github.com/pscottdevos/be6205/tree/irq-handling/6502
New VGA Signal ROM code:
raw.githubusercontent.com/pscottdevos/be6205/irq-handling/vga/sync_prom.py
มุมมอง: 367
วีดีโอ
Improving the stability of my 10 Mhz Ben Eater-style 6502 computer.
มุมมอง 2969 หลายเดือนก่อน
I thank viewers for their help and advice and explain how I managed zero erros during 48 plus hours of constant memory testing of my 8k of system ram and 64k of video ram. Special thanks to @MarkTillotson @DukeofEarl1961 @AlanCanon2222 @davidjohnston4240
Ben Eater 10 Mhz 6502 Computer With Software Selectable Clock Speed for Addressing 64K of Video RAM.
มุมมอง 68410 หลายเดือนก่อน
I show the need for being able to slow the clock speed when talking to the two 32K banks of video memory and how to make it happen. I also show the difficulty in setting up direct memory access (DMA) for the video card and discuss future work to solve the problem.
Worlds Worst Video Card -Revisted: Hardware Scrolling Under Computer Control
มุมมอง 2.4K10 หลายเดือนก่อน
In my continuing quest to create the 8-bit video game system that never was, I demonstrate Ben Eater 6502 computer-controlled hardware scrolling of my flash RAM-based take on the World's Worst Video Card. Scrolling Software: github.com/pscottdevos/be6205/blob/horz-scrolling-demo/6502/horz-scroll-demo.s github.com/pscottdevos/be6205/tree/horz-scrolling-demo/6502/libs
Ben Eater 6502 Computer With 64k of Video RAM.
มุมมอง 8K10 หลายเดือนก่อน
I continue my journey towards building the 8-bit video gaming system that never was but could have been using the Ben Eater 6502 computer as the basis. Here I demonstrate adding 64k of video ram that is addressed entirely within an 8k block of memory addresses. There are still a few kinks to work out but this shows my progress so far. Memory test code: github.com/pscottdevos/be6205/blob/testing...
Experimenting With Ways to Add Video RAM to 10 Mhz Ben Eater 6502 Computer.
มุมมอง 91511 หลายเดือนก่อน
I discuss my plans to add video RAM to my Ben Eater 6502 computer and find a solution that works.
Debugger/Single Stepper Board for Ben Eater-Style 6502 part 2: Now With LCD Recovery
มุมมอง 48611 หลายเดือนก่อน
I demonstrate and explain new code for my BE6502 single stepper/debugger board that allows one to use the board even if the code uses the LCD screen. It switches the LCD display back and forth between the output generated by the code under test and the debugger information. Code: github.com/pscottdevos/be6205/blob/debugger_board_lcd_recovery/6502/debugger_test.s
Debugger/Single Stepper Board for Ben Eater-Style 6502 Computer
มุมมอง 1.3K11 หลายเดือนก่อน
Here I demonstrate and explain a debugger board for my Ben Eater-style 6502 bread board computer. It allows one to single step through one's code, displaying the contents of all the flags and registers after each instruction greatly helping with finding software, and even hardware, errors. Code is here: github.com/pscottdevos/be6205/blob/debugger_board/6502/debugger_test.s
Ben Eater-Style 6502 Computer Debugger Board
มุมมอง 17111 หลายเดือนก่อน
I built a debugger board for my Ben Eater-Style 6502 bread board computer that allows setting breakpoints and single stepping through code while displaying all the CPU flags and registers on the LCD screen.
Trouble with Subroutines - I Need Your Help
มุมมอง 429ปีที่แล้ว
While testing hardware registers, I run into a mysterious problem with subroutines not returning correctly? Please, please help me understand what is going on here! Sample code is here: github.com/pscottdevos/be6205/tree/main/6502 hello_world2.s has the pha/pla that break print_str along with a "workaround" that decrements the high order byte of the return address on the stack before returning....
This Hardware Register Should Not Work
มุมมอง 234ปีที่แล้ว
In preparation of controlling the hardware scrolling on my World's Worst Video Card with my Ben Eater-based 6502 computer, I build an addressable output register that shouldn't work. But it does.
Ben Eater 6502-style Computer at 10Mhz using Flash RAM And Reducing ROM Flash Time.
มุมมอง 4.5Kปีที่แล้ว
I demonstrate my Ben Eater 6502 computer at 10Mhz. It utilizes Flash RAM for ROM and has a ZIF socket for easy ROM insertion/removal. Also included is a way to reduce the time needed to program the Flash RAM. Promised link to the Python program used to flash the ROM: github.com/pscottdevos/be6205/blob/main/6502/write_rom.py Link to TommyPROM EEPROM programmer website: tomnisbet.github.io/TommyP...
World's Worst Video Card - Revisited: Flash RAM-based Decoding and Hardware Scrolling.
มุมมอง 1.8Kปีที่แล้ว
I built a Ben Eater-style World's Worst Video Card that fits on two boards and allows for hardware scrolling. Here are all the deets!
Converting Images to Ben Eater World's Worst Video Card Binary Image Using Free Software
มุมมอง 327ปีที่แล้ว
Converting Images to Ben Eater World's Worst Video Card Binary Image Using Free Software
WWVC - Revisited: Will This Ripple Counter Work?
มุมมอง 117ปีที่แล้ว
WWVC - Revisited: Will This Ripple Counter Work?
Watch Two GA Poll Workers Each Pass the Same Stack Of Ballots Through The Machine THREE Times
มุมมอง 1.5K4 ปีที่แล้ว
Watch Two GA Poll Workers Each Pass the Same Stack Of Ballots Through The Machine THREE Times
How?
What type of monitor were you using?
'Promo sm' 😣
In the transcript it is unclear how scrolling is drive. Why not give the 6502 access to the registers of the video card? Is this it? So the video card sends an interrupt at a line ( like in C64 ) and 6502 sets the address. Just reset the address right at the end of the frame, but allow interrupts on all lines, even in the flyback to the top.
Hi, I‘m very much liking the direction where you are going with your version of the BE6502 and following your series since you started and would like to help and give tips here and there if I can. Do you have a GitHub or webpage where you document your code and schematics as a reference so it’s easier to check for errors and give advice? I’ve built several similar incarnations of this style of computer on vero board 30 years ago as z80 versions and like to respin one of those as a 6502 sbc which would be pretty much like the one you do. My plan was to have it run at 12.6 MHz ( so 1/2 std. vga resolution) with 64/128k RAM but 16bit datapath for video ( got plenty of 10/12 ns old cache SRAM chips from old 486s )
Thank you so much! I don't have complete schematics anywhere. Just pencil-and-paper schematics of various subsystems. The software is available in a Github repository here: github.com/pscottdevos/be6205. I have not found any open source schematic software very useful for the way I work. Is there any you would recommend?
Thanks for the mention!
You bet!
Awesome work. Enjoying the series!
Thank you. I wish I had more time to work on it!
Great video, love watching them, keep them coming
Thanks! I'm planning to keep at it.
I've used your script to generate a bin file for an image that is 200x150 for a faster access chip, but I'm looking at it in HEX like Ben did, but I'm not seeing zeroes for the blanking time. I'm not confident I understand how all this works, but if I'm correct, the first 200 bytes should have values, then the next 64 should be 00 but I only get two bytes of 00 before I start seeing other values again.
Oh I think I see what the issue is. I'm going to use more address lines than Ben does, so I need to adjust the code accordingly. Instead of 7 each, I have 9 bits for the horizontal and 8 for the vertical.
Those buttons made me laugh lol
I usually film them from above so you don't see how excited they are, lol.
@@p.scottdevos1235Exited😂
Great videos, but still no decoupling caps anywhere. Might solve the random bit errors and improve performance at 10MHz...
Thanks hounding me on this. I have some 100 nF caps on order so next video you'll see what you're looking for.
insane project dude. Keep it up please!
Thanks. I'm having the time of my life, so no chance I'll stop now.
A Platypus computer channel?
A Perry The Platypus computer channel!
I envy your video production skills. Well done. I also modified Ben's design to include a 39SF010A but I also added an Arduino Nano clone for in-circuit ROM programming (28C256 or 39SF010A). If interested, please check it out. Search "r/beneater mods: 1/2/4/8 mhz" for a brief description.
This channel is taking breadboards to the limit. Debugging and or moving this monster must be a nightmare!
I knew debugging and testing would be important. That's why I invented the single-stepper/debugger board: th-cam.com/video/YTmSVKJth14/w-d-xo.html
Interesting video, kerel. En een goed accent!
Thank you!
Very cool. Would it be possible to output a very small animation?
I hope to write some video games for it once it is fully developed. I'm still having problems with the video board having DMA access to the video RAM. I could do like Ben Eater and simply halt the processor during the display interval, but I am hoping to be able to make use the processor to do other things while the video card has access to the RAM. I think I'm going to need to set up interrupt requests that tell the CPU when the video RAM becomes available and when it stops being available. I also want the computer to be able to read which scan line the video card has just completed displaying.
I remember watching the original video so long ago. But its amazing you didn't abandon it. Good job.
Thanks! I'm moving slowly because I'm doing a lot of testing and also building debugging tools like my debugger/single-stepper board. I'm very excited at how close I'm getting.
What in the god's name is this?! My man you are incredible xD
Thank you! There's more to come!
Bad Apple when?
I'm not planning to do bad apple, but here's a link to someone who has done it on a Ben Eater computer: www.reddit.com/r/beneater/comments/183dhdw/i_vsync_you_vscync_we_all_vscync_for_bad_apple/
The image is scrolling left, the viewport is going to the right.
Yes. I said that completely wrong. Thanks for the correction.
very cool
Thank you!
This is an incredible project. Amazing seeing it working!!
Thank you so much. It's really starting to come together.
oh I Now Subber 404,,HAHAHAHAAAAAA
Thanks for the sub!
Interesting, but I immediately red-flagged the lack of decoupling capacitors - nothing digital is guaranteed to work without them, you run on luck alone... 100nF ceramic for each chip is a good starting point.
There is a 100nF cap on each power rail.
@@p.scottdevos1235 But not per chip right on the pins?
@@MarkTillotson Correct
I might be imaginnig it, but the further your videos go on the more your voice reminds me of Ben Eater's.
Thanks! I love Ben Eater's voice.
Very nice
Thank you!
This really needs a circuit diagram with address lines and control signals being labelled, rather than just pointing at chips and wires on the prototyping boards. You clearly understand what you've designed very well, but without a clearer picture of the connectivity, it's hard for the viewer to follow what you're describing, especially if they're not familiar with some of the chips. Thanks.
Thanks for the suggestion. When I have the design settled, I plan to draw one up.
And move the mouse cursor off-screen before recording
Yes. I should be more careful about that.
Too much ‘er’ and ‘um’ and correcting yourself. Maybe a script will help.
Thanks for the suggestion.
Informative one! Wondering if any custom PCBs may help for any upcoming content or project build? Would love to sponsor and reach any collab together! (PCBWay zoey)
Perhaps once I get the project working completed. Thanks for reaching out!
@@p.scottdevos1235 Sure thing! Pls keep me updated anytime you need! You can find my contact info under this account, looking forward to hearing from you soon! 🤗
PCB is good for SMT
Hi Ben! I can´t believe you are using a LCD display!!!! It adds delays you have to wait during writes. You know it... I´d suggest you use a parallel FIFO and have an Arduino read the FIFO and write the LCD, or use a dual-port RAM. The FIFO is a sequential memory, you could have special codes in 0x80 .. 0xFF range to command a clear screen, home, goto line 0/1 etc. and use like a the FIFO like a serial port device. The Dual-Port RAM is a... Random Access Memory! you can write anywhere you want, anytime, so you can have 20 bytes for line 0 and 20 bytes for line 1, and write on these addresses. The Arduino would continuously read, compare to local copy and update the LCD when needed. I did something quite similar in the past, using only software and a 500ns interrupt. The interrupt would drive a state machine that continuously writes to the LCD. So the main program did not have to wait the LCD, it would write a memory buffer (zero delay) and then sometime later the buffer would be updated on physical LCD (with a little lag)
Thanks for the suggestion. I"m not Ben, though; I'm Scott. My project is based on Ben Eater's 6502 project. If you haven't seen his videos, you are missing out! www.youtube.com/@BenEater
It’s not Ben
@@p.scottdevos1235 Ohhh.... SHAME ON ME!!!! Anyway.. I think you are most likely to use a FIFO or Dual Port than me. I just don´t have time to play with these, unfortunately.
Your channel is underrated. Keep up the good work
Thank you! That is so kind.
This really makes me feel like I need to get back to my own huge messy computer+video display breadboard project. Using a flash chip to compact the video timing signal generation is a really interesting approach as an alternative to "smart" programmable logic. (And a cool throwback to how fast PROMs were often used for this sort of job before PALs/GALs became common.) I'm interested to see how this is going to progress. The approach I'm taking with my own project is using an ATMEL 8-bit MCU as a CRTC, because I want to be able to support multiple video modes with different addressing strategies (while keeping the actual pixel generation and shared VRAM access "real hardware", vs. the now common approach of using a hulking powerful MCU as a complete graphics coprocessor/video generator), but it is serious overkill for a lot of applications.
Thanks, my friend. I love your videos, too. My first computer was a TRS-80 Model I level II. I've been wanting to build a work-alike on breadboards, but I misplaced my copy of the "TRS-80 Technical Reference Manual" when I moved to Florida.
I have to get back to my board. I have yet to get the second chip to blink the lights lol appreciate your videos to add on
Thank you. I enjoy making them.
If there's one thing I really don't like about the 6502 compared to the Z80 (or intel 808x family) it is the phased clock timing voodoo. I mean, don't get me wrong, the 6502's predictable 50/50 bus duty cycle makes it really "easy" to do hitless shared memory between video refresh and CPU (as long as you don't mind your CPU clock being tightly coupled to video timing), but for the simple case the Intel/Zilog bus timing is *so* much more forgiving. (If the timing diagrams in the Z80 manual are to be believed you get basically a whole half-clock of slop after /WR rises for your memory device to latch the data.)
The timing is a challenge for sure.
There's a trick called "trampolines" that you could use to avoid the need to ever set your vectors. Put at the top of your ROM assembler file (say 0x8000) the instructions: jmp irq; jmp nmi; jmp reset. Then put the vectors at the top pointing to 0x8000, 0x8003, 0x8006 (and write those into the EEPROM). After that, in your usual dev cycle you write normally your code under the irq:/nmi:/reset: labels. No matter which piece of code changes, the jmp instructions at the top of your rom will be reassembled with the correct target addresses and will be uploaded to your EEPROM on the next update. The only cost for those is 9 bytes, and you no longer need to worry about having forgotten to update your vectors.
That sounds like a pretty neat trick. I went another direction which you can see in my latest video, but I may give it another try.
Interesting that there are no visible decoupling decapacitors.
I'm not sure I understand. What would I be decoupling?
@@p.scottdevos1235Noise induced on the power rails by one component, affecting others.
nice
Thank you!
Maybe a script would help? I noticed a little of ums.
A little?
@@p.scottdevos1235 yes a little not a lotttle
Hi Scott, first one thing: stop using the Eh when you need time to think. I did it myself and I stopped with it when I was attended to it. By the way, why is your logo a duck with hat while your name is The Fox? I love the 6502 and I am thinking about it to make one on my own, I was thinking on a clock-generator that is going to the max when possible and when the processor is addressing slower RAM / ROM that then the clock is reduced in speed. On the dark side of computing they do the same, high speed RAM for doing calculations and low speed RAM for storage of data. Why would the evil empire have all good ideas. It becomes time that all 6502 owners stand up for their rights.
Thanks for the suggestion.
Soon I'll also build mine just waiting for few parts to arrive. Great vid subbed your channel
Thank you! I hope you have fun building it!
Great video. Thanks for sharing.
Thanks for watching!
I love how you implemented the debug function on the LCD, all the while being able to use the LCD to display messages
Thank you. This was a fun one.
Also, love your stuff. Subscribed!
I love the Mad Max reference :D I'm gonna start using it in my "hello world" messages :D
Thank you!
Also, FWIW, the TAX at line 180 is unneeded and has been removed from the most recent version of the code.
FWIW, the B (or BRK) flag is used to tell the IRQ routine that it was called by the BRK opcode rather than by a hardware interrupt.
That's very interesting! Subscribed for more 6502 videos! :)
Thanks!
The ‘-L <listfile>’ option will create a listing with the address, opcode, operands, and source for each line of code. Much easier than interpreting the a.out.
Thank you! I will try that.
Nice work!
Thank you!