Hallo Besucher, der Thread wurde 5,3k mal aufgerufen und enthält 44 Antworten

letzter Beitrag von rosc am

VSCode Extension VS64

  • Hi. Danke für das nette Feedback.

    (Ich bleibe natürlich dran, habe nur wegen wenig Zeit eine kleine Pause eingelegt. Und ich glaube, man muss ab und zu etwas Feedback abwarten, sonst bastelt man nur neue Feature, die niemand braucht).


    Die Bugs schaue ich mir an, aber das ist schon verflixt mit den BASIC-Tokens, denn die Grammatik dafür lässt sich nicht leicht abbilden.


    Das Problem beim Debuggen kenne ich noch nicht, ich kann mich aber noch erinnern, dass 3.7 (entweder SDL oder GTK auf Linux ein Problem/Bug hatte...).


    Kannst du denn überhaupt debuggen (steppen, breakpoints setzen, variablen anschauen, etc.) oder kommt überhaupt keine Verbindung zu stande?


    Grüße,

    Roland


    PS. Ich habe mir kurz dein Programm angeschaut. ... Wenn du in der Konfiguration nicht auf "Debug" umstellst, dann kannst du "kostenlos" Leerzeichen und Zeilenumbrüche verwenden... Das Programm wird dann sehr viel lesbarer.

  • Hi Roland,


    das mit der Meldung "VICE antwortet nicht..." beim Debuggen ist nicht wirklich ein Problem. Debuggen geht, BASIC-Variablen usw. werden angezeigt, Steppen geht, weitere Breakpoints setzen auch.

    Die Meldung kommt nach einigen Sekunden. Und wie's scheint auch nur dann wenn man (nachdem er im Breakpoint steht und VSCode in den Vordergrund kommt) VICE bewusst in den Vordergrund holt.

    Stört nicht unbedingt beim Debuggen, denn man kann es einfach ignorieren, denn lässt man weiter laufen, dann verschwindet sie auch wieder.

    Ich vermute, das Desktop-Environment (hier Cinnamon 5.8.4) versucht mit der Anwendung zu sprechen und bekommt keine Antwort.

    Ist also eher ein Schönheitsfehler...


    Danke für den Tipp mit dem release build und den Leerzeichen. Das mit den Labels statt Zeilennummern hab ich gesehen und (inkonsequenterweise) auch teilweise genutzt.

    Da bin ich tatsächlich hin- und hergerissen, weil Laufzeifehler sich auf die Zeilennummern im finalen Programm beziehen und ich die im Quelltext so nicht sehen kann. Ok, ich könnte wohl dann die Zeilennummern der Quelldatei nehmen, dürfte dann aber keine Leer- oder Kommentarzeilen haben.


    Als release gebaut bricht leider mein Programm ab wegen geänderten Zeilennummern.


    Das hier funktioniert

    100 PRINT"hello"

    110 IF 1=1 THEN GOTO 100


    Das hier

    100 PRINT"hello"

    110 IF 1=1 THEN 100

    führt zu ?undef'd statement error in 2

    Im PRG Disassembly steht dann

    1 PRINT"HELLO"

    2 IF1=1THEN100

    Offenbar wird hier ein goto erwartet damit die Zeilennummer zugeordnet werden kann. Anders betrachtet könnte ein release-build auch grundsätzlich thengoto zu then verkürzen um Platz zu sparen.


    Habe mal spasshalber das release Disassembly ins bas zurück kopiert und neu übersetzt. Weiss nicht, ob der Anspruch ist, dass so etwas klappt, aber jedenfalls sind einige Dinge funktional anders.

    Z.B. PRINT"A     B" wird zu PRINT"A B" oder PRINT"{$5f}" zu PRINT"_".


    Ich schätze mal, da gibt's noch so den ein oder andren BASIC-Hack, den der Interpreter frisst, aber den man auch erst mal kennen muss um es zu implementieren. Gibt ja vermutlich auch keine allumfassende Doku dazu...


    Aber klar, kein Stress. Soll ja immer auch Spass machen und unser Hobby soll nicht in Arbeit ausarten :)


    Danke und Gruß

  • Hi.


    Nachdem ich sehr nett gefragt wurde, gibt es mit der Version 2.5.4 nun Unterstützung für den Commander X16 Emulator. ASM/C/C++ sind unverändert, denn die Maschine konnte man auch vorher schon in der Projektkonfiguration festlegen. Jetzt kann man aber auch noch den x16emu in der Launch-Konfiguration nutzen.


    Leider bietet der x16emu (noch) kein externes Debugging-Interface (so wie VICE das mit dem Binary Monitor Protocol macht) - aber Start/Restart/Stop hilft schon mal...


    Alle Details finden sich im README: https://github.com/rolandshacks/vs64/blob/master/README.md


    Download hier: https://github.com/rolandshacks/vs64/releases/latest


    Wie immer bin ich für gutmütige Tester dankbar!


    Grüße,

    Roland


    PS. Die Version ist noch nicht auch dem VSCode-Marketplace, weil die Integration wahrscheinlich noch etwas reifen muss, also bitte manuell von gitlab herunterladen und installieren.