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

last post from TD1334 at the

PABasic - Zeilenloses Basic

  • Nice.

    Zum Handbuch: aus meiner Sicht wäre es gut, wenn man einleitend ein Kapitel hätte, das einem die grundsätzliche Art des Basics vermittelt, anstatt direkt in die Token zu gehen. Also, als C64 Basic Typ habe ich nach dem Pendant zu Zeilennummern gesucht...also Label oder sowas. Wollte ein Print "Hallo": goto <selbe-zeile> programmieren und scheiterte, weil ich so schnell nicht wusste, was man stattdessen für die Zeilennummer nimmt.


    Die Kontrollstrukturen der Sprache vorher mal zu verstehen, fände ich nicht schlecht. Oder ist mein PDF nur zu alt?


    Ich finde deinen Editor-Ansatz aber einfach genial und ich habe immer auf so einen Basic-Editor gewartet (vgl. mit dem TMP Assembler). Klasse.

    (Btw. lange Zeilen finde ich überflüssig und man findet den Code ja auch gar nicht wieder, aber die Zeile kann ja jeder selber vorher umbrechen)

  • AND - Sprungvorhersage eingeführt. Bei einem 0=false Wert der mit AND verarbeitet werden soll wird jetzt eine Sprungvorhersage eingeführt und der AND Teil weggelassen, da 0 AND x immer 0|FALSE ergibt

    <Klugscheißmodus an>

    Das ist keine Sprungvorhersage, sondern ein Kurzschlußoperator.

    https://de.wikipedia.org/wiki/Kurzschlussauswertung

    <Klugscheißmodus aus>

  • Ich finde deinen Editor-Ansatz aber einfach genial und ich habe immer auf so einen Basic-Editor gewartet (vgl. mit dem TMP Assembler). Klasse.

    Genau das wollte ich auch schon schreiben. Eigentlich hab ich schon immer auf so eine Editorfunktionalität ohne Zeilennummern usw. gewartet.

    Auch von mir: Hut ab...

    Außerdem bin ich mal auf die REU-Version gespannt... ;)

  • Danke für dein Lob und die Kritik.

    Ich stimme dir da zu. Das Problem ist das ich kein guter Dokumentierer bin ;-)

    Das Hand ist als Beiwerk beim Programmieren entstanden, weil ich wollte, das wenigstens etwas erklärt wird. Es ist auch für mich eine Art technische Referenz, deshalb auch der technische Teil am Anfang. Der Tokenizer und die Art der Verwaltung war der erste Teil. Das Handbuch muss irgendwann mal komplett neu strukturiert. Die Erklärung der Basic Befehle sollte auch ein schönes einheitlich Format und Wording erhalten. Das wird irgendwann auch kommen.


    Ich dachte mir ich packe viele kleine Beispielprogramme auf die Disk, aber ich glaube keiner hat eine Ahnung gehabt wie man überhaupt ein Programm reinlädt, zumal es am Anfang nicht mal eine Directory Funktion gab.


    Das scrollen muss drin bleiben, denn 40 Zeichen sind schnell weg, zumal ich ja den Quellcode aktuell schon ein wenig formatiert ausgebe. Natürlich darf jeder seine Zeilen so schreiben wie er mag, ob kurz oder lang. Hauptsache er nutzt das Basic ;-)


    Ich finde deinen Editor-Ansatz aber einfach genial und ich habe immer auf so einen Basic-Editor gewartet (vgl. mit dem TMP Assembler). Klasse.

    Genau das wollte ich auch schon schreiben. Eigentlich hab ich schon immer auf so eine Editorfunktionalität ohne Zeilennummern usw. gewartet.

    Auch von mir: Hut ab...

    Außerdem bin ich mal auf die REU-Version gespannt... ;)

    Ich habe mir dazu schon Gedanken gemacht und festgestellt, dass der aktuelle Code nicht so einfach REU-Kompatibel ist. Da muss ich umbauen und da muss ich mich entscheiden ob ich zwei getrennte Versionen entwickele, die dann aber doppelt Aufwand benötigen wenn ich etwas gerade im Editor anpasse oder es wird eine Version, die beides kann, ohne und mit REU.


    Erstmal will ich aber noch ein paar Editorfunktionen fertigstellen. Mann kann ja schon Markierungen setzen wie im Turbo Ass, jetzt muss man damit auch mal etwas anfangen können. Dann fehlt noch die Möglichkeit Quellcode zu importieren an eine bestimmte Zeile.

    Und dann arbeite ich noch an einem einfachen Game, das komplett in PABasic geschrieben ist. :-) Das will auch fertig gestellt werden.

    Aber ich bin auf einem gutem Weg.

  • AND - Sprungvorhersage eingeführt. Bei einem 0=false Wert der mit AND verarbeitet werden soll wird jetzt eine Sprungvorhersage eingeführt und der AND Teil weggelassen, da 0 AND x immer 0|FALSE ergibt

    <Klugscheißmodus an>

    Das ist keine Sprungvorhersage, sondern ein Kurzschlußoperator.

    https://de.wikipedia.org/wiki/Kurzschlussauswertung

    <Klugscheißmodus aus>

    Danke ... du hast Recht. Es ist eine Kurzschlussauswertung und dann brauche ich meine "Sprungvorhersage", die sagt mir nämlich dann wohin mein Zeiger im Quellcode wandert. :-)

  • Das scrollen muss drin bleiben, denn 40 Zeichen sind schnell weg, zumal ich ja den Quellcode aktuell schon ein wenig formatiert ausgebe.

    Mit der "Home" - Taste kann man ja an den Anfang einer Zeile springen. Gibt's auch eine, mit der man an's Ende springen kann?

    Hättest du einen Vorschlag für eine Taste(n-Kombi)?


    Ich wollte ins run/stop Menü noch die Möglichkeit einbauen, an bestimmte Zeilen zu springen, da könnte ich das unterbringen.

    Und es wird die Möglichkeit geben, zu Funktionen zu springen, sofern man den Funktionsnamen korrekt eingibt.

    Desweiten wird man 10 Sprungmarkierungen (0-9) über das markieren Menü setzen, sowie auch dahin springen können.

  • Hättest du einen Vorschlag für eine Taste(n-Kombi)?

    Am besten wäre es ja analog zur Home-Taste mit einem Tastendruck. Da fällt mir aber nichts ein.

    Bei TMP ist es so, dass die Pfeil links Taste und dann CRSR rechts gedrückt wird und für den Zeilenanfang Pfeil und CRSR links.

    Bei dir dann evtl. run/stop und auch CRSR-R/L?

  • Hättest du einen Vorschlag für eine Taste(n-Kombi)?

    Am besten wäre es ja analog zur Home-Taste mit einem Tastendruck. Da fällt mir aber nichts ein.

    Bei TMP ist es so, dass die Pfeil links Taste und dann CRSR rechts gedrückt wird und für den Zeilenanfang Pfeil und CRSR links.

    Bei dir dann evtl. run/stop und auch CRSR-R/L?

    Ja, denke darauf wird es hinauslaufen. Ich baue gerade das ganze Menü (run/stop) um.

    Vielleicht habe ich bis zur nächsten Version davon ja schon etwas umgesetzt.

  • Neue Version 0.9.19


    Änderungen


    • Logische Operatoren - Ausdrücke wie 0 AND 64 OR 32 mussten vorher in Klammern gesetzt werden, jetzt stoppt die Auswertung bei einem gleichwertigem Operator
    • STATUSZEILE - Invertiert. Grenzt sich optisch besser vom Quellcode ab
    • DEBUGZEILE - Nahm nur platz weg. Entfernt. Ist nur noch für den Programmierer verfügbar
    • INTEGER Multiplikation - Werte > 255 und < 65536 im Multiplikator führten zu einem fehlerhaften Ergebnis.
  • Ich hatte in der Version 0.9.19 wieder den Fehler mit zerschossenen Variablen:


    Richtig:


    Wieder der Fehler, nach dem Ausführen mit F5 und Rückkehr in den Editor.

    Ich hatte das Programm vorher gespeichert. Nun hab ich das Programm geladen (In der Test.d64 Menu7) und dann hat's funktioniert.


    Dann ist mir noch folgendes aufgefallen:

    Wenn ich lange Zeilen mit DEL lösche, stoppt der Cursor am linken Bildschirmrand und geht nicht weiter, so wie bei der CRSR - L Taste.

  • Ich kann das nicht nachstellen. Hast du das erste mal das Programm komplett eingegeben und dann gestartet oder wie darf ich mir den Unterschied zu dem zweiten Versuch vorstellen?


    Ich schaue mir deine Disk mal an und versuche das Problem zu finden.

    Dann ist mir noch folgendes aufgefallen:

    Wenn ich lange Zeilen mit DEL lösche, stoppt der Cursor am linken Bildschirmrand und geht nicht weiter, so wie bei der CRSR - L Taste.

    Ja, das ist so gewollt. Mit Crsr-rechts stoppt er auch am Ende der Zeile.

  • Ich kann das nicht nachstellen. Hast du das erste mal das Programm komplett eingegeben und dann gestartet oder wie darf ich mir den Unterschied zu dem zweiten Versuch vorstellen?


    Ich schaue mir deine Disk mal an und versuche das Problem zu finden.

    Ich bekomm's auch nicht mehr hin.

    Ich meine, ich hätte Menu4Menu5 (Hatte zu schnell die Return-Taste gedrückt. Eigentlich sollte es Menu5 heißen, aber ich hab noch nicht verinnerlicht, dass der Dateinamen ja noch da steht ;) ) geladen, dort die Änderungen gemacht, gespeichert als Menu6 und dann laufen lassen. Dann kam der Fehler.


    Ja, das ist so gewollt. Mit Crsr-rechts stoppt er auch am Ende der Zeile.

    Ah ja - alles klar!

  • Ich bekomm's auch nicht mehr hin.

    Ich glaube, ich weiß, was schiefgelaufen ist:

    Kann sein, dass meine Ultimate spinnt. Ich hatte nämlich auch noch eine Version "Menu7" gespeichert, die in der Test.d64 nicht drin ist.

    Ich probier's später nochmal an realer Hardware, im Emu konnte ich es nämlich auch nicht nachvollziehen...

  • So jetzt konnte ich es endlich mal nachstellen (Version 0.9.19):

    Datei Menu13 laden. Da sieht man in Zeile 2 und 56 die kaputten Variablennamen.

    Jetzt korrigiere ich die in aktmen% , dann mit F5 laufen lassen, dann wieder zurück zum Editor.

    Dann ändern z.B. in aktmenu%, laufen lassen, zurück zum Editor und jetzt sollte es wieder so aussehen, wie zu Beginn.

  • Ich glaube ich habe den Fehler gefunden. Lag gar nicht an der Stringzuweisung, sondern der Fehler lag im Editor. Vereinfacht ausgedrückt nach F5 hat der Editor die nächste Variable verkehrt im Speicher angelegt und die hat es dann zerschossen wenn das Programm daten auf dem STRHEAP abgelegt hat.

    Danke an ingo_k für das hartnäckige Fehlersuchen! :thumbsup:


    Ist im nächsten Release behoben.