Posts by Kiri

    Hi Kiri, danke für's Austesten. Ich hab mal eine neue Version auf beide Links hochgeladen, (6.3.1), die sollte das Verhalten wieder wie gehabt haben.

    Hi Endurion,

    die Version verhält sich bei mir, wie die 6.3. Erst wenn ich die Adresse auf 0 setze, greift der Breakpoint.

    Kiri: Kannst du bitte prüfen, ob du in den Einstellungen des Projektes eine Debug-Start-Address mit angegeben hast? Wenn ja, wenn du die rausnimmst bzw. auf 0 setzt, klappt es dann?

    Moin Endurion,

    das scheint der Auslöser zu sein.
    Wenn ich ein neues Projekt erstelle wird die Debug-Start-Adresse automatisch auf 2049 gesetzt.
    Unter 6.3 klappt es dann nur, wenn ich diese auf 0 setze. Die Version 6.2.4 kommt mit beiden klar.


    Hi aitsch,


    Hmm, bei mir klappt es, sowohl mit Breakpoint als auch mit Run-To-Cursor.


    Hast du im Projekt eine Einsprung-Debug-Adresse angegeben? (Debug Start Address) - Mit einer ist es nicht so ganz klar, versuch es mal ohne einem Wert da drin.


    Hallo Endurion,

    ich habe jetzt auch ein Problem mit den Breakpoints. Mit 6.2.4 klappt es, seit 6.3 nicht mehr.
    Ich habe mir mal eine Testumgebung aufgebaut (aktuelles C64 Studio, C64 Studio 6.2.4 und WinVICE 3.1) und ein GIF erstellt.

    Dort sieht man zuerst, wie bei der Version 6.3 der Breakpoint nicht greift. Dann kopiere ich die settings.dat zur 6.2.4 Version und wiederhole den Test, der direkt klappt.

    Es macht auch keinen Unterschied, ob ich WinVICE 3.1 oder die aktuelle 3.4 verwende.


    Gruß,
    Jörn

    Hallo Endurion,


    mir wurde heute auf meiner Seite gemeldet, dass sich ein Beispielprogramm nicht mehr erstellen lässt.

    Ich konnte das Problem eingrenzen und auf ein kurzes Beispiel reduzieren.


    Bis zur C64 Studio Version 5.8 (und mit dem aktuellen ACME) lässt sich das folgende Programm problemlos übersetzen, ab C64 Studio 5.9 kommt es beim Erstellen zum Fehler „Redefinition of label nurEinTest.loop“.

    Etwas irritierend ist, dass es sein kann, dass es sich zunächst problemlos übersetzen lässt, sobald aber z. B. eine Leerzeile eingefügt wird, klappt es nicht mehr.

    Wenn man hinter „*=$0801“ eine weitere Zone einfüge, geht es übrigens wieder.


    Bei 5.9 hast du ja die Zonen überarbeitet, kannst du das bei Gelegenheit evtl. mal überprüfen?

    Vielen Dank,
    jetzt geht es.


    Bin beim Gegenprüfen aber über einen weiteren Fehler gestolpert.


    Gleiches Beispiel von oben.


    Suchen -> minit -> ignore case -> find all -> Doppelklick auf den Eintrag -> Fehler

    Hallo,
    ich bin gerade über einen Fehler gestolpert, bei dem ich erstmal etwas brauchte, bis ich ihn überhaupt bemerkt habe.


    Ich habe einen alten Source von einem D64-Image ins C64 Studio eingefügt, um diesen anzupassen.
    Als ich begann die ersten Fehler zu korrigieren und dann das Programm neu assemblieren ließ, damit diese aus der Fehlerliste verschwinden, blieben die einfach stehen.
    Nach wiederholtem kontrollieren, dass ich alles korrekt korrigiert habe, warf ich einen Blick auf den Output-Tab und siehe da, dort stand eine Fehlermeldung:



    Code
    1. An error occurred during building an element
    2. System.ArgumentOutOfRangeException: Der Index und die Länge müssen sich auf eine Position in der Zeichenfolge beziehen.
    3. Parametername: length
    4. bei System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)
    5. bei C64Studio.Parser.ASMFileParser.DetermineUnparsedLabels()
    6. bei C64Studio.Parser.ASMFileParser.Parse(String Content, ProjectConfig Configuration, CompileConfig Config)
    7. bei C64Studio.Parser.ParserBase.ParseFile(DocumentInfo Document, ProjectConfig Configuration, CompileConfig Config)
    8. bei C64Studio.MainForm.ParseFile(ParserBase Parser, DocumentInfo Document, ProjectConfig Configuration, Boolean OutputMessages)
    9. bei C64Studio.Tasks.TaskCompile.BuildElement(DocumentInfo Doc, String ConfigSetting, String AdditionalPredefines, Boolean OutputMessages, BuildInfo& BuildInfo, FileInfo& FileInfo)




    Im kopierten Source gab es folgende Zeile.
    Die Startadresse habe ich hinzugefügt, so kann ich das direkt reproduzieren.

    Code
    1. *=$0801
    2. WAIT JSR MINIT ;alles auf 0

    Erstelle ich den obigen Abschnitt, kommt es im Output-Fenster zur Eingangs gezeigten Fehlermeldung.
    Der Fehler verschwindet, sobald eine der beiden folgenden Änderungen gegeben ist:

    • Das Label MINIT wird eingefügt.
    • oder man gibt mind. ein Leerzeichen mehr, vor dem Semikolon ein.

    Hallo Endurion,
    ich hätte da auch noch etwas.


    Wenn ich zu einem Projekt einen Folder hinzufüge und ihn dann direkt wieder löschen, kommt es zum Fehler.

    Mir ist eben noch etwas aufgefallen:

    Code
    1. *=$0801
    2. !basic
    3. TEST = $0818
    4. lda #$0818 ;Fehler
    5. lda #TEST ;Fehler
    6. lda #msg ;kein Fehler <---
    7. rts
    8. ;...
    9. msg
    10. !text "..."


    ACME wirft für alle drei Befehle einen Fehler.


    Beim C64 Studio verhält sich die markierte Zeile, wie bei einem

    Code
    1. lda #<msg


    Außerdem semmelt bei mit VICE 3.1 ab, wenn ich beim Debuggen versehentlich einen Breakpoint auf einem Kommentar habe.

    Einen Absturz hab ich auch noch:
    Wenn der Focus auf einer der Auswahlboxen (Konfiguration oder Emulator) steht und ich auf Debuggen klicke, kommt es zum Absturz.


    Hi,
    danke für das Update.


    Mir sind da eben drei Kleinigkeiten aufgefallen:

    • Wenn man die Zyklen anzeigen lässt und die Zeilennummern ausblendet, dann ragen einige Texte in den Sourcebereich.
      C64Studio_Cycles.png


    • Wenn ich in den Preferences "Show Size" abwähle, lässt es sich erst wieder aktivieren, nachdem ich auch "Show Cycles" deaktiviert habe.
    • Ist die Hilfe beim Debuggen offen, dann wird bei mir, sobald das Debuggen beendet wird, immer zur Hilfe-Tab gewechselt.

    Bug oder Feature?


    Durch einen Kommentar auf meiner Seite, ist mir eben aufgefallen, dass das C64 Studio (Version 5.0b) folgendes verarbeitet.

    Code
    1. !IFDEF TEST=2 {
    2. lda #GREEN
    3. } else {
    4. lda #RED
    5. }


    Das !IFDEF scheint in dem Fall, wie ein normales !IF zu funktionieren.


    ACME wirft beim obigen Beispiel einen Fehler.

    Der 6502 bleibt sozusagen auf der aktuellen Page.
    Bei der indirekten Adressierung wird zwar das LSB von $10FF geholt, aber das MSB kommt nicht, wie man eigentlich erwarten würde, von $1100, sondern von $1000.

    Hi,
    ich hab da auch noch etwas. Die Bedingung <= verhält sich nicht korrekt, die anderen scheinen auf den ersten Blick zu passen.

    Hier wird der Hintergrund grün, statt rot.