Hallo Besucher, der Thread wurde 68k mal aufgerufen und enthält 157 Antworten

letzter Beitrag von syshack am

Bas.Edit der Basic Editor unter Windows !

  • Ansonsten hätte ich da noch BasEdit.NET anzubieten, einen weiteren Basic-Editor für den PC.


    Kein komplettes Development-Tool wie der C64prgGen, aber dafür mit echtem WYSIWYG-Editing, d.h. graphische Symbole und Controll-Codes statt {up}, {RVS_on} etc. Arbeiten wie auf dem 64er, nur mit größerem Bildschirm :-)


    http://www.stojalowski.de/BasEdit/


    Gruß
    Schlowski


  • Sehr geil! Wird es noch entwickelt?
    Kurze Frage: Ist es möglich, die Cross Reference auszudrucken oder in .xls zu exportieren bsplw.?


    Achja gilt:


    Code
    1. ' Maximum length of prog line
    2. MaxLength=128


    für alle Systeme?
    Für mich v.a. für C64, C128 und Plus/4 interessant!


    Tolle Arbeit so weit.


    EDIT: xvic.exe by default muss dann entsprechend immer angepasst werden in der .ini? oder wird je nach Startadresse der entsprechende Vice Emulator (i.e. C64 -> X64.exe) gestartet?? Muss manuell geändert werden.


    Drei Vorschläge hätte ich (oder ich hab was übersehen):


    1.) "Save and Run" will immer neu speichern, geht es, dass man immer in die selbe speichert? Bzw. per Haken an/abschaltbar macht.
    2.) Startadresse bzw. Maschine "on the fly" während des Codens wechseln, saven, runnen.
    3.) Text mit Maus markierbar, Strg+x, c, v wie üblich ausschneiden, kopieren, einfügen.

  • Ist sozusagen taufrisch, hab ich die letzten Wochen aus dem Boden gestampft. Ist eine Weiterentwicklung eines Vorgängermodells auf Direct-X-Basis, welches auf moderneren Windows-Systemen nicht mehr so einfach zum Laufen zu bekommen war. Daher hab ich das auf .NET und GDI+ umgestellt, das wird dann hoffentlich wieder ein paar Jahre unterstützt :-)


    Soweit ich weiß, ist MaxLength für alle Commodore-Systeme 255 - das kann man zwar so nicht eingeben, aber der Interpreter schluckt das. Zumindest der VC20 kann das, ich sehe keinen Grund, warum die anderen Commodores das nicht können sollten... Theoretisch könnte man das sogar noch höher stellen, weil eigentlich die Länge nach Tokenisierung interessant ist, ich im Editor aber nach der PETSCII-Darstellung gehe, d.h. ich zähle z.B. POKE als 4 Bytes statt als 1 Byte. Naja, ist halt ein Kompromiss.


    - Crossreference ausdrucken oder exportieren merke ich mir mal vor.
    1.) Save and Run sollte eigentlich nur beim ersten mal fragen bzw. wenn noch kein Dateiname vergeben ist. D.h. wenn man ein PRG lädt, drin rumeditiert und dann mit F5 startet sollte da eigentlich keine Nachfrage mehr kommen. Es wird still und leise im Hintergrund gespeichert, so zumindest ist der Plan. Werde ich mir nochmal anschauen, it's a bug, no feature.
    2.) Spricht eigentlich nichts dagegen, müsste nur einen Menüpunkt aufnehmen "Startadresse ändern". Die Startadresse ist bisher für mich eh nur für Vice entscheidend, weil der das Prg immer mit 8,1 lädt bei Übergabe als Startparameter. Im echten Leben würde man ja einfach mit ,8 ohne Sekundäradresse laden, dann ginge das immer an den Basic-Start des aktuellen Computers.
    3.) Text mit Maus markierbar - hab ich schon drüber nachgedacht, ist aufgrund der internen Struktur schwierig, aber eventuell wird das irgendwann mal gemacht.
    Strg-x, c, v geht nicht, weil das mit den Graphikzeichen belegt ist. Strg ist quasi die C= Taste des 64ers auf dem PC. Darum hab ich Strg-Entf für Ausschneiden, Shift-Entf für Kopieren und Shift-Einfg für Einfügen genommen. Ist auch ein Standard, wenn auch nicht ganz so schön wie die anderen Tastenkombinationen.

  • Zitat

    1.) "Save and Run" will immer neu speichern, geht es, dass man immer in die selbe speichert? Bzw. per Haken an/abschaltbar macht.



    Mmh, hab das gerade nochmal getestet, ich glaube ich verstehe Dein Problem nicht. Bei mir wird nur nach einem Dateinamen gefragt, wenn ich vorher noch nicht gespeichert habe und einen neuen Quelltext bearbeite. Sobald einmal gespeichert wurde, wird nicht mehr nachgefragt. Kannst Du mal erläutern, wie sich das Problem bei Dir äußert?


    Speichern muss ich auf alle Fälle, weil ich zumindest dem Vice nur eine Datei übergeben kann und nicht irgendwie in seinen Speicher reinschreiben kann.

  • Mmh, hab das gerade nochmal getestet, ich glaube ich verstehe Dein Problem nicht. Bei mir wird nur nach einem Dateinamen gefragt, wenn ich vorher noch nicht gespeichert habe und einen neuen Quelltext bearbeite. Sobald einmal gespeichert wurde, wird nicht mehr nachgefragt. Kannst Du mal erläutern, wie sich das Problem bei Dir äußert?


    Speichern muss ich auf alle Fälle, weil ich zumindest dem Vice nur eine Datei übergeben kann und nicht irgendwie in seinen Speicher reinschreiben kann.

    Stimmt, Du hast recht. Habe es gerade nochmal getestet, einmal "Save and Run" und er will einen Dateinamen. Danach auch nach Veränderung nicht mehr.


    Mir sind noch zwei Vorschläge eingefallen:


    1.) Importieren von Basicprogrammen oder Zeilennummern daraus in zweitem Fenster auswählen und dann einfügen, ggf. mit Renumber des Importierten. Denke da an Subroutinen aus anderen Basic-Programmen in das bestehende einfügen mit wählbarem Beginn der Zeilennummer.
    2.) Vielleicht etwas "picky" eine Kleinigkeit: Wenn ich ein Programm habe mit 10-40 und in die letzte Zeile "5 REM LALALA" eingebe, dass er es richtig einsortiert.


    :)


    Desweiteren vielleicht noch ein paar weitreichendere Dinge, aber das wäre vielleicht zu viel... Aber bei Interesse...
    Ist halt die Frage ob Du Richtung IDE gehen willst ähnl. C64PrgGen.

  • Grml, gerade einen halben Roman getippt und dann ein Timeout und alles weg...



    Ok, hier die Kurzfassung:



    Das mit Save&Run sehe ich dann mal als erledigt an.



    Zu Deinen neuen Vorschlägen


    1.) Interessant, da denke ich mal drüber nach.


    2.) Hat mich auch schon gestört. Allerdings möchte ich kein automatisches Einsortieren, dann springt man eventuell wild im Quelltext umher, nur weil man sich bei der zeilennummer vertippt hat. Lieber ein "Sortieren" Kommando, das den Quelltext nach Zeilennummern neu sortiert. Quasi wie am Original, am Bildschirm wild rumeditieren, Zeilennummern überschreiben etc. und dann irgendwann mal ein LIST um zu sehen, was man eigentlich angerichtet hat...



    Bisher ist BasEdit recht relaxed, was Zeilennummern betrifft. lediglich beim "Renumber" Kommando wird auf überschneidungen geprüft. Ach ja, dafür sortiert "Renumber" nach dem Durchnummerieren.



    Beim Speichern wird auch weder auf doppelte noch auf falsch einsortieret zeilennummern geachtet, das sollte ich wohl mal nachholen. ich weiß gar nicht, was so ein Commodore Rechner macht, wenn man ihm ein Programm mit doppelten Zeilennummern in falscher Reihenfolge einlädt und startet.



    Wohin sich BasEdit entwickelt weiß ich auch noch nicht, ich habe noch viele ideen, die teilweise in Richtung C64PrgGen gehen, das ergibt sich wahrscheinlich einfach wenn man schonmal den Editor hat. Sowas wie Character Editor, PETSCII Screen Editor, MixedMode Programme (Basic und ML/Graphiken/sonstige Binärdaten) in einer Datei, Integration meines Assemblers um z.B. automatisch Data-Zeilen inkl. For-Next-Schleife in den Quelltext einzufügen etc.etc.etc. Falls Ihr noch Ideen habt, anhören kann ich mir die ja mal, das tut nicht weh.

  • 2.) Hat mich auch schon gestört. Allerdings möchte ich kein automatisches Einsortieren, dann springt man eventuell wild im Quelltext umher, nur weil man sich bei der zeilennummer vertippt hat. Lieber ein "Sortieren" Kommando, das den Quelltext nach Zeilennummern neu sortiert. Quasi wie am Original, am Bildschirm wild rumeditieren, Zeilennummern überschreiben etc. und dann irgendwann mal ein LIST um zu sehen, was man eigentlich angerichtet hat...


    Ok, das hab ich mal schnell eingebaut, gibt jetzt einen Menüpunkt "Sort..." mit dem man seinen Quelltext sortieren kann.



    Zitat

    Kurze Frage: Ist es möglich, die Cross Reference auszudrucken oder in .xls zu exportieren bsplw.?


    Gibt jetzt im CrossReference-fenster einen Button "->Clipboard", damit wird das alles in die Zwischenablage kopiert. Das kann man dann per Strg-V ( :-) ) z.B. in Excel einfügen. Ist mit Zeilenumbrüchen und Tabs so vorbereitet, dass es sowohl in einem Texteditor als auch in Excel prima aussieht. Drucken darfst Du dann selbst.


    Hab die Version im Web upgedatet, einfach nochmal runterladen.

  • Das mit den Versionsnummern im Link ist immer zweischneidig, dann muss ich nämlich an mehreren Stellen meine Links updaten. Wenn die Datei immer gleich heißt, bekommt man immer automatisch die aktuellste Version, da kann dann nix schiefgehen und ich muss nichts aufräumen oder updaten. Und ich neige dazu, häufig upzudaten, 2-3 mal pro Tag kann schon vorkommen. Und dann wieder wochenlang Ruhe.


    BasEdit an sich hat natürlich eine Versionsnummer, unübersehbar im Fenstertitel, nur muss man ihn dazu natürlich schon wieder runtergeladen haben. Ein Teufelskreis...


    Kompromiss: Wenn ich mal wieder eine neue Version uploade schreibe ich hier in meinem Beitrag auch die Versionsnummer dazu. Dann kann das jeder mit seiner lokalen Version vergleichen und notfalls updaten.


    Aktuell ist jetzt die 1.01 ^^

  • Grml, gerade einen halben Roman getippt und dann ein Timeout und alles weg...


    Du willst Lazarus. Nie wieder verlorene Forminhalte. :D


    Beim Speichern wird auch weder auf doppelte noch auf falsch einsortieret zeilennummern geachtet, das sollte ich wohl mal nachholen. ich weiß gar nicht, was so ein Commodore Rechner macht, wenn man ihm ein Programm mit doppelten Zeilennummern in falscher Reihenfolge einlädt und startet.


    Der kontrolliert das nicht, kannst du mit Petcat ausprobieren und siehst du jedes mal wenn du ein Verzeichnis ansiehst. Das Verzeichnis wird nämlich als BASIC "Programm" übertragen. ;)

  • Zitat

    Der kontrolliert das nicht, kannst du mit Petcat ausprobieren und siehst du jedes mal wenn du ein Verzeichnis ansiehst. Das Verzeichnis wird nämlich als BASIC "Programm" übertragen. ;)



    Naja, aber ein Directory Listing startet man auch nicht... Ich dachte mehr an ein reales Basic-Prgramm, das z.B. mehrmals Zeile 100 hat und dann irgendwo ein GOTO 100. Soweit ich das blicke, würder er dann wohl die erste Zeile 100 vom Programmanfang aus gesehen anspringen. Gibt wohl erst ein Problem, wenn man die Zeilen editiert, weil dann die doppelten wegfallen. Ist aber eh alles eher akademischer Natur :prof:

  • Kurz getestet:

    Code
    1. 100 print "a"
    2. 100 print "b"
    3. 100 print "c"
    4. 100 print "d"
    5. 100 print "e"
    6. 100 print "f"
    7. 100 goto 100
    8. 100 print "g"


    Das GOTO springt hier immer nach PRINT "A" und ein 100{return} löscht immer die oberste Zeile.

  • So, neue Version hochgeladen, 1.02 mit folgenden Features:




    - Ändern der Ladeadresse der PRG-Datei jederzeit möglich (neuer Menüpunkt "Set start address...")


    - Die Emulator-Section in der INI deutlich erweitert:


    Es gibt jetzt neben EMU= und EMUPARAM= noch 6 weitere Einstellungen für Emulatoren:







    Damit wird bei F5 Save&Run jetzt abhängig von der Lade-Adresse des PRG-Files der zugehörige Emulator gestartet, d.h. bei eier Ladeadresse 2049 (=$0801) der X64, bei einer Ladeadresse 4097 (=$1001) z.B. der XVic mit Konfiguration für unexpanded VIC etc.

  • Neue Version 1.04:



    Der Syntax-Check ist nicht ganz trivial, ich hab den mit diversen echten Programmen gestestet, möchte aber nicht ausschließen, dass es da noch Lücken oder Probleme gibt. Der Commodore Interpreter hat einige interessante Macken und Möglichkeiten, ich hatte da einige Momente des :baby:

  • Heh, ja, bin ich auch drüber gestolpert.
    Das da ist Beispielsweise legaler CBM-BASIC V2 Code:

    Code
    1. print fo$","ob":"left$(ar$,4)mid$(x$,i,j)
    2. if fo = ba goto 100 'Da fehlt ein THEN, geht trotzdem...


    Übrigens, da ich es gewohnt bin mit Hochkomma zu arbeiten, könntest du das als legalen Kommentar akzeptieren der beim Tokenisieren nicht tokenisiert wird?
    Das also aus:

    Code
    1. 10 print "test" ' Dies ist ein Test


    das da wird:

    Code
    1. 10 print"test"
  • Code
    1. print fo$","ob":"left$(ar$,4)mid$(x$,i,j)


    Das funktioniert schon, wird vom Syntax-Check klaglos akzeptiert


    Code
    1. if fo = ba goto 100 : rem geht nicht
    2. if fo= ba goto 100 : rem geht nicht
    3. if fo=ba goto 100 : rem geht
    4. if fo =ba goto 100 : rem geht


    Aha, da ist noch was im Argen mit der Auswertung von <log> und Freiplätzen...


    Code
    1. 10 print"test":'Dies ist ein Test


    Wird durch den Syntax-Check nicht angemahnt, funktioniert dann aber nur unter einem Basic, das ' als REM erlaubt, wie z.B. Exbasic
    Zwingend erforderlich ist aber der : wie auch bei einem normalen REM und es wird aus dem PRG nicht wegoptimiert. Eventuell kann ich da mal was Konfigurierbares draus machen, allerdings muss ich dann aufpassen, dass sich das nicht mit realen Basics beißt...
    Kleine Anekdote: Genau das von Dir gewünschte Feature des ' Kommentars nur für den Editor hatte ich ursprünglich, bis mich ein Anwender von Exbasic darauf hinwies, dass ich ihm seinen Source verstümmel...


    Code
    1. 10 print "blablabl" ' Kommentar


    führt zu einer Endlosschleife, da muss ich auch noch bei...


    Danke schonmal für die Rückmeldung, da hab ich ja wieder was zu suchen.
    Außerdem muss ich den Cursor noch richtig platzieren nach einem Fehler, der steht etwas planlos in der falschen Zeile and der falschen Stelle, nicht sher hilfreich...