Habe zum Spaß auch mal bei kommerziellem Anbieter nachgefragt, was es kosten würde
das Layout und Netzliste zu extrahieren:
Habe zum Spaß auch mal bei kommerziellem Anbieter nachgefragt, was es kosten würde
das Layout und Netzliste zu extrahieren:
Der Adapter von toms01 (an dem ich mitgeholfen habe) bildet die Innereien des 8501 mehr oder weniger 1:1 nach.
Daher ist die Lösung sicherlich die zu bevorzugende.
Die Lösung von "sellmyretro" ist praktisch das gleiche - nur wird hier auch noch die 6502 CPU im FPGA nachgebildet.
Die Lösung mit dem 6510 ist einfach nur Pfusch.
Nactrag: Die Daten für den Adapter sind offen... es kann also jeder nachbauen! ![]()
Poly layer ist nun fertig:
Damit liegt alles wesentlich komplett vor!
Leider ist beim Poly layer ein bischen was schiefgelaufen: ![]()
Also nochmal von vorne. ![]()
1. Die 6510 Adapter brauchen eine BIOS Änderung, weil der 6510 nur einen 6 Bit I/O-Port (im Gegensatz zum 7 Bit I/O des 8501) hat.
Weiterhin hat der 8501 das Bit 5 nicht nach draussen... das widerrum ist beim 6510 aber verdrahtet. Also muss das BIOS angepasst werden,
damit diesem Umstand Rechnung getragen wird.
2. Die "GATE IN" Funktion ist beim 6510 gar nicht vorhanden. Betrifft manche RAMs.
3. 6510 muß 2 MHz tauglich sein... also 6510A
TL;DR 6510 als 8501 Ersatz ist Käse.
Besser den 6502 Adapter von toms01 und mir nehmen... der macht aus einem normalen 6502 einen vollwertigen 8501:
https://www.forum64.de/index.p…drop-in-ersatz-mit-6502a/
PS: Mein Avatar ist übrigens genau ein 8501R4... ![]()
Die fehlende Ecke ist nun auch da:
Könntest nur noch etwas darüber erzählen, darstellen wie man aus dem gezeigten Bild auf die einzelnen Funktionen schließen kann, grob erklären oder die einzelnen Bereiche farblich umranden,
Aus dem Bild alleine geht das nur durch "Erfahrung"... im Detail sieht man
eben die einzelnen Transistoren und kann sich dann ausdenken was die Schaltung
wohl macht.
Oder man kann dann auch die Schaltung auf Transistorebene simulieren.
verstehe ich das richtig? Der Metalllayer und der Polylayer sind die Verdrahtung wie bei einer zweiseitigen Platine? Man wird also bemüht sein, den Polyanteil wegen des höheren Widerstandes klein zu halten?
Genau so ist es. Zusammen mit der durch die Isolationsschicht gebildeten Kapazität(en) bekommen wir noch ungewollt Verzögerungsglieder.
Bis auf eine kleine Ecke (rechts oben; wird nachgebarbeitet) ist Metall layer fertig!
Das Originalbild hat ~16000x18000 Pixel
Erstaunlich, zunächst werden 6 Adressleitungen oberhalb des ROM Bereichs dekodiert und dann die gelesenen Daten (16 Bytes parallel) mit den anderen 4 Adressleitungen und 1 aus 16 Selektoren weiter ausgewählt...
Das ist relativ offensichtlich.
Ich bin mal gespannt, wie das weitergeht. Auf jeden Fall tolle Arbeit.
Das ist der Plan:
Sobald ich das Metall layer und Poly layer als saubere Bilder vorliegen habe, werde ich
nebenbei (um andere Projekte nicht noch mehr zu verzögern) den Chip vektorisieren...
Sobald das Teil vektorisiert ist, werde ich eine Netzliste daraus generieren und per Simulation
das ROM auslesen. Wenn dies fehlerfrei funktioniert; d.h. das Ergebnis aus dem Simulator
mit dem bekannten Dump übereinstimmt, geht's ans umsetzen des ganzen Chips
in HDL auf einem FPGA.
So... die ersten Bilder trudeln ein:
Sowas ärgert mich. Das taucht ja nicht nur in den CPUs auf, sondern auch ausserhalb der CPUs, wenn man RAM oder ROM anbinden will oder sonstwie auf dem Bus was machen will. die neuen WDC CPUs sind da ja besondere Diven, wie du weisst.
Ja... die WDC mag' ich u.A. deswegen nicht so.
Intern im 6502 haben die auch Schweinereien gemacht:
Salopp gesagt ist ja PHI1 nur ein Invertierter PHI0/2... nur das es eben eine Zeitspanne gibt, wo beide definitiv low sind.
Aber intern haben die im Chip Anstatt PHI0/2 ein invertiertes PHI1 erzeugt, weil dies eben etwas früher auf High/low geht
als PHI2. Und die $0/$1-Register des 6510/8501/6509 werden mit im Vergleich stark verzögerten PHI1/2 Signalen gefüttert
um die internen Setup/Hold-Zeiten des Datenpfad-Eingang einzuhalten. Autsch!
Für die Simu habe ich ja den Code vom "Visual6502" hergenommen... meine Annahme war: Bei so vielen Transistoren
und nach 10 Jahren wären Probleme bekannt bzw. äußerst unwahrscheinlich, das hier ein PRoblem noch auftritt.
Aber Murphy lebt halt immer noch....
Kleiner Nachtrag: Wenn ich an den bekannten Stellen die Signale selbst verzögere etc. läuft die simulierte CPU!
Insgesamt sind es aber zu viele Stellen, wo solche Glitches auftreten; d.h. irgendwan stürzt die Simu ab.
Ich habe letzte Woche angefangen die generierte Netzliste zu simulieren... lief natürlich nicht. Wäre auch zu schön gewesen.
Beim simulieren fand' ich relativ schnell kleinere Fehler beim vektorisieren (vergessene Kontakte, Kurzschluß durch VIA an falscher stelle):
Trotzdem wollte die CPU nicht so richtig anlaufen. Wer die Reset-Sequenz des 6502 kennt: Nach dem Fetch des Vektors bei $FFFC/D
sollte es direkt mit dem Usercode weitergehen. Aber bei mir war nach der steigenden Flanke Clock der PC immer kaputt.
Wie sich durch händisches (mit Notizblock und viel Geduld/Frust) simulieren der Netzliste rausstellte hat der von mir verwendete
Simulator noch eine Schwäche: Er ignoriert Timings. Beispiel: Alle FETs, die durch einen Netzknoten gesteuert werden, sind
beim nächsten Durchlauf sofort ON/OFF während die echten eben gewisse Zeit brauchen (Gate Kapazität).
Das nächste was dann noch zu beachten ist: Absichtlich von MOS/CSG eingebaute Kondensatoren, um die Clocksignale
innerhalb des Chips zu verzögern. Dies wurde beim 8501 - aber auch bereits beim 6509 gemacht:
Wie geht's nun weiter? Ich werde die Simulation nun umbauen; d.h. eine eigene erweiterte Simulation bauen, die
Timings in gewissen bereichen beachtet und den Netzlistengenerator so erweitern, das er mir ausgibt, wenn solche
Kapazitäten detektiert werden.
So... nächste Woche geht der 6530-004 ins Säurebad:
Schön, inkl. cheysmate ;)?
Ich habe ein Chessmate mit defektem 6530. Ich hab schon versucht den mit dem sfd1001-6532 Adapter zu ersetzen und die Signale an die Adressen im chessmate anzupassen - hatte es aber nicht hinbekommen und erst mal zur Seite gelegt.
Mein Ziel wäre alle Varianten unterzubringen, deren ROM ich ergattern kann. Da ich Flash verwenden möchte, sollte es auch
möglich sein nachträglich weitere ROMs unterzubringen
Das generieren der Netzliste funktioniert nun... in den nächsten Tagen geht's an den Export und
Simulation der Netzliste:
Jede Frabe steht für einen eigenen Knoten in der Netzliste. ![]()
Zufällig ist blau in den meisten Fällen tatsächlich GND in diesem Fall.
fhw72 : Falls zum decappen auch defekte 6530 reichen sollten, da müsste ich noch welche haben.
Leider nicht... aber ich habe Quelle für zwei identische gefunden. Und die gute Nachricht:
Ich habe auch einen Sponsor gefunden, der das Decapping dieser 6530 finanzieren möchte.
Damit wird es mir dann möglich sein eine vollständig vollständig exakte Implementierung des Chips
zu erstellen. D.h. nicht nur Funktional (SOLL) - so wie es im Datenblatt steht - sondern so wie es eben
intern im Chip realisiert wurde (IST) inkl. aller Seiteneffekte und Abweichungen zum Datenblatt.
Das Ziel ist: EINEN einzigen universellen 6530-00x zu bauen - der die bekannten Varianten - ersetzen kann!
Ebenso 6532 und evtl. R6531.
Das Teil ist ja doch mehr digital als ich dachte. Mit den Datenblättern war eher eine analoge Implementierung zu erwarten. Aber irgendwoher müssen ja die phoneme kommen
1/3 des Chips ist der Analog teil... aber der ist nur wegen der Kondensatoren so groß. Das meiste ist in der Tat Digital.
Ich hab zwei Datenblätter von mos und noch dieses von Rockwell.
Da ist sogar ein Bestellformular bei
Danke! Die kenne ich von hansotten.nl
Ich hatte sowas auch mal von MOS gesehen... aber finde es nicht mehr. ![]()
Mal schauen... vielleicht opfere ich mal einen 6530-004 zum decappen. ![]()
Hallo!
Neben den bekannten Datenblättern von MOS, Rockwell etc. für den 6530 gibt es
doch sicherlich noch Infos, aus denen *ALLE* möglichen Optionen für die Maske+ROM ersichtlich sind?
Falls da jemand eine Quelle, PDF o.ä. hat, wäre ich über Infos dankbar.
PS: Es geht nicht um eine Aufstellung der existierenden Varianten (die kenne ich bereits), sondern darum
welche Möglichkeiten MOS damals angeboten hat. D.h. welche Features eingestellt/bestellt werden konnten.
Gibt es also noch weitere, genauere Infos als dieses hier:
Es gibt mindestens ein Projekt - für die fehlerbereinigte "A" Variante:
Ich habe mal begonnen (wie so vieles anderes
) und werde irgendwann auch daran weitermachen.
Insgesamt ist der Chip aber einfacher als der SID, da er "sauber" designed wurde und daher nicht
empfindlich gegen die Toleranzen der Fertigung ist. (Stichwort: SC Filter!)
Einen Schaltplan des Digitalteils habe ich irgendwo herumschwirren... es arbeiten auch noch andere daran.
Aber solange meine Vorräte an SSI262AP/SC-02 noch nicht völlig verbraucht sind, kann es noch dauern. ![]()
Soll heißen: Ich hab' zwar große Lust daran zu basteln - aber derzeit keine Zeit.
PS: Falls Links in andere Foren gegen die Regeln verstossen bitte löschen!
Ich habe auch mal den 8726R1 der REU vektorisiert und auf gebürstetes Aluminium (als Wandbild) drucken lassen:
-
-
Display MoreDas Registerschreiben funktioniert im P500 vor R7 nicht richtig. Also hat Commodore im kernal patches eingebaut, die so lange schreiben, bis der Inhalt drinnen ist. Das macht den P500 in basic sehr langsam, aber es läuft.
Sobald Assembler Programme direkt in den vic schreiben, treten div Grafikfehler auf - ist völlig unbrauchbar.
Erst mit R7 ist der P500 außerhalb basic/kernal nutzbar.
Ich hab das Kernal komplett auf Rev. 4a und ohne die schreibloops gepatcht - der sys Befehl war ja auch unbrauchbar.
Im 600,700 ist der 6509 ohne Rev. Vollkommen ausreichend.
Mein R4 ist wieder aufgetaucht! Interessant der Date/Code:
01/83 für den R4... und die R7A sind sowohl vorher (50/82) als auch später (06/83).
Auch hier ein kurzes Update:
-
-
-
Drain, Source und Gates der FETs im Chip werden richtig erkannt!
Die Erkennung zusammengehörender Leitungen bzw. von leitendem Material auf EINEM Layer läuft auch;
habe damit einen satten Kurzschluß zw. VCC und GND im meiner MOS6509R7 Zeichnung gefunden.
In Kürze werde ich die Leitungserkennung verbessern, sodaß dann auch VIAs und sontige Kontakte
berücksichtigt werden; d.h. leitende Verbindungen zw. den Layern. Dann steht die Netzliste! ![]()
Ich bin inzw. etwas weiter am Netzlistengenerator und habe mal ein Bild von dem Teil des Chips
gemacht, das für die Dekodierung der beiden Befehle für den zusätzlichen Addressraum
zuständig ist:
Beige - Gate/Channel (oder Kondensator!)
Rot - Drain/Source
Blau - Kontakt
Cyan - Polysilizium
Links oben sieht man auch, wo MOS etwas "getrickst" hat: Da sind zwei Kondensatoren um Steuersignale
zu verzögern. Vermutlich sind diese an dem Unterschied zw. R4 und R7 verantwortlich...
Genauere Infos gibt's sobald der Netzlistengenerator fertig ist.
PS: Die Differenzierung zw. Drain, Source, Kontakt etc. findet bereits automatisch statt.
Ich bekenne mich schuldig: Der P500 steht (seit ich den geschenkt bekam) nur auf dem Schrank.
Aber welche Probleme treten denn auf bzw. was sind die Patches?
Hast du denn schon den entscheidenden Unterschied zum R4 gefunden, warum nur der R7 im P500 korrekt läuft?
Das muss ja was mit dem Vic2 Timing zu tun haben...
Meine Vermutung ist ja das R4 und R7 nur für den P500 entwickelt wurden. Im 6xx und 7xx läuft auch ein einfacher 6509 problemlos.
Im P500 haben sie ja das kernal mit mehrfach schreib Routinen gepatcht, aber mit R7 sind diese patches nicht mehr notwendig.
Ich hab' was gefunden... bin aber noch unsicher; ich muß erst meinen R4 wieder finden um das nachzumessen.
Momentan habe ich nur jede Menge R7 rumliegen und finde den einzigen R4 (den ich hatte) nicht mehr: Saustall im Labor!![]()
Aber wie sehen denn die Patches aus?