Der RESET beim C64

Es gibt 35 Antworten in diesem Thema, welches 7.136 mal aufgerufen wurde. Der letzte Beitrag (20. Januar 2014 um 10:59) ist von Gerrit.

  • ich habe eine Verständnisfrage

    Es geht um den RESET beim C64.

    Leider habe ich keinen Schaltplan für den C64 da aber ich gehe davon aus daß das am Userport herausgeführte RESET / Signal die CPU RESET / Leitung ist ohne irgendeinen VIA oder CIA in der Leitung.

    ich kann mich erinnern als ich vor 30 Jahren meinen C64 hatte da wurde mir gesagt bei einem RESET bliebe der Speicher erhalten.

    Da habe ich jedoch heute ein Verständnisproblem.

    Die leeren Speicherzellen des C64 enthalten den wert AA.

    Dieser wert wird beim Hochfahren des Computers im Rahmen eines Speichertestes in die Zellen geschrieben.

    wenn ich einen RESET auslöse dürfte das das gleiche sein wie das RESET Signal beim Einschalten des Computers.

    Es dürfte also in die gleiche Kaltstartroutine verzweigt werden wie bei einem Kaltstart und diese Routine mündet eben in einem Speichertest der den bisherigen Speicherinhalt überschreibt.

    wie kann also bei einem RESET / der Speicherinhalt erhalten bleiben?

    Bei meiner PET umgehe ich diese Sache indem ich anstatt eines RESET einen NMI auslöse und lasse den NMI dann in den eingebauten Maschinensprachemonitor verzweigen.

    Auf diese weise bleibt bei der PET der Speicherinhalt erhalten.

    und noch etwas: ich jeder noch so schnodderigen Anleitung für einen Selbstbaucomputer wird einem geraten die RESET Taste zu entprellen.

    Irgendjemand hier der seinen RESET taster entprellt?

  • Jetzt ist mir gerade gekommen ich könnte den RESET Vektor in der Zeropage verbiegen bevor ich einen RESET auslöse.

    Dann wird hoffentlich noch vor einem Speichertest irgendwo anderes hin verzweigt?

    Das wäre noch das einzige das ich mir vorstellen könnte.

    Das bedarf aber eben einiger Vorbereitung bevor ich den RESET Knopf drücke.

  • Bitte melde dich an, um diesen Link zu sehen. vom C64 gibts im Netz. Am User- und Expansionport liegt direkt die /Reset-Leitung des Systems.

    Der Ablauf beim Einschalten oder Druck auf die Reset-Taste ist identisch.

    Der Speicherinhalt nach dem Einschalten ist zufällig. Der Speichertest ($FD50 bis $FD9A im Kernal) des C64 überschreibt den Speicher nicht oder genauer: restauriert den Originalinhalt nach dem Test wieder (mit Ausnahme des letzten Bytes)! Allerdings werden danach alle Systemvariablen neu initialisiert. Ein im Speicher befindliches Basic-Programm wird dadurch tatsächlich nicht gelöscht, ist aber nicht mehr sichtbar.

    Nach meiner Erfahrung ist beim C64 kein Entprellen des Reset-Tasters nötig. Das kann bei anderen Systemen und anderen CPUs aber anders aussehen.

  • Genauerer Reset-Ablauf siehe:
    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.

  • Danke! ich werde mir $FD50 bis $FD9A einmal genauer ansehen und die Wiki Verweise :gruebel

  • Die leeren Speicherzellen des C64 enthalten den wert AA.

    Da muss ich Dir widersprechen :D Damals bei meinem C64G und heute im Vice nochmal überprüft ist der Speicher abwechselnd mit $00 und $FF gefüllt. :prof:
    Nach einem Reset bleibt alles bis auf betimmte Zeiger u.Ä., die neu gesetzt werden erhalten. Ich hab da mal bei Spielen mit Resetschutz rumprobiert (Bevor ich ein Action Replay hatte), sogar nach dem ein und ausschalten des rechners bleibt der Speicherinhalt noch eine Weile erhalten, wird aber langsam wieder mit $00 und $FF durchsetzt. Manchmal konnte sogar nach zehnsekündigem Ausschalten das Spiel wieder anlaufen. Danach ist es dann meistens abgestürzt. Solange eben die CBM80 Kennung und ein bisschen nutzbarer Code vorhanden war. Ich kam mir fast vor wie ein Nahtodforscher ;)

  • Welches Muster nach dem Einschalten im RAM steht hängt vom RAM ab. Verschiedene Hersteller implementieren das unterschiedlich.

  • Lysosom: ich gebe zu das mit den AA habe ich einfach in Analogie zu meiner PET angenommen

    ich gebe Dir allerdings recht es gibt einige wenige Bereiche da steht auch einmal 00 oder FF (ich weiß jetzt allerdings auf Anhieb nicht wo die eigentlich sind)

  • Lysosom: ich fand das immer ganz faszinierend wenn ich den HIRES Speicher gelöscht habe und die Streifen Zeile für Zeile verschwunden sind.

    (ich habe das früher immer in BASIC gemacht weil ich in Assembler vor 30 Jahren ein furchtbares halbwissen hatte mit dem ich im Ernstfall nicht viel anfangen konnte)

    Dementsprechend langsam war die ganze Geschichte.

    Aber ich konnte dafür gut zusehen.

  • In meiner VICE Version kann man das RAM Reset Pattern auch einstellen ...

  • Welches Muster nach dem Einschalten im RAM steht hängt vom RAM ab


    wobei das beim C64 erstaunlicherweise derart konsistent ist das sich nicht wenige programme darauf verlassen (meisstens nicht mit absicht versteht sich)

  • Ich glaube das da ein Unterschied war als das RAM von 8 Stück 4164 auf 2 Stück 4464 gewechselt wurde.
    Der RAMtest den der Kernal gefahren hat sicherte den vorigen Wert und hat ihn wieder hergestellt.


  • wobei das beim C64 erstaunlicherweise derart konsistent ist das sich nicht wenige programme darauf verlassen (meisstens nicht mit absicht versteht sich)


    Wenn das Muster nach dem Einschalten doch je Ram und sonst was verschieden ausfallen kann, wie kann sich dann ein Programm auf konsistente Einschaltwerte verlassen.., wie du es meinst ? Das beides (Vorposting und Antwort) zusammen widerspricht sich so doch.


  • wobei das beim C64 erstaunlicherweise derart konsistent ist das sich nicht wenige programme darauf verlassen (meisstens nicht mit absicht versteht sich)

    Das ist böse, denn wenn man eine Mischbestückung verschiedender Hersteller hat (gabs auch schon ab Werk, ich habe einen C64 mit RAMs von 3 Herstellern!) sind die 0 und 1 Bits nach dem Einschalten unterschiedlich verteilt und es ist nichts mehr mit 00 und FF in festen Blöcken.

    Beim C64 habe ich mir das noch nicht angesehen (da fehlt ein Monitor im ROM), aber beim C16 kann man je nach verwendeten RAM-Herstellern sehr unterschiedliche Muster im Monitor beobachten. Der macht keinen RAM-Test sondern nur eine Erkennung der Größe auf die 3 möglichen Werte.

  • jetzt noch eine Frage: wenn der C64 Speichertest den ursprünglichen wert wiederherstellt, ist AA dann der ursprüngliche wert der RAMs nach dem Einschalten.

    AA ist binär 10101010 das riecht für mich schon nach Speichertest.

    ich habe noch nie ein RAM gesehen mit 10101010 als Einschaltwert.

    Außerdem stelle ich mir unter zufälligen Speicherinhalten nach dem Einschalten etwas anderes vor als ein fast duchgehendes AA.

  • Achtung, beim C64 sind die RAMs, zumindest auf den alten Platinen, immer nur 1 Bit breit. Soll heissen, der Wert den Bit 7 beim Einschalten hat hat keine Relation zum Wert von Bit 6 da beide in verschiedenen ICs zu finden sind. Sind diese ICs von unterschiedlichen Herstellern oder haben unterschiedliche Maskenrevisionen kann dort wo bei Bit 7 eine 1 zu finden ist bei Bit 6 eine Null stehen.

    Eigentlich sind bei DRAMs alle Speicherzellen beim Einschalten Null (Kondensator der Zelle leer), aber anscheinend wird die Hälfte der Matrix invertiert behandelt. Gibt sicher einen technischen Grund dafür, nur kenne ich den nicht.

    Bei SRAMs gilt beim Einschalten hingegen eine echte Zufallsverteilung.

    Bei welchem C64 findest du denn $AA beim Einschalten und was für RAMs sind auf der Platine?

  • Gerrit: Mein C64 Board ist ASSY NO 250425

    Als Erstes habe ich diese Sache allerdings auf meiner PET gesehen.

    Die PET verwendet für den BASIC Speicher DRAM Bausteine.

    Für den Video Speicher verwendet die PET SRAM aber der wird ja ehedem beim Einschalten gelöscht also ist hier nichts mehr nachvollziehbar.

    Allerdings kennen wir die Bilder von defekten PETs die nach dem Einschalten wirklich nur Müll auf dem Bildschirm zeigen wenn der Bootstrap noch vor Löschen des Videospeichers defekt ist.

    Das mit dem bits die von acht verschiedenen RAM Bausteinen kommen das fällt mir jetzt auch gerade wieder ein wo Du es mir sagst.

    Es wäre jetzt allerdings interessant zu wissen wieso die hälfte dieser RAM Bausteine invertiert ist.

    Ich bin jetzt gerade zu faul um mir mir das Platinenlayout meiner PET anzusehen aber nehmen wir an auf der PET ist das genau so.

  • Die RAM Bausteine meines C64 sind OKI M3764A-15

  • Moment... Ich kenne das noch vom 8032. Der macht einen Speichertest zerstört dabei aber den Speicherinhalt (also kein Restore wie beim C64). Nach bestandemem Test steht dort $AA drin. Das liegt jetzt nicht an den RAMs sondern dem Speichertest des PET/CBM.

    Dieses Verhalten bitte nicht mit dem des C64 mit Default-KERNAL verwechseln.