Found a few minutes today to have a look at the cartridge system. As it was implemented the vic didn’t start the rom when doing a reset. As found in the documentation linked in the previous post the vic expects some magic bytes at a specific address to autostart a cartridge:
$A000 Low-byte of a 16-bit "hard start" address (to begin at)
$A001 High-byte of the 16-bit "hard start" address
$A002 Low-byte of 16-bit "warm start" address (restore key)
$A003 High-byte of 16-bit "warm start" address
Address______Hex value_____Decimal value____ASCII values
$A004 $41 65 Capital "A"
$A005 $30 48 Digit "zero"
$A006 $C3 195 Reverse "C" character
$A007 $C2 194 Reverse "B" character
$A008 $CD 205 Reverse "M" character
It looks like that those dumped roms (.prg) have two extra bytes in the beginning. Shifting the access to those roms two bytes up made it work:
As usual the source code can be found in my github repository.
Looks like that there’re different dumps available. Found a side with .a0 cartridges which doesn’t need the shift.
2 thoughts on “VIC20 for the MiST fpga (part 2)”
With the two extra bytes the rom should actually ve loadable as a prg. These two bytes contain the target address which should be a000 for a cartridge.
Figured that later on. It seems to be that there are cartridge ROMs with load address and without. The current implementation expects .crt ROMs without load address.
I’ll have a look at the TOSEC crt dumps to see what format they are and will adapt the vic to it.