Bas.Edit der Basic Editor unter Windows !

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

  • gruess Dich,

    ich hab eben mal geschaut und es steht genau so wie du geschrieben hast in der
    BasEdit.ini drin. die pfad angaben haben eigendlich gestimmt. habe es nun auch
    mit der kompletten pfad angabe versucht aber irgendwie will es so nich.

    wobei mir eben auffiehl das ich ja auch unter petscii speichern kann und
    dies ja genauso eine txt wird die man lesen kann ;)

    ergo nimm die option ASCII komplet raus und schon is alles fein XD


    salute

    Edit: auch der fehler beim importieren is bei petscii nicht vorhanden ;)

  • Nene, zwischen PETSCII und ASCII gibt es ein paar kleine, aber feine Unterschiede:

    PETSCII speichert die Datei einfach sozusagen 1:1 ab, inklusive aller Sonderzeichen wie Cursor-Steuerzeichen, Farbcodes in Anführungszeichen etc.
    ASCII wandelt diese Sonderzeichen gemäß der Regeln in den blablabla-Tokens.txt um in sowas wie {down}, {clr} usw, sowie das gerne mal in Zeitschriften abgedruckt wurde.

    Aber nichtsdestotrotz gibt es da noch ein paar kleinere Probleme beim ASCII-Export, wie ich gerade feststellen musste, da bin ich dran :smile:

    Ok, neue Version 1.24 hochgeladen:
    - Fehler beim ASCII-Export behoben

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

  • oh okay das wusste ich nicht...

    ich hoffe du findest den kleinnen aber feinen fehler bei deiner ascii routine :)
    werde mal bissi rumspielen und evtl, was ich nich hoffe, auf weitere bugs
    aufmerksam machen *kicher*

    finde deine editor irgenwie c64-naeher als der anderswo erwaehnte.
    auf jedenfall musst du weitermachen mit dem project :)

    freu mich auf die entbugte version


    salute

  • Danke, gerade 1.24 hochgeladen, siehe vorherige Post.

    Wenn Du Bugs findest, immer her damit, ich mach die platt :hammer:

    Mir ging es beim BasEdit darum, Quelltexte möglichst wie am Original bearbeiten zu können, nur mit einem größeren Bildschirm und mit ein paar Gimmicks, die einem der PC so gibt.

    Ich denke über eine Art Schnittstelle zu weiteren "Sub-Editoren" nach, z.B. für Character-/Sprite-/Screen-Editoren. Das alles sollte möglichst flexibel bleiben, weil ich gerne sowohl VC-20 als auch C64, Plus/4 usw. unterstützen möchte und niemanden mit Features "ärgern" will, die er nicht braucht. Aber das ist noch etwas Zukunftsmusik.

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

  • Ja danke die neue version saved ascii ohne anstand :)
    und auch der import funktioniert nun einwandfrei.

    was ich schoen finde is das syntax highlighting :)
    haette sowas der c64 wuerde auf der echten maschiene das debuggen von
    basic programmen um einiges erleichtert.

    nun haett ich aber mal ne frage Bitte melde dich an, um diesen Link zu sehen.,
    du hast da diesen menue punkt lines zu labels und umgekert...
    wie funktioniert das mir den labels denn bzw wie muessen die ausschauen?

    salute

    PS: was auch schoen waere, waere sowas wie ein data zeilen generator. wo du nur
    eine prg-dateiangiebst(diese sollte aber nur maschienen code oder raw daten
    enthaltem +2 byte ladeadresse) und dein editor macht dir nen schicken basic loader
    draus. waere sicher fuer sprites oder asm routinen nuetzlich.
    naja nur hn gedanke du machts schon was feines draus :)

  • Puh, Fehler behoben :smile:

    Zu "line# to labels":
    Es wird bei allen Zeilen die Zeilennummer entfernt. Sollte diese Zeile Sprungziel sein, wird ein LBL<Znr>:, also z.B. LBL100: als eigenständige Zeile eingefügt.
    Außerdem wird bei allen Sprüngen wie GOTO 100, GOSUB 200 und natürlich auch IF A=1 THEN 250 die Zeilennummer durch das entsprechende Label ersetzt, also in diesen Fällen GOTO LBL100, GOSUB LBL200 und natürlich auch IF A=1 THEN LBL250.
    Prinzipiell müssen Labels allein in einer Zeile stehen und mit: aufhören, bestehen dürfen sie aus Buchstaben und Ziffern. Außerdem sollten Sie keine gültigen Basic-Befehle sein, also ein Label PRINT: wäre nicht zulässig.
    Einfach mal ein Basic-Prg nehmen und umwandeln, z.B. das beigefügte Videopoker (das ist übrigens ein Programm für den nicht erweiteren VC-20), da sieht man dann am Besten, was passiert.

    Zum Data-Zeilen-Generator: Gute Idee. Momentan brauchte ich das noch nicht, weil mein eigener Assembler mir als Output ein solches Basic Programm inkl. For-Next Schleife zum Poken an die richtige Adresse erzeugt.
    Aber um Binärdaten anderer Quellen einzubinden wäre das natürlich schön. Ist vorgemerkt!

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

  • Also Bitte melde dich an, um diesen Link zu sehen.,

    respeckt... mit den labels is man ja fast in der lage structuriert zu programmieren :)
    die uebersicht is einfach herlich.

    da kann ich nur sagen danke fuer dieses gelungene Crosstool.

    salute

  • Danke, freut mich das es gefällt.
    Genau dafür hab ich das mit den Labels auch gemacht, das hilft doch enorm, den Spaghetti-Faktor etwas zu mindern :)

    Hab übrigens eine neue Version 1.25 hochgeladen:

    Code
    - neuer Menüpunkt "Import binary as DATA"
    - Man kann jetzt BasEdit als Startparameter auch eine diskimage und ein daraus zu ladendes Programm mitgeben

    "Import binary as DATA" öffnet nach Auswahl einer Datei einen Dialog und fragt, ob die ersten beiden Bytes eine Ladeadresse sind oder ob das ein Binärfile ist, was an eine andere Stelle geladen werden sollte. Außerdem hat man die Wahl, ob man eine kleine For-Schleife gleich mitgenerieren lassen möchte zum Einlesen und Poken der DATAs an die festgelegte Ladeadresse. Und für die Optik kann man noch wählen, ob man 8, 16 oder beliebig viele DATAs pro Zeile haben möchte.
    Einfach mal probieren, dann klären sich die Optionen von allein.

    Zum Startparameter: Man kann BasEdit entweder ohne parameter starten oder mitgeben, welche Datei beim Start gleich geladen werden soll. ist das eine D64 datei, wird sie als Diskimage gleich attached. Wenn man aus dem Diskimage gleich eine Datei zum Bearbeiten öffnen möchte, kann man den internen Dateinamen aus dem diskimage mit : anfügen.
    Beispiele:
    BasEdit - started BasEdit mit leerem Screen
    BasEdit d:\crossdev\test.prg -> startet BasEdit und lädt test.prg aus dem Verzeichnis d:\crossdev automatisch ein
    BasEdit d:\crossdev\images\Test.d64 -> started BasEdit und attached die Image-Datei Test.d64
    BasEdit d:\crossdev\images\Test.d64:BASPROG -> started BasEdit, attached die Image-Datei Test.d64 und lädt aus dem Diskimage die Datei BASPROG

    Bei letzterem Fall muss man gehörig mit den Klein- und Großbuchstaben aufpassen, das geht am Besten, wenn die Dateien im Diskimage ohne irgendwelchen Sonder-Tüdelüt benannt wurden.
    Die Startparameter sind übrigens zu 100% kompatibel zu VICE :)

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

  • Ja geil so macht doch crossdev in asm und basic endlich spass :)

    2 kleine dinge sind mir noch aufgefallen...

    1. in dem charfenster, wo man ja doppelklicken kann um zeichen in den basic
    code einzufuegen, funktionieren einige zeichen nicht.
    es sind die meisten der reversen zeichen ab dem space.
    kann sein das es so gewollt ist aber das denke ich nicht. ;)

    2. wenn das linsting sehr lang ist faellt das scrollen sehr lahm aus.
    um bei einem zB 65330 zeilen langen listing zur letzten zeile zu kommen benoetige
    ich am anfang ueber 10s eh er wirklich anfaengt zu scrollen.
    um so naeher ich dem ende komme um so schneller faellt der scroll aus.
    waere schoen wenn du da noch mal schaun kannst ob du
    das evtl beschleunigen kannst.
    wobei ich mich natuerlich auch ueber eine scrollleiste am rechten
    rand freuen wuerde. :P

    ansonsten is mir nun noch nichts weiter untergekommen ;)

    salute

    EDIT: du kannst ja mal als spas das beiliegende videopoker sinfrei als datas
    importieren mit 8 datas pro zeile da sieht man den effekt beim scrollen schon sehr gut.

    EDIT2: wenn man compact lines anklickt sollte er intelligent vorgehen...
    datazeilen nicht einfach per : zusammenziehen sondern einfach das
    data der zweiten zeile durch ein , ersetzen. das ist natuerlich nur ein
    vorschlag um den editor noch etwas eleganter zu machen ;)

    EDIT3: noch ein verbesserungs vorschlag: eine rote linie ziehen wo bei
    den entsprechenden geraeten die zeile zuende waehre. dies koennte
    helfen die codes so zu gestallten das man sie auch auf einer echten
    maschiene abtippen kann. *grins*

  • Zu 1. Doch, ist tatsächlich Absicht. das ist dem Verhalten des Basic-Interpreters nachgebildet, der einige wilde Verrenkungen durchführt um Zeichen zu konvertieren. z.B. werden die geshifteten Buchstaben nochmal um 64 weiterverschoben im Gegensatz zu Ihrer Position im Zeichensatz und einige ganz woanders hin. Wenn Du mit dem Mauszeiger über die Zeichen im Charfenster "hoverst", siehst Du, in welche Werte die umgewandelt werden, bevor sie im Codefenster zugefügt werden. Eine -1 bedeutet, dass das im Basic illegal ist.
    Anmerkung: Mittels des Imports über die ASCII-Tokenizerfunktion kann man solche "illegalen" Zeichen übrigens doch erzeugen...

    Zu 2. Das muss ich mir mal anschauen, 3,5k im Basic VC-20 lassen so lange Programme nicht zu, daher hatte ich das Problem noch nicht :)

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

  • okay das mit den asciis wusste ich nicht, freu mich aber ueber jede erkentniss :)

    da ich ja gesagt habe ich spiele mal bissi rum *grins*
    teste ich dein werk natuerlich auf herz und nieren ;D
    auch wenn so lange programme in basic eher die ausnahme sind
    so muss man doch fuer alle faelle gewappnet sin ne ;)

    salute Haubitze

    PS: schau dir, falls du noch nicht hast oben nochmal meine edits an.
    wenn etwas von den vorschlaegen gefaellt und umsetzbar ist,
    freu ich mich.

  • Hab ich auch alles auf die harte Tour gelernt :)

    Deine Tests sind super, das mit den langen Listings hat mir noch keiner mitgeteilt. Wie ich inzwischen festgestellt habe, hat man kein Problem, wenn man sich am Ende des Sources befindet, dann scollt er wie gehabt in ein paar ms. Aber wenn man am Anfang steht, legt er tatsächlich diese 10 Sekunden Gedenkpausen ein - das lässt auf irgendeine schlampige Programmierung meinerseits schließen - und damit auch auf eine Lösungsmöglichkeit...

    Die restlichen Anmerkungen hab ich auch gelesen, das mit dem DATAs zusammenziehen hört sich gut an.
    Das mit der Linie ist schwierig - wo soll die denn hin? Bei 80 Zeichen für den C64 und bei 88 für den VC? Andererseits kann man auf der echten Maschine Befehle noch abkürzen mit P Shift-O für POKE z.B. Damit kann man also auch längere Zeilen eingeben, maximales Beispiel wäre ein 10 ?:?:?:?:?:?:?:?....
    aber als Anhaltspunkt wäre die vielleicht ganz hilfreich.

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

  • Neue Version 1.26 hochgeladen

    Code
    -Massive Beschleunigung des Scrollens bei langen Programmen

    Dank an Haubitze für den Hinweis - und ja, natürlich war das Schlamperei meinerseits. Statt nur die tatsächlich sichtbaren Zeilen zu rendern hab ich ab der ersten auf dem Bildschirm sichtbaren Zeile bis zum Source-Ende alles gerendert - bei ein paar tausend Zeilen Source dauert das schon ein wenig. Aber deswegen fiel das nicht auf, wenn man am Ende des Sourcecodes stand.

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

  • hehe man lernt halt nie aus ne ;)

    das mit der linie koenntest du doch davon abhaengig machen welche
    load adresse gewaehlt wurde. nur als gedankengang :D

    was mich natuerlich auch noch sehr freuen wurde waere zB ein
    automatisches einruecken, wenn ich zb eine fonext schleife anfange.
    das ist dann zwar nicht mehr so c64like aber erhoeht die lesbarkeit enorm.

    naja ich will dich nun aber nicht mir ideen ueberschuetten das
    sollte erstmal reichen. da es evtl wieder zu bugs kommt die man
    erstmal finden muss *kicher*

    zumindest freut es mich das ich dir etwas helfen konnte
    die grobsten fehler zu beseitigen :)


    soweit sogut ich hoffe das dieser editor eines tages der standart
    unter den basic crosstolls wird ;)

    salute

  • Das mit dem Einrücken wollte ich im Label-Mode noch machen. Im Moment wird bei der Umwandlung ja schon schön ein- und ausgerückt, wenn man dann weitere Zeilen einfügt richtet er sich nach der Einrückung der vorhergehenden Zeile. Das müsste man jetzt "nur noch" mit dem Erkennen von Schleifen und Schleifenende koppeln und schon hat man Auto-Indent :)

    Im normalen Basic-Source mit Zeilennummern würde ich das nicht einbauen, außerdem müsste man dann noch : zufügen weil Leerzeichen zwischen der Zeilennummer und dem ersten Befehl ja wegoptimiert werden.

    Naja, mal sacken lassen, vielleicht fällt mir ja noch was Schönes dazu ein.

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

  • da hast du natuerlich recht im zeilen modus waere es eher stoerend.
    aber da ich mal annehmen darf, wer dein toll benutzt, nutzt den label modus,
    fuer den waere es sicher eine feine sache.

    und auch mit dem letzten satz hast du recht gut ding will weile ham ;)

    uebrigens wird aus pO pdata :)
    wobei ich aber denke das die abkurzungen noch nicht implementiert
    wurden.

    nunja zZ hast du ja wieder viele neue ideen und auch schon wieder einiges
    geschafft. somit kann ich sagen du hast dir dein :bia verdiehnt :prost:

    salute

  • Neue Version 1.27 hochgeladen:

    Code
    - Fehler in D64 directory handling behoben

    Blöde, blöde, blöde, man sollte bei gelöschten Dateien nicht der Track/Sector chain folgen um die Größe der datei in Bytes zu bestimmen - sowas kann schonmal zu Endlosschleifen bei auf sich selbst verweisenden leeren Tracks führen... Ist behoben, jetzt lassen sich hoffentlich auch D64 Dateien attachen, die dem realen Leben entsprungen sind :whistling:

    Haubitze: Ich führe überhaupt keine Umsetzung der Abkürzungen für Befehle im BasEdit durch - dazu müsste ich in allen Tokenfiles diese Info noch mitführen, so wichtig erschien mir das dann aber nicht. Und pO wird deswegen zu pDATA weil das geshiftete O durch die weiter oben bereits erwähnte Umsetzerei von PETSCII Codes im Interpreter zu $83 wird - und das ist außerhalb von Anführungszeichen halt das Token für DATA. Das ist dann sogar noch kürzer als die Abkürzungen im Interpreter, nur merken kann sich das keiner mehr. :D

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

  • hihi das ja lustig merken kann ich mir das aber wirklich nicht XD
    naja zZ sind ja andere sachen wichtiger wie die kuerzel ;)

    das mit den d64 files hab ich noch nichmal getestet *schaem*

    aber bei der safe ascii funktion muss immer noch ein fehler drin sein :/

    zB werden die ascii zeichen 117,105-107 und 98 zu einem ?
    ob ich da nun wieder etwas uebersehe is mir nicht klar da all diese
    zeichen einen eindeutigen poke und ascii wert in der chartabelle haben.

    salute

  • grml... Ja, du hast Recht mit dem Fehler - das kommt durch die selbstherrliche ASCII-Umsetzung durch das .NET Framework. Da werden einfach alle Zeichen, die außerhalb bestimmter Bereiche für Buchstaben und Ziffern liegen durch CHR(63) = ? ersetzt. Ist mir bisher nicht aufgefallen, weil ich bisher alle sonderzeichen durch {<code>} ersetzte. Aber wenn es keine Ersetzung gibt im aktuelle eingestellten ASCII-Tokenizer, werden die 1:1 in die ASCII-Datei geschrieben. Naja, dachte ich eigentlich. Ok, muss ich die also auch byteweise schreiben statt die in einem Schwung wegzuschreiben.
    Diese ganze Character-Code(=POKE-Code) -> PETSCII-Code -> ASCII-Code Geschichte treibt mich noch in den Wahnsinn :baby:

    Nachtrag zum ASCII-Thema: Bitte aufpassen, diese ganze Umsetzung von Sonderzeichen wie Graphikzeichen etc. wird nur innerhalb von Anführungszeichen, d.h. in PRINT-Befehlen oder bei String-Zuweisungen durchgeführt. Außerhalb von Anführungszeichen haben diese Sonderzeichen nichts zu suchen, die würden dort eh nur Syntax Error's erzeugen, der Basic Quelltext besteht nur aus ungeshifteten Buchstaben! Auch wenn die wie Großbuchstaben aussehen, das liegt ja nur am eingestellten Standard-Zeichensatz mit Uppercase/Graphics. Wenn man den umstellt auf Lowercase/UpperCase sieht man ja, das alles klein geschrieben ist. Oder, wie ich mir langsam angewöhne in diesem Zusammenhang: Ungeshifted. Also, die ASCII-Speicherfunktion erwartet ungeshiftete Zeichen außerhalb der Anführungszeichen, innerhalb von Anführungszeichen werden geshiftete Zeichen dann auch korrekt in {blablabla} Sequenzen übersetzt. Eine 1:1 Umwandlung von PETSCII in ASCII geht ja nicht, weil der die beiden Zeichensätze nur sehr bedingt zueinander kompatibel sind und in großen Bereichen voneinander abweichen.
    Ich sollte das vielleicht nicht "Speichern als ASCII" bezeichnen, das scheint mir für mehr Verwirrung als Freude zu sorgen, sondern als "Speichern mit ASCII-Tokenisierung von Sonderzeichen in PRINT-Befehlen". Das ist nur unglaublich sperrig.

    HOL2001: Da hast Du mich aber eiskalt erwischt, das einfach umzuräumen während ich eine Antwort tippe :) Aber Danke für den eigenen Thread, der alte Thread-Titel hat mich schon die ganze Zeit gestört...

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