Posts by zschunky

    sry, dass es von meiner Seite etwas ruhig geworden ist. Aber wie ja bereits geschrieben wurde bin ich vor knapp 3 Wochen wieder zum zweiten mal Papa geworden und leider komme ich, bis auf ab zu mal bei forum64 reinzuschauen, momentan leider zu nix. Also Updates gibts von meiner Seite leider zum magicFlash64 erstmal nicht zu vermelden. Mein Ziel alles vor dem 2. Kind zu schaffen, habe ich leider nicht geschaft.Jetzt wird es sich leider ein wenig hinziehen.


    Falls aber jemand Fit in Assembler am Atmega AVR und C64 ist und hier gern unterstützen möchte kann sich gern melden.

    zu wenig Ahnung davon wie C64 und Peripherie tatsächlich am Userport zusammenarbeiten

    Da können wir uns schon mal zusammen tun. Ich nämlich auch nicht. :)

    ohje, wenn ich sowas lese und dann solche Adapter zum Einsatz kommen sollen stehen mir die Haar zu Berge. Bei solchen User-Port Expandern solltet Ihr wirklich wissen was Ihr tut. Denn nicht alles sollte hier blind auf diese Expander gesteckt werden.


    Hintergund: die CIAs arbeiten wie Open-Kollektor-Schaltungen, Low Pegel werden hier per Transistor auf Masse gezogen und High Pegel per Pull Up Widerstand auf High. Aufgrund des Pull-Ups kann jederzeit auch von Aussen der Pin auf Masse gezogen werden, selbst wenn der CIA einen High Pegel gesetzt hat.


    Solange alle verwendeten UserPort-Verbindungen das gleiche Prinzip verwenden ist alles in Ordnung (zb mehrere Parallelanschlüsse zur Floppy). Wenn jedoch dedizierte Logik am User-Port verwendet wird, die feste High-Pegel (also 5V) an den Pins anlegt, wird es bei falscher Software Probleme/mitunter Defekte an der CIA geben. Ein Beispiel ist der 4 Spieler Joystick-User-Port-Adapter: Hier hängt ein Logik-IC direkt am Userport und somit am CIA. Programme müssen nun genau für diesen Logik-IC entwickelt sein. Wird der CIA falsch konfiguriert, kann dies zu kurzschlüssen führen (High Pegel vom IC und Low Pegel vom CIA). Wenn nun eine andere Software für andere User-Port-Hardware gestartet wird und diese Bedingungen schaltet kann es zu Problemen kommen, wenn der 4 Spieler-Adapter noch steckt.

    Ich bin immer noch dran. Ich habe vor kurzen erst die Firmware für die neue Platine vom Timing her überarbeitet. Leider gibt es immer noch hier und da Probleme. Momentan finde ich leider nur wenig Zeit daran zu arbeiten, daher kann ich nur um etwas Geduld bitten.

    Hab eben gerade noch mal ein 425er Board umgebaut, da funktioniert es bei mir.

    da war ich wohl zu eilig. Jetzt treten auch hier Probleme auf, die ich bei den 407er und 469er Board nicht hatte. Jetzt habe ich zumindest was da um das Problem nachvollziehen zu können. Gebt mir mal ein bisschen Zeit, das ich das Problem identifizieren kann. Ich hoffe dass ich bis zum Wochenende mehr weiß und dann evt. eine neue Firmware bzw. einen HW-Fix liefern kann.

    achso, bei den 24pin Kernels bitte darauf achten, dass kein überstehender Pin mit mit den Kapazitäten in Berührung kommt. Wobei das wahrscheinlich bei Euch nicht der Falls, da höchst wahrscheinlich dann das Menü nicht so weit kommen würde.

    Das Problem hat es ja bei der ersten Platine auch gegeben... oder?

    Das Resultat sieht gleich aus. Die Ursachen scheinen andere zu sein. Hab eben gerade noch mal ein 425er Board umgebaut, da funktioniert es bei mir. Ronny, kannst Du noch mal die Jumper-Stellung überprüfen. Es sollte wie folgt gesetzt sein:
    JP1 2-3
    JP2 2-3
    JP3 2-3
    JP4 offen
    JP5 1-2


    Verkabelung (zumindest die neuen Signale DOT-CLK und PHI2) sieht bei Euch beiden gut aus.

    da scheint wohl doch noch der Wurm drin zu sein. Und ich dachte die Probleme sind mit der neue Platine weniger. Ich werde jetzt mal ein paar mehr Board bei mir imrüsten, in der Hoffnung dass ich die Problem reproduzieren kann.

    Welche Fuses wurden denn verwendet. Ich hab ja die Doku noch gar nicht fertig für diese Version, wo die Fuses beschrieben sind. Das hier sollten die richtigen sein:
    Low Fuse: 0xe0
    High Fuse: 0xdf
    extended Fuse: 0xfe

    stimmt eigentlich, wundert mich. Was Zeigt er für eine Versionsnummer an wenn Du ohne Modul startest? Ich schaue es mir heute Abend noch mal an.

    achso, ganz vergessen. Du musst über den Programmer das neue Menu flashen. Also Programmer starten, auf Slot 63 gehen und p drücken, anschliessen die neue Menü-Datei auswählen und dann zum Abschluss mit F7 bestätigen. Der Final Cartridge-Fix ist im Menü und nicht in der Firmware.

    @zschunky ich habe jetzt die neue Firmware ausprobiert (zickiges 407er, alte Hardwareversion, C5 entfernt, keine Diode) -- geflashed habe ich mit dem TLS866 die m20-Firmware mit den Fuses wie bisher.


    Stimmt das so weit? Der C64 lief, aber mit einem FC3+ hatte ich sofort einen bunten Rand... habe ich irgendwas übersehen?

    stimmt eigentlich, wundert mich. Was Zeigt er für eine Versionsnummer an wenn Du ohne Modul startest? Ich schaue es mir heute Abend noch mal an.

    das ist das zu erwartende Bild, wenn kein Atmega drin ist. Für den Atmega ist dann der C4 zwingend notwendig. Auch mit der PLA-Advanced und ohne Atmega sollte sich die Rahmenfarbe sich so ändern (zumindest mit der alten Firmware, die neue würde erstmal gar nix mitbekommen dass kein Atmega dranhängt).


    Genau dieses Ärger mit den Kapazitäten ist dann mit der neuen Platine v0.3 weg.

    mach mal folgende reihenfolge:

    • atmega rausziehen und dann c64 einschalten
    • wenn noch kein bild, dann mal c4 runterlöten und wieder testen (wenn dies das problem ist c4 zu gross, es sollte auch 680pF...1.2nF gehen, wenn nicht eine Eprom-PLA verwendet wird, die benötigt den 1.2nF)
    • wenn immer noch kein bild mal die signale durchklingeln

    Jetzt hat ja @zschunky eine V 0.4 Version rausgebracht

    diese Variante ist ja noch gar nicht raus, auch wenn Du schon mal einen Blick darauf werfen durftest. V0.3 ist raus und V0.4 schon so gut wie in der Schublade, aber noch nicht freigegeben. In v0.4 werden Schwachstellen für dem ISP behoben, wenn man den Atmega über den ISP programmieren will. Dies ist bei v0.3 nur umständlich möglich. Kommt aber noch alles in die Doku. Ausserdem gibt es dann einen Jumper um einfacher in den Recovery-Mode zu kommen.

    @bigby, als erstes müßte ich erst mal wissen für welche C64-Board-Version der MF64 bestimmt ist. Dann immer noch mal die Jumper-Einstellungen kontrollieren, dass die passen. Der C64 muss auch ohne eingesteckten Atmega einschalten, es ist dann immer slot 63 aktiv. Dies sollte aber in dem default image immer vorhanden sein.


    Welcher Wert wurde für C4 genommen?


    Ansonsten Lötstellen kontrollieren. Seitlich schauen, dass der PLCC-Sockel auch nah an den DIP-Pins schön gelötet wurde. Mal alle Signale vom PLCC bzw. von den PINs des C64 aus durcklingeln. Evt. mal C4 komplett entfernen und schauen dass der C64 startet.



    @bigby Hi, ich hab mit @zschunky darüber auch schon gesprochen einen anderen Atmega zu nehmen, er sagte mir dann, das es mit dem Timing wohl nicht mehr hin hauen kann! vielleicht liegt da schon das Problem.

    das ist so nicht ganz korrekt. Das interne FW-Update ist voll auf den Atmega48 optimiert und gerade der Atmega48 unterscheidet sich ordentlich zu allen anderen Atmega*8 Varianten. Die Firmware sollte so ohne Probleme auch auf einen Atmega88 laufen, nur ein FW-Update vom C64 aus wird hier nicht funktionieren und die Firmware zerschiessen, da der Atmega48 kleinere Flash-Pages hat und anders vom programmieraufbau ist.

    Planst Du eigentlich, beide Varianten auch weiterhin zu unterstützen?

    Ich sehe momentan keinen Grund die alte Version nicht zu unterstützen. Die Unterschiede sind nur in der Firmware und der Firmware-Source-Code ist so angepasst, dass für beide Varianten je eine Firmware kompiliert wird. Das FW-Update-C64-Programm erkennt selber welche Version dranhängt und wählt die richtige aus.


    Die alte Platine hat ca. bei 3-5% der Setups Probleme gemacht. Wenn aber die Platine läuft gibt es keinen zwingenden Grund diese zu ersetzen. Für neue Setups wird ich dann die neue Platine empfehlen (die sollte auch besser mit Einbauwinkeln auf 250469er Boards in C64C Gehäusen zurecht kommen).



    Cool! Ich hatte bei meinem zickigen 407er ja C5 entfernt... der soll jetzt wieder drauf? Muss irgendwas an der alten Platine sonst gemacht werden?

    Wenn das vorher so lief, lass ihn weg. Diese Kapazität ist wichtig bei 8500-Prozessoren. Es muss nichts an der alten Platine verändert werden.

    Endlich habe ich es geschafft, das neue Release zu erstellen:
    https://github.com/zschunky/magicFlash64/releases/tag/rel4


    Passend dazu sind noch auch alle Kicad/Gerber-Dateien etc. zur neuen Platine online. Die neue Platine hat ein besseres Verhalten mit den C64-Mainboards signalen. Die alten Platinen werden weiterhin unterstützt.


    Was hat sich seit dem letzten Release geändert:

    • das Final Cartidge 3 sollte funktionieren (im Menü wird allerdings als Firmware-Version immer v0.0 angezeigt werden)
    • es gibt nun einen Recovery-Mode, in dem die Firmware des Atmega-Microcontrollers aktualisiert werden kann, falls die reguläre Firmware nicht mehr funktioniert. Um in diesen Modus zu gelangen muss am Stecker J4 Pin 1 und Pin 3 kurzgeschlossen werden. Sobald der Rechner eingeschalten wird, wird nun Slot 55 ausgewählt (in Slot 55 sollte man zuvor einen Kernal programmieren). Programmieren/Löschen des Flashs ist in diesem Modus nicht unterstützt. Wenn dieser Modus aktiv ist blinkt die Power LED.
    • Mit Reset halten und Restore drücken wird nun der Kernal Slot 55 ausgewählt (dieser sollte vorher programmiert werden). Damit ist es nun möglich diesen Slot anzuspringen, falls das Menü defekt ist. Hier kann nun der Programmer gestartet werden und das Menu neu programmiert werden.
    • Die Abfrage von Kommandos zum Magicflash64-Microcontroller wurde überarbeitet. Ghost-Kommandos sollten nicht mehr auftreten (diese könnten ein Löschen der Firmware verursacht haben)

    die Doku hat noch den alten Stand und werde ich in den nächsten Tagen überarbeiten.

    so, mal wieder ein Update von meiner Seite. Am Montag sind nun die Platinen der neuen Version 0.3 angekommen. Am Dienstag habe ich dann die erste Platine zusammengelötet und es gab zunächst ein Totalausfall. Es hat rein garnichts funktioniert. Am Mittwoch hab ich dann eine zweite Platine aufgebaut und diese war zumindest lauffähig. So sieht die Platine nun aus:


    Die Firmware muss ordentlich überarbeitet werden, da der Atmega nicht mehr wie zuvor mit 20MHz läuft, sondern mit dem Pixelclock des C64. Durch diese Anpassung mit dem Pixelclock war es möglich die Problemquellen mit den unterschiedlichen Kapazitäten mit dem OE/RW Signal zu beseitigen und diese Kapazitäten werden nun nicht mehr benötigt. Dadurch mußte allerdings ein zusätzlicher Logic-Chip mit auf die Platine, da der Atmega mit dem langsamen Takt nicht mehr in der Lage ist das WE Signal für den Flash zu generieren. Der Atmega syncronisiert sich auf dem Clock des C64 und somit kann er immer zu einen festen Zeitpunkt (zu einen bestimmten Takt) die OE/RW Signale abfragen.


    Ein weiteres Problem trat bei mir auf, sobald ich meinen Logikanalysator an der C64-CPU mit der neuen Platine betrieben wollte, waren die CIAs tot und kein Cursor blinkte mehr. Dies hab ich aber inzwischen in den Griff bekommen und konnte nun weiter debuggen.


    Lange Rede kurzer Sinn: ich wollte ja eigentlich dieses WE ein neues Release auf Github erstellen, Aufgrund der Probleme hab ich es aber leider noch nicht geschafft und ich muss jetzt noch die letzten Probleme mit der neuen Platine in der Firmware beheben. Ab dem nächsten Release wird es dann immer 2 Firmwarevarianten geben, eine für die alte Platine (v0.2) und eine für die neue Platine. Das Firmware-Upgrade-Programm wird beide Firmware-Varianten beinhalten und je nach verwendeter Platine die richtige auswählen.

    Ich habe ne dofe Frage: Müssen die Programme oder Spiele in einen 8kByte Slot passen oder können die auch größer sein, so dass sie mehrere Slots belegen?

    Nein, die dürfen größer sein. es werden dann mehrere Slots dafür verwendet. Im Programmer werden diese Slots mit Dem Typ + angezeigt. Im Menu wird immer nur der Start-Slot angezeigt.