I have been cleaning up the wiring in my 15 minute spans of free time, and the board is starting to look good again.
The 44 remaining long wires are the IO lines, each of which basically toggle a bit to register some data.
The IO lines will soon be multiplexed to work with the 6502 using an untested scheme I came up with.
The next step will be to add the multiplexer into the last bit of free board space and then run a final test with the AVR.
Once the multiplexer is proven to work, I plan to swap in the 6502, using an AVR to boot load it's SRAM as I debug.
The other 24 breadboards are on order, and this will double the size of this board so I can start on the Sound System.
The board as of tonight, after cleaning up the last few control lines...
Here is a huge image of the board in 4000x2000 resolution...
http://lucidscience.com/temp/vt93l.jpgI am looking forward to getting the 6502 installed into Vulcan-74!
The 65C02 is now on a smaller board, running at 28.626MHz, doing a full IO and SRAM test.
The high speed 6502 test works like this...
- AVR holds 6502 in reset as it fills the 10ns SRAM with 6502 code.
- AVR then vanishes off the bus and takes the 6502 out of reset.
- 6502 (running at 28.626MHz), begins executing from the SRAM.
- 6502 code is an audio sample player that loops a 60K sample to a DAC.
- The test is verified by listening to The Terminator speak "I'll be back!".
At 30MHz, the 6502 begins to glitch if you add capacitance and cross-talk to the board using my extremely technical testing method... "place hand over board and jiggle wires to see what happens". Done properly, I can believe that a 6502 can handle 30MHz.
At 28.626Mhz, I cannot make the program glitch no matter how much "foo" I add to the tangle of wires.
That odd frequency is one I used lot while doing AVR video code, as it is a color burst multiple.
I would probably say that 25MHz would be a safe goal using a 6502 directly connected to a 10ns SRAM, but will just drop down to 20MHz for this project as it is already provided by the Video Section. The 6502 only needs to direct the GPU, and has no part of video generation, so it's not like I need warp speed.
I now need to decide on my 6502 toolchain. Currently, I just write the assembly in one of those java simulators and then copy the output into my AVR program, which then boot-loads the SRAM. I will eventually want a nice and simple compiler that will make my workflow as efficient as possible, which will be...
- Write assembly
- Compile to a data file
- Copy data file to my "cartridge loader"
- Press the "load button"
- See results on VGA monitor!
My current test loader is an AVR system I made that just spews the compiled 6502 program to the 64K of program memory that the 6502 uses.
Later, this loader will also write game graphics and samples to the serial flash memory used as the game cartridge.
In the completed design, Vulcan-74 will have this boot-loader functionality built from the usual 7400 logic, as one of my firm goals is to have absolutely no modern parts connected to the board. The actual "cartridge", which is a single 4-16mb serial flash memory is external, so this does not break the rules.
As for supporting development of a game cartridge, I have been working on a PC program the currently has the following features...
- Conversion of standard BMP files to RRR-GGG-BB encoded data files for used by the Video Processor.
- Conversion of standard WAVE files to 8 bit mono encoded sample files for use by the Sound Processor.
This Vulcan-74 Tool will also include a "Cartridge Program" function that will pack all of the sound, data, and 6502 code into a single file and then write it to the serial flash with the help of an AVR dongle I made that receives the data from the PC USB port.
So game or demo development will go like this...
1) Make game graphics and sprites using your favorite PC image editor. Save as BMP files.
2) Make and edit game sound effects and music on your PC sound editing program. Save as WAVE files.
3) Write 6502 code in you favorite IDE. Save as HEX file.
4) Open "Vulcan-74 Editor" and select all of the files listed above.
5) Insert the cartridge into the top loading cartridge port on the Vulcan-74 box.
6) Place the connector on the AVR / USB based loading system into the "Programming Port" on Vulcan-74.
7) Press the "Program Cartridge" button on the PC, and watch your game or demo spring to life!
Once a Cartridge has been programmed, it is fully independent of any external PC program or hardware.
I will probably keep to the retro feel, and make cheesy looking decals for each cartridge case (small black box), making them look like the old VCS cartridges!
To demonstrate the "External Cartridge" concept, here is a video showing one of my very early "and crude" DIY video game systems that uses a micro controller as the game cartridge. This one is parallel, so it has a lot of wires to the port. Vulcan-74 will have only 4 wires to the cartridge port since it will be serial.
Sorry for the video quality, this was done in 2005-2006 when my camcorder was still VHS!...
https://youtu.be/IyQP5MmQR7wI have learned a few new tricks since that prototype was made, 10 years ago! Fun to look back at all the hacks, though. Note the car graphics stolen from Amiga "Test Drive"! Also notice the term "Basic Stamp"... this was what all the cool kids used before the Arduino and Raspberry Pi.
Seems I have a fetish for bouncing, spinning checkered balls.
Will post photos again when I have the IO multiplexer installed, as well as the new expanded board section.
Later...
Radical Brad