Relaunch64 V3 - Finale Version erschienen!

Es gibt 133 Antworten in diesem Thema, welches 33.713 mal aufgerufen wurde. Der letzte Beitrag (19. Juni 2019 um 13:20) ist von WalkThatWay.

  • Die alte V3.3.5 läuft bei mir fein unter Linux mit OpenJDK 7u95-2.6.4-1~deb8u1. Die neue V3.36 schmeisst leider nur diesen Error und startet nicht:

    Apr 01, 2016 3:42:24 AM org.jdesktop.application.Application$1 run
    SEVERE: Application class de.relaunch64.popelganda.Relaunch64App failed to launch
    java.lang.ArrayIndexOutOfBoundsException: -1
    at java.util.ArrayList.elementData(ArrayList.java:400)
    at java.util.ArrayList.get(ArrayList.java:413)
    at de.relaunch64.popelganda.Editor.EditorPanes.checkIfSyntaxChangeRequired(EditorPanes.java:547)
    at de.relaunch64.popelganda.Relaunch64View$4.actionPerformed(Relaunch64View.java:390)
    at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1260)
    at javax.swing.JComboBox.setSelectedItem(JComboBox.java:588)
    at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:624)
    at de.relaunch64.popelganda.Relaunch64View.openFile(Relaunch64View.java:1783)
    at de.relaunch64.popelganda.Relaunch64View.openFile(Relaunch64View.java:1769)
    at de.relaunch64.popelganda.Relaunch64View.openFile(Relaunch64View.java:1765)
    at de.relaunch64.popelganda.Relaunch64View.<init>(Relaunch64View.java:211)
    at de.relaunch64.popelganda.Relaunch64App.startup(Relaunch64App.java:56)
    at org.jdesktop.application.Application$1.run(Application.java:171)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:745)
    at java.awt.EventQueue.access$300(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:706)
    at java.awt.EventQueue$3.run(EventQueue.java:704)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:77)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:715)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)


    Exception in thread "AWT-EventQueue-0" java.lang.Error: Application class de.relaunch64.popelganda.Relaunch64App failed to launch
    at org.jdesktop.application.Application$1.run(Application.java:177)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:745)
    at java.awt.EventQueue.access$300(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:706)
    at java.awt.EventQueue$3.run(EventQueue.java:704)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:77)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:715)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
    Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
    at java.util.ArrayList.elementData(ArrayList.java:400)
    at java.util.ArrayList.get(ArrayList.java:413)
    at de.relaunch64.popelganda.Editor.EditorPanes.checkIfSyntaxChangeRequired(EditorPanes.java:547)
    at de.relaunch64.popelganda.Relaunch64View$4.actionPerformed(Relaunch64View.java:390)
    at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1260)
    at javax.swing.JComboBox.setSelectedItem(JComboBox.java:588)
    at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:624)
    at de.relaunch64.popelganda.Relaunch64View.openFile(Relaunch64View.java:1783)
    at de.relaunch64.popelganda.Relaunch64View.openFile(Relaunch64View.java:1769)
    at de.relaunch64.popelganda.Relaunch64View.openFile(Relaunch64View.java:1765)
    at de.relaunch64.popelganda.Relaunch64View.<init>(Relaunch64View.java:211)
    at de.relaunch64.popelganda.Relaunch64App.startup(Relaunch64App.java:56)
    at org.jdesktop.application.Application$1.run(Application.java:171)
    ... 14 more

    Hoffe, Du kannst damit etwas anfangen :)

  • Kleines Update:

    Konnte das etwas näher eingrenzen.

    Ich starte das Relaunch normalerweise mit %f als Parameter, habe .asm files damit verknüpft.

    V3.3.6 ohne %f funktioniert. V3.3.6 mit %f funktioniert auch, wenn man tatsächlich in %f was übergibt.

    Der oben angegebene Fehler tritt nur auf, wenn man V3.3.6 mit %f startet, aber für %f nichts definiert ist (meine Standardverknüpfung) bzw. wenn man als Parameter eine nicht existente Datei (einen ungültigen Pfad) übergibt.

  • Ein Farbschema mit gutem Kontrast der Kommentare auf hellem Grund wäre schön. Hab heute gemerkt, dass ich bei Sonne und Energiesparmodus nix mehr lesen kann.

  • Vielen Dank für die Feedbacks soweit! Ich hab mit der Umsetzung der ersten Punkte schon mal angefangen und melde mich, wenn es ein Update zum Testen gibt...

    Bitte melde dich an, um diesen Link zu sehen. ich bin mir nur nicht ganz sicher, ob bei Strg+F das Suchfeld geleert werden sollte oder nicht. Das hängt natürlich von den Vorlieben ab. Eventuell füge ich dazu eine Einstellungsmöglichkeit hinzu, sodass man entscheiden kann, ob die Suchbegriffe beibehalten oder gelöscht (bzw. durch Auswahl ersetzt) werden nach "Strg+F".

  • Jetzt hab ich mir auch mal Relaunch64 installiert und mache erste Gehversuche. Bisher habe ich mit Dustlayers Skripten für Sublime auf dem Mac gearbeitet.

    Eine Frage kommt mir sofort in den Sinn: gibt's eine Möglichkeit, neben jeder Zeile die Taktzyklen einzublenden?
    Falls nein, warum nicht?

  • Ein Problem ist wohl schon mal, dass die Taktzyklen mancher Befehle von der Speicherstelle des Befehls (Branches) oder der referenzierten Adresse (indizierte Addressierung) abhängt. Ohne dass die Symbole alle aufgelöst sind (sprich: alles assembliert ist), weiß man die Zyklenzahl also nicht. Man könnte aber natürlich einfach beide möglichen Taktzyklen einblenden, das mache ich meist auch so, wenn ich sie von Hand in die Sourcecodekommentare eintrage.

    Leider bleibt natürlich immer noch das Zusammenzählen der Taktzyklen, was finde ich die meiste Arbeit ist. Die Zyklen der häufigsten Opcodes habe ich eigentlich schnell auswendig gewusst, hängt ja großenteils einfach von der Adressierungsart ab.

    ────────────────────────────────────────────────────────────
    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.
    ────────────────────────────────────────────────────────────

    Einmal editiert, zuletzt von Claus (29. April 2016 um 08:00)

  • Danke für die Erklärung.
    Es wäre ja sicherlich schon hilfreich, wenn der Modus nicht in Echtzeit abläuft und man stattdessen auf das Ergebnis des letzten Compilevorganges oder manuell per Knopfdruck zurückgreift.

    Auch praktisch wäre, wenn man einen Bereich selektieren könnte und die Statusleiste unten die Anzahl der Zyklen zeigt. Man könnte z.B. farblich kennzeichnen, ob die Zyklenzahl exakt (z.B. bei ein paar NOPs) oder geschätzt ist.

    Anzeigen könnte man die TZ wie die Zeilennummern und innerhalb von Loops könnte man die Summe der TZ neben das Label schreiben.

    Man könnte sogar Limits definieren und wüsste dann immer genau, wie viele TZ man noch zu Verfügung hat.

    Klingt sicherlich alles leichter gesagt als implementiert, aber jeder Schritt in dieser Richtung wäre sicher nicht nur für Anfänger eine mächtige Funktion.

  • Zitat

    Bitte melde dich an, um diesen Link zu sehen.Auch praktisch wäre, wenn man einen Bereich selektieren könnte

    Leider auch sehr schwierig (oder eigentlich quasi unmöglich), denn was machst Du mit Branches? Welche Befehle ausgeführt werden, weiß man eigentlich erst zur Laufzeit, da dies ja von allem möglichen (Speicheradressen, I/O Register, etc) abhängen kann. Geschweige denn bei selbstmodifizierendem Code, der wenn Du schon Zyklen zählst durchaus relevant wird.

    Z.B. kommentiere ich bei Loops immer mit einer Formel:

    Code
    wait_loop: ; wait x*5-1 cycles = +74 (or +34 for current or next line bad)
        dex
        bne wait_loop


    Das wird bei komplizierteren Loops natürlich schnell sehr schwierig automatisch zu erzeugen.

    ────────────────────────────────────────────────────────────
    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.
    ────────────────────────────────────────────────────────────

    Einmal editiert, zuletzt von Claus (29. April 2016 um 09:04)

  • Das Problem lässt sich halbwegs elegant lösen: Man zählt die Basis- und Penalty-Zyklen getrennt und zeigt auch die Gesamtsummen getrennt. Dann ist es ein simples Aufaddieren.

    C64Studio: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- C64Studio WIP: 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.

  • So, eine aktuelle Version von Relaunch64 (Version 3.3.7) ist online:
    Bitte melde dich an, um diesen Link zu sehen.

    Außerdem habe ich ACME auf Version 0.95.8 und 64tass auf 1.52 (beides für OS X) aktualisiert.

    Ist ACME für Windows noch in Version 0.95.6 das aktuellste Kompilat?

  • Hallo Bitte melde dich an, um diesen Link zu sehen.,
    ich nutze Relaunch64 und habe das Problem, daß die Startadresse an pucrunch mit -x$.... übegeben werden soll. Der Assembler ist KickAssembler.
    Wie macht man das in Preferences, Compile & Run Scripts? Ich meine, wie kriege ich die aus kickass mit raus, um sie pucrunch zu übergeben?

    Die Anleitung von Kickass hab ich schon durch, da ist bei den Komandozeilen Optionen nichts dabei. Oder muß ich das jedesmal von Hand erledigen?
    Vieleicht geht das ja auch über Relaunch64? Nur wie geht das mit dem Platzhalter START?

    Das 2. Problem ist halt, das in START nur START steht und nicht die Adresse.