@Sauhund:
Genaugenommen wollte ich nie so viel Arbeit in diese ganze Petcat-Geschichte stecken, das hat sich irgendwie verselbstständigt... Eigentlich wollte ich nur irgendwelche kurzen Codeschnipsel mit ein paar <PRINT"{down}{down}HALLO"> einfach einfügen können, ohne hinterher die {down} von Hand ersetzen zu müssen.
Zur "Wirkungsweise" nochmal eine Erklärung: Im gewählten blablabla-tokens.txt File stehen jeweils {code}=Wert. Bei der Umwandlung von ASCII in Programmcode wird alles außerhalb von Anführungszeichen 1:1 übernommen, bei allem in Anführungszeichen wird diese Liste abgeklappert und bei einem passenden Code das entsprechende Ersatzzeichen genommen. d.h. man kann durchaus für ein und denselben Zielcode verschiedene Quellcodes haben:
|
Source code
|
1
2
3
|
{space}=$20
{ }=$20
{032}=$20
|
Beim umgekehrten Weg wird der erste passende Code in die Zieldatei gesetzt, in diesem Falle würden alle Leerplätze durch {space} ersetzt werden.
Dann kann man noch einstellen, ob die {blabla} Codes case-sensitive sind, weil BasText wohl {a} für ein ungeshiftetes a erzeugt und {A} für ein geshiftetes. Da ist das dann blöd, wenn beim Einlesen erstmal alles in Uppercase umgewandelt wird. Andererseits its PetCat nicht case-sensitive, manchmal hat man Listings mit {clr} und manchmal {CLR}. Naja, usw, usw,... allein dieses Thema könnte ein ganzes Buch füllen, hab ich das Gefühl.
Da alles über die einstellbaren und frei editierbaren ASCII-Tokenfiles steuerbar ist, kann sich da jeder austoben. Wenn also irgendwer ein neues solches File erzeugt, darf er mir das gerne zukommen lassen, das wird dann in die Release-Suite mit aufgenommen :-)
@Endurion:
Komisch dass das bei Dir so langsam ist, ich entwickle auf einem ollen Core2Duo 2.1 GHz mit einer ATI 4350, sowie einem 2 GHz Celeron(!) mit einer uralten NVIDIA 7500LE, also alles beileibe keine Boliden. Und ich habe immer Aufbauzeiten von 3-4ms pro Zeile bzw. ca. 30-40ms für eine komplette Bildschirmseite.
Irgendwie scheint da BasEdit nicht mit Deiner Graphikkarte/Treiber zu harmonieren
Das Invalidate hab ich wieder rausgeschmissen, das sorgt nämlich für ein unerträgliches Flackern weil dabei das Fenster automtisch ge-cleared wird, das ging gar nicht. Ich mache kein PutPixel, sondern ein DrawImageUnstretched, das funzt eigentlich sonst überall ganz prima.
Im MainWindow hab ich tatsächlich einen Timer, der sich um den Bildschirmaufbau kümmert. Das hat sich so ergeben, weil das Invalidate unbrauchbar war und ich einen anderen Weg gesucht habe. Insgesamt ist das GDI+ nicht das schnellste, allerdings bist Du bisher der Einzige, der solche Probleme hat.
Das Flackern und mehrfach Aufbauen habe ich immer dann, wenn ein anderes Programm/Fenster in den Vordergrund kommt bzw. mein MainWindow überlappt. Da kollidieren dann meine Timer-Aufrufe und das System-bedingte Invalidate.
Wenn Du in Programm im Label-Mode bearbeitest, speicherst Du das am Besten als PETSCII. Das kannst Du dann auch wieder laden und alles ist gut. Wenn Du das dann auf der echten Maschine bzw. im Emulator laufen lassen willst, speicherst Du es einfach als PRG-File, das wird dann automatisch wieder in den Zeilennummern-Mode zurückgewandelt. Bei F5 (Save&Run) sogar vollautomatisch im Hintergrund.
Control-Links und Rechts schaue ich mir mal an, eigentlich benutze ich die auch ständig und die sollten auch funktionieren... Da fehlt wieder irgendwo eine Abfrage auf "Nicht am Anfang der Zeile" oder so, .NET mit seiner Stringbehandlung ist da extrem pingelig, nicht so vergebend wie Basic V2.