sd2iec 0.3

  • Ich überlege gerade ob ich dieses Release als "Irgendwas kommt immer dazwischen" (erst eine kleine Erkältung, dann ein Plattenausfall im Fileserver) oder als "Inkompatibel wäre einfacher gewesen" betiteln soll. Es gibt diverse Möglichkeiten, einen kurzen, eleganten und falschen Parser für CMD-Pfadangaben zu schreiben...

    Neue Features:
    • Turbodisk-Fastloader-Support
      Ein 8MHz-Quarz am AVR ist dafür Pflicht, grob über den Daumen gepeilt müssen es deutlich unter 400ppm Frequenzfehler sein. Den Speeder selbst gibts in Serieller Floppy Speeder ohne Bastelei - beide Turbodisk-Versionen auf der Diskette verwenden das gleiche Protokoll.
    • CRC-Prüfungen bei Karten-Zugriffen
      Evtl. ändern dadurch einige Karten ihren geht/geht nicht-Status. Eigentlich könnte ich das auch wieder rauswerfen weil die Probleme in meinem Aufbau gelöst sind, aber ich mag paranoide Programmierung.
    • Kartenwechselerkennung
    • Save-with-Replace, also speichen mit "@name"
      Im Gegensatz zum Orginallaufwerk ohne Bug, allerdings wird die Datei erst gelöscht und dann neu gespeichert.
    • Wildcards bei allem was bisher implementiert ist
      Noch eine Sache die ohne CMD-Pfade deutlich einfacher gewesen wäre.


    Zu finden wie üblich unter snowcat.de/mmc2iec/ - sowohl als Binary für die Shadowwolf-Hardware sowie als Hex-File für Lars-kompatible Aufbauten.

    Quellcode

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

    sd2iec Homepage
  • Originally posted by MasterJulian
    Das hört sich super an. Wo genau muss ich den 8MHz-Quarz anschließen?


    An den Pins die im Bild vermerkt sind, ausserdem brauchts noch die beiden auch eingezeichneten 22pF-Kondensatoren.

    Solltest du eine von Shadowwolfs Platinen damit nachrüsten wollen wünsche ich viel Glück und eine sehr ruhige Hand...

    Ausserdem müssen noch die Fuse-Werte mittels Programmiersoftware umgestellt werden damit der Chip den externen Quarz statt des internen Taktgebers verwendet, 8MHz zählen dabei als "high frequency".

    Ich habe keine Ahnung welche Programmiersoftware du verwendest, wenn die die beiden Fuse-Werte einfach als Hexzahl ausgibt und annimmt dann gibts unter palmavr.sourceforge.net/cgi-bin/fc.cgi?P_PREV=&P=ATmega32 ein praktisches Script das die Werte decodiert und Änderungen einrechnet. Die Hexwerte kann man oben rechts eingeben (mit dem Button dahinter bestätigen!) und nach Änderungen die neuen Werte auch da ablesen.

    Für den Quarz muss man da die erste Zeile auf "Ext. Crystal/Resonator High Freq.; Start-up time: 258 CK + 4 ms; [CKSEL=1110 SUT=00]" umstellen, ausserdem würde ich noch empfehlen die zweite Zeile auf "Brown-out detection enabled" zu schalten.

    Bei Problemen einfach hier jammern. =)
    Bilder
    • bild.png

      4,65 kB, 300×257, 312 mal angesehen

    Quellcode

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

    sd2iec Homepage

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Unseen ()

  • Danke Ingo!!!


    An meine Platinen einen 8 MHz Quarz anzuhängen halte ich für fast aussichtslos.
    Wenn der ISP-Stecker nicht bestückt ist könnte das vielleicht noch gehen ist aber immer noch sehr fummelig.
    Die Teile habe ich inzwischen auch da, konnte das nur noch nicht ausprobieren.


    22pF werden es aber nicht bringen, das ist wahrscheinlich zu wenig, besser sind wohl 47pF, das muss ich aber noch nachmessen.
    Bei einem 90CAN32 mit 16 MHz Quarz hatte ich das Problem vor kurzem.
    Erst mit 56pF kam ich auf 16,0000 MHz.

    Die (Test-)Version 1.8 meiner Platine habe ich auch gerade fertig, am Montag bekome ich davon die ersten Probe-Platinen.
    Wenn das so klappt wie ich mir das vorstelle dann würde ich Dir auch gerne eine "aufdrängen", Ingo. :)

    Das gerenderte Bild ist wie immer etwas seltsam, die Transistoren sehen nicht so aus und auch der MikroMatch ist nicht in SMD...
    Die Kondensatoren für den Quarz sind auf der Unterseite, ebenso vier Widerstände für die IEC-Level-Shifter.
    Der kleine Widerstand zwischen dem Controller und den Transistoren verbindet die ATN-Leitung mit INT2, wird also wahrscheinlich nicht bestückt und fliegt später wieder raus.


    Zu einer möglichen 2.0 irgendwann sieht es so aus, dass die XMega dafür nicht in Frage kommen da diese soweit ich jetzt gehört habe nicht im Frühjahr verfügbar werden.
    Die werden wohl zur EmbeddedWorld im Februar offiziell vorgestellt und sind dann vielleicht in der zweiten Hälfte 2008 zu bekommen.

    Der ATMega328 ist also zur Zeit der Top-Kandidat für eine 2.0 für mich, muss aber auch erstmal kommen.
    Bilder
    • mmc2iec.jpg

      70,86 kB, 1.024×631, 325 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Shadowolf ()

  • Ok dein Zeichnung versteh ich nur zur hälfte, XTail1+2 sind Wohl Pin 13 und 12 doch was soll TQFP bedeuten? ist das für die SMD bauweise? Zum programmieren nehme ich PonnyProg, was mus ich da umstellen? Da ich mein MMC2IEC selber gebaut hab, wird es wohl kein problem sein, die Teile anzubringen (ich hoffe ich hab noch ein wenig platz auf der Lochrasterplatine gelassen). Ich werden den Umbau wohl irgendwann nächste woche vornehmen
  • Originally posted by MasterJulian
    Ok dein Zeichnung versteh ich nur zur hälfte, XTail1+2 sind Wohl Pin 13 und 12 doch was soll TQFP bedeuten? ist das für die SMD bauweise?


    Ja, TQFP bezieht sich auf die SMD-Version des Chips. Da du was von Lochraster geschrieben hast wirst du wohl die DIL-Version verwenden, da sind wie schon vermutet Pin 12+13 die richtigen.

    Zum programmieren nehme ich PonnyProg, was mus ich da umstellen?


    Praktisch, das hat jede Fuse einzeln als anklickbares Kästchen. =)

    Ich gehe mal von der neuesten Version aus (2.07a), kann das Programm aber gerade mangels passendem Kabel nicht wirklich testen. Du musst das Programm passend zum Programmieren des mega32 einstellen und dann (vermutlich) in Command->Security and Configuration Bits gehen, im dann aufgehenden Fenster den Read-Button anklicken und hast dann die aktuellen Einstellungen des Chips ausgelesen.

    Sehr wahrscheinlich sind da dann bei CKSEL0/1/3, aber nicht bei 2 Häkchen davor. Du musst die bei CKSEL3 und CKSEL1 entfernen und ich würde empfehlen zusätzlich noch das bei BODEN zu setzen. Danach einmal auf Write klicken und schon läuft der Chip (hoffentlich...) mit dem externen Quarz.

    Wenn der zu dem Zeitpunkt noch nicht angeschlossen ist ist das schlecht, dann funktioniert evtl. keine weitere Programmierung mehr bis der Quarz nachgerüstet wurde.

    Quellcode

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

    sd2iec Homepage
  • hmm der Programmer und die MMC2IEC Platine sind getrennt (ich wollte kein ISP ka wieso). Ich hoffe mal, dass das trotzdem funktioniert (ist ja der Bootloader drauf). Naja wie gesagt ich werde das mal probieren, wenn ich das nächste mal in die Stadt komme
  • Ein neues Feature habe ich vergessen zu erwähnen:
    • Dateinamens-Suffixe werden geparst, d.h. "foo,s,w" öffnet jetzt eine Datei "foo" zum Schreiben. Auf FAT werden die Dateitypen allerdings ignoriert und Relative Dateien sind weiterhin nicht implementiert.


    Na gut, nicht gerade ein wichtiges "Killerfeature". =) Der Modify-Modus arbeitet zZt identisch zu Read weil es die 1541 nahezu genauso macht (da öffnet Modify allerdings auch Dateien mit Sternchen die es auf FAT nicht gibt), ich überlege noch ob ich es zu einem echten Read+Write-Modus ausbaue. Das würde ein paar Umstrukturierungen in der Pufferverwaltung erfordern, wäre dann aber AFAIK kompatibel zu IDE64 - die dafür gepatchten Versionen von Maniac Mansion und Zak würden das brauchen. Aber so lange die nicht mit seriellen Geräten kompatibel sind lohnt sich vermutlich nicht.

    Quellcode

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

    sd2iec Homepage
  • Originally posted by Shadowolf
    An meine Platinen einen 8 MHz Quarz anzuhängen halte ich für fast aussichtslos.
    Wenn der ISP-Stecker nicht bestückt ist könnte das vielleicht noch gehen ist aber immer noch sehr fummelig.
    Die Teile habe ich inzwischen auch da, konnte das nur noch nicht ausprobieren.


    pics.snowcat.de/v/misc/IMG_6199.jpg.html

    (inzwischen mit einem Tropfen Heisskleber gesichert und etwas gereinigt)

    Nein, ich werde mit Sicherheit keinen Aufrüstservice anbieten.

    Quellcode

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

    sd2iec Homepage
  • Originally posted by DrCreep
    verdammt, das krieg ich nie hin :roll:

    wird's denn auch ohne Quarz irgendeine Form von Schnellader geben, oder ist das technisch nicht möglich ??


    Schnellader, die sich für jedes Byte mit dem Rechner synchronisieren sollten meiner Meinung nach auch ohne Quarz machbar sein (aber nagel mich nicht darauf fest falls das doch nicht stimmt - ungeprüfte Vermutung). Der einzige von dem ich mit Sicherheit weiss, dass der in diese Kategorie fällt ist JiffyDos[1], zu dem ich immerhin schon ein paar Notizen zum Timing habe.

    Vielleicht will ja jemand anderes schonmal etwas vorarbeiten und disassembliert weitere Speeder? =) Wenn am Ende ein halbwegs lesbarer Pseudocode rauskommt, der zum einen den eigentlichen Transfer korrekt beschreibt (d.h. am besten mit der Annahme, dass alle Beschreibungen die nicht "warte n Mikrosekunden" lauten keine Zeit benötigen) und zum anderen noch das Protokoll drumherum (woher stammt der Dateiname, wie werden EOI, Lesefehler, File not Found usw. signalisiert, ...) dokumentiert könnte mir das weiterhelfen.

    Ich hänge mal als Beispiel meine Notizen zu Turbodisk an, die sind allerdings in einigen Details nicht ganz so ausführlich wie ich es gerne hätte. high/low darin bezieht sich übrigens auf den Buspegel, die Bits in $1800 sind im Vergleich dazu invertiert.

    [1] Die Timingdiagramme auf NLQs Seiten passen nicht zum mir vorliegenden Rom...
    Dateien

    Quellcode

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

    sd2iec Homepage
  • Original von Unseen
    ...
    Vielleicht will ja jemand anderes schonmal etwas vorarbeiten und disassembliert weitere Speeder?
    ...


    Würd ich glatt machen - wenn ich auch nur die geringste Ahnung davon hätte :D
    Wie geht man denn da vor ?
  • Originally posted by DrCreep
    Original von Unseen
    ...
    Vielleicht will ja jemand anderes schonmal etwas vorarbeiten und disassembliert weitere Speeder?
    ...


    Würd ich glatt machen - wenn ich auch nur die geringste Ahnung davon hätte :D
    Wie geht man denn da vor ?


    Shadowwolf und ich hatten es bisher so gemacht, dass wir die Debugausgabe von sd2iec mitschneiden, aus den Befehlen mittels einem kleinen Programm die Daten herausziehen und das Ergebnis an einen Disassembler weiterreichen (bei mir dxa, keine Ahnung was er verwendet - ich sollte mal schauen ob die alte, angeblich freie Version von IDA schon 6502 kann).

    <Kochsendung> Ich habe das hier schonmal vorbereitet. ;) (aber aus Faulheit ohne Duplikate rauszuwerfen)

    Die Einsprungadresse steht jeweils im Namen der PRG-Datei und manchmal auch als Kommentar am Anfang des Assemblerfiles. Die Textdateien sind die Mitschnitte von sd2iec, nur der Vollständigkeit halber enthalten.

    Zugriff auf eines oder mehrere 1541-Rom-Disassemblate ist sehr zu empfehlen...
    Dateien
    • speedercode.zip

      (37,04 kB, 7 mal heruntergeladen, zuletzt: )

    Quellcode

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

    sd2iec Homepage

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Unseen ()

  • Also, ich hätte da noch so ein paar Protokoll-Dateien, so ein bisschen Vorarbeit konnte ich ja zum Daten-Sammeln schon machen.

    Aber für die Analyse selbst muss ich einsehen bin ich viel zu lange aus 6502 Assembler raus.

    Zwischendurch hat mir auch die Zeit gefehlt.

    Ich hänge nochmal meine Excell-Tabelle an, die jeweiligen Text, Binär oder Disassemblierten Daten habe ich auch.

    Ach ja, ich habe mir ein Programm für DOS geschrieben welches mir aus dem Text-Debug-Mitschnitt eine Binär-Datei für den Disassembler generiert,
    das spart das Abtippen, die Log-Datei muss nur ein wenig bearbeitet werden.

    Dazu muss ich mir mal dringend auch die SD2IEC 0.3 ansehen, in der 0.2 ist das Ausgabe-Format leider völlig anders.
    Nur zum an die Daten kommen stört das nicht wirklich.

    Über VICE habe ich auch schon versucht an die Daten in der Floppy zu kommen.
    Aber irgendwie scheiter ich da an der Bedienung von VICE.
    Wobei man auch das Programm in der Floppy derart manipulieren müsste, dass Nachlade-Code möglichst nicht ausgeführt wird damit man einen definierten Ausgangs-Punkt hat.


    Meine Anfrage nach Fastloader war hier im Forum nicht gerade erfolgreich.
    Hat irgendwie kaum jemanden interessiert soweit...
    Nur ohne Daten keine Möglichkeit was zu bewegen...
    Dateien
    • Fastloader.zip

      (7,54 kB, 6 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Shadowolf ()

  • Ich habe gerade mal die beiden TurboDisk Versionen ausprobiert.
    Das funktioniert mit meinem 1.6'er ohne Quarz nicht wirklich - was zu erwarten war.

    Was aber sehr gut funktioniert ist das Erkennen von Karten-Wechseln,
    das hat mir vorher ein wenig gefehlt.

    Jetzt fände ich es super wenn ich mir eine Lötstation und einen Frequenzzähler auf der Arbeit fürs Wochenende ausgeliehen hätte...

    Da muss ich doch glatt mal versuchen den Quarz mit Hilfe von meinem ERSA Tip260 anzubringen...
  • Originally posted by Shadowolf
    Über VICE habe ich auch schon versucht an die Daten in der Floppy zu kommen.
    Aber irgendwie scheiter ich da an der Bedienung von VICE.

    ALT-H (zum Monitor)
    device 8: (auf die Floppy-CPU umschalten)
    ...dann ganz normal R, M, D, Z etc.

    Auf der Fixing Games for the DTV-Seite hatte ich vor einiger Zeit was zum VICE-Monitor geschrieben. Sich die Schnelllader da drin anzusehen sollte weit komfortabler als in Hardware sein.


    Wobei man auch das Programm in der Floppy derart manipulieren müsste, dass Nachlade-Code möglichst nicht ausgeführt wird

    Dafür sollte ein Breakpoint bei CDBA reichen (break cdba), denke ich.


    Meine Anfrage nach Fastloader war hier im Forum nicht gerade erfolgreich.

    Vielleicht schaue ich mir irgendwann mal den GEOS-Schnelllader an.
  • Thema Quarze und Kondensatoren.

    Ich habe gerade mal nachgelesen, was ich vorher nur gemessen hatte.

    Also, die beiden Kondensatoren liegen in der Ersatz-Schaltung in Reihe.
    Die bilden zusammen in Reihe die Last-Kapazität CL.
    CL = C1*C2 / ( C1 + C2)
    C1 = C2 = CL / 2

    Der 8 MHz Quarz von Reichelt "8,0000-HC49U-S" kommt ohne Angabe von Hersteller oder Datenblatt, im Netz steht allerdings, dass der ein CL von 32 pF hat.

    Damit braucht der zwei Kondensatoren zu je 68 pF.
    Mit 47 pF an diesem Quarz komme ich ziemlich sicher nicht exakt auf 8 MHz.
  • Originally posted by Shadowolf
    Der 8 MHz Quarz von Reichelt "8,0000-HC49U-S" kommt ohne Angabe von Hersteller oder Datenblatt, im Netz steht allerdings, dass der ein CL von 32 pF hat.

    Damit braucht der zwei Kondensatoren zu je 68 pF.
    Mit 47 pF an diesem Quarz komme ich ziemlich sicher nicht exakt auf 8 MHz.


    Oops. ^^; Da merkt man mal wie selten ich so genaue Takefrequenzen brauche... Glücklicherweise funktioniert das Laden auf meinen beiden mit 22Pf modifizierten Platinen einwandfrei, im Datenblatt der Quarze aus der blau-gelben Elektronikapotheke steht allerdings auch "CL: 10pF to \inf".

    Bei der Datenblattlektüre ist mir noch ein Fehler aufgefallen: Ich habe weiter oben geschrieben, dass MasterJulian in seinem Programmierer nur einen Teil der CKSEL-Fuses abschalten müsste. Wahrscheinlich würde es dann trotzdem funktionieren, aber ganz korrekt wäre es, die Haken bei allen vier CKSEL sowie bei beiden SUT-Fuses wegzumachen. Das minimiert nicht nur das Risiko, sondern auch den Beschreibungsaufwand für die Änderungen. =)

    Quellcode

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

    sd2iec Homepage
  • Okay, ich habe einen der 8 MHz Quarze angelötet die ich von Reichelt bekommen habe.

    Mit meinem etwa 15 Jahre altem ERSA Tip260 16 Watt Lötkolben dessen "Bleistiftspitze" etwas breiter ist als die Beine vom Controller hat mich das etwas über eine Stunde gekostet.

    Ich habe kein Flussmittel hier, uraltes Lötzinn und keine Entlöt-Pumpe. :hammer:

    Auf dem Weg zu dem Bild habe ich mehrmals mehrere Pins mit Lötzinn verbunden.
    Die grüne Leitung ist TXD der seriellen Schnittstelle, die musste ich auch wieder anlöten.

    Die ISP-Buchse musste ich rausbrechen, den ISP-Stecker habe ich hinterher auf der Unterseite angelötet.

    Fuses gesetzt und siehe da - es lebt immer noch. :juhu:

    Blöderweise funktioniert das nur nicht, beide TurboDisk Versionen haben offenbar Fehler bei der Übertragung da die geladenen Programme nicht laufen.
    Damit bin ich heute allerdings hier auch am Ende, weder kann ich hier die Frequenz messen noch habe ich andere Kondensatoren hier um zu versuchen, das blind zu tunen.
    8,5 pF zu wenig, löte ich nochmal je 47 pF parallel bin ich 15 pF über den 32 pF...

    Es scheint aber schonmal ein wenig besser zu laufen.
    Ohne Quarz wurde das Laden bei längeren Programmen nicht mal richtig beendet und der C64 hat sich aufgehängt.


    Und gerade gesehen, das ich Quatsch geschrieben habe:

    CL = C1*C2 / ( C1 + C2)
    -> C1 = C2 = CL * 2

    Naja, wenigstens habe ich das richtige gemeint... ;)
    Bilder
    • IMG_0156.jpg

      152,5 kB, 1.280×798, 132 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Shadowolf ()

  • Benutzer online 1

    1 Besucher