VSCode Extension VS64

Es gibt 130 Antworten in diesem Thema, welches 16.643 mal aufgerufen wurde. Der letzte Beitrag (26. Oktober 2025 um 10:21) ist von mimi64.

  • Hat jemand von euch die schon einmal in C beschrieben oder kennt eine Implementierung in C?

    Naja, VICE ist in C geschrieben:

    Bitte melde dich an, um diesen Link zu sehen.

    :wand klar doch, wieso bin ich da nicht von selbst draufgekommen? :thumbsup:

    Danke jedenfalls!:lol27:

    Update: Habs mir angeschaut. Das Ding ist riesig und komplex. Ich hab die Definition für den VIC-II zwar in src/vicii/vciitypes.h gefunden, aber es geht schneller, wenn ich meinen eigenen Definitionen schreibe, bevor ich dort zu extrahieren und auszulösen beginne. :D

    Hier könnte meine Signatur stehen, wenn ich eine hätte.

    Einmal editiert, zuletzt von BlondMammuth (5. Dezember 2024 um 16:20)

  • Hi.

    Vielleicht kannst du ein paar C++ Schnippsel von hier brauchen: Bitte melde dich an, um diesen Link zu sehen.

    (schau mal in das Verzeichnis libcpp64). Ist schon eine Weile her, dass ich das geschrieben habe - aber nicht großartig komplex. Im "variants"-Verzeichnis findest du was zu ASM und 'C'.


    Grüße,

    Roland

  • Hallo Roland, vielen vielen Dank, ich werd da auf jeden Fall reinschauen!

    Mittlerweile versuche ich anhand mehrerer Seiten simultan zu verstehen, wie die Festlegung der Adressen für Texbildschirm, Bitmap, Color-Info etc. wirklich funktioniert. Seeehr verwirrend zur Zeit (0x2018 und Kollegen sind ganz schön umtriebig), aber ich esse mich langsam durch dieses Daten-Grießkoch. :D

  • Oh, sollte natürlich 0xD018 heissen. :schande:

  • Hab reingeschaut,es ist eine Fundgrube, ich lerne viel daraus, und nicht nur, was die Chips betrifft, sondern auch von deinem Stil und der Art, es zu implementieren. Danke auf jeden Fall dafür!

  • Ich hab festgestellt, dass gelegentlich Breakpoints out-of-sync gehen.

    Dh die Ausführung hält nicht dort an, wo sie soll.

    Belegbar wird es dadurch, wenn ein Breakpoint wo sitzt, wo die IDE denkt, dass da kein Code ist.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Was muss man machen, damit der Debugger wieder mit dem Code in-sync ist?

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • Eine Frage zum debugging:

    Wenn ich schrittweise durch den Code wandere, benötige ich verschiedene Dinge auf einen Blick:

    * CPU Register (speziell die Werte von A,X,Y)

    * Flags (Speziell Zero und Carry)

    * Werte aus einzelnen Adressen

    * Werte aus indirekt addressierten Speicherbereichen (ll,x) und (ll),y


    Ich kenne dafür nur den Bereich auf der linken Seite.

    Dort schaff ich es aber nicht, Register, Flags und Speicherbereiche gleichzeitig zu sehen. Ich muss immer scrollen.

    Werte aus den Speicherbereichen werden bei direkter Adressierung gezeigt.

    Im Screenshot sieht man zB den Begriff "buffer", der zeigt nur auf $fb. Tatsächlich ist in $fb und $fc aber eine Adresse hinterlegt, von der ich den Inhalt wissen möchte.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Watch zeigt übrigens auch nie den Inhalt einer Adresse, sondern nur, auf welche Adresse ein Label zeigt (siehe nächster Screenshot).

    Und weiters benötige ich oft den Blick auf einen größeren Speicherbereich (zB wenn Daten geschrieben werden, weil man eine Datei zusammenbaut)

    Dafür kann man zB auf das View Binary Data Symbol klicken.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Das öffnet dann rechts ein Fenster mit dem Speicherbereich.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Die Adressen in der linken Spalte beginnen aber immer bei 00000000, obwohl die angezeigten Daten aus dem richtigen Bereich kommen.

    Diese View wird außerdem nicht automatisch aktualisiert, wenn sich der Speicherinhalt ändert.

    Und auch das Anzeigen einer bestimmten Adresse ist von hier aus nicht mehr möglich.

    Man muss im linken Panel einen Eintrag mit der richtigen Adresse finden und dort wieder auf View Binary Data klicken.

    Um komfortabel debuggen zu können, wärs wichtig, einen größeren Ausgabebereich ständig im Auge halten zu können.


    Funktionieren diese Punkte schon, aber nur anders als ich dachte?

    Ansonsten mag ich die Extension eigentlich ganz gern, weil die Integration mit Vice sehr gut zu funktionieren scheint und auch die Code-Compile-Run/Debug Zyklen sehr schlank sind.

    Danke!

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com

    Einmal editiert, zuletzt von Goodwell (10. Dezember 2024 um 11:39)

  • Kann das geschriebene von Goodwell zu 100% unterstützen.

    Ich finde die Extension sehr gut. Vor allem das der Compile Vorgang superschnell abgeschlossen ist.

    Lediglich das debuggen hat mich bisher davon abgehalten etwas grösseres damit zu machen.

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

  • Eine Frage zu "Symbols":

    wovon hängt das ab, ob links in Klammern die Adresse gezeigt wird (dann wird auch rechts der Wert an dieser Adresse gezeigt), oder ob nur Name des Labels mit Adresse da steht?
    Bitte melde dich an, um diesen Anhang zu sehen.

    Laut meinem Verständnis kann man hier ja keine Werte manuell hinzufügen.

    Ich hätte jetzt als Workaround nur jene Labels dringelassen, die ich für den aktuellen debugging-vorgang brauche, um nicht zu viel scrollen zu müssen, und jetzt krieg ich wieder die hälfte der Werte nicht :sad:

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • Hi. Zum Thema Debugging...

    Die Anbindung der C64 Assembler/Compiler and das vscode-Debugger-Interface ist die größte Herausforderung bei der Entwicklung von VS64.

    C++ (ELF/DWARF) ist dabei sicher das komplexeste (und deshalb auch noch unvollständig), aber auch alle anderen Compiler/Assembler sind nicht ohne.

    Gerade das Auflösen von Makros, etc... Die Debug-Infos sind oft nicht dafür ausgelegt, besonders einfach und effizient in einer IDE angebunden zu werden.

    Wie auch immer, keine Ausrede...

    Anzeige von A,X,Y, etc. --> Der "WATCH"-Bereich ist dafür da:

    - A/X/Y kann einfach namentlich angegeben werden

    - CPU-Flags werden noch nicht unterstützt, wäre aber keine große Sache

    - Wie man Werte aus Adressen, etc. anzeigt, ist im README erklärt.

    Grüße,

    Roland

    PS. Bitte melde dich an, um diesen Link zu sehen.

  • Dereferenzieren von Adressen:

    im Watch-Fenster

    - "buffer" --> [$00fb] $00fb (251)

    - "buffer,16" --> [$00fb] 00 00 00 00 00 ...
    ^^ Hier wird buffer als Adresse und nicht als Wert behandelt, und es werden 16 Bytes ausgegeben

    Man könnte auch "$fb,16" schreiben


    Hier der relevante Absatz im Readme:

    Debugger Watch Expressions

    The debugger supports different kinds of watch expressions: registers, constant values and addresses. Here are a few examples for direct, symbolic and indirect watch expressions:

    • addr0 : displays the byte value which the label 'addr0' points at.

    • addr0,w : displays the word value which the label 'addr0' points at.

    • addr0,8 : shows a hex dump of 8 bytes starting at the address of label 'addr0'.

    • addr0+2*16,8 : shows a hex dump of 8 bytes starting at a computed address.

    • y : shows the value of the Y register

    • $8400 : shows the data at memory address $8400

    • $8400,3 : shows 3 bytes at memory address $8400

    • $9e2,iw : use indirect address from $9e2 to display a data word

    • strref,i8 : use indirect address from pointer strref to display 8 data bytes

  • README

    Oh Mann :honk:

    Ich mecker hier rum, dabei steht da alles drin

    Die Anbindung der C64 Assembler/Compiler and das vscode-Debugger-Interface ist die größte Herausforderung bei der Entwicklung von VS64.

    C++ (ELF/DWARF) ist dabei sicher das komplexeste (und deshalb auch noch unvollständig), aber auch alle anderen Compiler/Assembler sind nicht ohne.

    Gerade das Auflösen von Makros, etc... Die Debug-Infos sind oft nicht dafür ausgelegt, besonders einfach und effizient in einer IDE angebunden zu werden.

    Ja, das bezweifelt keiner :smile:

    Cool, ich werd dann mal sehen, wie mir das mit diesen neuen Infos gefällt.

    Danke!

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • Hi.

    Ich wollte mal wieder Bescheid geben, dass es eine neue Version von VS64 gibt.

    README: Bitte melde dich an, um diesen Link zu sehen.

    CHANGELOG: Bitte melde dich an, um diesen Link zu sehen.

    Visual Studio Code Marketplace: Bitte melde dich an, um diesen Link zu sehen.

    Grüße,

    Roland

    PS. Wie immer ... Tester (und am besten wohlwollendes Feedback) sind sehr willkommen!

  • rosc: Ich habe VS64 schon eine Weile installiert gehabt. Und finde das mit die beste, wenn nicht die beste Erweiterung für C64 Entwickler mit VSC.

    Aber....

    1. ich nutze seit Jahren den Basic Pre Processor von Henning . Dort werden Kommentarzeilen mit einem ";" am Zeilenanfang markiert anstellen von "#".

    Kann ich das irgendwie einstellen, das bei BASIC Code auch ";" als Kommentarzeile erkannt wird?

    2. Ist es möglich die mnemonics an die petcat Schreibweise anzupassen oder besser zu erweitern? Beispiel {dish} {ensh} {rvon} usw.

    3. Gibt es für BASIC ein Syntax Highlighting, das ggf. auch in der Farbwahl angepasst werden kann?

    4. Bisher ist für BASIC tsb und Basic V2 eingebaut. Kann das ggf. um eigene Befehle ergänzt werden? Ich denke da an JiffyDOS Befehle oder z.B. die beiden C*BASE Befehle @ und Pfeil links als Kombination von Print + printBitte melde dich an, um diesen Link zu sehen. bzw. print; + printBitte melde dich an, um diesen Link zu sehen.;

    5. Muss ein "Custom BASIC Compiler" zwingend ein Python Script sein ? Oder würde das auch mit petcat gehen?

    Vorstellung Raveolution BBS -> Bitte melde dich an, um diesen Link zu sehen.
    Raveolution BBS -> raveolution.hopto.org:64128
    Raveolution Gopher Hole -> gopher://raveolution.hopto.org:70

  • Ups... fällt mir doch glatt ein Tippfehler im Readme auf github auf:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Müsste wohl Oscar64 sein, oder?

    Vorstellung Raveolution BBS -> Bitte melde dich an, um diesen Link zu sehen.
    Raveolution BBS -> raveolution.hopto.org:64128
    Raveolution Gopher Hole -> gopher://raveolution.hopto.org:70

  • Danke für das Feedback. Schaue ich mir bei Gelegenheit an!

  • Es kommt immer wieder mal vor, dass beim ASM debugging die markierte Programmzeile im VS64 von der tatsächlich ausgeführten abweicht.

    Dh im Code steht zB LDA bla, in Watch kann man aber sehen, dass das nicht passiert.

    Dafür passiert es dann eine Zeile später, oder auch früher.

    Ich nehme an, das liegt daran, dass da an irgend einer Stelle noch "veraltete" Dateien liegen, die die Quelldatei mit der Debug-Info vom Vice zusammenführen.

    Da hilft auch ein Neustart von Vice oder vom Visual Studio Code nicht.

    Auch das leeren vom build Ordner löst das Problem nicht.

    Was kann ich denn löschen, damit diese Information neu aufgebaut wird?

    Weil irgendwie funktionierts ja dann irgendwann trotzdem wieder...

    Danke!

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • Grundsätzlich wird alles komplett neu gebaut sobald man entweder eine Datei aus der "src" liste im Projektfile oder das Projektfile selbst ändert (und speichert).

    Ich muss nochmal genauer nachschauen, aber das Debug/Breakpoint von VICE ist nicht wirklich elegant, d.h. das Abfangen von breakpoints aus dem Debugger heraus ist bei VICE eine Herausforderung...

    Falls du ein kleines Stückchen Code hast, mit dem ich das Nachvollziehen kann, wäre es evtl. einfacher zu finden (bzw. zu erklären).

    Viele Grüße!

    PS. Über welchen Assembler reden wir? ACME oder Kickass?

  • Falls du ein kleines Stückchen Code hast, mit dem ich das Nachvollziehen kann, wäre es evtl. einfacher zu finden (bzw. zu erklären).

    Ja, ich habs leider bisher nicht geschafft, das reproduzierbar zu machen.

    Über welchen Assembler reden wir?

    Das ist ACME

    Aber mit der Auskunft, dass eigentlich alles neu erstellt wird, kann ich ja schon mal arbeiten und mehr Augenmerk darauf legen, ob das Problem nicht vor der Tastatur sitzt :biggrin:

    Danke!

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com