Hello, Guest the thread was called19k times and contains 312 replays

last post from dg5kr at the

BASIC 4.5 für den C64 (BASIC 3.5 + EIGENE BEFEHLE)

  • Wenn du den Befehl VER aufrufst, dann bekommst du einen SOFTWARE REVISION. Die setzt sich aus JJJJ.MM.TT zusammn

    Bug report zum VER-Befehl:


    Ersetze "FROM MICHAEL SCHIMEK" durch "BY MICHAEL SCHIMEK".

    Ersetze "MODIFIED AND EXTEND FROM DG5KR" durch "MODIFIED AND EXTENDED BY DG5KR".

    Well done.

  • Fügst du noch das aktuelle PRG hier dran? In dem PRG in Post 33 steht noch 20.02.18 als Datum drin.

    Kann man deine Erweiterung auch als "ROM" generieren? Quasi wie ein Simons Basic Modul. Also das generierte Binary auf ein Eprom brennen und dann in eine Steckkarte z.B. UNIPROM64 von GI-Joe setzen. Einstecken, anschalten und mit BASIC 4.5 loslegen. :)

  • Fügst du noch das aktuelle PRG hier dran? In dem PRG in Post 33 steht noch 20.02.18 als Datum drin.

    Kann man deine Erweiterung auch als "ROM" generieren? Quasi wie ein Simons Basic Modul. Also das generierte Binary auf ein Eprom brennen und dann in eine Steckkarte z.B. UNIPROM64 von GI-Joe setzen. Einstecken, anschalten und mit BASIC 4.5 loslegen. :)

    Ja das geht. Ich werde in der nächsten Version sowohl die PRG, als auch die CRT Version anhängen. Ein klein wenig Geduld noch. Ich arbeite gerade an einem BUG im FRAME Befehl. Der geht bei dem Parameter FRAME x,y,39,24,x,y,"bla" auf die Bretter. Solange der Wert unter 39 bzw. 24 bleibt ist alles gut.
    Entweder heute oder morgen kommt die aktuelle Version.

  • Auf allgemeinen Wunsch eine aktualisierte und versionierte Version von BASIC 4.5.

    Als PRG oder als CRT um damit ein ROM Modul zu bestücken.

    Änderungen:

    Der Bug im FRAME Befehl wurde beseitigt. Außerdem werden nun die Frame -Farben korrekt dargestellt.

    Der ursprüngliche HELP-Befehl vom BASIC 3.5 ist wieder aktiv. Die Zusatz Befehle werden mit INFO nun angezeigt.


    Im neuen Befehl "FILE" sind noch ein paar kleine Bug. Bitte nur zum "rum spielen" einsetzen.

    Viel Spaß damit.

  • Hmmm, wie bindest du das CRT-Image in VICE ein???


    Ich mache es so:

    Schritt 1- Starte VICE:


    Schritt 2 - CRT Image:


    Schritt 3 - Auswählen:

    pasted-from-clipboard.png


    Ergebnis:


    Bei mir tuts. ?(:huh:


    Version:


    Falls weitere das Problem haben die CRT Datei nicht als CRT Image laden zu können, bitte melden.

  • Hab mal vice 3.1 unter Ubuntu 18.04 installiert (allerdings die SDL2 Version):



    pasted-from-clipboard.png 



    Funktioniert. :roll:


    Beim "TheC64 Maxi" funktioniert es übrigens genauso tadelos.

  • Ich habe das CRT erfolgreich am echten C128 mit einer 1541 Ultimate II+ ausprobiert.


    :applaus:

  • Warum mach FREE eigentlich bei der Ausgabe einen Cursor-Up davor?


    10 FREE

    20 GOTO 10


    wandert nach oben ...

    Also irgendwie nicht so, wie man es sich erwarten würde.

    FREE() liefert noch immer nix (also auch nicht das was FREE ohne Klammer macht).

    Aber jetzt ist die Klammersyntax mit Variablenangabe überhaupt nicht mehr erlaubt ...

    FREE(VA) -> Syntax Error

    Spaces innerhalb der Klammer ergeben einen Syntax Error und die Variablenlänge ist beliebig, jedoch werden nur maximal die ersten beiden Zeichen gewertet.

    Ja, die ersten beiden Zeichen ist schon klar, aber es müssen alle weiteren gültigen Variablenzeichen überlesen werden!

    FREE VAR

    PRINT VAR

    sollte funktionieren. (derzeit Syntax-Error)


    Außerdem sollten Variablennamen, die eigentlich BASIC-Token darstellen zu einem Syntax-Error führen.

    Geht die Routine mit Variablennamen um, die eigentlich Token-Codes sind? Wird das überhaupt korrekt abgefangen?

    FREE VAL

    FREE PRINT

    etc. sollten zu einem Syntax-Error führen (weil ja die Variable weder gefunden wird noch angelegt werden kann)


    Der Variablen Typ wird nicht abgefragt:

    FREE H$

    ergibt keinen Fehler. Wo wird das Ergebnis abgelegt? In der nummerischen Variable H jedenfalls nicht. Da sollte vielleicht TYPE MISMfATCH kommen.

    FREE HA$ scheitert, aber nicht wegen des Typs, sondern weil es 3 Zeichen sind.

    Eine Integer-Variable könnte auch ein nummerischen Wert aufnehmen. Eh nicht schön, weil in 2er-Komplement man wieder die negativen Werte auftreten würden. Da aber ohnehin nicht mehr 32767 Bytes frei sind, blieben die Werte ja positiv.

    Aber A% wird nicht als Integer erkannt. AB% ist wegen mehr als 2 Zeichen wieder ein Syntax-Error.


    Eigentlich müsste man dafür den LET-Code wieder verwenden, weil dort ist ja der Variablen-Parser schon drinnen (das = mit Ausdrucksauswertung könnte man sich dann sparen und eben gleich den Wert im Fließkommaakku nehmen). Sonst müsste man - wenn vielleicht auch nur reduziert - wieder das Variablennamen-Parsing mehr oder weniger neu gecodet hinzufügen.

  • Wie in einem Post vorher habe ich die Klammer entfernt um den BASIC Style ein wenig näher zu kommen:


    Dieser Konstrukt sollte eigentlich nicht erlaubt sein. Der Befehl FREE ist rein für den "direkt Modus" gedacht.

    Im Programmmodus kann ich weiter FRE(0) nutzen oder eben die Ausgabe von FREE unterdrücken in dem ich das dann eine Variable legen:

    FREE X


    Auch "FREE X$" werde ich nach bessern und mit einem Type Mismatch quittieren. Das habe ich völlig unbedacht gelassen.


    Ansonsten danke für die Anregungen und das gemeckere auf hohem Niveau. Ich nehme aber auch gerne Vorschläge in Form eines Codings entgegen und werden den Mitstreiter sicher im VER-Teil lobend erwähnen.

    Also, wer es nicht nur besser weiß, sondern auch kann, gerne baue ich den Code ein.

  • Wie in einem Post vorher habe ich die Klammer entfernt um den BASIC Style ein wenig näher zu kommen:

    Ok, passt, wenn das gewollt ist.

    Dieser Konstrukt sollte eigentlich nicht erlaubt sein. Der Befehl FREE ist rein für den "direkt Modus" gedacht.

    Im Programmmodus kann ich weiter FRE(0) nutzen oder eben die Ausgabe von FREE unterdrücken in dem ich das dann eine Variable legen:

    FREE X

    Wenn nur der Direktmodus erlaubt sein soll, dann sollte man das auch sicherstellen und im RUN-Modus mit einem ILLEGAL DIRECT Error abbrechen. Nur, dann erschließt sich mir nicht mehr die Variablensyntax, die ja dann für den Direktmodus eigentlich "over-powered" ist. (ja ich weiß, geschuldet der Tatsache, dass es keine Funktion ist) ;)

    Auch "FREE X$" werde ich nach bessern und mit einem Type Mismatch quittieren. Das habe ich völlig unbedacht gelassen.

    Wie gesagt, das ist nur ein Teilaspekt des ordentlichen Variablennamen-Parsings: Die Syntax sollte ja konsistent sein. Also, das was LET erlaubt, müsste auch hier erlaubt sein.


    Ansonsten danke für die Anregungen und das gemeckere auf hohem Niveau. Ich nehme aber auch gerne Vorschläge in Form eines Codings entgegen und werden den Mitstreiter sicher im VER-Teil lobend erwähnen.

    Also, wer es nicht nur besser weiß, sondern auch kann, gerne baue ich den Code ein.

    Naja, ich will ja die Anstrengungen überhaupt nicht heruntermachen oder auf was auch immer das Wort "Gejammere" hinaus will. Das ist als sachliche Kritik zu sehen. Und es widerspricht der sonst üblichen BASIC-Syntax und -Semantik. So gesehen kann man freilich jeden Bugreport als "Gejammere" ansehen.


    Gerne investiere ich zusätzlich zum Testen auch Zeit für Verbesserungen. Je nach verfügbarer Zeit und wenn ich das aktuelle ZIP mit den Sourcen hätte, bin ich dabei ... ich kann freilich auch vom alten free.asm-Code ausgehen...

  • Um die letzten beide Posts zum Abschluss zu bringen möchte ich mich an dieser Stelle wirklich aufrichtig an alle „Tester“ und deren Feedback bedanken.

    Ich möchte jedoch noch ein paar kleine Informationen über mich und über die Motivation dieses „Projektes“ vermitteln.

    Die Motivation war ganz klar das doch sehr mangelhafte BASIC 2.0 des C64. Obwohl ich kaum BASIC Code, regen mich da die vielen Poke und Peek in den Programmen auf. Den das macht die Programme m.e. sehr schlecht lesbar. Gleichzeitig hatte ich große Lust wieder mal in Assembler zu Programmieren was ich zum einen noch in etwa kannte und zum anderen im Gegensatz zum High Level Assembler andere Systeme leicht zu erlernen ist.

    Dann bin ich ein Jugendlicher der 8Bit Generation. Groß geworden mit dem C64 und einigen sogenannten EMUF (Einplatinen Microcomputer für Universelle Festprogrammierung) auf Basis SAB6502 oder 8085. Auf einen EMUF mit einem 6502 und etlichen OPs habe ich meine erste Heizungssteuerung in den 80ern realisiert. Doch kommen wir zurück zum BASIC 4.5:

    Mein erstes Projekt war das EXBASIC V2+. Quasi komplett neu auf der grünen Wiese. Dann bin ich auf dieses BASIC 3.5 für den C64 gestossen. Da mich der PLUS/4 immer schon wegen dem „erwachsenen“ BASIC interessiert hatte fand ich das eine gute Idee dieses BASIC mit meinen eigenen Wünschen zu erweitern.

    Nun ist es so, das ich dafür bereits sehr viele Stunden in meiner Freizeit investiert habe. Und das weil es mir Spaß macht. Ich bin keine profit orientierte Softwareschmiede die ein BASIC für den C64 verkaufen will. Da käme ich auch 30 Jahre zu spät. Ich mache das weil ich Spaß am programmieren habe. Nun kommt es öfter mal vor das ich mich in einer Sackgasse bewege und da gibts diese Wahnsinn Community hier mit absolut geilen Programmierern die mir bisher immer einen Weg aus dieser Sackgasse geben konnten. Ich habe viele Anregungen und Hinweise bekommen. BUGs werden von mir selten festgestellt. Hier sind meine Tester die jenigen, die mit Herz an meiner Entwicklung interessiert sind. Dafür großen Dank und großen Respekt. Inzwischen hat meine „kleine“ Erweiterung allerdings nicht nur rege Nachfrage bekommen, sondern ist auch im Ausmaß größer geworden als ich dachte.

    Daher bitte ich allen „Testern“ um Nachsicht, wenn manchen noch Buggy ist oder meine Ansicht/Philosophy einzelner Befehl nicht direkt nachvollziehbar ist.

    Wahrscheinlich wird BASIC 4.5 nie wirklich zu einem Ende kommen, aber das ist ja auch nie so angedacht worden.

    In diesem Sinne,

    allen C64 Fans einen schönen Abend oder gute Nacht.

  • ich kann freilich auch vom alten free.asm-Code ausgehen...

    Genau deshalb empfiehlt es sich, derartige Projekte einfach (zum Beispiel) auf github zu pflegen -- dann kann jeder was beitragen (pull requests stellen) ohne Sorge, nicht auf dem aktuellen Stand zu sein :)


    dg5kr dein letztes Posting bestärkt mich in dieser Meinung :) Du programmierst, weil es Spaß macht, und freust dich über Anregungen und Verbesserungen. Passt doch perfekt :) Und glaub mir eines -- so ein Projekt, das ist NIE "fertig". Eine Demo ist irgendwann fertig, oder ein Spiel. Aber nicht ein Tool, das (recht frei) andere bei ihren kreativen Ideen unterstützen soll, da gibt es immer neue Feature-Ideen. Verabschiede dich von "fertig" :) Ein definiertes Release kann fertig sein, mehr aber auch nicht :)

  • Ich habe die Anregung von JeeK aufgegriffen und die Symantik von der vorhanden LET-Routine prüfen und umsetzen lassen. Damit werden alle Fehler die LET (bzw. = ) anzeigt nun auch bei FREE gezeigt.

    Weiter führt dieser Konstrukt

    pasted-from-clipboard.png


    zu einem Fehler:


    Wogegen das hier zulässig ist:

    pasted-from-clipboard.png


    FREE ohne Paramter ist also ein reiner Console Befehl. Und das mit dem Cursur Up find einfach net ;)



    Im Anhang die Version von heute.