Hello, Guest the thread was called5.9k times and contains 96 replays

last post from skoe at the

Modul seziert

  • Camper hat wieder falsch verlinkt ;)


    Gemeint ist eigentlich diese Platine, die auch selbst flashen kann (in VC20, PET und 1540/41/70/71):
    http://vic-20.de/x1541/hardware/petram.html


    bzw.


    http://x1541.de/hardware/petram.html (lieber so, falls ich doch mal eigenen webspace haben sollte) :)


    Sourcen zum Flashen gibt es von mir für VC20, PET und die Diskdrives. Marko Mäkelä hat mal für VC20 und PET ein schöneres Programm geschrieben. Dann hat Womo mal etwas ähnliches geschrieben, aber da weiss ich nicht, ob es auch auf meiner Hardware läuft, und ob das öffentlich zugänglich ist.


    Das ganze ist jeweils für die 29Cxxx Flashs von Atmel und kompatible. Die 29Fxxx Flashs von AMD und kompatible werden ja doch etwas anders programmiert. Da muss dann noch was angepasst werden. Ich glaub die muss man erst grossflächig löschen und dafür kann man dann byteweise programmieren, während sich die Atmels selbst automatisch blockweise löschen beim programmieren.


    Für den C64 gab es glaub schonmal ein Projekt mit AMD Flash und auch das Retro Replay arbeitet mit AMD. Da gibt es laut Jens Schönfeld gewisse Probleme am C64. Weiss ich nun nicht ob das auch für die Atmels gilt. Ich wollte das schon immer mal testen, mit Hinblick auf die Diagnose-Platine, die ja auch flashbar sein soll, aber bisher nicht dazugekommen :rotwerd:

    Zuletzt repariert:
    21.2. Logitech M570 Microschalter ausgetauscht - geplante Obsoleszenz durch Billigtaster?
    19.11. Toshiba 3,5" Floppy defekter Elko durch Kerko getauscht auf Motorplatine
    27.11. 1541B Dauerlauf, Elko im Resetschaltkreis defekt, nicht der 7406 wie zuerst verdächtigt!

  • Mal überlegt, statt dem 74SL273 und dem anderen TTL ein GAL oder CPLD zu verwenden? Kostet auch nicht mehr und hat aber sonst nur Vorteile ...


    Der Vorschlag klingt gut, aber ich wollte ja eine Schaltung for Dummies. Du hast Recht, mit einem PAL oder CPLD würde die Schaltung weder größer noch teurer, aber nicht mehr Dummy-Niveau.


    Das mit dem PAL/CPLD wäre dann gut, wenn man es hinbekommen würde, diesen auch vom C64 aus zu programmieren. Wahrscheinlich benutzen die doch ein bestimmtes Programmierprotokoll. Vielleicht könnte man das mit IO1/IO2 oder so rüberwackeln, evtl. durch Jumper abgesichert? ....Ach ich verliere mich wieder in Philosophie.....


    Andererseits: Ich wollte ja kein Retro-Replay nachbauen, sondern ein einfachstes Spielemodul. Vielleicht solltest Du aus Deiner Final Expansion auch eine C64-Version machen die kann dann alles :-)


    Quote

    Für den C64 gab es glaub schonmal ein Projekt mit AMD Flash und auch das Retro Replay arbeitet mit AMD. Da gibt es laut Jens Schönfeld gewisse Probleme am C64. Weiss ich nun nicht ob das auch für die Atmels gilt.


    Fallen Dir dazu Details ein? Ich hab AMD nur genommen, weil es zufällig der erste Treffer bei Reichelt und Conrad war.


    edit: Um die Software zum Flashen mache ich mir die wenigsten Sorgen :-)

  • Andererseits: Ich wollte ja kein Retro-Replay nachbauen, sondern ein einfachstes Spielemodul. Vielleicht solltest Du aus Deiner Final Expansion auch eine C64-Version machen die kann dann alles :-)


    Ich habe schon mit dem Gedanken gespielt. Aber einerseits ist das Timing beim VC64 viel kritischer und außerdem gibt es beim C64 schon die optimale Lösung in Form des MMCR, da muss man nix mehr entwickeln.

  • Ich faende so einen Modulnachbau schon reizvoll.
    Vor allem auch fuer neue Projekte.
    unter 10 eur Bauteile zzgl. Platine sind schon nett...
    Gruss,
    enthusi


    Na dann werd ich mich wohl mal mit dem C64 Expansionport beschäftigen. Aber erst mal muss das VC-20 Modul sauber arbeiten ...


    Oder meinst du die einfache Lösung mit den zwei TTL?

  • So, bei dem schönen Wetter hab ich mich heute an den Gartentisch gesetzt und die mechanischen Sachen vorbereitet. Von jedem Schritt habe ich ein Foto gemacht. Wenn was brauchbares dabei rauskommt, schreibe ich 'ne Anleitung.


    Das Ergebnis:



    Jetzt muss ich nur mal wieder in Erinnerung bekommen, wie Eagle funktioniert und die in diesem Thread beschriebene Schaltung zusammenmalen. Oder hat sonst jemand Lust dazu? =)

  • Kann mal bitte jemand mit Ahnung von Hardware auf den Stromlauf schauen?


    Insbesondere die Beschaltung der Steuerleitungen (PHI2 und Co.) und die Negierungen interessieren mich.


    Was es können soll:
    - Normale 8k Cartridges ($8000 - $9FFFF), Jumper evtl. offen
    - Normale 16k Cartridges ($8000 - $9FFFF, $A000 - $BFFF)
    - Ocean Type 1 Module, normale Variante n * 16k ($8000 - $9FFFF, $A000 - $BFFF), umschaltbar mit n => $DE00 bis 1 MByte
    - Ocean Type 1 Module, T2-Variante n * 8k ($8000 - $9FFFF), umschaltbar mit n => $DE00 bis 512 kByte
    - noch andere?


    Mit einem Menü davor (auf Bank 0) ließen sich auch relativ einfach mehrere 8k und 16k Module auf einmal flashen und auswählbar machen.

  • Auch wenn es nicht so aussieht, als würde noch jemand so ein Modul bauen, poste ich hier mal einen korrigierten Schaltplan. Beim anderen stimmt die Pinbelegung der Flashs nicht, hatte das falsche Symbol verwendet.


    Heute abend würde ich das Ding mal zusammenfädeln. Frage ich vorher nochmal ganz vorsichtig: Kann bitte mal jemand auf die Schaltung gucken, ob sie fehlerhaft ist?


    Edit: PDF angefügt

  • Also mir fällt nichts besonderes auf. Allerdings habe ich auch Null Erfahrung mit Cartridges am C64 :D


    Eine Frage des Stils sind vielleicht die Signale an zwei Eingängen des gleichen Gatters. Schöner wäre es, das Signal nur an einen Anschluß zu legen und den anderen Eingang fest an GND bzw. Vcc zu legen - damit wird das Signal nur mit einem Eingang und nicht mit zweien belastet. Wenn das Signal an Vcc gelegt werden muss, sollte dies nicht direkt geschehen, sondern nur über einen Widerstand von 1k, der dann aber auch eine ganze Reihe von Eingängen versorgen darf.


    Die Kondensatoren haben noch keine Werte, gemeint sind sicher 100 nF.


    Hat KiCAD die Verbindung mittels der Labels so angenommen? Die älteren Versionen jedenfalls wollten den Kontaktpunkt unten links unterhalb der Schrift des Labels, so der Kontaktpunkt bei den Beschriftungen auf der linken Seite in der Luft hinge und somit keinen Kontakt gäbe - das wäre interessant, wenn Du nicht mehr fädelst, sondern eine Platine daraus machen wolltest.

  • Quote

    Eine Frage des Stils sind vielleicht die Signale an zwei Eingängen des gleichen Gatters.


    Ah, wieder was gelernt.


    Quote

    Die Kondensatoren haben noch keine Werte, gemeint sind sicher 100 nF.


    Stimmt.


    Quote

    Hat KiCAD die Verbindung mittels der Labels so angenommen? Die älteren Versionen jedenfalls wollten den Kontaktpunkt unten links unterhalb der Schrift des Labels, so der Kontaktpunkt bei den Beschriftungen auf der linken Seite in der Luft hinge und somit keinen Kontakt gäbe - das wäre interessant, wenn Du nicht mehr fädelst, sondern eine Platine daraus machen wolltest.


    Ich kenne die alten Versionen nicht, aber jetzt kann man den Kontaktpunkt einstellen. Rechte Maustaste, Label editieren, oben/unten/links/rechts. Der Kontaktpunkt wird auch dargestellt, wenn er nicht verbunden ist.


    Hab auch schon mit dem Gedanken gespielt, Platinen zu bestellen. Bei mme-pcb.de würde ich 3 Stück für ca. 30 Euro bekommen (ca. 60 mm x 60 mm), ohne Lötstopplack, PLCC-Fassungen statt DIL, wg. Platz. Aber erstmal sehen, eine verdrahtete reicht erstmal zum Spielen. Die wird ja sogar in ein Modulgehäuse passen und damit recht robust sein.


    Danke auf alle Fälle für Deine Tips.


    Jetzt muss ich mir doch mal PHI2 genauer ansehen, um zu verstehen, was da an welcher Flanke passiert. Will die Schaltung verstehen.

  • Soll das Modul das Flash auch beschreiben können? Das klappt so wohl nicht richtig. Schreibzugriffe in den Modulbereich erzeugen kein Chipselect über /ROML oder /ROMH und schon gehts schief. Dann denke ich musst Du die /WE Leitung genauso ansteuern wie den Clock Eingang des '273.


    Abgesehen davon, Flashbeschreiben am 64er ist laut JS ne wacklige Sache. Hab es aber selbst noch nicht getestet.


    Dann noch eins, der Jumper auf /ROMH ist wohl überflüssig. Das wird eh nur angesteuert, wenn /GAME auf GND gezogen wird. Das hast Du aber gar nicht angeschlossen.

    Zuletzt repariert:
    21.2. Logitech M570 Microschalter ausgetauscht - geplante Obsoleszenz durch Billigtaster?
    19.11. Toshiba 3,5" Floppy defekter Elko durch Kerko getauscht auf Motorplatine
    27.11. 1541B Dauerlauf, Elko im Resetschaltkreis defekt, nicht der 7406 wie zuerst verdächtigt!

  • Schreibzugriffe in den Modulbereich erzeugen kein Chipselect über /ROML oder /ROMH und schon gehts schief.


    Ach Mist. Aber genau das ist die Art von Hinweis, auf die ich gewartet habe. Hätte ich mir denken können, die PLA sorgt dafür, dass in dem RAM unterm ROM geschrieben wird, stimmts?


    Dann denke ich musst Du die /WE Leitung genauso ansteuern wie den Clock Eingang des '273.


    Jetzt fehlt mir die Inspiration. Weil ich zum Schreiben /WE, Addressen und Daten brauche, kann ich die /WE-Leitung nicht "per Hand" setzen, weil dann in dem Moment die falschen Adressen und Daten auf dem Bus liegen. Sieht für mich so aus, als ob die Schaltung doch nicht auf so primitivem Wege umsetzbar ist.


    Flashbeschreiben am 64er ist laut JS ne wacklige Sache. Hab es aber selbst noch nicht getestet.


    Ich wollte es gern mal probieren, weil mir im Datenblatt nichts offensichtliches aufgefallen ist, was dagegenspricht. Was natürlich nicht heißt, dass da nichts ist.


    Mist. Ich bleibe wohl doch lieber bei Software.

  • Jetzt fehlt mir die Inspiration. Weil ich zum Schreiben /WE, Addressen und Daten brauche, kann ich die /WE-Leitung nicht "per Hand" setzen, weil dann in dem Moment die falschen Adressen und Daten auf dem Bus liegen. Sieht für mich so aus, als ob die Schaltung doch nicht auf so primitivem Wege umsetzbar ist.



    So primitiv geht es leider wirklich nicht. Aber das heisst nicht dass es nicht mit relativ einfachen Mitteln lösbar ist. Da arbeite ich gerade selbst dran, Stichwort Diagnosemodul. Das soll ja dann auch flashbar sein :)


    Im einfachsten Fall erzeugst Du den Chipselect beim Schreiben direkt aus den Adressleitungen. Wenn Du das so machst, dann überschreibst Du natürlich gleichzeitig das RAM im 64er. Dürfte aber nicht das Problem sein ...


    Um einen 8kB Bereich zu dekodieren brauchst Du die Adressleitungen A15, A14 und A13. Die musst dekodieren und daraus das Chipselect des Flash erzeugen beim Schreiben. Das /WE selbst würde ich direkt das Signal am Clock des 273 verwenden, weil das per Verknüpfung mit Phi2 schon den CPU Zyklus einbezieht.



    sowas geht z.b. mit einem 74ls138: http://www.chipdir.nl/giicm/74138.txt


    Also die adressleitungen auf s2 bis s0 und die chipselects der beiden roms von den passenden ausgängen abgreifen. aber das gilt halt nur zum schreiben. zum lesen muss man wieder drauf achten dass auch /ROMH oder /ROML dazu aktiv sind.

    Zuletzt repariert:
    21.2. Logitech M570 Microschalter ausgetauscht - geplante Obsoleszenz durch Billigtaster?
    19.11. Toshiba 3,5" Floppy defekter Elko durch Kerko getauscht auf Motorplatine
    27.11. 1541B Dauerlauf, Elko im Resetschaltkreis defekt, nicht der 7406 wie zuerst verdächtigt!

  • Diddl: Das wollte ich auch gerade sagen. Aber dann ist mir eingefallen, dass der Punkt an der Sache sein sollte, ohne Programmierequipment auszukommen. Das es nur für den Spaß an der Freude sein soll, wäre mir der Aufwand sonst zu groß. Ich bekomme ja demnächst noch ein LPC-Board, wo ich dann wieder was anderes mit mache :-)


    Weil ich noch nicht ganz aufgeben wollte, hab ich noch ein bisschen rumgesucht: Auf zimmers habe ich eine Datei gefunden (pla.c), die folgende Gleichung enthält:


    Code
    1. /* ROML_ */
    2. #define F6 ((!LORAM_ || !HIRAM_ || !A15 || A14 || A13 || \
    3. AEC_ || !R_W_ || EXROM_) && \
    4. (!A15 || A14 || A13 || AEC_ || !EXROM_ || GAME_))


    Verhält sich also /ROML im Ultimax-Modus anders? Könnte ich EXROM und GAME auch auch on the fly im Betrieb umschalten? Dann könnte man vielleicht was mit den zwei freien Bits des FF machen. Was ist eigentlich AEC?

  • Verhält sich also /ROML im Ultimax-Modus anders? Könnte ich EXROM und GAME auch auch on the fly im Betrieb umschalten? Dann könnte man vielleicht was mit den zwei freien Bits des FF machen. Was ist eigentlich AEC?



    Interessant, so sieht es aus. Wird Dir aber wenig helfen, weil wenn Du den Ultimax Modus aktivierst, nur noch 4kB RAM da sind. Etwas wenig. Also wirst den auch nur im eingeschränkten Adressbereich aktivieren wollen und dann kannst es gleich so machen wie ich gesagt hab :) Evtl. sparst ein Gatter aber schau erstmal ob das gleiche auch für ROMH so geht.


    AEC müsste die Leitung sein, die der CPU signalisiert die Füsse hochzunehmen, d.h. es zeigt VIC Speicherzugriffe an. Macht ja Sinn in der PLA nach CPU und VIC Zugriffen zu unterscheiden.

    Zuletzt repariert:
    21.2. Logitech M570 Microschalter ausgetauscht - geplante Obsoleszenz durch Billigtaster?
    19.11. Toshiba 3,5" Floppy defekter Elko durch Kerko getauscht auf Motorplatine
    27.11. 1541B Dauerlauf, Elko im Resetschaltkreis defekt, nicht der 7406 wie zuerst verdächtigt!

  • Interessant, so sieht es aus. Wird Dir aber wenig helfen, weil wenn Du den Ultimax Modus aktivierst, nur noch 4kB RAM da sind. Etwas wenig.


    Das ist mir auch schon aufgefallen. Den Ultimax bräuchte man allerdings nur zum Löschen und Schreiben. Ich stelle mir das so vor:


    Eine handvoll Assembler-Funktionen liegen in den ersten 4k: Ultimax an, Schreiben, Ultimax aus, zurück. Das eigentliche Programm und Daten zum Flashen liegen dann im "normalen" Speicher.


    Mein allererster Gedanke, um die Sache irgendwie sogar mit den vorhandenen Bauteilen hinzubekommen: /GAME und /EXROM direkt auch Q6 und Q7 des FF. Dann sind nach dem Einschalten 16k ROM da. Wieder Mist: Wenn der Flash noch nicht programmiert ist, sieht man $FF statt BASIC.


    Diddl, jetzt ist wieder Zeit für eine PAL/CPLD-Bemerkung :-)

  • Warum so kompliziert? Beschrieben wird das Flash doch nur alle Jubeljahre unter User-Kontrolle? Dann reicht es doch, im Programmiermodus A[15..13] auf 100 zu decodieren (also von 8000 bis 9fff) und als Chipselect zu nutzen; WE geht dann direkt an R/W. Natürlich überschreibt man sich dann das Ram unterm Flash- aber das Programmiertool kann ja den Bereich ignorieren.


    A prospos CPLD: die sind doch heutzutage alle JTAG-programmierbar... sollte sich nicht ein simpler Byte-Shifter am Userport stricken lassen, mit dem man so ein Bitfile auch am 64er in den Chip pumpen kann?

  • A prospos CPLD: die sind doch heutzutage alle JTAG-programmierbar... sollte sich nicht ein simpler Byte-Shifter am Userport stricken lassen, mit dem man so ein Bitfile auch am 64er in den Chip pumpen kann?


    Es wäre technisch kein Problem das CPLD vom C64 bzw. VC20 aus zu programmieren. Aber es ist irgendwie sinnlos, weil ich da das Jedec nicht erzeugen kann. Also muss ich das Jedec am PC erzeugen, irgendwie zum 8 Bitter befördern und dann flashen.


    Ein Jtag Adapter macht da mehr Sinn, ein LPT Port und ein 74138 und gut.