#469 Easyflash / RAM initialization $DF00-$DFFF should not be zero.

v2.4.x
pending-fixed
gpz
None
x64
2014-03-16
2013-09-18
The Joker
No
  • what VICE version are you using?
    WinVICE-2.4.5-x86-r27762

  • what operating system are you using?
    Win7 (64bit)

  • what did you do?
    I tried the game "Legend of Blacksilver" (Version: Test2) for Easyflash (https://sites.google.com/site/saxxonpike/LegendOfBlacksilver-Test2.zip?attredirects=0) on real hardware.

  • what did happen?
    It does not boot on a real Easyflash hardware, but in Vice everything works fine!

  • what did you expect to happen?
    The program should not boot in VICE.

  • what is the problem?
    The xbank-format (cart id:33) stores the starting bank in $DF00.
    Some people believe (yes, that's a bad idea), it's the same way for the easyflash-format (cart id:32) and start their programm with:

     LDX $DF00
     INX
     STX $DE00     ; Set Bank
    

Vice initializes $df00 always with 0. After the INX-command the X-register is always 1. So it starts always with bank 1. On real hardware (cart id:32), the value in $df00 is generally not 0. So it jumps into the wrong bank and the program crashes.

In my opinion, the memory area $DF00-$DFFF of the Easyflash-RAM in VICE should be initialized with nonzero values (for example $55, $aa) ​​or random pattern.

best regards,
the joker

Discussion

  • gpz
    gpz
    2014-01-25

    actually the RAM was not initialized at all, so the content was already kind of random (but indeed mostly 0s in practise) :)

    changed it to initialize with 0xff in r27892, that crt doesnt work anymore as it should :)