Hello, Guest the thread was viewed11k times and contains 135 replies

last post from TD1334 at the

PABasic: Feedback

  • In der REU Version wäre das einfach, da hätte man Speicher satt um das Verzeichnis komplett einzulesen und dann in einem scrollbaren Dialog darzustellen.

    Dann mach es doch nur für die REU-Version. Wer "ernsthaft" coden will, wird das doch wahrscheinlich ohnehin nicht an einem Vanilla-C64 tun.

    Ist notiert.

    Du kannst mir gerne einen Vorschlag machen.

    Ich kann das mal probieren. Was für mich zum Ausprobieren extrem nützlich wäre, wäre ein Screenshot (am Besten ohne CRT-Emu), auf dem die meisten eingefärbten Elemente gleichzeitig zu sehen sind, mit einem Codebeispiel, dass nicht funktionieren muss – aber so ähnlich aussieht, wie typischer Code. Dann könnte ich erstmal in Photoshop herum probieren und danach die Farbwerte eintragen. Vielleicht kann mir ja jemand so einen Screen bauen.

    Hier ist mal ein Screen:

    Die gelbe Zeile ist im Farbset "var_color_theme_edit" und wird auch in der Statuszeile ganz unten verwendet. Die vorletzte Zeile kannst du ignorieren. Die gibt es nur bei mir.

  • In der REU Version wäre das einfach, da hätte man Speicher satt um das Verzeichnis komplett einzulesen und dann in einem scrollbaren Dialog darzustellen.

    Dann mach es doch nur für die REU-Version. Wer "ernsthaft" coden will, wird das doch wahrscheinlich ohnehin nicht an einem Vanilla-C64 tun.

    Das sehe ich nicht so. Der "native C64" sollte immer die Richtlinie für ein C64-Programm sein. Gerade wer tatsächlich noch auf seinem C64 direkt programmieren will, hat nicht zwangsläufig eine REU.


    "Ernsthaft" Programmieren tut man sowieso nur am PC und da braucht es gar kein PABasic. ;)


    Also bitte immer den "nackten" C64 als Richtschnur verwenden! :)

  • Also bitte immer den "nackten" C64 als Richtschnur verwenden!

    Grundsätzlich korrekt. Aber ein Open-Dialog ist auf dem C64 ja eher ein Bequemlichkeits-Feature und kein Must-have (sonst hätte es sich bestimmt schon jemand anderes gewünscht). Da kann man schon mal sagen: OK, sowas halt nur, wenn es dem freien RAM (auch wichtig beim Coden) nicht zu sehr schadet.

  • Ich sehe das entspannt. Habe dafür auch zu wenig Berührungspunkte mit anderen Codern hier. Im Moment sind beide Versionen ob mit oder ohne REU gleich im Funktionsumfang. Jedoch spricht nichts dagegen in der REU-Version zu integrieren, irgendwann mal :-)


    "Ernsthaft" Programmieren tut man sowieso nur am PC und da braucht es gar kein PABasic. ;)

    Du willst doch nicht behaupten, dass die Entwicklung von Worm.tris nicht ernsthaft wäre. Und die läuft zu 99% auf dem PC und den Supercomputern die ich im Keller stehen habe ;-)

    Wäre ich Omega würde ich jetzt folgendes mit dir machen :sm::D ;)

  • Also bitte immer den "nackten" C64 als Richtschnur verwenden!

    Grundsätzlich korrekt. Aber ein Open-Dialog ist auf dem C64 ja eher ein Bequemlichkeits-Feature und keine Must-have (sonst hätte es sich bestimmt schon jemand anderes gewünscht). Da kann man schon mal sagen: OK, sowas halt nur, wenn es dem freien RAM (auch wichtig beim Coden) nicht zu sehr schadet.

    Ach so, ja, als zusätzliches, "nicht zwingend notwendiges" Feature in einer REU-Version sehe ich das auch entspannt. ;)


    Es gibt nur wenig Programmierer, die freiwillig mehrere Versionen ihres Programms pflegen wollen. :D

  • Es gibt nur wenig Programmierer, die freiwillig mehrere Versionen ihres Programms pflegen wollen. :D

    Ist für mich aktuell wirklich nur eine Version. Ob REU oder nicht entscheide ich mittels einer Variablen die im Quellcode gesetzt wird. Der Interpreter ist nicht REU-Spezifisch. Noch nicht, aber ich habe da Gedankenspielereien.

    Der Editor hingegen achtet darauf, deshalb ist die REU-Version auch wirklich nur unter der REU lauffähig. Aber das ist so simpel gehalten, das die Pflege derzeit keine Aufwand bedeutet.

  • Hier ist mal ein Screen:

    Danke. Hier mal 3 Farbsets, die sich aber nur in der Hintergrund/Rahmen-Farbe unterscheiden.:



    Die repräsentieren quasi ansteigenden Kontrast zu den Schriftfarben. Ich denke, Positivdarstellung wünscht sich auf 50 Hz-Röhre niemand.


    Die horizontale Linie im Rahmen ist ein kleiner Gimmick von mir und soll die aktuell editierte Zeile hervorheben. Ich habe keine Ahnung, ob sowas hilfreich wäre.

  • Einen Gedanken wollte ich noch verfolgen. Hier war ja mal Thema, dass bei Zeilen, die über 40 Zeichen hinausgehen, die aktuelle Zeile bei Bedarf horizontal gescrollt wird (allerdings nur diese Zeile alleine). Ich hoffe, ich habe das richtig verstanden.


    Wenn man nun die "Edit"-Zeile farbig hervorheben würde, dann würde der User mE besser verstehen, dass sie sich in einem besonderen Modus befinden kann und gegebenenfalls alleine scrollt.


    Und vielleicht wäre es zudem hilfreich, wenn Zeilen, die breiter sind als der Bildschirm, den Umstand anzeigen würden. Beim Lesen eines Listings würde man dann auf den ersten Blick sehen, dass man nicht alles sieht. ;) Ich habe dafür hier ein invertiertes Pluszeichen in Dunkelblau gewählt. Sobald man in so eine Zeile mit dem Cursor hineingeht, kann das Pluszeichen verschwinden.



    Ich weiß natürlich, dass im normalen Hires-Char-Mode die Hintergrundfarbe einheitlich sein muss. Aber man könnte mit einem Trick arbeiten und ein paar x-gestreckte Sprites zur Darstellung der hervorgehobenen Zeile verwenden.


    (Wenn ich als Nicht-Coder euch hier in Ruhe lassen soll, sagt bitte bescheid – dann mache ich was anderes) ;)

  • (Wenn ich als Nicht-Coder euch hier in Ruhe lassen soll, sagt bitte bescheid – dann mache ich was anderes) ;)

    Erst mal ein Danke für deine Ideen. Hier geht es ja nicht nur um das technische Feedback, alles ist erwünscht. Also schön hierbleiben ;-)


    Wenn man nun die "Edit"-Zeile farbig hervorheben würde, dann würde der User mE besser verstehen, dass sie sich in einem besonderen Modus befinden kann und gegebenenfalls alleine scrollt.

    Das hattest du ja schon in deinen Beispielen für die Farbsets angedeutet. Da nur im Rahmen. Ich kann für den Hintergrund der aktuellen Zeile einen Farbwert hinterlegen.

    Den muss man nur abstimmen mit dem aktuellen Farbset und auch mit der Editfarbe sobald man etwas in der Zeile ändert.


    Hier ein Beispiel. Der Befehl wird in Weiss, die Variable in Hellblau, die Zahlen in Hellgrau und das Klammer zu (Petscii) in schwarz gemacht. Dazu wird der Cursor in Schwarz gesetzt.


    Im Beispiel habe ich in der mittleren Zeile nach der ")" einfach Space gedrückt und die Zeile wechselt von der bunten Farbset Methode in die Editmethode und färbt die Zeile Gelb.

    Diese Zeile könnte ich per Raster-IRQ farblich hervorheben lassen.


    Das Farbset müsste dann einfach noch erweitert werden (var_color_theme_editback)



    Und vielleicht wäre es zudem hilfreich, wenn Zeilen, die breiter sind als der Bildschirm, den Umstand anzeigen würden. Beim Lesen eines Listings würde man dann auf den ersten Blick sehen, dass man nicht alles sieht. ;) Ich habe dafür hier ein invertiertes Pluszeichen in Dunkelblau gewählt. Sobald man in so eine Zeile mit dem Cursor hineingeht, kann das Pluszeichen verschwinden.

    Das ist eine gute Idee und ich glaube auch simple (ohne grossen Zeitverlust) in den Editor zu integrieren.

    Vielleicht auch für das Pluszeichen noch einen Farbcode definieren (var_color_theme_plus)


    Habe ich mir alles auf die ToDo-Liste geschrieben. Gehe ich dann in Zukunft an. Erstmal steht Worm.Tris im Vordergund :-)

  • Ich habe dafür hier ein invertiertes Pluszeichen in Dunkelblau gewählt. Sobald man in so eine Zeile mit dem Cursor hineingeht, kann das Pluszeichen verschwinden.

    Ich könnte mich hier mit einem "Spitze nach rechts"-Symbol (">") eher anfreunden, weil es ja auch "nach rechts" mit der Zeile weitergeht.


    "+" verbinde ich eher mit "nach unten" aufklappen.

  • Ich habe jetzt mal einige Zeit programmiert und soweit keine Fehler mehr festgestellt.

    Macht echt Spaß! :thumbsup:

    Nur die Block - Delete - Funktion scheint nicht zu funktionieren.

    Überhaupt finde ich die Handhabung mit der Markierung etwas umständlich (Bin vielleicht auch nur die von TMP gewöhnt...)

    Was ich ich schmerzlich vermisse, je länger der Code wird, ist eine Sprungfunktion, mit der man mehrere Zeilen (z.B. 20/200 wie bei TMP) hoch und runterspringen kann - und evtl. an den Anfang.

    Zur Farbgebung: Da hat mir das Original eigentlich am besten gefallen.

  • Ich habe jetzt mal einige Zeit programmiert und soweit keine Fehler mehr festgestellt.

    Macht echt Spaß! :thumbsup:

    Danke :-)

    Nur die Block - Delete - Funktion scheint nicht zu funktionieren.

    Kannst du mir sagen wie sich das bei dir äußert, so dass ich versuchen kann, dass nachzustellen?


    Überhaupt finde ich die Handhabung mit der Markierung etwas umständlich (Bin vielleicht auch nur die von TMP gewöhnt...)

    Vorschläge .. Vorschläge ;-)

    Ich habe keine Ahnung wie das genau in TMP funktioniert.


    Was ich ich schmerzlich vermisse, je länger der Code wird, ist eine Sprungfunktion, mit der man mehrere Zeilen (z.B. 20/200 wie bei TMP) hoch und runterspringen kann - und evtl. an den Anfang.

    Ja, das kenne ich. Ich denke die ganze Funktionstastenbelegung könnte man man noch optimieren. Das habe ich auf meine ToDo-Liste drauf, aber war für mich zum entwickeln nur wenig wichtig.


    Am einfachsten ist es Vorschläge / Wünsche zu äußern. Wenn man selbst dauernd daran entwickelt wird man zum Teil Betriebsblind für manche Dinge.

  • Quote

    Kannst du mir sagen wie sich das bei dir äußert, so dass ich versuchen kann, dass nachzustellen?

    Ich habe mal ein simples Programm angehängt(Test.d64) und einfach ein Block markiert: Zeile 4 mit RUN/STOP -> m -> s -> s,

    dann auf Zeile 6 RUN/STOP -> m -> s -> e und dann eben RUN/STOP -> m -> d. Der Cursor springt dann auf Zeile 6, aber wenn du hochscrollst, ist der Block nicht mehr markiert und noch vorhanden.


    Quote
    Überhaupt finde ich die Handhabung mit der Markierung etwas umständlich (Bin vielleicht auch nur die von TMP gewöhnt...)

    Vorschläge .. Vorschläge ;-)

    Ich habe keine Ahnung wie das genau in TMP funktioniert.

    Ich hab dir mal die Beschreibung von TMP angehängt. Eingeleitet wird ein command mit der Pfeil links Taste, was bei dir RUN/STOP ist.

    Ab Zeile 324 in der Beschreibung wird das Markieren erklärt und ab Zeile 313 die Blockoperationen. Hier gibt's auch noch eine "move - Funktion".

  • Quote

    Kannst du mir sagen wie sich das bei dir äußert, so dass ich versuchen kann, dass nachzustellen?

    Ich habe mal ein simples Programm angehängt(Test.d64) und einfach ein Block markiert: Zeile 4 mit RUN/STOP -> m -> s -> s,

    dann auf Zeile 6 RUN/STOP -> m -> s -> e und dann eben RUN/STOP -> m -> d. Der Cursor springt dann auf Zeile 6, aber wenn du hochscrollst, ist der Block nicht mehr markiert und noch vorhanden.

    Ich kann das nachvollziehen. Solange du mit dem Cursor im markierten Bereich bist löscht er nichts. Geh mal mit dem Cursor auf die erste markierte Zeile oder vorher oder eine Zeile nach dem markierten Bereich und nutze dann die Löschfunktion nochmal. Dann sollte das funktionieren. Genauso ist es auch mit dem kopieren. Ist ein wenig seltsam, ich weiss, aber ist der einfachheit des kopieren/löschen geschuldet. Vielleicht baue ich das irgendwann nochmal um.

    Quote
    Überhaupt finde ich die Handhabung mit der Markierung etwas umständlich (Bin vielleicht auch nur die von TMP gewöhnt...)

    Vorschläge .. Vorschläge ;-)

    Ich habe keine Ahnung wie das genau in TMP funktioniert.

    Ich hab dir mal die Beschreibung von TMP angehängt. Eingeleitet wird ein command mit der Pfeil links Taste, was bei dir RUN/STOP ist.

    Ab Zeile 324 in der Beschreibung wird das Markieren erklärt und ab Zeile 313 die Blockoperationen. Hier gibt's auch noch eine "move - Funktion".

    Das ist sehr ähnlich gehalten. Die Wege (Anzahl Tasten) sind oft kürzer, ist aber dem geschuldet, dass ich alle Menüs/Funktionen versuche sichtbar in der unteren Zeile darzustellen.

    Es gibt mittlerweile auch RUN/STOP -> Pfeil hoch (top) oder Pfeil runter (bottom) mit denen man an den Anfang oder das Ende springen kann. Ich habe auch die Möglichkeit mittlerweile an eine Zeilennummer zu springen (run/stop -> g)


    Ich muss gerade mit erschrecken feststellen, das ich intern an der 0.9.27 arbeite und dabei vergessen habe die 0.9.26 zu veröffentlichen. Die wäre schon am 12.10.2024 fertig gewesen.


    Die 0.9.27 wird die nächsten Tage kommen :-)

  • Ich kann das nachvollziehen. Solange du mit dem Cursor im markierten Bereich bist löscht er nichts. Geh mal mit dem Cursor auf die erste markierte Zeile oder vorher oder eine Zeile nach dem markierten Bereich und nutze dann die Löschfunktion nochmal. Dann sollte das funktionieren. Genauso ist es auch mit dem kopieren. Ist ein wenig seltsam, ich weiss, aber ist der einfachheit des kopieren/löschen geschuldet. Vielleicht baue ich das irgendwann nochmal um.

    Aaaaaah ja - gewuß wie... :)

    Die 0.9.27 wird die nächsten Tage kommen :-)

    Klasse! Freu mich schon drauf! :thumbsup:

  • Im Beispiel habe ich in der mittleren Zeile nach der ")" einfach Space gedrückt und die Zeile wechselt von der bunten Farbset Methode in die Editmethode und färbt die Zeile Gelb.

    Diese Zeile könnte ich per Raster-IRQ farblich hervorheben lassen.

    Stimmt, Raster-IRQ geht natürlich auch (hatte ich ganz vergessen), nicht nur Sprites. Gefällt mir.


    Noch ein Convenience-Feature, das ich in modernen IDEs sehr komfortabel finde, ist das Einklappen von Code-Teilen. Wäre das nicht gerade bei dem kleinen C64-Screen auch eine tolle Funktion, um die Übersichtlichkeit zu erhöhen?



    Das würde aber eine Zeichenspalte rauben, weil man das ja irgendwie visualisieren müsste. Meinungen dazu?