Wird der C128 noch kommen?
kurze Antwort: nicht durch mich
lange Antwort:
Ich ziehe meine Motivation für dieses Projekt aus Erinnerungen mit dem C64/Amiga. Zum C128 habe ich keinen Bezug und die Software dafür macht es nicht besser. Zudem fehlt mir einfach die Zeit.
Denise ist von Anfang an als Multi Emulator konzipiert. Jedoch will ich das bei weitem nicht in dem Stil wie RetroArch betreiben und mich auf Computer anstatt Spielkonsolen fokussieren.
Ein Emulator Interface generiert die grafische Nutzer Oberfläche. Natürlich stößt das Konzept schnell an Grenzen, da jedes System individuelle Elemente enthält. Vieles an Arbeit, wie das Verwalten von Disketten, Emulator Optionen, PAL Konfigurationen, Border, Memory Init Pattern, Firmware, ... trifft auf jeden Computer gleichermaßen zu und kann somit schnell und automatisiert generiert werden.
Um zum Ende zu kommen, nach der Amiga Emulation des Grundgerätes möchte ich das obige Konzept soweit stehen haben, das Interessierte neue Kerne hinzufügen können. Zum warm werden vielleicht einen C16 Kern.
Das wäre die einzige Chance außer C64/Amiga 500/Amiga 1200 weitere Emulatoren in Denise zu präsentieren.
Ich glaube, wir "müssen" deswegen Erkenntnisse austauschen. Wenn Du das hinbekommen hast, must Du ja zwangsläufig über MFM auf Disketten recht viele Erkenntnisse haben... ich brauche Infos wegen Implementierung in g64conv...
Ich habe das halbe Atari Forum durchgelesen. Im Atari wird der WD1772 verwendet und somit im Zusammenhang mit kommerzieller Software und Kopierschützen. Sag einfach was du genau brauchst.
Grundsätzlich gibt es nur 3 MFM Patterns, die der Controller liest/schreibt.
101 -> 4 micro
1001 -> 6 micro
10001 -> 8 micro
Das gilt für alle Tracks. Speedzonen gibt es nicht. Um Bit Shifting auf den inneren Tracks zu verhindern und somit die Langlebigkeit der Disks zu erhöhen, verwendet der Controller Write Precompensation.
Hierbei wird der Flusswechsel je nach eingehendem Bitmuster um 128 nano nach recht oder links verschoben.
Der Controller sucht nach Sync Pattern 0xA1 und 0xC2 mit fehlendem Clock Bit. Nur dadurch kann bei den folgenden Daten sicher gesagt werden ob er gerade ein Daten oder Clock Bit liest.
Das fehlende Clock Bit erzeugt ein pattern, was niemals aus Daten erzeugt werden kann. Somit kann das Sync Pattern nicht zufällig in den Sektor Daten fälschlicherweise gefunden werden.
Das gilt aber nicht für 0xC2.
.....