Ok, the first test has been successful.
This test circuit holds the VIC in reset, and then stuffs an SRAM with boot code.
The AVR that loads the SRAM then disappears and the VIC takes over.
When my system is done, the boot code (new Operating System) will come form an external source.
Here is the simple board that buffers the SRAM on the bus...
This is an instantly loadable cartridge for the VIC-20!
I have the SRAM sitting as 8K in block 5, and this code is stuffed into the SRAM on power on...
Code: Select all
; START ADDRESS = 40969 @ 40960 TO 40961
.ORG 40960
.BYTE 9,160
; RESET ADDRESS = 40969 @ 40962 TO 40963
.ORG 40962
.BYTE 9,160
; BOOT CODE = A0CBM @ 40964 TO 40968
.ORG 40964
.BYTE 65,48,195,194,205
; PROGRAM START @ 40969 TO 49151
.ORG 40969
MAIN:
; CYCLE COLORS
INC 36879
JMP MAIN
Once the Kernal finds the secret "A0CBM" string at location 40964, it runs the loop.
The loop just increments the screen colors as fast as possible.
The effect is kind of interesting, looking like a low res plasma effect...
Color cycle code running from the fake cartridge.
This is just a sliver of a much larger journey, but it does feel good to see some progress.
My next step will be to extend the OS "ROM" to 32K in size.
Code: Select all
BLK-1 : 8K
BLK-2 : 8K
BLK-3 : 8K
BLK-5 : 8K
IO2/3 : External IO
I will map that 3K "hole" to become my external IO system.
As for register space, I will just use the original VIC internal memory.
The OS will eventually become many paged 24K segments, each with a different function.
The first page will be the IDE, which will be an assembler.
Other pages will include tools like graphic editors, a music tracker, and other utils.
Of course, things will evolve as I start plugging in the million or so wires on the giant breadboard!
Cheers, and thanks again for this amazing VIC resource!
Radical Brad