Thanks, it is probably the spaces as suggested. I will look into this more once all of my routines (Kernal) are ready, as they will end up as one big Include file.
Everything else is coming along nicely!
I have perfect operation at 10MHz, and before I dig into my clock hold-back idea, I want to optimize the entire set of routines so that I can give the board a real workout. Since I do not have the large Flash Memory (External Cartridge) installed yet, I am storing a few sprites as .BYTES directly in the 64K program memory, but this is working fine for testing. My testing goal will be to write a demo that exercises every single Vulcan IO pin and function extensively from a 6502 program that fills the entire 64K Program Memory space. Once successful, I will add the SPI Flash reading routine to the Kernal and then continue testing using massive Sprites and PlayField graphics loaded form the Cartridge by the 6502.
I have also been considering the idea of some 64K math lookup tables, since I am using only 64K of the 512K SRAM that directly connects to the 6502. With 7 free 64K pages, I could add a simple "Bank Switch" register that would allow the 6502 to swap into a lookup table, store the results in some unused Video Memory address, and then swap back t the main program. This could allow for seriously fast multiplication, division, and even a Sine lookup table. i have several ideas on how to make this work in less than 10 clock cycles.
My AVR <-> 6502 assembly learning curve is also starting to flatten out.
It has really just been a translation issue so far, as I can already code AVR assembly as fast as I can type (2 finger typing, but still fairly quick!).
The only smack across the face has been lookup tables. Having only an 8 bit index is a real clunker! Even my tiniest sprite is 1k in size (32x32)!!
On the AVR, you just set the Z register to some 16 bit value, and then do a post increment after reading from data space. You can read 64K this way.
On the 6502, you specify and address and an 8 bit index, so you can only reach 256 bytes of data before needing to re-address!
Once I have the Cartridge memory to store graphics, this won't be an issue, but for now, I am needing to read about 16K of Sprite data.
As a work around, I modified my Bitmap to Sprite converter to add address labels every 256 bytes. This is working ok for testing.
Some aspects of 6502 assembly seem clunky, but others seem better than AVR. I do like the BIT command!
In order to "ease" my transition, I consider Zero Page to be working registers R000 to R255. Nice to have 256 general registers!
I am currently coding a test program that will bounce a bunch of 32x32 colored balls over a scrolling PLayField image drawn programmatically.
The test program will also include the dual joystick port for a full test of all of the Vulcan-74 IO space.
I will post photos and a video when this is completed. Perhaps next week if my progress on the Chicken Coop I am building is good! Cluck! CLuck!
The Kowalski Assembler has been great to use so far. The inline help is all I am using to learn 6502 assembly!
http://www.exifpro.com/utils.htmlI have automated my programming procedure, so I can make a code change and see it on the Vulcan-74 screen within 10 seconds...
- Write code in the Kowalski Assembler.
- Press assemble, and then save the Binary image
- Click my 6502 -> AVR data converter, which makes an AVR include file, then launches AVR Studio automatically.
- Click "Start" in AVR Studio, and within 4 seconds, the 64K on the Vulcan board is loaded with the image.
- As soon as the image is loaded, the 6502 is taken out of BE and RS, and the program runs.
This type of rapid development will also be possible when I have only the Vulcan-74 Boot System completed.
I intend to add a "Programming" jack that will allow uploading directly to the Cartridge that is plugged into the Vulcan-74 Cartridge slot.
This would be like using a Cross Compiler for the 64 that directly burns a Cartridge plugged into the C64 in 10 seconds!
So to sum up my ramblings... everything is progressing nicely under 6502 control!
I am looking forward to populating the other massive breadboard with the 4 Voice Sound Generator.
Ok.... back to the boring, bloated, redirected and obfuscated 64 bit World until next weekend!
Cheers!
Radical Brad