Hello, Guest the thread was called20k times and contains 227 replays

last post from AntaBaka at the

EasyFlash Hardware-Thread

  • So, nachdem Alex und ich die letzten Tage etwas zurückgezogen an der Software gebastelt haben, gibt's mal wieder ein Lebenszeichen.


    Nochmal zur Erinnerung:


    EasyFlash is a 1 MByte Flash EPROM card with multiple configurations and banks possible. It does not use traditional UV-EPROMs, but Flash memory. This makes it possible to "burn" the cartridge using your C64, no EPROM programmer is needed.


    The EasyFlash hardware is extremely easy to build and comes with comprehensive software for end users and developers. It is easy to make your own cartridge with your favourite software on it and it is easy to create completely new software for being used with EasyFlash.


    Im Moment sind diese Features geplant und inzwischen ansatzweise getestet:

    • Man kann mehrere kleine CRT-Images (Normale 8k/16k/Ultimax davon gibt es ca. 250) und One-Filer zusammen auf das Modul schreiben und per Startmenü auswählen
    • CRT-Images normaler Module einzeln auf das Modul schreiben, das dann wie das Originalmodul automatisch startet (also ohne Menü)
    • Ocean-CRT-Images auf das Modul schreiben (Shadow of the Beast, Terminator 2, Navy Seals u.v.a.)
    • Einige andere größere Module (z.B. Last Ninja Remix) müssten mit einem kleinen Patch (Bankumschaltung) auch kompatibel sein
    • Eigene Software für das Modul entwickeln
    • Alles kann auch im Vice getestet werden


    Und da im VC-20 Schwesterprojekt schon eine so schöne Leiterplatte zu sehen ist, wird's bei uns auch langsam Zeit für ein Layout. Gibt's hier jemand, der Lust und Zeit dazu hätte?


    Ich poste nochmal den aktuellen Schaltplan, der nochmal ein bisschen geändert wurde, s.u. Für die Flash-Chips könnte man PLCC-Sockel nehmen oder DIP, beides ist leicht aufzutreiben. Nur SMD sollte nicht rauf, sonst ist es nicht mehr "Easy".


    Mit der letzten Änderung bin ich aus der Zwickmühle mit Kombatibilität und Flashbarkeit gekommen: Mit den Jumpern lässt sich das Modul immer im richtigen Modus betreiben und man braucht nie im Betrieb umzu-jumpern.


    Die Software, die ein CRT-Image auf das Modul "brennt", wird zum Schluss anzeigen, wie man die beiden Jumper für den Betrieb setzen muss. Damit ist es auch für normalen Menschen bedienbar.

  • Und da im VC-20 Schwesterprojekt schon eine so schöne Leiterplatte zu sehen ist, wird's bei uns auch langsam Zeit für ein Layout. Gibt's hier jemand, der Lust und Zeit dazu hätte?


    Lust auf jeden Fall, Zeit werde ich bald auch wieder haben, wenn die XS-1541 erst mal verschickt sind.


    Wie ich sehe, hast Du KiCAD verwendet, um den Schaltplan zu zeichnen - prima!
    Dann könnte ich damit direkt mit pcbnew das Layout machen ohne den Schaltplan erst noch einmal neu zeichnen zu müssen.


    Einen Prototypen könnte ich auch aufbauen.


    Ist irgendwo schon dokumentiert, was es mit diesen Jumpern auf sich hat - wann man die wie wofür setzen muss?
    Kann man sich derer nicht noch entledigen?

  • Lust auf jeden Fall, Zeit werde ich bald auch wieder haben, wenn die XS-1541 erst mal verschickt sind.


    Das klingt gut, aber ob Du danach auch noch Lust hast? :-)


    Dann könnte ich damit direkt mit pcbnew das Layout machen ohne den Schaltplan erst noch einmal neu zeichnen zu müssen.


    Hab auch schon ein Footprint für den Expansions-Port gezeichnet, mit Bohrung in der Mitte für die üblichen Gehäuse. Selbst ausgemessen. Ich hab irgendwo gelesen, dass das verlässlicher sein soll als fremde Libs zu benutzen.... :-(


    Ist irgendwo schon dokumentiert, was es mit diesen Jumpern auf sich hat - wann man die wie wofür setzen muss?
    Kann man sich derer nicht noch entledigen?


    Mit denen stellt man ein, ob die Hardware flashbar ist, automatisch bootet und wieviel/wo der Flash eingeblendet wird. Wenn man die nicht haben will, verzichtet man entweder auf die *vollständige* Kompatibilität zu verschiedenen Standard-Modul-Hardwaren (8k/16k/Ultimax/Ocean Type 1) oder würde die Hardware komplexer machen. Wie gesagt sollen hier einfachste Mittel eingesetzt werden um ein ziemlich universell einsetzbares Spiele-Modul zu bauen (geht natürlich auch für ernste Programme wie Assembler, Disk-Speeder, File-Browser etc.).


    Die technische Doku habe ich angefangen, aber da fehlt noch ziemlich viel. Mit http://markus.brenner.de/cartridge/index.html und einem geschärften Blick auf den Schaltplan wird der technisch Bewanderte wie Du da sicher durchblicken.


    Mal was anderes: Wie kann man eigentlich dieses Forum dazu bewegen, Dein Handle nicht als Smiley darzustellen?

  • Hab auch schon ein Footprint für den Expansions-Port gezeichnet, mit Bohrung in der Mitte für die üblichen Gehäuse. Selbst ausgemessen. Ich hab irgendwo gelesen, dass das verlässlicher sein soll als fremde Libs zu benutzen.... :-(


    Wäre es nicht langsam mal eine gute Idee eine Lib mit "geprüftem Inhalt" zusammenzustellen?


    Quote

    Mal was anderes: Wie kann man eigentlich dieses Forum dazu bewegen, Dein Handle nicht als Smiley darzustellen?


    Smileys abschalten?

  • Das klingt gut, aber ob Du danach auch noch Lust hast? :-)


    Na, ich bin doch gerade erst auf den Geschmack gekommen! :D


    Selbst ausgemessen. Ich hab irgendwo gelesen, dass das verlässlicher sein soll als fremde Libs zu benutzen.... :-(


    Ja, schmerzliche Erfahrung mit den Platinensteckern am XS-1541. In Zukunft verlasse ich mich nur noch auf meine eigenen Meßfehler.


    Mal was anderes: Wie kann man eigentlich dieses Forum dazu bewegen, Dein Handle nicht als Smiley darzustellen?


    Beim Verfassen unterhalb des Textfeldes auf die Registerkarte "Einstellungen" gehen, dort das Häkchen bei "Darstellung von Smileys aktivieren" entfernen sollte das machen.


    Mit dem "Entledigen der Jumper" haben wir uns falsch verstanden. Mir ist klar, dass die eine Funktion haben und ich will natürlich keineswegs den Funktionsumfang beschneiden. Aber diese Jumper sind so fummelig und wir werden ja alle nicht jünger ;-)


    Spontane Idee war, die Jumper durch Kipp- oder Schiebeschalter zu ersetzen. Damit bleibt die Funktionalität erhalten, ist auch einfach und billig aber in der Praxis viel leichter zu handhaben.


    Einen 74LS245 als Treiberbaustein für den Datenbus fände ich auch gut, den haben wir beim VC-20-Modul auch noch eingefügt. Dann müssen die armen CMOS-Flash-Käfer nicht den ganzen Datenbus treiben.

  • Beim Verfassen unterhalb des Textfeldes auf die Registerkarte "Einstellungen" gehen, dort das Häkchen bei "Darstellung von Smileys aktivieren" entfernen sollte das machen.


    Danke, die Einstellung habe ich noch nie gesehen.


    Mit dem "Entledigen der Jumper" haben wir uns falsch verstanden. Mir ist klar, dass die eine Funktion haben und ich will natürlich keineswegs den Funktionsumfang beschneiden. Aber diese Jumper sind so fummelig und wir werden ja alle nicht jünger ;-)


    Ich hätte mindestens diese längeren mit der Grifflasche (oder wie das heißt) genommen.


    Spontane Idee war, die Jumper durch Kipp- oder Schiebeschalter zu ersetzen. Damit bleibt die Funktionalität erhalten, ist auch einfach und billig aber in der Praxis viel leichter zu handhaben.


    Das wären zwei Schalter mit je 4 Stellungen (auto high, auto low, low, high (= offen)). Hast Du eine passende Idee?


    Man könnte auf die beiden unterschiedlichen "auto" verzichten, wenn man verantworten kann, unter Spannung umzuschalten. Das kann ich nicht einschätzen. Dann fällt eine Stellung weg.


    Einen 74LS245 als Treiberbaustein für den Datenbus fände ich auch gut, den haben wir beim VC-20-Modul auch noch eingefügt. Dann müssen die armen CMOS-Flash-Käfer nicht den ganzen Datenbus treiben.


    Mhhh, wie kritisch ist das denn? Kann dazu jemand was sagen?


    2 * DIL32, 2 * DIL20, 2 * DIL14, 2 Jumper/Schalter. Könnte in einem Standard-Gehäuse eng werden. Jedenfalls ohne SMD oder wenigstens PLCC(Fassung).

  • Also im Datenblatt vom LS245 habe ich max IOL -15 mA und max IOH 24 mA gefunden.


    Die gleichen Werte habe ich dann auch im Datenblatt des Am29F040 gesucht. Da tauchen sie leider nur indirekt bei den Pegelangeben auf: IOL 12mA, IOH -2,5 mA. Hier steht aber kein "max". (Und andere Vorzeichen... fließt das der Strom andersrum?) Ah, einen Kurzschlussstrom von 200 mA verträgt er an einem Ausgang gleichzeitig :-)

  • Zu den Schaltern kann ich momentan noch nicht viel sagen, dazu muß ich mich erst mal in die Schaltung einlesen.
    Unter Spannung schalten finde ich erst mal nicht so kritisch, ein Taster schaltet ja gewissermassen auch unter Spannung.
    Dazu muß ich mir erst mal die Schaltung ansehen und insbesondere wäre interessant, ob der Schiebeschalter im Moment des Umschaltens die beiden benachbarten Kontakte - also alte Stellung UND neue Stellung - durchschaltet. Dazu muß man sich eben einen bestimmten Schalter mit definiertem Verhalten aussuchen bzw. prüfen, ob das ggfs. in der Schaltung böse Dinge machen würde, wenn der die Kontakte miteinander verbindet.


    Könnte in einem Standard-Gehäuse eng werden. Jedenfalls ohne SMD oder wenigstens PLCC(Fassung).


    Kennst Du eine Bezugsquelle für diese Gehäuse? Irgendwer vertreibt die doch noch, meine ich mich zu erinnern...


    Hast Du die Innenmaße, die eine Platine maximal haben könnte? Vielleicht eine Zeichnung mit Bohrloch / Slot Connector?


    Beim PLCC sehe ich nicht das Problem. Der kommt ja in einen Sockel und die zu verlötenden Anschlußbeinchen haben das gleiche Rastermaß von 2,54 mm wie auch DIL - ich denke, das ist genau so einfach zu verlöten.
    Die Beschaffbarkeit von Flash in PLCC schätze ich aber in Zukunft deutlich höher ein als DIL. Bei Reichelt ist aktuell aber der Preis von DIL niedriger als von PLCC - warum auch immer.


    Zum Sinn oder Unsinn des Bustreibers kannst Du ab etwa hier die Diskussion im VC20-Final-Expansion-Thread verfolgen - sicher aufgrund des anderen Aufbaus des C64 nur bedingt übertragbar.

  • ein Taster schaltet ja gewissermassen auch unter Spannung


    Das denke ich eigentlich auch.


    ob der Schiebeschalter im Moment des Umschaltens die beiden benachbarten Kontakte - also alte Stellung UND neue Stellung - durchschaltet


    Es sollten also Schalter sein, bei denen das Verhalten im Datenblatt definiert ist. In irgendeinem Datenblatt eines Umschalters bin ich früher mal genau darüber gestolpert.


    Ein Schalter, den man gut ins Gehäuse einarbeiten könnte (liegend?), wäre

    Kennst Du eine Bezugsquelle für diese Gehäuse?


    http://www.vesalia.de/d_c64cartshell[5072].htm
    http://www.go64.de/shop/produc…nfo/p56_Modulgeh-use.html


    Hast Du die Innenmaße, die eine Platine maximal haben könnte? Vielleicht eine Zeichnung mit Bohrloch / Slot Connector?


    Ich mache heute Nachmittag ein paar Fotos und Messungen und packe dann auch mal die KiCad-Dateien hier rein. Dann kannst Du selbst einschätzen, ob mein Footprint zu gebrauchen ist.


    Noch ein Tip zu KiCad, den Du aber sicher schon kennst: Bei öden Aufgaben wie die Verteilung der Pads für den Expansionsport lassen sich die Dateien hervorragend in einem Texteditor bearbeiten.


    Beim PLCC sehe ich nicht das Problem. Der kommt ja in einen Sockel und die zu verlötenden Anschlußbeinchen haben das gleiche Rastermaß von 2,54 mm wie auch DIL - ich denke, das ist genau so einfach zu verlöten.


    Beim Löten stimme ich Dir voll zu. Beim Layout ist es eine größere kleine Herausforderung: Die beiden 32-Füßer werden an fast 30 Pins gleich geschaltet (Daten- und Adressbus). Wenn man zwei DILs nebeneinanderlegt, kann man die Leitungen einfach durchzotteln. An den Längsseiten kommt man auch gut durch. Bei PLCC muss man die Bahnen z.T. außen rumlegen, weil die Pins an allen Seiten zweireihig sind. Und zwei Leiterplanen zwischen einem Pin-Paar durchzulegen finde ich nicht schön. Aber Du brauchst doch Herausforderungen :-)


    Die Beschaffbarkeit von Flash in PLCC schätze ich aber in Zukunft deutlich höher ein als DIL. Bei Reichelt ist aktuell aber der Preis von DIL niedriger als von PLCC - warum auch immer.


    Auf die paar Cents soll es nicht ankommen. Immerhin wird dafür vielleicht die Leiterplatte etwas kleiner.

  • Zum Sinn oder Unsinn des Bustreibers kannst Du ab etwa hier die Diskussion im VC20-Final-Expansion-Thread verfolgen - sicher aufgrund des anderen Aufbaus des C64 nur bedingt übertragbar.


    Hab wiedermal Datenblätter gewälzt. Also im C64 hängen in der Größenordnung von 10 Eingängen am Datenbus (RAMs, ROMs, CPU, VIA, VIC, SID etc.)
    Wenn ich mit meinem Halbwissen alles richtig verstanden habe, entsteht dabei ein statischer Strom von insgesamt 10 * 10 µA = 100 µA (Input leakage current, ist das die richtige?). Wichtiger scheinen aber die Kapazitiven Lasten der Eingänge und Leiterbahnen zu sein. (Und die induktiven der Leiterbahnen). Da haben wir mindestens 10 * 10 pF = 100 pF.


    Diese Lasten führen zu flacheren Flanken. Aber da wir beim Timing ein paar 100 ns Reserve haben, sollte das auch nicht schaden.


    Und zuguterletzt gehen die Datenleitungen bei meinem MMC64 auch direkt auf einen Atmel Flash ;-)


    So, nun zu den Maßen:


    Wie auf cart-10.jpg zu sehen ist, ist der Connector und ggfs. die gesamte Leiterplatte 58 mm breit. Hab ich an mehreren verschiedenen Modulen nachgemessen. Da ist der erste Fehler in meinem Footprint: Dort habe ich 2,3" = 58,42 mm. Kann nicht einschätzen, ob es dannn noch passen würde. Oder fallen die jeweils 0,2 mm auf beiden Seiten bei Schneiden/Fräsen sowieso weg? Wenn Du möchtest, säge/schleife ich mal eine Leiterplatte auf genau 2,3" und sehe nach, ob es noch passt. Zwischen den Nasen kann man die Leiterplatte auch etwas breiter machen, dass muss aber vielleicht nicht sein.


    Auf cart-15.png sieht man etwas perspektivisch verzerrt, dass die Bohrung von der vorderen Seite 45 mm entfernt ist. Für dieses Gehäuse sollte sie 3 mm Durchmesser haben. Das trifft vermutlich auch auf die Gehäuse von Vesalia und Enno zu, die passen nämlich zum MMC64 und zum Retro-Replay und da sind die Bohrungen an der gleichen Stelle. Beim FCIII ist sie zum Beispiel woanders.


    Auf cart-11.png sieht man, dass Bauelemente min. ca. 4 mm vom Mittelpunkt der Bohrung weg sein müssen.


    Meine Leiterplatte ist insgesamt 83 mm lang und passt genau in's Gehäuse. Kürzer geht natürlich auch (cart-9.jpg).


    Vorn ist eine Art Steg, der ist 8mm vom Anfang der Leiterplatte weg und weniger als 2 mm breit. Die ersten Bauelemente sollten also etwas mehr als 10 mm vom vorderen Rand entfernt sein. Die Kontakte brauchen nur knapp 8 mm lang sein. (cart-12.jpg)


    Die zur Verfügung stehende Höhe für die Bauelemente ist ca. 9 mm. Direkt an den abgerundeten Kanten vielleicht etwas weniger (cart-14.jpg).


    Das Breitenverhältnis zw. Kontakt und Lücke sollte ca. 60:40 sein.


    Oh, ich bin am Dateianhangslimit. Gleich kommt mehr.

  • Hier noch das Foto zur Kontaktbreite (FC III). Das Raster ist übrigens 100 mills.


    Und die KiCad-Dateien.


    Na dann ziehe ich mich mal wieder zur Software zurück :-)

  • Ich mache heute Nachmittag ein paar Fotos und Messungen und packe dann auch mal die KiCad-Dateien hier rein.


    Cool - vielen Dank für all diese tollen Bilder und Informationen! Damit lässt sich doch was reissen!
    Also wenn Du möchtest, würde ich mich der Sache gerne annehmen - erst einmal muß ich aber das XS-1541 in trockenen Tüchern haben. Also 1-2 Wochen. Wenn Du "so lange" warten kannst, würde ich es gerne machen!

  • Bei Reichelt ist aktuell aber der Preis von DIL niedriger als von PLCC - warum auch immer.


    29C040 != 29F040. Die sind zwar Pin-kompatibel, werden aber anders programmiert. Wäre aber in der Software machbar. In dem "alten" Thread habe ich ja mal verschiedene Flashes verglichen und Bezugsquellen genannt.


    csd-electronics.de hat beide Bauformen des 29F040. Oh, bei CSD steht bei der PLCC-Version auf dem Foto aber "M29F040" von ST statt "Am29F040" von AMD. Müsste man auch erstmal nachschauen, ob die vollständig kompatibel. Auf alle Fälle ist der M29F040 abgekündigt.


    Wie gesagt ist der Atmel wahrscheinlich zukunftssicherer, da ein paar Jahre neuer und noch nicht abgekündigt. Andererseits hat Diddl geschrieben, dass man den Am29F040 im DIP Gehäuse wie Sand am Meer findet.


    Kurz gesagt: Für's Layout wären DIP und PLCC okay.


    hat jemand vielleicht schon ne eagle datei erzeugt?


    Meinst Du Schaltplan oder Layout? Beides nicht. Wenn man das Layout mit Eagle machen wollte, müsste man erst den Schaltplan abmalen.


    Die Idee mit den Schaltern gefällt mir immer besser. Meine Finger tun mit inzwischen weh.


    Also 1-2 Wochen. Wenn Du "so lange" warten kannst, würde ich es gerne machen!


    Das ist okay. Ich freu mich drauf.


    Wenn es allerdings inzwischen noch jemand anderen in den Fingern jucken sollte, so lasse er sich nicht aufhalten :-)

  • Wie wärs mit DIP Switch?


    Wäre es ein an/aus-Thema, könnte man die in Erwägung ziehen. Aber es geht um eine Umschaltung auf mindestens drei verschiedene Quellen. Bei DIP-Schaltern besteht die Gefahr, das jemand zwei Quellen gleichzeitig einschaltet.


    Ein Schiebeschalter wäre unter den von for(;;) genannten Bedingungen geeignet.


    Hab mal schnell bei Reichelt geguckt, keiner der Schalter passt auf alle Anforderungen.


    Der Jumper JUMPER 2,54GL RT ist fast 14 mm lang, den könnte man also sogar durch ein Loch im Gehäuse bedienen. Schlägt aber mit 6 Cent zu Buche :-)


    Bei csd-electronics gibt es "Schiebeschalter 1xUM prt. wkl.", den könnte man hinten auf die Leiterplatte machen, dass man ihn durch einen Schlitz im Gehäuse bedienen könnte. Aber selbst mit 4 Umschaltern kann man nicht 2 Stück 3- bzw. 4-Wege-Schalter ersetzen.

  • Ich finde auf die Schnelle auch keine 4-stufigen Schiebeschalter, die bekommt man aber bestimmt irgendwo, wenn man gezielt danach sucht.


    Eine Alternative wäre vielleicht ein - jetzt bitte nicht lachen - Drehschalter!


    Bei Kessler-Elektronik kostet z.B. der DS3X4LK Dreh-Stufenschalter 3Kreise 4Stellungen gekapselt Printstift 1,79 Euro.

  • Man könnte das Problem mit den Vielfachschaltern auch auf zwei DIP-Switches reduzieren. Diese zwei DIP-Switche haben dann vier mögiche Kombinationen, welche dann auch die Positionen des Vielfachschaltern abbilden müssen.


    Eine erste Lösung wäre mit einem 74LS86 anstelle des Inverters. Dabei wäre der Ausgang für die /GAME bzw. /EXROM-Leitung zuständig. Ein Eingang wird mit einem Pullup-Widerstand gegen VCC beschaltet und mit einem der beiden DIP (SW1) kann er gegen GND geschaltet werden. Damit gibt man die Polarität des /GAME bzw. /EXROM-Signals an. Der zweite Eingang wird auch mit einem Pullup-Widerstand gegen VCC geschaltet, jedoch mit einem weiteren DIP-Switch (SW2) auch an den Ausgang des Registers. Damit ergeben sich folgende Zustände:


    Code
    1. SW2 SW1 Output
    2. --- --- ------
    3. open open GND
    4. open close VCC
    5. close open /Register
    6. close close Register


    Die Frage ist nur, ob man die restliche Logik auch mit den beiden freien EXOR-Gattern anstelle des NOR bzw. NAND hinbekommt.


    Gruß Martin

  • Hallo,


    bis jetzt haben wir uns immer damit abgefunden, daß es diese Jumper gibt. Mir persönlich schwebt eine jumperlose Karte vor. Dabei würde ich gerne der Gedanken eines Bootloaders verfolgen. Dieses Stück Software könnte als allererstes nach einem RESET aktiviert werden, während mittels /GAME und /EXROM der Ultimax-Modus ausgewählt wird. Dazu muß im ROMH-Flash dieser Bootloader abgelegt werden. Entweder in einer Bank, welche später von Modulen nicht benötigt wird, oder in einem separaten Flash. Dieser Bootloader könnte dann alle Vorbereitungen zum Starten des ausgewählten Moduls vornehmen. Dies wäre auch die Ansteuerung der /GAME und /EXROM-Leitungen. Ferner könnte er auch die Programmierung des Flash mit neuen Modul-Daten und evtl. ein Auswahl-Menu beinhalten. Einen Notausstieg aus dem startenden Modul könnte dieser Bootloader auch haben. Damit wäre es möglich im Fehlerfall oder gar zum Beginn einen definierten Zustand herzustellen. Da dieser Bootloader dann die /GAME und /EXROM-Leitungen direkt ansteuern kann, wären keine Jumper mehr nötig. Wenn der Bootloader alles vorbereitet hat, wird eine Routinge ins RAM kopiert, welche die Leitungen /GAME und /EXROM entsprechend setzt und dann den RESET-Vektor im evtl. eingeblendeten Modul (Ultimax-Modus) oder dem Kernel anspringt. Ab diesem Zeitpunkt blendet sich der Bootloader natürlich komplett aus.


    Was haltet Ihr davon?


    Gruß Martin