Poke funktioniert nicht immer

Es gibt 21 Antworten in diesem Thema, welches 4.119 mal aufgerufen wurde. Der letzte Beitrag (31. Januar 2019 um 20:02) ist von Vernunftmensch.

  • Hallo, habe nach Jahren wieder nenne C64 aktiviert.


    Diese kleine Programm funktioniert. 2 x, dann Error Zeile 20, wer kann helfen?


    10 For a = 1 to 40


    20 poke 1026 + a,81


    30 Next a


    Wäre nett Jürgen

  • Es funktioniert auch 1 oder 2 Mal, wenn ich es eingetippt habe, dann kommt der Fehler. Danke allen, die mitnachdenken. wir

  • Es funktioniert auch 1 oder 2 Mal, wenn ich es eingetippt habe, dann kommt der Fehler. Danke allen, die mitnachdenken. wir

    Funktionier auch 1000x hinter einander (im Vice) wenn ich vor Zeile 10 noch eine weitere Schleife setze.

    Bitte melde dich an, um diesen Anhang zu sehen. :verehr: .: Mit Bitte melde dich an, um dieses Bild zu sehen.wäre das nicht passiert! :. :prof:  Bitte melde dich an, um diesen Anhang zu sehen.

    :syshack: .: Meine 3D-Drucker Teile auf :. Bitte melde dich an, um diesen Link zu sehen. :strom:

  • Ja, für mich hört sich das auch nicht gut an, jeder Wackelkontakt ist das, aber was soll ich machen?

  • Wir wissen ja noch gar nichts über Dein System und inwieweit Du dich mit messen, löten und reparieren auskennst.
    Welche Ausrüstung ist denn vorhanden? Würdest Du ein Diagnose Programm auf den C64 überspielen können?

  • Du poke'st 2 Zeichen zuviel, die landen dann nicht mehr im Bilschirmspeicher sondern im Basic-Variablen-Raum dahinter.
    Der Bildschirmspeicher fängt bei 1024 (dez) an und nicht bei 1026 ;)

    Wenn einer, der mit Mühe kaum, geklettert ist auf einen Baum, schon meint, daß er ein Vogel wär, so irrt sich der.

    Wilhelm Busch

  • Du poke'st 2 Zeichen zuviel, die landen dann nicht mehr im Bilschirmspeicher sondern im Basic-Variablen-Raum dahinter.
    Der Bildschirmspeicher fängt bei 1024 (dez) an und nicht bei 1026 ;)

    Letzteres ist zwar richtig, aber bei nur 40 Schleifendurchläufen glaube ich die erste Zeile dieses Zitats trotzdem nicht...

    Selbst beim Versuch, den Bildschirm zu füllen, würde nichts passieren: Das Screen RAM ist 24 Bytes größer (belegt eben ein ganzes KiB), in der Regel ungenutzt, die letzten 8 Byte davon sind gegebenenfalls Spritepointer. Erst dann kommt was anderes im Speicher, und zwar nicht die BASIC-Variablen sondern das BASIC-Programm selbst.

  • Wieso? Er poked doch nur 40 mal ab 1026. Das ist schon noch im Bildschirmspeicher. Fängt halt nicht vorne an.

    edit: zrs1 war schneller...

  • Error in 20

    Mach mal bitte ein Bildschirmfoto von dem Fehler und lade das hier hoch.

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

  • Zitat

    Wieso? Er poked doch nur 40 mal ab 1026. Das ist schon noch im Bildschirmspeicher. Fängt halt nicht vorne an.

    Uahh, natürlich. Lol, vor meinem geistigen Auge hatte ich einen vollen Screen :D

    Wenn einer, der mit Mühe kaum, geklettert ist auf einen Baum, schon meint, daß er ein Vogel wär, so irrt sich der.

    Wilhelm Busch

  • Der Text des Fehler war:

    Syntax Error in 20,

    Morgen bin ich wieder zu Hause, dann schicke ich ein Screenfoto.

    Danke Eurer Mühe

  • Auf meinem z.Zt. aufgebauten C64 407er Rev.C ebenfalls, beliebig oft u. auch nach Run/Stop Restore. Aber war ja auch klar, dass es das sollte.

  • Ich habe dir ein D64 image angehängt. Da sind zwei Dateien drauf.
    "POKE.PRG" ist dein BASIC Programm
    "MEMCMP.PRG" ist ein kleines Testprogramm dass dein BASIC Programm im Speicher vergleicht. Wenn es erfolgreich war gibt es '+' aus, ansonsten '-'.

    Wenn du das auf eine Disk kopieren kannst, dann kannst du damit eventuell schnell mal prüfen können ob dein RAM an der Stelle ein Problem hat.

    Schalte den C64 ein.
    LOAD "MEMCMP.PRG",8,1
    NEW
    SYS49152

    Jetzt sollte das '-' erscheinen weil du ja das BASIC Programm noch nicht geladen hast.

    LOAD"POKE",8
    SYS49152

    Jetzt sollte ein '+' erscheinen. Du kannst das auch mehrfach aufrufen und es sollte immer ein '+' erscheinen.

    Es vergleicht den Speicher 32 mal, wenn ein Fehler gefunden wird, bricht es sofort mit '-' ab.
    Du kannst auch mit POKE 49153,1-255 einstellen wie oft es vergleichen soll (max 255 Durchläufe) pro Aufruf.

    Hoffe das hilft das Problem etwas einzugrenzen.

    Wenn immer '+' ausgegeben wird, dann ist möglicherweise eher dein BASIC ROM defekt. wenn der Fehler immer auftritt. Dein Programm sollte jedenfalls keinen Fehler verursachen.

  • Wenn der Speicher einen Fehler hätte, wurde doch auch sein Listing des kl. Programms kaputt sein. Denke ich 'mal, oder nicht ?
    Da es das anscheinend nicht ist, ist das Programm selbst (im Speicher) ja in Ordung. Zumal es ja auch beim 1. und 2. Versuch noch korrekt läuft.

    Naja, vlt. hat sich sein Problem auch von alleine gelöst mittlerweile (da noch nichts erneutes kam).

  • Die CPUs gehen nach über 30 Jahren mal kaputt, ich habe schon 64er gesehen die konnten nicht mehr richtig rechnen.

    In the information war
    new codes must be devised.
    Knowledge is Power!
    Anterior, 1989