The Final Chesscard (Hardware)

There are 1,005 replies in this Thread which has previously been viewed 214,780 times. The latest Post (February 11, 2026 at 6:36 PM) was by Josef01.

  • When you exit the FCC, $de00 is set to $42. (Game uses $40 or $41 for banks)

    After you exit the FCC, it does not listen to anything at $de00, totally muted...but I gained access setting $de04 to $01/$02 instead.

  • Wer hätte den Lust und Zeit das mal als neues SMD Modul zu layouten und was würde die Erstellung dessen denn so kosten? Es soll ja nicht "umsonst" sein. Ich habe gestern mit Fulgore telefoniert und wir würden die "Final Chesscard F64 Edition" dann auch vorlöten und dann falls einverstanden Bobbel um die Versandabwicklung bitten. Wo könnte man die Leiterplatte hochwertig fertigen lassen? Vergoldete Anschlüsse und Lötstopplack inklusive?


    Ich finde die Idee auch klasse und sehe da noch ein paar Verbesserungen, die man evtl. mit einbringen könnte. Deswegen habe ich mich neben meinen anderen Projekten ab und zu hingesetzt und jede Leiterbahn von den Scans verfolgt, auf Papier übertragen und die Leiterbahn vom Scan dann gelöscht. Ich bin damit fast komplett durch und hatte insgeheim gehofft, dass @zorro seine Version hier postet, damit ich meine Version dagegen halten kann. Nichts ist schlimmer, als einen dummen Fehler zu haben und dann gucken evtl. ALLE "Mitbauer" in die Röhre und haben im schlimmsten Fall wertlose Hardware rumliegen. Deswegen hielt ich ein Vergleichen für sinnvoll. @zorro: Also wenn Du schon was hast, immer her damit... :smile:

    Lötstopplack? Natürlich soll die Platine Lötstopplack haben. Man kann es richtig Richtig machen, wenn man die Anschlussleiste hartvergoldet und mit einer Fase versieht, das ist eigentlich für solche Kontaktleisten der richtige Weg. Ich finde die Schaltung aber inzwischen gar nicht mehr trivial. Zweiseitige Platinen würden vielleicht gehen, wenn man Durchsteckbauteile benutzt. Wenn wir auf SMD gehen, ist evtl. eine vierlagige Platine nötig...

    Das "Endprodukt" soll in eine Standardmodulgehäuse passen und wird soweit vorgelötet das man nur noch die Chips reinstecken muss. Das muss jeder selbst machen, denn dann ist es rechtlich noch ein Bausatz.


    Chips reinstecken, wenn das in SMD gemacht wird? Ja, damit das ein Bausatz bleibt ist das wohl notwendig. Jedoch ist in einem Standard-Modulgehäuse recht wenig Platz. Erst recht kein Platz für die DIL-Bauteile von der Original-FCC...

    Aber vielleicht ist ja Platz für das C64-ROM in DIL-Bauform... Muss man mal sehen.

  • When you exit the FCC, $de00 is set to $42. (Game uses $40 or $41 for banks)

    After you exit the FCC, it does not listen to anything at $de00, totally muted...but I gained access setting $de04 to $01/$02 instead.

    Please login to see this attachment.Please login to see this attachment.

    @sailor:

    The i/o1-signal is being blocked when "Y" is 1. Therefore I assume, that no further access is possible. But "Y" is being set by setting bit 7, so a $4x does not make sense in my opinion...

    Cheers,
    Thomas

    BTW: In the next days/weeks I will draw this schematic with KiCAD. If being published on your website (as pdf or kicad-file) this would complete your collection of information of the FCC...

  • The i/o1-signal is being blocked when "Y" is 1. Therefore I assume, that no further access is possible. But "Y" is being set by setting bit 7, so a $4x does not make sense in my opinion...

    Cheers,
    Thomas

    BTW: In the next days/weeks I will draw this schematic with KiCAD. If being published on your website (as pdf or kicad-file) this would complete your collection of information of the FCC...

    $de04 didn't quite make sense at the first glance, but I didn't investigate the bank-switching further after i got access to the contents.

    Impressive work you have done there, I would gladly add your schematic to the blog :)

  • Das Ganze dann aber auf SMD umzudesignen mit aktuellen Bauteilen ist eine Baustelle für jemanden der die Funktion der Schaltung auch genau verstanden hat (würde ich nicht machen wollen).

    Da hätte ich schon Lust dazu.

    Ich würde dann auch gerne ein paar "Verbesserungen" mit einpflegen:

    Please login to see this attachment.

    Zum Beispiel ist die Batterie einfach über Dioden an VCC vom RAM dran und damit kein Schreibzugriff erfolgt, wenn die "Hauptspeisung" fehlt, ist die ZD1-Konstruktion drin. Ich fände an dieser Stelle ein entsprechendes IC besser (früher gabs dafür immer welche von MAXIM). Müsste man mal schauen, was man heutzutage dafür so nimmt...

    Der Oszillator ist derzeit mit zwei Invertern aufgebaut. Das könnte man sicher auch vereinfachen und dafür ein entsprechendes Bauteil verwenden. Oder gleich einen Oszillator mit mehreren Frequenzen? Der Datenaustausch erfolgt asynchron. Wenn RAM und ROM auf der 6502-Seite schnell genug sind, könnte die Karte auch mit (umschaltbaren) 10 MHz laufen...

    Das sind so Ideen, die mir im Kopf rumschweben...


    Der 6502 bekommt übrigens über einen NMI mitgeteilt, dass der C64 ein neues Byte gesendet hat, IRQ wird überhaupt nicht verwendet und liegt direkt auf 5V.

    Gruß,
    Thomas

  • Wenn RAM und ROM auf der 6502-Seite schnell genug sind, könnte die Karte auch mit (umschaltbaren) 10 MHz laufen...

    ...und wenn der C64 dann noch Code hochladen kann, hätte man eine allgemeine Coprozessorkarte und wäre nicht auf Schach beschränkt... ...dann könnte man natürlich auch gleich auf 64 KiB SRAM und ein minimales (später ausgeblendetes) Boot-ROM gehen...

    ...und dann fangen $Leute an, sich darüber zu beschweren, dass niemand Software für diese Hardware schreibt.
    :weg:

    EDIT: Ach ja, wenn man eh schon dabei ist, kann man auch gleich nen ARM einplanen und den 6502-Code per Software-Emulation laufen lassen. :bgdev

  • Chips rein stecken ist kein Bausatz.
    Für einen Bausatz muß gelötet werden und Fachwissen vorhandenen sein (es reicht: ein Bauteil nach Anleitung einlöten zu können)
    Also ein Spannungsregler, eine Diode oder einen Null Ohm Widerstand, der lose beigelegt ist.

  • ...und wenn der C64 dann noch Code hochladen kann, hätte man eine allgemeine Coprozessorkarte und wäre nicht auf Schach beschränkt... ...dann könnte man natürlich auch gleich auf 64 KiB SRAM und ein minimales (später ausgeblendetes) Boot-ROM gehen...

    der Ansatz ist gut - nur überlege ich gerade, welches Ziel eine solche Karte verfolgen würde ? :gruebel
    Ne "halbe" REU, n schneller CoPro, der dann asynchron WAS berechnen soll ?

    Einen C64-Packer ala Timecrunch um das 5-10fache schneller machen - ok, klingt nett aber ExoPuBBoozer können das schneller und besser.
    N Assembler beschleunigen - macht mit acme eh mehr spaß ;)
    Für Demos wäre es zu sehr Nieschenprodukt - da wird kaum was kommen - hat noch nicht mal das gut verfügbare DTV geschafft. :cry

    Vielleicht bin ich gerade nur nicht kreativ genug aber nennt mir mal ne gute Anwendung einer solchen CoProz-Card - stehe gerade auf m Schlauch :nixwiss:

  • der Ansatz ist gut - nur überlege ich gerade, welches Ziel eine solche Karte verfolgen würde ? [...]
    Vielleicht bin ich gerade nur nicht kreativ genug aber nennt mir mal ne gute Anwendung einer solchen CoProz-Card - stehe gerade auf m Schlauch :nixwiss:

    Mir fällt auch nichts "realistisches" ein, ich wollte die Idee nur mal in den Raum werfen, bevor ein theoretisch turingmächtiges Gerät durch eine feste Firmware zur simplen Ampelschaltung verdammt wird. Im einfachsten Fall erlaubt die universelle Variante immerhin die Benutzung verschiedener Versionen der Schach-Software.

  • EDIT: Ach ja, wenn man eh schon dabei ist, kann man auch gleich nen ARM einplanen und den 6502-Code per Software-Emulation laufen lassen. :bgdev

    Einfach einmal durch den statischen Recompiler schieben, der schon für cbmbasic verwendet wurde, dann wirds deutlich schneller ;)

  • Mach nen stm32 drauf. Der kann bei Bedarf auch gleich z80 emulieren und man kann cp/m laufen lassen.

    :rolleyes:

  • Vielleicht bin ich gerade nur nicht kreativ genug aber nennt mir mal ne gute Anwendung einer solchen CoProz-Card - stehe gerade auf m Schlauch

    Apfelmännchen! :weg:

  • Freak:
    Ich bin mit dem Schaltplan jetzt fast durch. Muss ich aber noch ins reine zeichnen und die ein oder andere Verbindung checken. Und zwei Stellen sind mir gänzlich suspekt. Ich hoffe ich schaffe das morgen, sonst komme ich erst Sonntag wieder dazu. Kannst du dann ja mit deinen Analysen vergleichen.

  • Ich habe gestern spaßeshalber auch mal angefangen den Schaltplan aufzunehmen. Sollte ich damit fertig werden, hätten wir ne weitere Version zum gegenchecken, kann ja nicht schaden.
    Bin mit den Verbindungen vielleicht zur Hälfte durch, muss dann aber anschließend auch noch etwas entwirrt werden.

    AC/64 - C64 Umbau auf 9V Wechselspannung: Thread
    Jocopod - Joystick to Controlport Dongle: Thread

  • Anbei der erste Entwurf meines Schaltplans. Bitte vergleicht ihn mit euren Versionen.

    Please login to see this attachment.

  • WOW!

    DANKE DANKE! Das war viel Arbeit und Mühe. Die Karte ist gar nicht so trivial wie man in Anbetracht der wenigen Bauteile zuerst denken könnte. Um die kleiner zu machen reichen vermutlich wirklich keine zwei Layer mehr.

    Gruß
    Tom

    Semper Fidelis!

    Forum64 Betreiber & Administrator a.D.

  • Anbei der erste Entwurf meines Schaltplans. Bitte vergleicht ihn mit euren Versionen.


    Klasse!

    Da bist Du ja im Eiltempo ohne zu Blinken links an uns vorbeigezogen... :D

    Der Plan sieht im ersten Moment ganz gut aus, ich werde ihn mir mal heute abend ganz genau anschauen und dann nochmal berichten. Meine alte 6.6.0-Version von Eagle öffnet sogar den Plan, der (so steht es in der Datei) mit der Version 7.5.0 erstellt wurde...


    Die Karte ist gar nicht so trivial wie man in Anbetracht der wenigen Bauteile zuerst denken könnte. Um die kleiner zu machen reichen vermutlich wirklich keine zwei Layer mehr.


    Dass die Karte nicht so trivial ist, dachte ich auch bereits beim Zeichnen. Die haben damals ganz gut Hirnschmalz reingesteckt, damit sie es mit zwei Layern schaffen...


    Gruß,
    Thomas

  • Anbei der erste Entwurf meines Schaltplans. Bitte vergleicht ihn mit euren Versionen.


    So, ich habe mir jetzt nochmal den Deinen Schaltplan genau angesehen. Erst einmal: Klasse Arbeit! :respect:

    Signalmäßig habe ich zu meinem Plan keine Unterschiede gefunden. Meine Anmerkungen sind (bis auf den ersten Punkt) rein kosmetischer Natur:

    * Die Bezeichnungen für D1 und D3 sind vertauscht. D1 ist im Reset-Signalweg drin.
    * Signale A14 und A15 könnte man am C64-Expansionport löschen. Die werden (am ROM1) nicht gebraucht.
    * Die Zenerdiode heißt im Original ZD1 und nicht D7.
    * Die Kontaktleiste für die Batterie sollte man vielleicht noch mit "+" und "-" und "3V" markieren.
    * Die "Basispunkte" der Schaltzeichen sollten beim Drucken entfernt werden. (Man könnte sie ansonsten mit "+" verwechseln, z.B. am Batterieanschluß) (<-- Sorry, die sind ja gar nicht im Post zu sehen)
    * NC/NC/NC an der 6502-CPU könnte man entfernen. Warum auch immer das da ist...


    Leider sind im Original die ICs und die Widerstände nicht bezeichnet. Das erschwert etwas die Zuordnung, vor allem bei den beiden 74LS32.


    Um die kleiner zu machen reichen vermutlich wirklich keine zwei Layer mehr.


    Grad' nochmal geschaut: Vier Lagen mit einer freien EAGLE-Version scheint nicht zu gehen. Und erst recht, wenn nur noch SMD verwendet wird und man trotzdem ordentliche Versorgungsflächen haben will, denke ich, dass jeweils eine ganze Lage für GND und VCC draufgeht. Dann blieben noch zwei Signallagen und wenn das nicht reichen sollten, dann routet man zur Not ein paar Signale auf den GND- und VCC-Layern.


    Das Ganze dann aber auf SMD umzudesignen mit aktuellen Bauteilen ist eine Baustelle für jemanden der die Funktion der Schaltung auch genau verstanden hat (würde ich nicht machen wollen).


    Mal kurz ein paar Worte zur Funktion, genauer zum Datenaustausch zwischen dem C64 und der Karte:

    Richtung: Vom C64 zur FCC:

    Der C64 schreibt in den $DFxx-Bereich das zu übergebende Byte. Dazu geht nach dem Setzen des Datenbusses mit dem gewünschten Byte beim C64 I/O2 auf LOW und R/W vom C64 geht ebenfalls auf LOW. IC3D erzeugt jetzt ebenfalls ein LOW-Signal am Ausgang und setzt damit den Q-Ausgang vom FlipFlop IC5A. Der invertierte Ausgang /Q wird demnach gelöscht und erzeugt eine Interruptanfoderung (NMI) für die 6502-CPU der FCC, der so signalisiert wird, dass ein neues Datum bereitsteht.

    Wenn die interne 6502-CPU der FCC jetzt während der NMI-Routine lesend auf den Bereich $7Fxx zugreift (das wird durch IC7A, IC7B, IC12 und IC9C realisiert), wird das FlipFlop IC5A getaktet und übernimmt den Pegel (LOW) vom D-Eingang an den Q-Ausgang. Dieser wird folglich LOW und der invertierte Ausgang /Q wird HIGH. Dadurch wird die NMI-Anforderung gelöscht und es kann ein weiteres übergebenes Byte erkannt werden.


    Gruß,
    Thomas