Bas.Edit der Basic Editor unter Windows !

Es gibt 157 Antworten in diesem Thema, welches 86.287 mal aufgerufen wurde. Der letzte Beitrag (28. August 2017 um 12:41) ist von syshack.

  • Wie sauhund sagt. Also nicht einfach kürzen, sondern eindeutige neue Variablen neu erzeugen. Ist halt ziemliche Einbahn, von kurz auf lang macht nicht wirklich Sinn.

    Naja, dann sollte aber der originale Text auch aufbewahrt werden, damit die sprechenden Namen erhalten bleiben.

    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.

  • Quelltext mit Labels etc. muss sowieso separat als PETSCII gespeichert werden, die PRG-Datei ist dann quasi nur noch die Binärausgabe für den Rechner. Da drängt es sich mir langsam auf, eine Art (Mini-/sehr kleine/kaum Funktionen beinhaltende) Projektverwaltung draufzustülpen mit Dateinamen für PETSCII und PRG-Datei, eventuell noch zu benutzendes Basic-Tokenfile und ASCII-Tokenfile und ein Root-Verzeichnis dafür oder so. Damit man all diese Informationen an einer Stelle zusammenführt und mit "Projekt speichern" und "Projekt laden" seine Arbeitsumgebung ratz-fatz sichern und wiederherstellen kann.
    Punkt 123 auf der heutigen Tagesliste...

    Basic V2 Programme unter Windows editieren: Bitte melde dich an, um diesen Link zu sehen.

  • Blöde Frage, irgendwie hakt es grade. Wie kann ich denn Steuerzeichen eingeben? Also im Anführungszeichenmodus Clear/Home/Cursor-Bewegungen und Farben? Auf meinem Lappi geht in der Richtung nüscht.

    Der Syntax-Checker meckert die Zeile an, die ist aber so an sich korrekt:
    10 mt=1:dimm$(mt),md$(mt),mh(mt),mm(mt),ma(mt),md(mt),ms(mt),mb(mt)

    Im Label-Modus habe ich offenbar eine Endlosschleife, wenn ich mit dem Cursor am ersten Zeichen einer eingerückten Zeile stehe und Ctrl-Links drücke.

    Sonst, weiter so!

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

  • Zitat

    Wie kann ich denn Steuerzeichen eingeben? Also im Anführungszeichenmodus Clear/Home/Cursor-Bewegungen und Farben? Auf meinem Lappi geht in der Richtung nüscht.


    ALT-CursorTasten für {up}, {down}, etc, ALT-POS1 für {home} und SHIFT-ALT-Pos1 für {clr}
    ALT-1 bis 0 für Farben und Reverse on/off
    Dummerweise geht durch die ALT-Taste immer das menü an, das kann ich leider bisher nicht unterdrücken...
    Ansonsten kannst Du die Zeichen auch über F2 einfügen, wenn Du weißt, wie sie aussehen :smile: Also inverses Q für {down}

    Zitat

    Der Syntax-Checker meckert die Zeile an, die ist aber so an sich korrekt:
    10 mt=1:dimm$(mt),md$(mt),mh(mt),mm(mt),ma(mt),md(mt),ms(mt),mb(mt)


    Mmh, kann sein dass DIM nur eine Variable erlaubt, muss ich mal im Syntax Check nachschauen bzw. im Token-File...

    Code
    syntax="c<var_any_simple>(<num_lit>[,<num_lit>...])"


    Jupp, da geht nur DIM A(1) oder DIM A(1,2) usw. Das mit den beliebigen Variablen nach Komma ist "fiese", da muss ich mal drüber nachdenken...

    Zitat

    Im Label-Modus habe ich offenbar eine Endlosschleife, wenn ich mit dem Cursor am ersten Zeichen einer eingerückten Zeile stehe und Ctrl-Links drücke.


    Ja, ist ein Fehler, siehe ein paar Posts vorher, ist bei mir schon behoben, gibt aber noch keine Version "für Euch" :

    Zitat

    Nachtrag: Hab jetzt auch den Fehler beim wortweisen Springen nach links mittels Strg-Links gefunden. Passiert nur im Label-Mode bzw. wenn man vor der Zeilennummer noch Spaces hat, da gerate ich dann in eine Fast-Endlosschleife, die irgendwann in einem Integer-Überlauf bei -2 Mrd und ein paar Zerquetschte endet. Zum Glück sind die PCs heutzutage schnell genug, dass das tatsächlich auftritt. Ab der nächsten Version (1.30) behoben.

    Basic V2 Programme unter Windows editieren: Bitte melde dich an, um diesen Link zu sehen.

  • Wow, geht ja schnell :)

    Einen habe ich noch: Hatte eben das Problem, dass ich das Disk-Image noch im Vice auf hatte, aber im Editor schon wieder rumgepörkelt habe und nochmal starten wollte. Dabei gab es dann eine Exception (File kann nicht geschrieben werden), ist ja auch klar. Leider hat dann BasEdit irgendwie nur noch ein stark angeschlagenes Image im Speicher gehabt. Vielleicht kannst du da mal nachsehen, dass nach der Exception nicht das Image im Speicher beschädigt wird.

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

  • Hast Glück gehabt, habe gerade meinen Kontrollgang durch die Foren gemacht :)

    Das mit dem DiskImage ist natürlich übel, hab mir das mal notiert - erst checken ob ich schreiben darf, dann schreiben, ansonsten Fehler auswerfen.

    Ach ja, zur Tastaturbelegung: Strg ersetzt die Commodore-Taste!

    Basic V2 Programme unter Windows editieren: Bitte melde dich an, um diesen Link zu sehen.

  • Code
    syntax="c<var_any_simple>(<num_lit>[,<num_lit>...])"


    Jupp, da geht nur DIM A(1) oder DIM A(1,2) usw. Das mit den beliebigen Variablen nach Komma ist "fiese", da muss ich mal drüber nachdenken...


    Da geht auch sowas:

    Code
    10 ?fre(0)
    20 dima$
    30 ?fre(0)
    run
    -26655
    -26662

    Oder gar sowas:

    10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    20 forj=1to5:printchr$(rnd(1)*16+70);:next
    30 printint(rnd(1)*328)-217

    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.

  • Oh, und ich war so sicher, dass nur numerische Konstanten gehen, dass ich das nicht weiter verifiziert habe. Danke für den Hinweis, dazu muss nur <num_lit> in <num> geändert werden in der Syntax-Beschreibung. Dann gehen auch solche Sachen wie DIMA(B+4) korrekt durch.

    Das DIMA$ ohne Dimensionen ist auch noch easy, da muss nur noch ein paar eckige Klammern zusätzlich rein, in der Summe sieht das dann so aus in der TokenList_BasicV2.txt:

    Code
    dim,      $86, syntax="c<var_any_simple>[(<num>[,<num>...])]"

    Nur das mit der Komma-getrennten Auflistung beliebig vieler weiterer Variablen macht mir noch Sorgen, mein Syntax-Checker bzw. Syntax-Regel-Parser beherrscht nur einmal ... als beliebige Wiederholung in einem Ausdruck. Da muss ich wohl nochmal bei.

    Basic V2 Programme unter Windows editieren: Bitte melde dich an, um diesen Link zu sehen.

  • Das ist ja jetzt wieder viel einfacher - die ganzen Sonder-Verrenkungen für die Abprüfung von gültigen Zahl-Konstanten fallen ja jetzt weg, außerdem sind Klammern keine Pflicht mehr, damit ist das, was hinter dem DIM-Befehl steht syntaktisch nichts weiter als eine beliebige Anzahl von Variablen, mit Komma getrennt. Die Variablen können einfache Variablen sein (A, B$,...) oder Array-Variablen mit Konstanten Dimensionen (A(1), B$(2,4,7)) oder auch Arrays mit berechneten Dimensionen (A(B), C$(D+2*Y+4)) - und entsprechen damit der <var_any> Definition.

    Also braucht man die Zeile in der TokenList_BasicV2.txt nur folgendermaßen abzuändern und alles ist gut:

    Code
    dim,      $86, syntax="c<var_any>[,<var_any>...]"

    Hätte ich vorher richtig recherchiert hätte mir das viel Arbeit erspart...

    Basic V2 Programme unter Windows editieren: Bitte melde dich an, um diesen Link zu sehen.

  • Neue Version 1.30 hochgeladen:

    Code
    - Strg-Links fürhrt nicht mehr zu einer Exception am linken Bildrand
    - Doppelklick lädt jetzt das ausgewählte PRG im Diskimage automatisch
    - Geänderte Syntax Check Regel für DIM
    - Test auf Schreibberechtigung bevor das Diskimage tatsächlich auf Platte zurückgeschrieben wird
    - bugfix: Beim Überschreiben von PRG-Dateien die länger als ein Block sind werden jetzt die benutzten Sektoren wiederverwendet, überflüssige Sektoren nach PRG-Ende werden in der BAM freigegeben
    - Diskmanager Tool für Diskimages

    Neben den üblichen kleineren Bugfixes und Erweiterungen ist der Diskmanager das "Highlight" dieser Version:

    Bitte melde dich an, um dieses Bild zu sehen.

    Hier können Dateien mit <C> aus dem Diskimage auf die Festplatte kopiert werden sowie Dateien von der Festplatte mit <A> dem Diskimage zugefügt werden.
    Dateien im Directory des Diskimage können mit <+> und <-> hoch- und runtergeschoben werden, mit <I> kann eine Trennlinie zugefügt werden, außerdem können die Dateien mit <D> gelöscht und mit <R> umbenannt werden.
    Alle Änderungen sind erstmal nur temporär im Speicher, erst wenn man den Diskmanager mit Return oder Enter verlässt, werden sie gespeichert. Esc verwirft alle Änderungen.

    Wie immer der klare Warnhinweis: keine Garantie für gar nichts :) Also bitte Diskimages vorher sichern...

    Basic V2 Programme unter Windows editieren: Bitte melde dich an, um diesen Link zu sehen.

  • Danke und - ich arbeite daran, hab noch ein paar Punkte auf meiner Liste ^^

    Basic V2 Programme unter Windows editieren: Bitte melde dich an, um diesen Link zu sehen.

  • Superklasse :)
    Werde ich gleich antesten!

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

  • So, gerade mal mein Glück mit Mono probiert.
    Hab auch brav die Backslashes "\" gegen Slashes "/" ausgetauscht, trotzdem meint dein Programm er finde .\Fonts\CharGen20 nicht.
    Schau mal bitte nach wer da so schlau ist und die Slashes wieder zu Backslashes macht... :grr:

    EDIT:
    Oder mach als Fallback einen Auswahldialog rein, so ala "Ich finde foo nicht, helf mal lieber User!"
    Also irgendwas wie:

    Code
    do
      open font for binary as #1
      if err then
        font = winform.getfiledialog(wie die parameter auch immer aussehen)
        if font = "" then end
        continue do
      end if
      exit do
    loop


    (Ja, ich verzichte mit Absicht auf ein GOTO ;) )

    Blog: Bitte melde dich an, um diesen Link zu sehen. - The Seventies Board: Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen.

    Ein Terminal und ein Z80 :D

  • Das Problem setzt schon etwas früher an, weil ich mit

    Code
    If File.Exists(".\BasEdit.ini") Then


    abprüfe, ob ich die Ini überhaupt finde. Wenn er da schon mit den Backslashes Probleme hat, findet er die nicht und nimmt den Defaultwert für den CharGen

    Code
    .Chargen = ".\Fonts\CharGen20"

    Wobei ich es etwas merkwürdig finde, dass das nicht automatisch vom System umgesetzt wird zwischen "\" und "/", je nach System. Muss mal schauen, ob man irgendwie den Directory-Separator abfragen kann, den das aktuelle System benutzt.

    Basic V2 Programme unter Windows editieren: Bitte melde dich an, um diesen Link zu sehen.

  • Schau mal nach System.IO.Path.DirectorySeparatorChar, das müsste das sein. Praktisch empfiehlt sich auch Path.Combine, um das zu umgehen.

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

  • Hallo,

    schickes Program :) Es lauft auch unter Mono, aber noch nicht richtig.
    Also mein System ist ein Lucid Lynx/i386_64 folgendes habe ich installiert:

    Code
    apt-get install monodevelop  mono-tools-devel  mono-tools-gui  mono-debugger  mono-complete libmono-microsoft-visualbasic8.0-cil


    Dann habe ich BasEdit entpackt und alle BackSlashes in Slashes gewandelt in der Ini.
    Ein

    Code
    mono BasEdit.exe

    bring den Fehler, den BastelFurry beschreibt.
    Wenn man den Font mit

    Code
    cp Fonts/chargen20 '.\Fonts\CharGen20'

    kopiert startet BasEdit auch, warum zeigt Schlowski's letzter Post.

    Es ist glaub ich ein Cross-Plattform Problem. Ich würde empfehlen alle Dateinamen lowercase zu machen und eine Abstraktion in form eines "DirSeperators" einzufgühren, dieser ist und Windows auf BackSlash gesetzt und unter Mono auf Slash. (Kann .NET nicht generell mit "/" als DirSeperator arbeiten?)

    Dann wuerden die Zeilen in evtl so aussehen:

    Code
    If File.Exists("."+DirSeperator+"BasEdit.ini") Then
    Code
    .Chargen = ".\Fonts\CharGen20"

    cya

    EDIT: ich sehe gerade Endurion und Schlowski waren schneller.

    EDIT2: Beim Laden des Videopoker-Beispiels als TXT oder als PRG gibt es jedoch folgenden StackTrace

    Und ab jetzt komme ich ohne QuellCode nicht weiter :(

  • Zitat

    Muss mal schauen, ob man irgendwie den Directory-Separator abfragen kann, den das aktuelle System benutzt.


    benutze doch ganz einfach den forward-slash. das geht auch unter windows :)

  • Ok, hab inzwischen auch den System.IO.Path.DirectorySeparatorChar gefunden und überall eingesetzt, zumindest unter Windows läuft's noch :)

    Bleiben noch die üblichen U*ix case sensitive filenames Probleme, da empfiehlt Mono für Benutzer von Software von schlampigen Entwicklern wie mich folgendes:

    Zum Stack-Trace:
    Das sieht übel aus - anscheinend wird unter Mono bei der ASC-Function von Basic wieder mal selbstherrlich eine UTF8-Umwandlung probiert. Die wollen wir natürlich gar nicht, der PETSCII-Code macht dann ganz schlimme Dinge, weil der nur wie UTF8 aussieht, aber gar keiner ist. Das fährt hier offenbar gegen die Wand. Mit dem Kram ärger ich mich schon die ganze Zeit rum :( Unter Windows / .NET Framework hatte ich alle Schlupflöcher gestopft, aber was ich gegen die automatische Umwandlung bei ASC() machen soll, weiß ich noch nicht...

    Ach ja, die aktuelle Version hab ich mal ausgetauscht gegen 1.31 mit "\" und "/"-Berücksichtigung!

    Basic V2 Programme unter Windows editieren: Bitte melde dich an, um diesen Link zu sehen.