PET/CBM 6502 Diagnose Adapter

  • Hallo zusamen,

    nach dem sehr interessanten Nachmittag bei Jürgen hat mich dieser Adapter aus England, den man zu Diagnosezwecken in den 6502 Sockel steckt, nicht mehr in Ruhe gelassen ;)

    Ich habe mich mal hingesetzt, und mit KiCad etwas zusammengebastelt, was man alternativ verwenden könnte. Software habe ich allerdings nichts gemacht, das käme dann noch. Das traue ich mir aber zu, da bin ich mal wieder total optimistisch!:fp: Soll natürlich alles Open-Source werden.

    Mich würde mal Eure Meinung interessieren, wenn Ihr alle abwinkt, dann macht das Ganze vielleicht auch keinen Sinn.

    Ist sicher noch nicht alles zu Ende gedacht, aber ich bin mal auf Eure Meinung gespannt:)


    Falls alle "hurra" schreien, würde ich das dann auch als SMD Version machen, aber die Teile hätte ich hier herumliegen, da würde ich dann nur ein paar Platinen bestellen.


    LG, Ulf



  • Ja, ich erinnere mich dunkel an Tynemouth... Ich glaube, Jürgen hatte das erwähnt. War rot, mit einem kleinen SMD Käfer (45 Grad gedreht) bestückt, und war kaum größer als die CPU selbst. Fand ich richtig gut gemacht.

  • Und das Ding ist "geklaut"?

    Ne, das Ding nicht. Das hat er selber entwickelt.

    Aber andere Sachen, wie z.B. das RAM/ROM-Board, das ist geklaut.


    Der Blog von Dave ist leider dicht. Den fand ich immer ganz interessant. Obwohl seine PET-Reperaturen meistens damit endeten, dass er ein RAM/ROM-Board draufgesteckt hat. :fp:

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Coole Sache!


    Wird sicher ein praktisches Tool!


    Bitte umsetzen :0)


    Was wird der Tester denn genau checken?

    Wie gibt er seine Testergebnisse bekannt?

    Kommuniziert er über seriell / USB mit einem PC?


    Lg. TOM:0)

    Einmal editiert, zuletzt von Scouter3D ()

  • Für solche Fragen bin ich dankbar!

    Ich fand das bei dem Tynemouth ganz cool, dass er den PET Schirm nutzt, das möchte ich auch gerne machen. PC Communikation wäre sicher auch nicht schlecht, aber dann brauche ich eine MCU mit mehr PINs, da der ATmega16A voll belegt ist. Vielleicht braucht man ja nicht alle PINs, dann könnte man das mit zwei UART Leitungen realisieren. Vielleicht kann die MCU sich ja auch zwischendurch "abkoppeln" und mit dem PC quatschen. Muss man mal sehen. Hat jemand damit Erfahrungen? Der Rechner "denkt" ja, dass da eine 6502 drinsteckt ;) Das Ganze macht natürlich nur Sinn, wenn die Bildschirm-Hardware in Ordnung ist, aber da würde solch ein Tester wohl auch nicht viel helfen :)

    Über die Diagnose-Software habe ich mir noch nicht so ganz viele Gedanken gemacht, ich denke, dass ich erstmal die Steuer-, Adress- und Datenleitungen ans Laufen bekommen muss, bevor es daran geht. Da könnt Ihr sicher Eure Ideen mit einbringen. Vielleicht gibt es ja eine Liste mit Prüfsummen für die versch. ROM-Versionen. RAM-Test ist sicher auch noch interessant.

  • Das Teil ist klasse!

    Ich bin auch gerne mit dabei wenn du sowas machst.



    Aber für mich fast noch ein bisschen zu wenig ...


    Ich hätte gerne die UART Pins des ATmega herausgeführt.

    Dann könnte man einen USB Adapter dran stecken.


    Und dann könnte man am PC wundervolle Sachen machen:

    • schauen was die "6502 CPU" so macht
    • Fehler oder Warnungen anzeigen
    • Single Step Debug Mode am PC
    • man könnte einen kleinen Monitor implementieren (Speicher schreiben, lesen, dump, ...)
  • Dann müsste ich eine komplette CPU emulieren. Das macht dieses Tynemouth Teil sicher nicht. Ich muss ja "nur" so tun, als ob ich eine CPU wäre. Mein Plan war, einfach "nur" den Speicher auslesen, oder ganz nach Belieben etwas hineinschreiben, z.B. in den Screen-Bereich als Diagnose-Ergebnis. Eine komplette CPU Emulation wäre jetzt nicht unbedingt so ein Ding, aber ich hatte zunächst einen Tester im Kopf. Aber wer weiß, vielleicht kann man ja noch eine CPU mit einbauen.

    Andere Idee: Adress- und Datenbus und ein paar Steuerleitungen emulieren und alles andere einfach den PC machen lassen. Es gäbe dann ein paar einfache serielle Kommandos um den Speicher zu lesen und zu schreiben. Was meint Ihr?

  • Von einem 6502 Diagnose Diagnose Adapter würde ich mir folgende Funktionen wünschen:


    Hardwareseite:


    1) Verbindung zum PC via USB (seriell) und Steuerung / Ausgabe darüber


    Software:


    1) pulsieren der Adressleitungen (wie ein NOP Generator) zum "durchklingeln" der Leitungen und check der Buspuffer

    2) pulsieren der Datenleitungen zum durchklingeln

    3) auslesen von Speicherbereichen (dump in eine Datei am PC)

    4) Schreib/Lese Speichertest für RAM-bereiche (von ganz easy bis ausgefeilte Speichertests)


    Fleißaufgaben:


    Anzeigen ob ein Ordentliches "RESET" Signal bei der CPU ankommt...

    Ev. Monitoring der anderen CPU Steuerleitungen, NMI, RDY, ... (aber jetzt wird es schon fast ein Oszi :0)) oder einfach nur per LED Anzeige (Ein, Aus, flackert...)


    Lg. TOM:0)

  • Dann müsste ich eine komplette CPU emulieren. Das macht dieses Tynemouth Teil sicher nicht. Ich muss ja "nur" so tun, als ob ich eine CPU wäre.

    Dazu gibt es bereits mehrere funktionierende Sourcen die man anpassen kann.

    Ist auf meiner "long time" ToDo.



    Es würde ja langen, die halbe Prozessor Geschwindigkeit zu erreichen.

    Es muss auch nicht Zyklus genau sein.


    Tatsächlich hat aber schon einer 100% Geschwindigkeit heraus geholt mit 16MHz Atmega, ich glaub das war eine Apple 2e Emulation über Atmega.


  • Das alles ist für einen Atmega ein Klacks :)

  • Oh je... :fp: Ok, danke für den Input, ich schaue mal, wie ich die Hardware so hinbekomme, dass da noch eine UART Kommunikation machbar ist. So dass alles andere in Software gemacht werden kann.;)

  • Hi Ulf,


    Mag dich mit meinen Vorschlägen nicht zumüllen ;0)


    Ich hätte gemeint:

    2Ports für die 16Bit Adressleitungen

    1Port für 8Bit Datenleitungen


    1 Port für:

    • R/W
    • RESET
    • RX
    • TX
    • 4 Freie Portbits für 6502 Steuersignale nach freier Wahl... :0)


    Das sollte für all meine Vorschläge funzen :0)


    Liebe Grüße, der TOM:0)

  • Für solche Fragen bin ich dankbar!

    Ich fand das bei dem Tynemouth ganz cool, dass er den PET Schirm nutzt, das möchte ich auch gerne machen. PC Communikation wäre sicher auch nicht schlecht, aber dann brauche ich eine MCU mit mehr PINs, da der ATmega16A voll belegt ist.

    Eine externe Kommunikation fände ich extrem wichtig (notfalls reicht ja ein Pin für eine serielle Ausgabe), sonst ist das Ding leider nutzlos, wenn der Bildschirm nicht geht. Und wenn der Bildschirm geht, dann funktioniert eigentlich schon so viel, dass man den Tester eigentlich nicht mehr braucht - so geht es mir jedenfalls.


    Also mit externer Kommunikation fände ich so einen Tester genial.

    Den Tynemouth-Tester habe ich mir auch nur deswegen nicht gekauft, weil mir die externe Kommunikation fehlt.



    Ich habe mich selber schon mal vor Jahren an sowas versucht. Die Bildschirmausgabe hatte auch schon funktinoiert. Aber dann bin ich an der Erzeugung der phi-Signale (phi2 ?) gescheitert. Hier ein paar Bilder von meinem damaligen Versuchsaufbau:




    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Dabei ist es ja eigentlich egal, ob man das Display vom Computer nutzt oder ein separates...


    Wobei man beim originalen Monitor zumindest wüsste, dass der dann kein Problem hat.


    Cooler Lösungsansatz auf jeden Fall!


    Falls oben drauf noch der 6502 eingesetzt werden soll, würde es ggf. Sinn machen einen Nullkraftsockel zu verbauen.

  • Falls oben drauf noch der 6502 eingesetzt werden soll, würde es ggf. Sinn machen einen Nullkraftsockel zu verbauen.

    Ist eigentlich unnötig.

    Der AVR kann die 6502 emulieren.


    Ich würde halt gerne einen größeren ATmega sehen, als den 16er.



    Aber auch die Kombi mit 6502 gibt es bereits.

    Als Arduino Shield.

    Cooles Ding, an sich ...


    Das sowie gibt es übrigens für fast alle CPU.

    Also 8 Bitter meine ich natürlich.

  • Ich habe das Ganze mal etwas umgebaut, es gibt jetzt eine UART Verbindung nach "draußen". Dafür habe ich mal die Signale abgeklemmt, die offensichtlich nicht gebraucht werden, (NMI, RDY und SYNC). Die liegen entweder nur auf dem Expansion Port oder sind fest auf High (jedenfalls bei meinem 3032).

    Ein dickerer ATmega wäre sicher möglich, aber ich habe nunmal von diesen Dingern hier einige herumfliegen. Bestellungen bei Reichelt kosten immer ein Vermögen an Versand. Und da der Mensch konto-orientiert denkt... Aber lassen wir das :) Ich versuche es erstmal so. PHI1 und PHI2 aus PHI0 zu generieren, sollte wohl auch damit gehen, wenn man es clever anstellt.

    Anbei mal neue Fotos (sorry, ich finde die Render-Ansicht von KiCad einfach toll :-)))



  • Dabei ist es ja eigentlich egal, ob man das Display vom Computer nutzt oder ein separates...

    Wieso ist es egal? Bei einem CBM mit Videocontroller ist der Bildschirm dunkel, wenn das Board nicht läuft.

    Und genau das will ich ja mit so einem Tester herausfinden - warum das Board nicht läuft.


    Als einziger Einsatzzweck blieben dann nur PET/CBMs ohne Videocontroller und intakter Videologik und CBMs die soweit funktionsfähig sind, dass der Videocontroller initialisert wird.


    Ok, die Initialisierung des Videocontrollers könnte auch der Tester übernehmen. Dann hätte man ein paar mehr Fälle mit Bildschirmausgabe.

    Aber busmäßig muss dann eben alles funktionieren.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

    • Offizieller Beitrag

    Der Tynemouth Adapter ist zwar sehr schon hilfreich, aber es ist so wie bereits mehrfach geschrieben: Die Vorraussetzungen, die gegeben sein müssen, um eine funktionierende Bildschirmanzeige zu bekommen, schränken den Einsatzbereich doch deutlich ein.

    Ein ähnliches Gerät, das die Ergebnisse ohne funktionierende Bildschirmanzeige mitteilen kann, wäre erheblich besser.

    Eine serielle Ausgabe der Testergebnisse erscheint mir da auch als vermutlich beste Option.

    Zur Anzeige könnte man dann vielleicht auch ein serielles Kassendisplay nutzen, wenn man nicht extra einen Laptop o.ä. aufbauen möchte/kann.

    Diese Dinger bekommt man oft für kleines Geld bei ebay.

  • Oder man baut sich einen kleine Diagnose-Arduino mit aufgestecktem TFT-Display, der seriell mit dem Tester kommuniziert. Aber sowas kann dann ja später zusätzlich entstehen. Ich glaube, da sind der Fantasie kaum Grenzen gesetzt. ;)


    Wenn die Hardware einmal steht und die 6502-Bus-Signale ordentlich generiert werden, könnte ich mir auch eine gewisse Dynamik bei der Testfirmware vorstellen.



    Gespannt bin ich auf die Erzeugung von Phi1/Phi2, an der ich damals gescheitert bin.


    Das hier ist zwar eine russische Seite, aber die Schaltpläne und Diagramm sind ganz informativ:

    http://wiki.breaknes.com/6502:clock


    Phi1/Phi2 muss mit dem Eingangssignal Phi0 synschronisert werden. Außerdem muss der Buszugriff mit Phi0 synchronisiert werden. Sonst gibt's Probleme mit dem Ansprechen von Bausteinen, die den Phi2 verwenden.


    Deswegen hatte bei mir das Schreiben in den Bildschirmspeicher auf dem PET gut funktioniert. Dort ist der Zugriff auf das Videoram nicht mit Phi2 verknüpft. Man hat dann zwar beim Schreiben die vom PET bekannten Störungen auf dem Bildschirm, aber das Schreiben klappt trotzdem, ohne dass man sich um Phi2 kümmern muss.

    Beim CBM 3032 hatte ich ständig fehlerhafte Zeichen beim Beschreiben des Videorams mit dem Arduino. Ein Speichertest des Videorams war so natürlich auch nicht möglich. Auch die ROM-Checksummen waren mehr oder weniger zufällig.


    Ich bin damals zu dem Schluss gekommen, dass eine Synchronisation von Phi1/Phi2 mit Phi0 nur mir zusätzlicher Hardware möglich ist. Aber vielleicht habe ich damals ja zu kompliziert gedacht und es gibt eine einfache Möglichkeit.


    Wenn Tynemouth seinen Kram mal offenlegen würde, dann wüsste man, wie er das gelöst hat. Deswegen hasse ich Closed-Source-Projekte. :(

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Mein Plan war, das in Hardware zu machen und dann in Software nur noch die Buszugriff zu synchronisieren.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Mit den Phi Signalen muss ich Mal sehen, ob das in ASM geht und ob dann noch was übrig bleibt für den Rest ;) Separate Hardware versuche ich erstmal zu vermeiden, aber wenn's nicht anders geht...

    Ich habe übrigens den GND Pin für den UART vergessen:fp:

    Vielleicht bekomme ich die Woche erste Ergebnisse mit den Phi Signalen... Mal sehen wie stressig es auf der Arbeit wird.8-)

  • Assembler könnte gehen. Das wollte ich damals nicht machen.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Huhu :)


    So, ich habe etwas weitergebastelt und von der Platine mal 3 Stück bei Aisler geordert (22€, kann man nicht meckern). Werden Mittwoch geschickt, dann kann ich am WE ausprobieren. Der ATmega1284 ist pinkompatibel, wenn ich das richtig sehe, dann kann man später noch darauf ausweichen.

    Ich habe jetzt erstmal UART-GND nachgerüstet und einen Baudrate-Quartz genommen.

    Ein kleines C-Programm habe ich auch schon gebastelt, welches auf PHI-0 High wartet und auf PHI-0 Low synchronisiert. Dann gebe ich die Adresse auf den Bus und schalte PHI-2 und ggf. RW ein. Vom synchronisieren bis zum PHI-2 vergeht eine ganze Periode, sodaß die Signale zeitgenau ausgegeben werden, nur eben eine Periode später :)

    Ich kann mir vorstellen, daß das klappt. Ich gehe mal davon aus, daß nicht permanent ein PHI-2 Signal erzeugt werden muß, sondern nur dann, wenn ich vom Rechner etwas will :) Schließlich funktioniert die ganze Kiste mehr oder weniger auch ohne CPU, da der Monitor lustige Zeichen anzeigt. Die ganze Video-RAM Geschichte scheint also ganz gut ohne PHI-Signale klarzukommen.

    Meine Idee ist jetzt, nur dann die Steuer- und PHI-Signale zu erzeugen, wenn ich eine Adresse lesen oder schreiben will.

    Übrigens ist in meinem CBM 3032 die PHI-1 Leitung überhaupt nicht angeschlossen. Ich weiß allerdings nicht, ob das immer so ist.



    Pink: PHI-0

    Cyan: PHI-2

    Yellow: RW



    Anbei noch ein paar Eindrücke von meinem Chaos-Schreibtisch :)