Hallo Besucher, der Thread wurde 1,4k mal aufgerufen und enthält 3 Antworten

letzter Beitrag von M. J. am

Merkwürdiges Verhalten in Vice bei der Positionierung des Lesekopfs in der 1541-Emulation

  • (Sorry, wenn ich hier in der falschen Rubrik schreibe, aber ich wußte nicht genau, wo ich das Thema einordnen sollte. Notfalls bitte umsortieren. Danke.)


    Beim Austesten eines alten Spiels mit einem Schnellader fiel mir folgendes merkwürdiges Verhalten in VICE auf (Version 2.4.30-x86-r31929 von Pokefinder):


    Wenn das Spiel beim Nachladen der Daten einen Lesefehler bemerkt (der Sektor kann nicht gefunden werden), wird als Notmaßnahme nach einiger Zeit eine Zwangskalibrierung des Lesekopfes auf Spur 1 vorgenommen. Dabei wird der Lesekopf 40 mal Richtung Spur 1 bewegt, so daß anschließend der Kopf unbedingt auf Spur 1 stehen müßte. Anschließend wird der Kopf auf die eigentlich gewünschte Spur gefahren. Den Effekt kann man beobachten, wenn man die Diskette vor dem Nachladen aus dem Laufwerk auswirft. Soll z. B. von Spur 10 gelesen werden, fährt das Programm den Kopf nach einiger Zeit auf Spur 1 und dann auf Spur 10... Nein, leider nicht ganz. Es fährt ihn nur auf Spur 9. Im internen Zähler des Schnelladers jedoch findet sich der Eintrag 10, und es wurden auch 10 mal die Routinen zum Bewegen des Lesekopfes durchlaufen. Trotzdem steht der Kopf erst auf Spur 9. 8|


    Jetzt wird es verrückt: Das Programm hält an und fordert zum Einlegen der Diskette auf. Ignoriert man dies und drückt einfach eine Taste, wird ein erneuter Leseversuch unternommen. Dabei wird nach einiger Zeit der Kopf wieder zwangsweise auf Spur 1 gefahren und zurück, doch diesmal korrekt auf Spur 10. :hae:


    Dieses Verhalten geschieht nun im steten Wechsel. Zuerst wird der Lesekopf falsch auf eine Spur unter der gewünschten gesetzt, dann auf die richtige Spur, dann darunter, dann richtig usw. In der alten VICE-Version 2.4 ist dieses Verhalten übrigens nicht zu beobachten. Hier wird der Lesekopf stets auf die korrekte Spur justiert.


    Nun frage ich mich, ob das ein Bug im neuen VICE ist oder vielleicht als neues Feature eine Eigenart der Floppy emuliert wird, die vorher fehlte. Gibt es z. B. unter der Spur 1 noch eine Spur 0, so daß der Lesekopf zu tief gesetzt wird und deswegen auf eine zu niedrige Spur bewegt wird? Aber wieso geschieht dies dann abwechselnd? :gruebel
    Mich würde sehr interessieren, ob dies ein Feature im Emulator ist oder ein ernstes Problem im Programm. (Im Programmcode selbst konnte ich bislang keinen Fehler feststellen. :/ ) Kennt vielleicht jemand den Grund?

  • Das Rom ist bei diesem Vorgang nicht involviert. Der Lader verwendet nur eigenen Code.


    Ob 1541 oder 1541-II ist egal. Auffallend ist nur, daß sich der Fehler manchmal nicht sofort zeigt, sondern erst nach einigen Diskettenzugriffen. Es macht einen recht willkürlichen Eindruck.


    Die Diskette liegt im D64-Standard vor.

  • Hier noch der isolierte Code zur Bewegung des Lesekopfs: