Re: Vulcan-74 - A 6502 Retro MegaProject
Posted: Fri Oct 16, 2015 2:54 pm
Update -> The 6502 is up and running!!
This is a milestone for this project, as I have exceeded every original goal.
For the last few days on my daily hour commute, I have been thinking about how I should approach my 6502 migration and learning curve, and eventually came up with the plan to start with one of the many good basic web tutorials available, and eventually get an LED to flash from my IO decoding scheme.
I then remembered that this is totally not my style, and within an hour had the AVR yanked and the 6502 completely wired up to SRAM and the 80 IO decoding logic based on my napkin sketch!
From there I wrote a Visual Studio program that would take the HEXDump from the amazing Easy6502 site, and convert it into a .DC.B (byte file) that I could load into the AVR that preloads the 6502 program memory. I then wrote some 6502 code to do basic control tests, added it to the AVR, which allows the AVR to bootstrap the SRAM while holding BE and RS low. From there, the AVR goes invisible and allows the 6502 to take over. Besides the reset vectors, the rest of the program code lives at address 768 and higher, with my 80 IO lines mapped at address 512.
With the 6502 clocked at a very conservative 4MHz, everything worked perfectly on the first power up!
The result was the Vulcan-74 Video System swapping the Live and Back Buffers at 60 frames per second while drawing a few pixels directly to the Video Memory.
If one command (IO toggle) works, then they certainly all work!
I had figured that getting the 6502 working would have been one of the more challenging parts of this project, but so far it seems otherwise!
Once I add the faster 10ns program memory (using 15ns now), I will up the clock to 20MHz and see if it all holds together. 16MHz is my fallback.
So far, the most challenging parts of this project have been the Sprite Transparency Logic and the high speed section of the PlayField Generator.
The Audio Generator will also be very easy, as there are no extreme high speed timing issues to deal with.
The boot section will probably be somewhat of a challenge, as one of the requirements is to drive data from a large Serial Flash Memory (External Game Cartridge) to the 6502 Program Memory using only logic. There will be some Serial <-> Parallel magic to deal with when streaming data and sending commands to the Serial Flash.
Anyhow, I am all hyped about seeing the 6502 in the Captain's chair, and will do a few more tests before I clean up the mess of wires coming from the 6502.
I am now deciding on a proper assembler to use, and will begin making the "Kernal", which will be a collection of routines to drive the Vulcan Hardware.
Looks like the WDC toolchain is the most full featured offering so far.
The 65C02 is a great processor to use! Super easy to program and connect to the real world.
I can see this being a very fun platform to program.
Cheers!
Radical Brad
This is a milestone for this project, as I have exceeded every original goal.
For the last few days on my daily hour commute, I have been thinking about how I should approach my 6502 migration and learning curve, and eventually came up with the plan to start with one of the many good basic web tutorials available, and eventually get an LED to flash from my IO decoding scheme.
I then remembered that this is totally not my style, and within an hour had the AVR yanked and the 6502 completely wired up to SRAM and the 80 IO decoding logic based on my napkin sketch!
From there I wrote a Visual Studio program that would take the HEXDump from the amazing Easy6502 site, and convert it into a .DC.B (byte file) that I could load into the AVR that preloads the 6502 program memory. I then wrote some 6502 code to do basic control tests, added it to the AVR, which allows the AVR to bootstrap the SRAM while holding BE and RS low. From there, the AVR goes invisible and allows the 6502 to take over. Besides the reset vectors, the rest of the program code lives at address 768 and higher, with my 80 IO lines mapped at address 512.
With the 6502 clocked at a very conservative 4MHz, everything worked perfectly on the first power up!
The result was the Vulcan-74 Video System swapping the Live and Back Buffers at 60 frames per second while drawing a few pixels directly to the Video Memory.
If one command (IO toggle) works, then they certainly all work!
I had figured that getting the 6502 working would have been one of the more challenging parts of this project, but so far it seems otherwise!
Once I add the faster 10ns program memory (using 15ns now), I will up the clock to 20MHz and see if it all holds together. 16MHz is my fallback.
So far, the most challenging parts of this project have been the Sprite Transparency Logic and the high speed section of the PlayField Generator.
The Audio Generator will also be very easy, as there are no extreme high speed timing issues to deal with.
The boot section will probably be somewhat of a challenge, as one of the requirements is to drive data from a large Serial Flash Memory (External Game Cartridge) to the 6502 Program Memory using only logic. There will be some Serial <-> Parallel magic to deal with when streaming data and sending commands to the Serial Flash.
Anyhow, I am all hyped about seeing the 6502 in the Captain's chair, and will do a few more tests before I clean up the mess of wires coming from the 6502.
I am now deciding on a proper assembler to use, and will begin making the "Kernal", which will be a collection of routines to drive the Vulcan Hardware.
Looks like the WDC toolchain is the most full featured offering so far.
The 65C02 is a great processor to use! Super easy to program and connect to the real world.
I can see this being a very fun platform to program.
Cheers!
Radical Brad

