LOAD stürzt ab wenn Sprites in Win VICE 3.1 eingeschaltet sind

Es gibt 1 Antwort in diesem Thema, welches 929 mal aufgerufen wurde. Der letzte Beitrag (13. März 2019 um 00:19) ist von Unseen.

  • Ich hab folgendes gemacht:
    1. VICE eingeschaltet (C64C PAL, keine Cartridges, True Drive emulation (1541-II, nur Drive 8), Drive sounds enabled)
    2. Alt+8 -> neues d64-Image "testdisk.d64", attach

    Dann folgendes Programm eingeben:

    Code
    10 poke53248,2:poke53249,120
    20 poke53252,92:poke53253,120
    30 poke53269,5

    dann save "crash",8 und nochmal save"crash2",8

    jetzt das Programm mit RUN starten, aufgrund meiner Speicherinitialisierung sehe ich ein weißes Viereck fast ganz im Rand und ein türkises auf derselben Höhe mehr in der Mitte.

    Das war noch alles zu erwarten.

    Aber wenn ich jetzt LOAD"$",8 eingebe, hängt sich der Rechner beim Laden auf.

    Habe es mehrmals probiert, Ergebnis ist dasselbe solange ich die Schritte wie oben ausführe. Hat jemand eine Erklärung dafür? Ist das ein Emulatorartefakt oder könnte das auch auf einem richtigen C64+1541-System passieren?

  • Hat jemand eine Erklärung dafür?

    Wenn Sprites eingeschaltet sind muss der VIC die Daten dafür aus dem Speicher laden, dazu hält er die CPU in jeder Bildschirmzeile kurz an. Das stört das Timing auf dem IEC-Bus je nach Anzahl der in einer Zeile aktiven Sprites mehr oder weniger stark, so dass in manchen Konstellationen das Laden mit Kernalroutinen nicht mehr funktioniert.

    Wenn ich mich recht entsinne hast du auch eine besonders ungünstige Spritekombination gewählt, jedes zweite Sprite zu verwenden kostet genauso viel CPU-Zeit als ob man die Sprites dazwischen ebenfalls eingeschaltet hätte.

    Zitat

    Ist das ein Emulatorartefakt oder könnte das auch auf einem richtigen C64+1541-System passieren?

    Natürlich kann das auch auf einem richtigen System passieren. Es ist eher umgekehrt: In einer schlechten Emulation tritt das Problem nie auf.

    10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    20 forj=1to5:printchr$(rnd(1)*16+70);:next
    30 printint(rnd(1)*328)-217

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.