Hallo Besucher, der Thread wurde 189k mal aufgerufen und enthält 998 Antworten

letzter Beitrag von Cpt.Hardy am

The Final Chesscard (Hardware)

  • Ich habe erstmal nur die 5MHZ Einstellung gewählt , mit 14Mhz und normalen Eproms bekomme ich z.B nur

    schwarz weiße Streifen im Border. Sind die da zu langsam? Sind 200ns 27c256.

    Ja, davon gehe ich aus! Das war bei mir nämlich genauso. :-D Ich habe dann Eproms mit 100ns oder schneller verwendet, dann läuft es bei mir.

  • also ich hab es mit insgesamt 3 verschiedenen C64 probiert. Wäre komisch wenn alle das gleich Problem hätten.

    Und bisher ist mir mit andern Carts nichts aufgefallen. Zumindest die KungFu hatte ich zum flashen des CPLD eingesteckt

    Wobei in dem einen ein SwinSid verbaut ist und da funktioniert der FCC nicht wirklich, der Mauszeiger springt da beim spielen immer willkürlich durch die Gegend.

    Da spielt vermutlich die fehlende Paddle Unterstützung mit rein.

  • Ja, davon gehe ich aus! Das war bei mir nämlich genauso. :-D Ich habe dann Eproms mit 100ns oder schneller verwendet, dann läuft es bei mir.

    ok gut zu wissen. Die auf dem Foto sind Winbond mit 45ns. Ich werde da mal die V1.3 und v1.5 drauf packen.

    Und nochmal eine zweite Karte mit einem anderen RAM aufbauen.

  • Ich hätte da mal eine Frage und zwar, weiß hier jemand zufälligerweise, wie die Datenübertragung zwischen dem C64 und der original Final Chesscard genau funktioniert.

    Ich weiß dass es über die Register $DE00 und $DF00 geht und das einige Zeropagewerte getauscht werden. Nur wie, das habe ich nicht herausbekommen. Ich benötige diese Info

    zwecks Fertigstellung der SCPU-Version.:)

  • Da ist natürlich auch noch eine längere Testreihe angesagt. Ich möchte ja nicht, dass das Programm Räuberschach spielt.:)

    Zudem muss ich auch testen, ob die Zuweisung der eingerichteten Direktpage korrekt funktioniert und natürlich auch dass der Nativcode

    den Code der für die externe CPU zuständig ist funktioniert.

  • Ja, davon gehe ich aus! Das war bei mir nämlich genauso. :-D Ich habe dann Eproms mit 100ns oder schneller verwendet, dann läuft es bei mir.

    ok gut zu wissen. Die auf dem Foto sind Winbond mit 45ns. Ich werde da mal die V1.3 und v1.5 drauf packen.

    Und nochmal eine zweite Karte mit einem anderen RAM aufbauen.

    BTW: Weiter vorne in diesem Thema hat Freak schon mal was dazu geschrieben: The Final Chesscard (Hardware)

  • Ich hätte da mal eine Frage und zwar, weiß hier jemand zufälligerweise, wie die Datenübertragung zwischen dem C64 und der original Final Chesscard genau funktioniert.

    Ich weiß dass es über die Register $DE00 und $DF00 geht und das einige Zeropagewerte getauscht werden. Nur wie, das habe ich nicht herausbekommen. Ich benötige diese Info

    zwecks Fertigstellung der SCPU-Version.:)

    Zufälligerweise kann ich dazu was beitragen: :)


    Datentransfer vom C64 zu der FCC-CPU:


    * Der C64 schreibt einen Wert ins Transfer-Register A. (Adresse $DFxx, Selektierung durch I/O2)

    * Ein Schreiben an diese Adresse ($DFxx) löst gleichzeitig ein NMI auf der Seite der FCC-CPU aus. (/NMI bei der FCC-CPU geht auf Low-Pegel)

    * Auf der Seite der FCC-CPU wird der übertragenene Wert nach Aufruf der NMI-Routine (die anzeigt, dass ein neuer Wert bereitsteht) aus $7Fxx ausgelesen.

    * Ein Lesen von diesem Adressbereich der FCC-CPU setzt die NMI-Auslösung zurück. (/NMI bei der FCC-CPU geht auf High-Pegel)



    Datentransfer von der FCC-CPU zum C64:


    * FCC-CPU schreibt ins Transfer-Register B. (Adresse $7Fxx)

    * Ein Schreiben an diese Adresse ($7Fxx) löst gleichzeitig ein NMI auf der C64-Seite aus. (/NMI beim C64 geht auf Low-Pegel)

    * Auf der C64-Seite wird der übertragenene Wert nach Aufruf der NMI-Routine (die anzeigt, dass ein neuer Wert bereitsteht) aus $DFxx ausgelesen. (Selektierung über I/O2)

    * Ein Lesen von diesem Adressbereich setzt die NMI-Auslösung zurück. (/NMI beim C64 geht auf High-Pegel)



    Hoffe, das hilft etwas weiter...


    Gruß

    Thomas


    PS: Die FCC-CPU hat einen erweiterten 6502-Befehlssatz, der auch durch die Firmware ausgenutzt wird. Ich hatte mal die ersten x Bytes der Firmware disassembliert und dabei ist es mir aufgefallen... Ich hoffe, die SCPU hat den gleichen Befehlssatz, mit der SCPU kenn ich mich nicht aus...

  • Tja gute Frage woran kann das liegen?

    Wirklich eine gute Frage...


    Am geflashten CLPD , ich hoffe ich habe die Verbindungen richtig hinbekommen, das wird nicht genau beschrieben.

    Wobei das C64 Programm hat ihn ja erkannt hat und geflasht.

    An einen Programmierfehler des CPLD mag ich hier nicht glauben, da die Karte ja im Prinzip arbeitet. Wenn das CPLD schlecht programmiert wäre, dann hättest Du glaube ich nur die schwarz/weißen Streifen im Border, bzw. noch nicht einmal die (da das CPLD ja auch die Ansteuerung des C64-ROMs übernimmt).


    BTW: Du schreibst, du hast das CPLD mit dem C64-Programm geflasht? Mit meinem Updater-Programm? Hattest Du auch den entsprechenden Adapter dafür? Ich meine, die Daten hierfür sind (noch) nicht online...


    Am alternativen RAM. Das in der BOM aufgeführte hab ich ja leider nicht bekommen.

    Nicht völlig unwahrscheinlich... Welches RAM hast Du denn eingelötet? Ist die Zugriffszeit des RAMs kurz genug?


    Ich habe erstmal nur die 5MHZ Einstellung gewählt , mit 14Mhz und normalen Eproms bekomme ich z.B nur

    schwarz weiße Streifen im Border. Sind die da zu langsam? Sind 200ns 27c256.

    Ja, zu langsam. Wurde ja aber schon erwähnt...



    Ich würde erstmal neue EProms brennen, alle Lötstellen nochmal kontrollieren und dann das Verhalten nochmal beobachten...


    Gruß

    Thomas

  • Ja, das ist sehr gut.Danke! Das ist bis jetzt die beste Information zur Datenübertragung C64<-> Final Chesscard. Die SCPU hat alle 256 Bytes mit Befehle belegt. Auch die vom 65c02 sind da natürlich mit bei.

    Mal sehen, ob ich die Daten ohne den NMI in die Bank $04 der SCPU schreiben kann. Der Code für die externe CPU ist immer auf Lauerstellung, wenn dieser in Bank $04 gestartet wird.

    Ich muss zudem noch einiges umcoden. Ein STA $FFF0,X geht bei der SCPU, wenn X=#$C0 ist, nach $0100B0. Naja es ist nich einfach.:)

  • Ich weiß dass es über die Register $DE00 und $DF00 geht und das einige Zeropagewerte getauscht werden.

    Zu $DFxx hatte ich ja gerade eben weiter oben was geschrieben.


    Hier noch was zum Kongigurationsregister unter $DExx:


    * Config-Register ist im gesammten I/O1-Bereich beschreibbar.

    * Das Register ist Write-Only.


    Bit 0: 0 nach Reset. Name: "ROM-Bank". Dieses Bit schaltet zwischen den eingeblendeten 16k des 32k-ROMs um.


    Bit 1: 0 nach Reset. Name: "Disable ROM". Ein Schreiben einer 1 setzt /GAME und /EXROM auf 1 und entfernt dadurch das ROM aus dem Adressbereich des C64.


    Bit 7: 0 nach Reset. Name: "Disable CFG-REG". Ein Schreiben einer 1 entfernt das Register aus dem Adressraum. Danach ist das gesamte Register nicht mehr ansprechbar.



    Gruß

    Thomas


    PS: Das "Austauschen von einigen Zeropagewerten" ist hardwarebedingt gar nicht möglich...

  • An einen Programmierfehler des CPLD mag ich hier nicht glauben, da die Karte ja im Prinzip arbeitet. Wenn das CPLD schlecht programmiert wäre, dann hättest Du glaube ich nur die schwarz/weißen Streifen im Border, bzw. noch nicht einmal die (da das CPLD ja auch die Ansteuerung des C64-ROMs übernimmt).


    BTW: Du schreibst, du hast das CPLD mit dem C64-Programm geflasht? Mit meinem Updater-Programm? Hattest Du auch den entsprechenden Adapter dafür? Ich meine, die Daten hierfür sind (noch) nicht online...

    Ja ich hab das mit deinem C64 Programm geflasht.

    Ich hab die Verbindungen von dem Bild deiner Platine genommen.

    Wobei ich jetzt gelsene habe ,dass du noch einen Widerstand auf der Unterseite reingelötet hat.

    Wäre toll wenn du für den Adapter die Verbindungen noch posten könntest



    Nicht völlig unwahrscheinlich... Welches RAM hast Du denn eingelötet? Ist die Zugriffszeit des RAMs kurz genug?

    Das ist der den du

    hier als Alternative empfohlen hast , Mouser 913-AS6C62256-55TCN




    Werde erst morgen dazu kommen eine zweite Platine mit anderem RAM aufzubauen.

    Ich werde berichten

  • 14Mhz? wie cool.

    Irgendwer hat hier auch schon mal vorgeschlagen, daß man die FinalChesscard als Turbo-Karte ähnlich Rossmöller oder SuperCPU verwenden könnte.

    Das wäre natürlich nochmal ein Superding: FinalChesscard und Turbo-Karte in einem ...

    da würde ich aber sowas von hellhörig werden .... :D:D

    Das ist auch bei mir eine Idee, welche schon lange in meinem Kopf rumgeistert:


    "Einfach" zwei neue ROMs einsetzen...


    Das C64-ROM wird gebraucht, weil das FCC-Modul beim Einschalten /GAME und /EXROM aktiviert und dadurch der C64 nicht normal starten würde. Das ROM würde dann ein kleines Programm ins RAM kopieren und dieses starten. Dieses Programm schaltet das ROM des FCC-Moduls aus und startet den Basic-Interpreter, so dass der C64 sich normal meldet. Vielleicht würde das auch ohne Verwendung des RAMs direkt im ROM gehen...


    Im FCC-ROM würde dann eine Art Bootstrap-Loader auf die Übertragung eines Programm für das FCC-Modul warten, getriggert durch eine bestimmte Bytefolge über das Transfer-Register. Dieses Programm könnte vom FCC-6502-Subsystem im FCC-RAM abgelegt werden und durch ein weiteres Kommando über die Transfer-Register könnte man das Programm starten oder sogar stoppen (da bei der Übertragung eines Befehls immer ein NMI im Empfänger-System getriggert wird).


    Man könnte so beispielsweise Mandelbrot-Grafiken wesentlich schneller berechnen und auf dem C64 darstellen. Durch Umschaltung der Taktfrequenz könnte man dann auch die Auswirkungen dieser direkt auf dem C64-Bildschirm beobachten.


    Das Programm für das FCC-6502-Subsystem würde dann einfach mit im C64-Programm residieren. Nur das Debuggen dürfte etwas schwierig sein, da man ja keine sonstige IO-Möglichkeit hat.



    Wenn ich z.B den Demo Modus durchlaufen lasse, fängt er auf einmal an völlig falsche Züge zu spielen.

    z.B Läufer waagrecht. Ausserdem funktioniert die Zeiteinstellung pro Zug nicht.

    Oder man programmiert einen Speichertest für das FCC-RAM für so Fälle wie den oben zitierten Fall von rafi . (Ein RAM-Test, der im RAM läuft... Hmmm...)



    Freiwillige vor... :D



    Gruß

    Thomas

  • Das ist der den du

    hier als Alternative empfohlen hast , Mouser 913-AS6C62256-55TCN

    Wobei darunter steht: "Natürlich nicht getestet...". Ich bin aber immer noch der Meinung, dass das RAM passen sollte.


    Ich werde es im Laufe des Tages nochmal genau unter die Lupe nehmen...



    Gruß

    Thomas

  • Mal so eine Frage....

    Wenn ich das richtig in Erinnerung habe hat Freak vor ein paar Jahren das Final Chesscard mit SMD Technik nachgebaut, dass es in ein normales Modulgehäuse passt. Eine wirklich super Leistung !

    Bei einer Sammelbestellung wurde dann allerdings ein Rückzieher gemacht , da auf dem ROM ein Copyright liegt.

    Und WAS genau hat sich jetzt an diesem Thema geändert ?!

  • Wobei ich jetzt gelsene habe ,dass du noch einen Widerstand auf der Unterseite reingelötet hat.

    Wäre toll wenn du für den Adapter die Verbindungen noch posten könntest

    Einen Schaltplan gibt es nicht für den Adapter, ich habe ihn aufgrund der Einfachheit direkt ohne Schaltplan im Layouteditor von KiCAD gezeichnet.


    Die Verbindungen dabei können tatsächlich fast vollständig aus den Fotos des Adapters übernommen werden:


    * Userport Pin C (PB0) geht an TCK vom JTAG-Pinheader (Pin 9)

    * Userport Pin D (PB1) geht an TDI vom JTAG-Pinheader (Pin 5)

    * Userport Pin E (PB2) geht an TMS vom JTAG-Pinheader (Pin 7)

    * Userport Pin L (PB7) geht über ein 560R-Widerstand an TDO vom JTAG-Pinheader (Pin 10)

    * Userport Pin 2 (+5V) geht an +5V vom JTAG-Pinheader (Pin 1)

    * Userport Pin 12 (GND) geht an GND vom JTAG-Pinheader (Pin 2)


    Das war es eigentlich schon. Der Widerstand dient nur zum Schutz als Strombegrenzung, falls PB7 falsch programmiert sein sollte.



    Gruß

    Thomas