Hallo Besucher, der Thread wurde 9,1k mal aufgerufen und enthält 78 Antworten

letzter Beitrag von androSID am

Gibt es einen VIC8565 ohne Greydots?

  • Bei meinem aktuell benutzten VIC kann ich jedenfalls leider auch nicht bestätigen, dass das Phänomen bei steigender Betriebstemperatur verschwindet, obwohl mich sowas nicht wundern würde.


    Und das Problem durch Löten zu lösen..., erhm...

    am besten schnell vergessen und nichtmehr drüber nachdenken

    Es nervt eigentlich nur bei wenigen Demos aus den 80s, ab late 90s wissen halb-schlaue coder eigentlich, wie man das vermeidet

  • Getestet habe ich mit Giana Sisters und einem Tool für grey dots. Von diesem weiß ich nicht, wo ich das mal geladen habe. Author ist t0m3000, der auch hier im Forum angemeldet ist. Ich hänge es einfach mal hier mit an, was hoffentlich OK ist.

    greydots.prg

    Hi Kosmas, natürlich ist das voll OK, dass du eins meiner ersten Assembler Werke hier erwähnst bzw. aus dem Grab holst. Wenn ich ganz ehrlich bin, fühle ich mich sogar auch ein wenig geehrt, dass so ein simples Tool auch eine Verwendung findet.

  • Aber es kann nicht sein das ein Grey-dot irgendwie ein halbes Pixel ist oder so etwas, so funktioniert der VIC-II nicht. (Pixel werd zuerst noch einmal gepuffert.)

    Ich habe es auf dem 1084S damals gut erkennen können, daß die häufig nur etwa einen halben Pixel groß waren.

    Ich schätze, der VIC sieht in Grey-Dots auch keine Pixel, sondern einfach nur ein Wert im Farbregister. Daher vermutlich auch nicht gepuffert. Er zeichnet den "Pixel" für die Dauer eines Pixelzyklus mit dem, was gerade im Farbregister steht. Und genau dieses Register wird unter bestimmten Voraussetzungen offenbar während des Zyklus verändert.

    Daher meine Vermutung, daß das WE zu früh kommt, denn wenn der Adressbus steht, aber der Datenbus noch hochohmig ist, liest der VIC in dem Moment $ff, was eben für Hellgrau steht. Das selbe Phänomen tritt vermutlich in allen Registern auf, nur hat das lediglich bei den Farbregistern sichtbare Auswirkungen. Ich kann mir schon vorstellen, daß durch den Widerstand das CS später erkannt wird und so nicht vorzeitig der hochohmige Bus fehlinterpretiert wird.

    Aber würde die Farbänderung dann nicht einen Pixel zu spät kommen? Das müßte man mal genau unter die Lupe nehmen.

    Wenn man den C64 kurz aus- und sofort wieder einschaltet, sind die dots manchmal weg.

    Stimmt. Das ist mir auch schonmal in den 90'ern aufgefallen. Um damit zu experimentieren, ohne das Gerät per Powerzyklus zu verschleißen, hatte ich mal einen Taster an den PAL/NTSC-Jumper gelötet. Ein kurzer Druck bringt die Phase aus dem Tritt.

  • natürlich ist das voll OK, dass du eins meiner ersten Assembler Werke hier erwähnst bzw. aus dem Grab holst. Wenn ich ganz ehrlich bin, fühle ich mich sogar auch ein wenig geehrt, dass so ein simples Tool auch eine Verwendung findet.

    Gern geschehen! Leider weiß ich aber gar nicht, wo ich das damals her hatte. Gibt es dazu eine offizielle Quelle?

    Daher meine Vermutung, daß das WE zu früh kommt, denn wenn der Adressbus steht, aber der Datenbus noch hochohmig ist, liest der VIC in dem Moment $ff, was eben für Hellgrau steht. Das selbe Phänomen tritt vermutlich in allen Registern auf, nur hat das lediglich bei den Farbregistern sichtbare Auswirkungen. Ich kann mir schon vorstellen, daß durch den Widerstand das CS später erkannt wird und so nicht vorzeitig der hochohmige Bus fehlinterpretiert wird.

    Wie erklärst Du Dir denn, dass der Widerstandswert offenbar nur beim Einschalten vorhanden sein muss? Denn wenn der Widerstand später kurzgeschlossen ist und das CS Signal normal anliegt, dann müsste sich doch nach dieser Theorie die greydots wieder zeigen? Und vor allem: wie erklärst Du Dir das mit dem Aus- und Einschalten?

    Um damit zu experimentieren, ohne das Gerät per Powerzyklus zu verschleißen, hatte ich mal einen Taster an den PAL/NTSC-Jumper gelötet. Ein kurzer Druck bringt die Phase aus dem Tritt.

    Aber das klingt interessant, könnte ich mal ausprobieren.


    Am 466+ gibt es einen Jumper für NTSC. Wenn ich das greydots Programm starte und die Dots sehe, kann ich diesen kurz ziehen. Dann geht das Bild weg, aber beim wieder Aufstecken kommt das Bild wieder und die grey dots sind weg. :thumbup: Das klappt aber nicht immer, manchmal stürzt das Programm auch ab, aber nach ein paar Versuchen klappts dann. Und ein paar Versuche später sind sie auch wieder da. :-)

  • Halbe Pixel im VIC-II gibt es nicht (wenn man sync/blank Signale nicht betrachtet)

    Farb-darstellung in VIC-II funktioniert so etwas: (bitte verzeihe die Qualität des Diagramms, ich hatte nicht so viel Zeit/Lust das ganz nett zu machen :) )

    Oben im Diagramm werden die 4 Bits bestimmt aus die Farb-register.

    Dann wird es durch verschiedene Clocks geführt (phi1/phi2 sind zwei Phasen vom Dot Clock). Zuletzt wird dann ein (1) von 16 Signale aktiviert die eine Farbe bestimmen. Dann geht es ins Analoge hinein.

    Also ein Pixel (Grey Dot oder anderes) kann nicht ganz unten im Output noch eine andere Farbe bekommen, weil das auslesen der Register ist dann schon verschiedene Clocks her.

  • Wie erklärst Du Dir denn, dass der Widerstandswert offenbar nur beim Einschalten vorhanden sein muss? Denn wenn der Widerstand später kurzgeschlossen ist und das CS Signal normal anliegt, dann müsste sich doch nach dieser Theorie die greydots wieder zeigen?

    Da ich die Seite mit dem Schaltplan nicht lesen kann, kenne ich leider nicht die Details, und kann nur die oben erwähnten Vermutungen anstellen.

    Und vor allem: wie erklärst Du Dir das mit dem Aus- und Einschalten?

    Da die Phasenlage im Grunde undefiniert ist, und mehr oder weniger zufällig passiert, spielen da wohl hauptsächlich Kapazitäten eine Rolle, die bei einem kurzen Ausschalten noch Ladung enthalten. Dadurch fängt sich die Schaltung wahrscheinlich anders, als wenn der Rechner länger aus war. Dieser CS-Mod scheint da ebenfalls einen Einfluß drauf zu haben.

    Dann wird es durch verschiedene Clocks geführt (phi1/phi2 sind zwei Phasen vom Dot Clock). Zuletzt wird dann ein (1) von 16 Signale aktiviert die eine Farbe bestimmen.

    Sicher, daß nicht nur die Chars/Bitmaps/Sprites getaktet sind, die dann je nach Modus und Bitmuster ein Wert aus dem Zeilenpuffer oder ein Farbregister direkt an diesen Farbwählblock weiter geben? Gibt es einen kompletten VIC-II-Schaltplan, wo man das nachgucken kann?

  • Da ich die Seite mit dem Schaltplan nicht lesen kann

    ??? Welcher Schaltplan? Da wird einfach nur ein R in die CS-Leitung zwischen MMU und VIC eingeschleust. Oder meinst Du was anderes?

    Gibt es einen kompletten VIC-II-Schaltplan, wo man das nachgucken kann?

    Oder meintest Du einen VIC-"Schaltplan"? Wie wurde denn z.B. bei Vice oder anderen Emulatoren / Umsetzungen FPGA vorgegangen? Reverse-Engineering?

  • Oder meintest Du einen VIC-"Schaltplan"? Wie wurde denn z.B. bei Vice oder anderen Emulatoren / Umsetzungen FPGA vorgegangen? Reverse-Engineering?

    Ich sehe gerade, daß das auch hier schonmal thematisiert wurde: https://csdb.dk/forums/index.php?roomid=11&topicid=78186

    Insbesondere Skoe in Post 12 finde ich da interessant. Er erkennt da lediglich "simple latches" aus Invertern, aber von Taktung ist da keine Rede. Ich gehe deshalb davon aus, daß diese Latches immer den Datenbus direkt ohne Taktung zum Register durchschalten, wenn alle Bedingungen erfüllt sind, also Adresse muß zum Register gehören, R/W auf "schreiben" stehen, und CS muß anliegen.

    Ein kompletter Schaltplan wurde aber auch dort im Forum schon sehnlichst gewünscht. Scheint es aber noch nicht zu geben.

    Und zu den Emulatoren und FPGA-Cores:

    Da wird der Schaltplan nicht zwingend benötigt. Wenn man das Verhalten gut kennt, kann man es neu implementieren. Die Schaltung ist wahrscheinlich in keinem Core völlig identisch zum Original, und das muß sie auch nicht sein, denn bekanntlich führen viele Wege nach Rom.

  • Dann werfe ich, ohne jemals wirklich greydots gesehen zu haben, die Wirkung des Widerstand zusammen mit den kapazitiven Eigenschaften des Eingangs am VIC in den Raum.

    Irgendwer hat hier doch Timing Versatz beim Initialisieren als Wirkmechanismus vorgeschlagen.

    Wenn ich mir nun vorstelle, das beim Einschalten und "Hochlaufen" des VIC die geringe Zeitverzögerung aus tau=R*C dazu führt, dass der VIC Taktsyncron Pixel und Farbe ausgibt und der Zustand eben bis zum Entladen der Eingangskapazität am Eingang des VIC anhält, dann wäre damit MMn. auch erklärt,warum der Widerstand im Betrieb gebrückt werden kann und auch Aus-/Einschalten in kurzen Intervallen nicht zur Rückkehr der grey dots führt.

    Im Betrieb bei geladener Eingangskapazität wirkt der Widerstand eben wie eine Strombegrenzung.


    Nun aber bitte nicht zu fest auf mir rumhauen ...

    Seit Juli 2019 wieder mit dem Commodore Virus infiziert.

    Aktuell: C64 Reloaded MK2, C64C, C64 Brotkasten Original, C64 Brotkasten in blassgrau, Amiga 500, Amiga 600, Amiga 2000 (Octagon 2008), Amiga 2000 mit PC-XT, VIC20, Commodore 16 mit 64KB Umbau nach ComputeMit Zeitschrift..

  • Du meinst also hier:

    Ja, genau. Und beim 466 Board (mit und ohne +) ist es die entsprechende Leitung, die nicht von der MMU, sondern vom LS139 (U15 Pin 4) kommt. Gerade nachgeschaut: beim 250425 ist das ebenfalls U15 Pin 4.


    Übrigens habe ich gestern abend, nachdem keine grey dots sichtbar waren, das Giana Intro laufen und heute morgen sind immer noch keine dots sichtbar (also nach über 9h). Das scheint also stabil zu bleiben.

    Dann werfe ich, ohne jemals wirklich greydots gesehen zu haben

    Wenn Du ein Board mit einem 8565 hast, dann einfach mal Giana Sisters oder das oben von mir angehängte greydots starten. Auf uni64 gibt es ebenfalls ein Programm bei dem oben erwähnten CPU Zwischensockel, um das Poti korrekt zu justieren. In Vice kann man diese Dots mittlerweile ebenfalls emulieren. (Wozu das allerdings gut sein soll, erschließt sich mir nicht, denn die will man ja eigentlich nicht haben. Höchstens dafür, um zu zeigen, wie nah man an der Hardware ist, oder gibt es andere Gründe?)


    Um den Widerstand bequem einzufügen, kann man z.B. auch die Adapterplatine nehmen, die Bobbel in seinem Shop hat:

    https://restore-store.de/home/…_query=adapter&results=32

  • dass der VIC Taktsyncron Pixel und Farbe ausgibt

    Synchron zu was? Das Spannende ist ja, daß das Verhältnis Pixeltakt zu Farbträgerfrequenz beim C64 so krumm ist. Dazu noch Ungenauigkeiten beim Pixeltakt.


    Ich denke auch nicht, daß die Greydots ausschließlich dem VIC verschuldet sind. CPU und PLA spielen da sicher auch eine Rolle, da sie die Datenleitungen und CS speisen.


    Interessante Frage: Erscheinen die Greydots auch, wenn die Farbregister durch eine REU gespeist werden? Das könnte durchaus einen Unterschied machen, weil die Daten dann nicht von der CPU, sondern vom REU-RAM kommen. Falls der REC und REU-RAM da schneller mit den Daten kommen, als die PLA mit dem CS, dann dürfte es keinen Greydot geben. Wer eine REU mit originalen REC-Chip und ein 250469-Board hat, kann das ja mal testen.

  • Ich hab hier mal 2 Bilder gemacht: eins mit den greydots, und eins mit einer Grafik im Hires-Modus (hellgrau auf schwarz). Es scheint so zu sein, dass die greydots tatsächlich kleiner als ein Pixel sind. Allerdings kann ich das nicht mit Sicherheit sagen. Problem ist das Überstrahlen, sodass Pixel größer wirken können als sie tatsächlich sind. Müsste man mal mit einer guten Kamera, einem Stativ und identischen Belichungsparameteren machen, und icht mit einem Handy. Abfotografiert vom Sony LCD Fernseher und über SVideo angeschlossen. Ich habe mich bemüht, den gleichen Ausschnitt abzufotografieren.



    Edit: die greydots wirken auf jeden Fall unterschiedlich groß bzw. hell, aber was die Elektronik im Sony mit dem Signal anstellt, kann ich natürlich nicht sagen.

  • natürlich ist das voll OK, dass du eins meiner ersten Assembler Werke hier erwähnst bzw. aus dem Grab holst. Wenn ich ganz ehrlich bin, fühle ich mich sogar auch ein wenig geehrt, dass so ein simples Tool auch eine Verwendung findet.

    Gern geschehen! Leider weiß ich aber gar nicht, wo ich das damals her hatte. Gibt es dazu eine offizielle Quelle?

    Ohhh, das ist schon etwas länger her. Entweder habe ich es hier im Forum mal platziert oder es war mal bei uns auf der Website http://www.ibex-crew.org verfügbar

  • [...]

    Dann wird es durch verschiedene Clocks geführt (phi1/phi2 sind zwei Phasen vom Dot Clock). Zuletzt wird dann ein (1) von 16 Signale aktiviert die eine Farbe bestimmen.

    Sicher, daß nicht nur die Chars/Bitmaps/Sprites getaktet sind, die dann je nach Modus und Bitmuster ein Wert aus dem Zeilenpuffer oder ein Farbregister direkt an diesen Farbwählblock weiter geben? Gibt es einen kompletten VIC-II-Schaltplan, wo man das nachgucken kann?

    Ein Schaltplan gibt es glaub ich nicht. Ich habe selber mal mit Inkscape die layer des VIC-II mal nachvollzogen. Auf visual6502.org gab es ein ganz gute Photo die man nutzen kann, aber ich sehe jetzt das die Seite nicht ganz funktioniert. :/


    Ich glaub manche andere Leute sind auch mit so etwas dabei, oder haben das in der Vergangenheit mal gemacht, aber etwas definitives gibt es glaub ich nicht.

  • In Vice kann man diese Dots mittlerweile ebenfalls emulieren. (Wozu das allerdings gut sein soll, erschließt sich mir nicht, denn die will man ja eigentlich nicht haben. Höchstens dafür, um zu zeigen, wie nah man an der Hardware ist, oder gibt es andere Gründe?)

    Die sind abschaltbar. Und wenn man mit dem VICE entwickelt, sehr hilfreich - um das Problem eben zu umturnen. :)