Hello, Guest the thread was called7.6k times and contains 145 replays

last post from muffi at the

Unbekannten Compiler entdeckt

  • Wie kann der WAIT-Befehl mit anderen Bfehlen ersetzt werden?

    Code
    1. 10 POKE 198,0 : WAIT 198,1

    Kann ersetzt werden durch

    Code
    1. 10 GET A$:IF A$="" THEN 10

    Genau genommen müsste man den POKE198,0 quasi in Zeile 9 schreiben.

  • So, nach weiterem Ordnen meiner Softwaresammlung ist mir die BASS-Compiler Version 2.2 in die Hände gefallen.

    Diese unterscheidet sich von der v2.3 in mehreren Punkten. Es gibt nur den Pass 1 und 2, und zudem wird ein Assembler Quellcode erstellt.

    Dieser Quellcode ist jedoch unvollständig oder fehlerhaft. Ausserden befinden sich auf der Diskette zwei Dateien. Das sind:


    1.) Library to Basic-Compiler Assemblercode-Compiler, Version 2.2/64 Library for signed Integers.

    2.) Library to Basic-Compiler Assemblercode-Compiler, Version 2.2/64 Library for unsigned Integers.


    Den Inhalt dieser Dateien kann man sich mit dem Dirmaster ansehen, jedoch habe ich nicht die geringste Ahnumg was man damit machen soll.

    Um mit dem Compiler weiterarbeiten zu können, benötige ich auf alle Fälle das Manual.

  • 1.) Library to Basic-Compiler Assemblercode-Compiler, Version 2.2/64 Library for signed Integers.

    2.) Library to Basic-Compiler Assemblercode-Compiler, Version 2.2/64 Library for unsigned Integers.


    Den Inhalt dieser Dateien kann man sich mit dem Dirmaster ansehen, jedoch habe ich nicht die geringste Ahnumg was man damit machen soll.

    Um mit dem Compiler weiterarbeiten zu können, benötige ich auf alle Fälle das Manual.

    Ich habe mir heute den Beitrag aus der 64er 02/1985 (Compilertest) nochmal durchgelesen. Da stand drin, dass die beiden Libraries auf die Diskette müssen, auf dem das zu compilierende Programm ist, das wird irgendwie beim Compilieren benötigt.


    Edit: kann natürlich auch sein, dass der ASSI das beim Assemblieren braucht (ich habe gelesen, der Assembler-Quellcode wird für ASSI von Dirk Zabel generiert)

  • Den Inhalt dieser Dateien kann man sich mit dem Dirmaster ansehen, jedoch habe ich nicht die geringste Ahnumg was man damit machen soll.

    Na, wenn man das enthaltene "hilbert" als Vorlage nimmt (vermutlich ein enthaltenes Beispiel, oder ist das dein Programm?), dann würde ich annehmen nach "programmname.lib" kopieren/umbenennen und dann das Ganze dem Assembler verfüttern. Den braucht man dann aber eben. Mir ist ASSI/M noch nicht über den Weg gelaufen. Vielleicht gibt es noch andere, die kompatibel sind, das müsste man aber ausprobieren.

  • Diesen WAIT Befehl könnte man auch ersetzen wie:


    10 get a$:if a$="" then goto 10


    Im Prinzip wird ja nur auf einen Tastendruck gewartet.

    JEIN.



    Dein Code wartet auf eine Taste.

    Genau wie der Befehl WAIT.


    ABER: Dein Code leert den Tastatur Buffer.


    Der WAIT Code guckt nur, ob eine Taste da ist, lässt die aber drin im Buffer.

  • Der Ascompiler (die Run hatte auch so einen Compiler veröffentlicht, auch in einem Chip-Sonderheft war ein vergleichbarer Compiler drin) hat einen gewichtigen Nachteil: er unterstützt nur eine Untermenge des Basic V2!

    Ascompiler ist ja kaum mehr als ein Assembler mit Basic-Syntax.


    Dafür ist das Ergebnis aber die schnellste Version, die ein Compiler erzeugen kann (selbst der Basic-Boss dürfte da nicht ganz ran kommen).

    Die Anleitung von Basic-Boss sagt/behauptet das Gegenteil:

    Quote

    "Der erste echte Compiler ... war der As-Compiler, der tatsächlich echten Maschinencode erzeugte. ... Der Basic-Boss ... erzeugt sogar einen noch effizienteren Code." (S. 12)


    Mir ist ASSI/M noch nicht über den Weg gelaufen.

    Der scheint irgendwie verschollen zu sein.

  • Ascompiler ist ja kaum mehr als ein Assembler mit Basic-Syntax.

    Ja, eben. Beim Ascomp musste man, wenn ich mich richtig erinnere, sogar LET schreiben. Das Demo, was damals dabei war, war aber schon beachtlich schnell (es war ein Monitor), aber man sieht z. B. beim M Befehl sofort, wo der Unterschied zur reinen Maschinensprache besteht. Der Compiler aus der Run 86/07 S. 83 liefert ähnliche Ergebnisse, hat auch die gleichen Restriktionen (BTW: der Monitor vom Ascomp lässt sich zwar auch mit dem Mikro-Compiler compilieren, aber das läuft dann leider nicht).

    Den Tiny-Compiler aus dem Chip Sonderheft 85/4 (C64: Spiel, Spaß und Trick-Kiste) S. 51 Pumpax-Compi V2 habe ich noch nicht abgetippt, da kann ich zu der genauen Leistung nichts sagen. Der Beschreibung nach dürfte es aber vergleichbar sein.


    Quote from ogd

    Die Anleitung von Basic-Boss sagt/behauptet das Gegenteil:

    Na sicher tut die Anleitung das behaupten ;) Ich würde das allerdings eher für eine Werbeaussage halten. Der Basic-Boss arbeitet schießlich mit Bibliotheken, die müssen aufgerufen werden und vorher die Parameter gesetzt werden. Kostet alles Zeit...


    Quote from ogd
    Zitat von thierer Mir ist ASSI/M noch nicht über den Weg gelaufen.

    Der scheint irgendwie verschollen zu sein.

    Den habe ich in meinem Softwarearchiv auch nicht gefunden. Nur ein Programm namens Assy 2.0 von 1989, das hört sich so nach einem Nachfolger an. Und wenn ich an dem Assembler-Vergleich aus der 64er denke (ich glaube, das war auch Ausgabe 85/02), kommt mir der Beschreibung nach die Oberfläche schon so vor, als ob es wenigstens der Nachfolger wäre. Aber den ASSI vom Dirk Zabel selber habe ich (bei mir) auch nicht gefunden.

  • Ich konnte nicht widerstehen und habe meinen Lieblings-Monolithen (Monopoly) mal reingepfropft in den Compiler. [...]

    Edit: 830 freie Blocks reichen nicht für 129 Blocks Quellcode...

    Also, so viel kann ich schon mal sagen: bei der Compiliergeschwindigkeit und Platzbedarf auf Diskette vergeht mir schon fast die Lust, das Ding zu benchmarken... ich habe tatsächlich eine komplett leere 1571-Diskette dafür gebraucht, das Ding quält mein armes Laufwerk (es knurrt tapfer vor sich hin) und bei der Compilier-Geschwindigkeit ist der Compiler wohl tatsächlich nur noch durch die Basic-Version des Hypra-Comp (siehe 64er SH24 S. 76) in Sachen Langsamkeit zu schlagen. Nach ca. 2,5 Stunden stand dann das Compilat mit 210 Blocks auf Diskette - ohne Tricks also nicht lauffähig. Da bräuchte man auch wieder die Anleitung, ob der Bass den kompletten Speicher nutzt.


    Ein klein wenig OT, aber nicht so ganz, denn in den Thread passt es ja doch rein:

    Es fragen sich bestimmt so Einige, warum ich gerade das Monopoly immer benutze. Nun, das ist recht einfach zu erklären: das Teil ist einfach RIESIG, scheint nicht an allen Stellen sauber programmiert zu sein und dementsprechend liefert auch nicht jeder Compiler ein lauffähiges Compilat. Ähnlich hat es die 64er ja auch immer gemacht, die haben halt immer Eddi dafür genommen (der Fakt kam mir allerdings erst heute wieder in Erinnerung, nachdem ich mir in den Ausgaben die beiden Compiler-Tests nochmal durchgelesen habe). Interessanterweise läuft das Compilat beim Basic64 im P-Mode, nicht aber im A-Mode (bei letzterem ist das Compilat ca. 214 Blöcke groß, die genau Zahl habe ich gerade nicht im Kopf); angeblich nutzt der Basic64 60k Ram, also dachte ich: "64er Packer und gut is", aber: es ist nicht lauffähig. Und was Packer betrifft, da habe ich schon den nächsten Benchmark in der Pipeline, seid gespannt :apfel

  • Kurz in meiner schon katalogisierten Softwaresammlung gesucht. Ist der Anhang vielleicht das ASSI-M für den c64. Das Programmpaket ist aus dem Jahr 1983.:)

    Exakt die Homepage habe ich auch gefunden ;-) Das müsste er aber sein!

  • ein Programm namens Assy 2.0 von 1989

    Kannst du den hier vieleicht hochladen?

    Ja klar, ich habe es in meinem Tosec-Archiv gefunden.

  • Bei vielen Compilern gibt es eine maximale Größe der Basic-Datei. Je älter der Compiler ist, desto kürzer muss das zu compilierende Programm sein.

    Die Austro-Compiler steigen so ab 100 Blöcke mit einer Fehlermeldung aus.

  • Bei vielen Compilern gibt es eine maximale Größe der Basic-Datei. Je älter der Compiler ist, desto kürzer muss das zu compilierende Programm sein.

    Die Austro-Compiler steigen so ab 100 Blöcke mit einer Fehlermeldung aus.

    Kann ich so nicht bestätigen (siehe mein Compiler-Benchmark): alle Austro-Versionen (auch die nicht aufgeführten) complilieren das Monopoly ohne zu murren, und das Compilat funktioniert auch. Sogar der Petspeed liefert davon ein lauffähiges Compilat (allerdings ist da auch die 1571 nötig).


    Inzwischen habe ich aber die BASS-Version mal durch den Vorkompressor des 64er Packers gejagt. Von 210 Blocks ging es auf 182 runter, reicht zum Laden und Starten. Dann habe ich meinen Augen aber nicht getraut: gestartet, lief los. Bis dann am ersten Screen die Meldung kam "Taste für weiter" dauerte es doch recht lang. Also mal Run/Stop gedrückt - BREAK IN XXX. :hae: List eingegeben...: es ist das Basic-Programm - sogar noch mit allen REM-Zeilen! Und nein, ich habe nicht das falsche File komprimiert, ich konnte es selber nicht glauben und nochmal gemacht, gleiches Ergebnis! Hätte auch nichts falsch sein können, weil ich die Packroutine gewählt habe, die mit SYS startet und nicht mit RUN.

  • Ist der Anhang vielleicht das ASSI-M für den c64. Das Programmpaket ist aus dem Jahr 1983.

    Damit habe ich es immerhin geschafft aus einem simplen 10 PRINT "HALLO": GOTO 10 etwas lauffähiges zu erzeugen ("TEST2" / "TEST2OUT" im angehängten Archiv).


    Der gleiche Versuch mit den "HILBERT" Dateien schlägt mit einem (m.E. unberechtigten) "Undefined Symbol Error" fehl.


    Außerdem habe ich noch versucht eine manuell angepasste Version der "HILBERT" Dateien mit dem ACME zu übersetzen, da kam auch etwas ausführbares raus, das Programm läuft dann aber nach Abfrage der "Tiefe" in eine Endlos-Fehlerschleife. Vielleicht habe ich da bei der Anpassung noch einen Fehler gemacht. Allerdings läuft das Basic-Programm selbst bei mir auch nicht. Es schaltet in den Grafikmodus, aber dann scheint nichts mehr zu passieren (vielleicht habe ich aber auch nur nicht lange genug gewartet).

  • Dann habe ich meinen Augen aber nicht getraut: gestartet, lief los. Bis dann am ersten Screen die Meldung kam "Taste für weiter" dauerte es doch recht lang. Also mal Run/Stop gedrückt - BREAK IN XXX. :hae: List eingegeben...: es ist das Basic-Programm - sogar noch mit allen REM-Zeilen!

    Das ist nicht unüblich. Viele BASIC-Compiler aus der Zeit waren selber in BASIC geschrieben, dann aber üblicherweise mit sich selber compiliert. Auf die Art hat man auch gleich einen umfassenden Test dafür.

  • Dann habe ich meinen Augen aber nicht getraut: gestartet, lief los. Bis dann am ersten Screen die Meldung kam "Taste für weiter" dauerte es doch recht lang. Also mal Run/Stop gedrückt - BREAK IN XXX. :hae: List eingegeben...: es ist das Basic-Programm - sogar noch mit allen REM-Zeilen!

    Das nicht unüblich. Viele BASIC-Compiler aus der Zeit waren selber in BASIC geschrieben, dann aber üblicherweise mit sich selber compiliert. Auf die Art hat man auch gleich einen umfassenden Test dafür.

    Ich glaube, ich habe mich nicht ganz deutlich ausgedrückt... ich redete vom Compilat! Das angebliche Compilat lässt sich mit RUN/STOP unterbrechen und ist dann ein ganz normales Basic-Listing mit allen REM-Zeilen! Wie gesagt, ich rede da von meinem Lieblings-Monolithen, Monopoly!

  • Ich glaube, ich habe mich nicht ganz deutlich ausgedrückt... ich redete vom Compilat! Das angebliche Compilat lässt sich mit RUN/STOP unterbrechen und ist dann ein ganz normales Basic-Listing mit allen REM-Zeilen! Wie gesagt, ich rede da von meinem Lieblings-Monolithen, Monopoly!

    Ach so! Sorry, habe ich anders verstanden. Das ist dann in der Tat ein komischer Compiler...aber einfach zu bauen...:D