Hi!
So, nur noch 24 Fixmes und Laden/Speichern scheint zu funktionieren - Zeit für ein Release.
Sicherlich erinnert sich irgendjemand an mein Posting in dem ich anmerkte, dass man am besten fast den kompletten Code von MMC2IEC wegwerfen und alles neu schreiben sollte. Ich habe das dann einfach mal gemacht - das Ergebnis ist sd2iec, welches mit MMC2IEC eigentlich nur einen Teil der config.h sowie die SD-Zugriffsroutinen gemeinsam hat.
Vorteile:
- Hält sich deutlich besser ans IEC-Protokoll weil ich mich ziemlich dicht ans 1571-Rom gehalten habe. Beispielsweise funktionieren die Directory-Lister von Jiffy+DolphinDOS beide einwandfrei.
- Der Aufbau des Directories das an den C64 geschickt wird ist identisch zu dem was die Commodore-Floppys erzeugen. Insbesondere werden die Dateigrössen (aber nicht der freie Platz) auf 254-Byte-Blöcke umgerechnet.
- Ich finde den Code lesbarer und besser erweiterbar
Nachteile:
- Viele Features von MMC2IEC fehlen, darunter D64/T64/M2I-Unterstützung und Unterverzeichnisse.
- Es gibt zwar eine Auswertung für den Kommandokanal, die kann aber bisher nur UJ (Reset), M (wird als Hexdump auf die serielle Schnittstelle geschoben, Bonusfeature für Shadowwolf
), S: für einzelne Dateien und E<num> um die Fehlermeldung mit Nummer <num> zu erzeugen (praktisch zum Testen!).
- Die Karte wird nur beim Reset initialisiert, daher geht auch kein Kartenwechsel im Betrieb.
- Kaum getestet, insbesondere nicht am DTV und nur mit einem Quarz als Taktgeber.
- Schon jetzt fast so grosser Code wie MMC2IEC
- Kann unter ungünstigen Umständen in einen Zustand geraten in dem ein Controllerreset der einfachste Ausweg ist. MMC2IEC arbeitet intensiv mit Timeouts, mein Code nicht. Nachrüsten ist auch nicht ganz einfach, manche Zustände dürfen wirklich beliebig lange dauern.
- Keine der diversen Ideen wie man MMC2IEC erweitern könnte wurden umgesetzt.
- Die Fehlerbehandlung ist teilweise nichtexistent oder im Vergleich zur 1571 falsch. Die Aktualisierungen des Fehlerkanals müssen nochmal genau überprüft werden, evtl. fehlen diese an einigen Stellen oder werden doppelt ausgeführt (Symptome: 73 statt 00 oder 00 statt Fehler)
- Wildcards in Dateinamen fehlen noch komplett.
- Erwähnte ich schon die >20 FIXME-Kommentare?
- bestimmt noch mehr was mir gerade nicht einfällt...
Aber um auch mal was Positives nennen zu können: Es ist keinerlei Fastloader implementiert (Jiffy-Erkennung ist drin, aber inaktiv - bastelt jemand Jiffy-Byte-Transfer-Routinen?), trotzdem meldet der 64'er Speed-Test schon Faktor 2.27 für SAVE und 1.61 für LOAD.
GIT-Repository, Sourcen und Binaries unter http://snowcat.de/mmc2iec/
Webinterface für das GIT-Repository unter http://snowcat.de/cgi-bin/gitweb.cgi/sd2iec.git
GIT für Windows existiert, das ist also keine Ausrede um mich zur Nutzung von svn zu bringen: http://git.or.cz/gitwiki/WindowsInstall
Bugfixes/Erweiterungen bitte als Patch oder als git pull-fähige URL an die Mailadresse in den Sourcen.