Heute so compiliert...

Es gibt 746 Antworten in diesem Thema, welches 111.586 mal aufgerufen wurde. Der letzte Beitrag (15. Oktober 2025 um 21:22) ist von EgonOlsen71.

  • Hmm ich raff es nicht. Beim Austro E3 wird ohne zutun, wenn der P-code von $15 in $54 geändert wurde, der Bildschirmbereich automatisch umgestellt. Und zwar nur bei dem E3. Mit anderen Austro / Blitz Compilern, kein Erfolg.

    Wenn dann ein Zeichensatz ins RAM geladen wurde und $D1 / D2 umgestellt werden, dann ist der Screen bei $c400.

    Das sieht im C64Debugger dann so aus (ohne Charset):

    Bitte melde dich an, um diesen Anhang zu sehen.

    Video Base steht auf $c400.

    Das gleiche mit Plums Blitz oder Skyles Blitz macht an der Stelle scheinbar gar nicht. Jedenfalls wird Video Base nicht umgestellt.

    D.h. a) Bei Plum und Skyles muss man noch etwas mehr machen, damit das funktioniert, Du schreibst:

    zudem das Low- und Highbyte des Video-Memorys, händisch in die Zeropagre eintragen.

    Ich finde hier im Threat aber dazu nichts?! Hatte mir damals alle relevanten Infos in eine Datei kopiert. Was genau muss man denn wo reinschreiben? Die anderen hier im Forum sind ja bestimmt auch an dem Thema interessiert.

    oder b) $54 bewirkt bei Plum / Skyles etwas ganz anderes? Evtl. etwas frei Programmierbares? Wenn ja wie?

    oder c) $54 macht bei Plum / Skyles gar nichts, außer Decompile Schutz.

    Vorstellung Raveolution BBS -> Bitte melde dich an, um diesen Link zu sehen.
    Raveolution BBS -> raveolution.hopto.org:64128
    Raveolution Gopher Hole -> gopher://raveolution.hopto.org:70

  • Das RT-Modul der DTJ-BBS ist verändert worden. Siehe Codefenster. Das scheint mir exta für die BBS-Software angepasste worden zu sein.:)


  • Heute mal wieder einen kleinen Compiler-Test gemacht. Ganz ohne Optimierungen. Und auch nur mit TI$ gemessen.

    Meinen Lego-Set-Bestand verwalte ich am C64; die Nummer plus Bezeichnung.

    Implementiert habe ich den Quicksort aus 64er 86/07; es wird nach der Lego-Nummer sortiert.

    Hier habe ich mal die Ausführungszeiten aufgeführt:

    Basic: 9 sek

    Austro-Comp 3 sek

    Basic-Boss 2 sek

    Austro-Speed 1 sek

    Basic64 (M-Code) 1 sek

    Petspeed 0 sek (nicht vertippt, der war wirklich praktisch direkt fertig!)

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Cool.


    Wenn du TI verwendest, würdest du die Jiffies kriegen. Sechzigstel Sekunden. Wär dann noch etwas nerdiger :smile:

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • Meinen Lego-Set-Bestand verwalte ich am C64; die Nummer plus Bezeichnung.

    Mich würde interessieren wie viele Datensätze das sind?

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

  • Wenn du TI verwendest, würdest du die Jiffies kriegen. Sechzigstel Sekunden. Wär dann noch etwas nerdiger :smile:

    TI verwende ich auch, aber mit meinem Löchergedächtnis sind die Zahlen zu schnell weg, bis ich am PC bin :wink:

    Mich würde interessieren wie viele Datensätze das sind?

    Knappe 50. Wollte es noch dazu schreiben, habs dann aber doch vergessen.

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • So, Freunde des gepflegten Compilierens :saint:

    Jetzt etwas ausführlicher zum Sortier-Test.

    Angetreten zum Einen mein kleines Programm, mit dem ich meine Lego-Sets verwalte und sortiert drucke. Ab Zeile 2000 sind die Data-Zeilen, die im folgenden Format aufgebaut sind:

    2000 DATA lego-nummer,"bezeichnung des sets"

    In Zeile 9999 ist die Endmarkierung bereits enthalten. Sortiert wird ausschließlich nach der Lego-Nummer NR(), die Bezeichnung ist in BE$() enthalten.

    Ich habe 4 Sortierverfahren implementiert, man hat die Wahl: Straight insertion (aus 64er), Minisort (aus 64er), Delayed replacement (C= Sachbuch 9) und Quicksort (aus 64er). Ich habe derzeit 49 Einträge; die sind nicht im angehängten Programm enthalten.

    Optimierungen sind absolut keine vorhanden; einzig in Zeile 40 ist eine Compiler-Direktive für den Speedcompiler, der die Stringlänge des Feldes auf 40 Zeichen begrenzt (die Zeilenbreite meines Druckers :D); andernfalls steigt der beim Compilieren aus.

    Angetreten zum Anderen sind folgende, native Kandidaten: Basic-Boss, Basic64, Austro-Comp, Austro-Speed, Petspeed, DTL, LaserBasic-Compiler, Speedcompiler, Hypra-Compiler und unser Spezialfreund BASS.

    Hier die Tabelle der Ergebnisse (TI vornedran und in Klammern TI$):

    Nanu, da fehlen ja 2 Compiler in der Tabelle? Ja!

    Der Hypra-Compiler ist bei einer einfachen Stringoperation ausgestiegen. Nicht einmal der Speedcompiler, der da gerne empfindlich ist, hat irgendwas bemängelt.

    Und Spezialfreund BASS ist (natürlich?) auch nicht dabei. Grund: in Pass 4 (was mal eben geschätzte 15 Min gedauert hat und meine 1571 fröhlich geschnurrt hat) hat er einen angeblich unbekannten Sprung entdeckt. Das Ding hat einfach selber einen Sprung :lol27:

    Absolut erstaunlich ist der Petspeed, der mit großem Abstand gewonnen hat. Da der Quicksort keine FOR-Schleifen nutzt, kann das schon mal nicht die Erklärung sein. Das alte Ding hat einfach mehr auf dem Kasten.

  • Petspeed setzt alles, was möglich ist, in Integer-Werten um. Deshalb ist der so schnell. Der hat sogar den Basic Boss, ohne Optimierungen, geschlagen. Und das Programm ist von 1982.:)

    Einziges Manko ist, dass das Compilat sehr groß werden kann.

  • Petspeed setzt alles, was möglich ist, in Integer-Werten um. Deshalb ist der so schnell. Der hat sogar den Basic Boss, ohne Optimierungen, geschlagen. Und das Programm ist von 1982.:)

    Einziges Manko ist, dass das Compilat sehr groß werden kann.

    Petspeed müsste noch älter als 1982 sein, oder? Der Name sagt es ja schon, den gab es für die PETs ursprünglich.

    Der Basic-Boss schaut im Sortier-Test gar nicht gut aus ohne Optimierungen, wie ich finde. Selbst der Basic64, der ca. 1985 war, schlägt den Boss, selbst im P-Mode und auch Austro, ursprünglich auch für PET, ist schneller.

    Das Compilat vom Petspeed ist deswegen so groß, weil der ja sämtliche Variablen und Felder mitschleppt.

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Petspeed müsste noch älter als 1982 sein, oder? Der Name sagt es ja schon, den gab es für die PETs ursprünglich.

    Der Basic-Boss schaut im Sortier-Test gar nicht gut aus ohne Optimierungen, wie ich finde. Selbst der Basic64, der ca. 1985 war, schlägt den Boss, selbst im P-Mode und auch Austro, ursprünglich auch für PET, ist schneller.

    Das Compilat vom Petspeed ist deswegen so groß, weil der ja sämtliche Variablen und Felder mitschleppt.

    Petspeed ist ziemlich gut bei Arrayzugriffen. Und Basic-Boss ist im Verhältnis eher langsam bei Arrayzugriffen. Vermutlich kommen die Unterschiede daher.

    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.

  • Petspeed ist ziemlich gut bei Arrayzugriffen. Und Basic-Boss ist im Verhältnis eher langsam bei Arrayzugriffen. Vermutlich kommen die Unterschiede daher.

    Ich kanns nicht lassen :wink:

    Hab ich mich hingesetzt, die 3 Direktiven fastfor, shortif, fastarray eingebaut.

    Und dann kam das Ergebnis. Exakt gleich schnell!

    Also dachte ich, die Direktiven wären in der 2.42 schon vorgegeben, also slowfor, longif, slowarray. Und wieder: exakt gleich schnell!

    Das Gleiche habe ich dann noch mit der 2.40 gemacht, keine Unterschiede. Das finde ich schon sehr merkwürdig.

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Du muss auch die Variabeln als Byte oder Word deklarieren, dann sollte es schneller werden.

    Meinst Du? Im Handbuch ist dadrauf kein Hinweis zu finden. Nur bei fastarray findet sich der Hinweis, dass die bad-subscript-Prüfung wegfällt. Bei shortif ein anderes Konstrukt und bei fastfor darf nur ein next pro for verwendet werden. Kein Wort auf die Art der Variablen. Aber vielleicht teste ich das noch :wink:

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Du muss auch die Variabeln als Byte oder Word deklarieren, dann sollte es schneller werden.

    Meinst Du? Im Handbuch ist dadrauf kein Hinweis zu finden. Nur bei fastarray findet sich der Hinweis, dass die bad-subscript-Prüfung wegfällt. Bei shortif ein anderes Konstrukt und bei fastfor darf nur ein next pro for verwendet werden. Kein Wort auf die Art der Variablen. Aber vielleicht teste ich das noch :wink:

    Na, ich habe es nach sekunden im Handbuch gefunden. Alternativ stehen im Anhang des Handbuchs auch alle Direktiven.


    Code
    beispiel
    -------
    20 rem@ £allram: £fastfor: £word i: £byte a(
    20 dim a(62000)
    30 for i=0 to 62000
    40 a(i)=100
    50 next i
  • Sodele, Stephan Scheuer ist schuld :D

    Ich habe die ganze Geschichte nochmal aufgerollt. Nebenbei habe ich im delayed-replacement noch einen Abtippfehler festgestellt, der sich aber anscheinend gar nicht groß auswirkt.

    Bemerkung: es ist bei diesem Test nicht das Ziel, das Allerletzte aus den Compilern raus zu holen - hier steht die Kompatibilität zu Basic im Mittelpunkt; deswegen gibt es auch keine Integer-Laufvariablen.

    Als Erweiterung habe ich den Basis-Boss und den Basic64 versucht zu optimieren. Für den Boss war es kein Problem (allerdings auch nicht bis zum letzten Taktzyklus), aber Basic64 mag Integer-Variablen nicht mit STEP-1 verarbeiten; damit ist ein riesiges Potential im Eimer. Aus dem Grund taucht Basic64 weiterhin nur mit einem Eintrag auf, denn die TI-Laufzeiten sind identisch, die anderen Variablen spielen halt einfach nicht die Rolle.

    Viel Spaß beim Stöbern :smile:

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".


  • Wieso hast Du EgonOlsens Cross-Compiler ausgelassen?

  • Wieso hast Du EgonOlsens Cross-Compiler ausgelassen?

    Weil der als Cross-Compiler nicht in sein Beuteschema fällt ... :D

    Ich habe für meine Tests ein eigenes QSORT-Beispiel im Bestand, das dürfte von den Performancecharakteristiken (geiles Wort, wenn man das so ausgeschrieben sieht...) natürlich ziemlich anders sein, aber ich hänge das dennoch mal an. Auf dem Image sind die Ergebnisse diverser Compiler zu finden.