Beiträge von ZeroZero im Thema „[cc65] Programm erneut starten“

    Hab mir das Programm kurz angesehen. Dabei entsteht folgender Eindruck:
    $0819: Ziemlich direkt nach Start des Programms wird eine Unterroutine bei $1291 zur Initialisierung aufgerufen.
    $081f: Im Anschluß wird eine weitere Initialisierungsroutine aufgerufen, die den Variablenspeicher löscht. Wohl aus Speicherplatzgründen wird hierbei die nun nicht mehr gebrauchte Routine von $1291 dem Variablenspeicher zugerechnet und ebenfalls mit dem Wert 0 überschrieben.

    Wenn man nun das Programm ein zweites Mal startet, fehlt die Routine bei $1291, und der Prozessor trifft nur auf ein BRK.

    Das wäre dann eindeutig ein Fehler im Compiler, wenn korrekt compiliert wurde...

    Die INT MAIN Variante wird eigentlich bei Shell-Programmen benötigt, um in Skripten den Rückgabewert eines Programms auszuwerten. Dieser KANN, MUSS aber nicht ausgewertet werden. Zurückgegeben wird in jedem Fall ein INT. Bei VOID wird kein Wert zurückgeben.

    Wie zrs1 somit korrekt bemerkte, müsste der Compiler für beide Fälle korrekten Code generieren.

    Muss also tatsächlich eine defekte cc65 installation oder ein Fehler in der tool chain sein.