Assembler-Programme in Basic

Es gibt 84 Antworten in diesem Thema, welches 17.375 mal aufgerufen wurde. Der letzte Beitrag (31. März 2015 um 12:11) ist von BIF.

  • Och jo. Schade. Das nachfolgende Programm macht scheinbar auch wieder "nichts". Was macht es aber tatsächlich?

    Code
    10 Q$=CHR$(34)+CHR$(20)+CHR$(34):PRINT"{CLR}";:POKE648,2:PRINT"{HOME}"TAB(167);
    11 PRINT"{SPACE}[{RVS ON}<{RVS OFF,SPACE}+{RVS ON}<{C=-A,RVS OFF,SHIFT-B}PC{SHIFT-L,SHIFT-H,RVS ON}2%{RVS OFF,C=-K,RVS ON}E{C=-F,RVS OFF})AI";
    12 PRINT"{RVS ON}@E{RVS OFF,C=-K,RVS ON}){RVS OFF}D{RVS ON}E{C=-C}"Q$"{C=-R,SPACE,RVS OFF}B{SPACE,RVS ON,SHIFT-T};)<{SPACE}9";
    13 PRINT"{SHIFT-P,RVS OFF}R{RVS ON}"Q$"{C=-Y,SPACE,RVS OFF}B{SPACE,RVS ON,SHIFT-T};){C=-R,SPACE,RVS OFF}B{SPACE}O{RVS ON};){C=-Y,SPACE}";
    14 PRINT"{RVS OFF}B{SPACE,C=-M,RVS ON}8{SHIFT-F,RVS OFF,C=-K,RVS ON,SHIFT-F,C=-C,SHIFT-P,C=-G}%{C=-F,RVS OFF,SHIFT-J,SHIFT-POUND,SHIFT-*,RVS ON}E{RVS OFF,C=-K,SHIFT-SPACE}"
    15 POKE785,167:POKE786,2:POKE648,4:SYS58648


    Hmm... da sind entschieden zu viele Smilies drin. ;)

  • Das String-Additionsverfahren ist zur Programmierung von Maschinencode wohl am schnellsten und einfachsten umzusetzen

    Ja nee, is klar. Und wer in Bitte melde dich an, um diesen Link zu sehen. programmieren möchte, sollte unbedingt die Variante Bitte melde dich an, um diesen Link zu sehen. wählen, schneller und einfacher geht es nun mal nicht.

    Selbst einfügen von Modulen und befehlsweise Kommentierung ist damit machbar.

    10 :a$=a$+gs$+chr$(.)+chr$(1):rem: sys 256

    Stimmt, noch offensichtlicher und einleuchtender geht nicht. :facepalm:

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

  • @MacBacon:

    Du mußt aber zugeben, daß das Stringadditionsverfahren funktioniert, auch wenn der Anblick für dich natürlich eher ungewohnt ist.

    Schönen Gruß.

  • Was macht es aber tatsächlich?


    Hmm...

    SQR...

    Den weiteren Sinn bzw. Unterschied hab' ich aber noch nicht gefunden... :whistling:

    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.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • Ich nehme an, das sys58648 könnte der Verwirrung dienen.

    Hexworx ist offenbar der Ansicht, daß hier die SQR-Funktion durch eine USR-Funktion ersetzt wird, oder.

    Das würde zu dem Raytracing Programm passen.


    Schönen Gruß.

  • Zitat von Hexworx

    SQR... Den weiteren Sinn bzw. Unterschied hab' ich aber noch nicht gefunden... :whistling:


    Hier ist das Bitte melde dich an, um diesen Link zu sehen. mit Erklärung. Die Routine ist etwa 4x schneller als das SQR(X) im BASIC-Interpreter.

    Wenn Du das PRINT-Konvolut tatsächlich abgetippt hast, sei getröstet - ich mußte es auch erstmal aus der DATA-Zeilen-Version "händisch" ableiten. Danach hab' ich es aber durch einen selbstgeschriebenen PETSCII-Konverter laufen lassen, damit man es überhaupt abtippen kann, im Aussehen sind C=-N und C=-M auf dem Bildschirm nämlich nicht unterscheidbar. :pinch:

    Als nächstes wär' dann vermutlich ein Maschinencode dran, der aus Fließkommazahlen in einer DATA-Liste besteht und in ein Feld eingelesen wird, damit's nicht langweilig wird. :bgdev

  • Wenn Du das PRINT-Konvolut tatsächlich abgetippt hast


    Klar :) .

    Ich musste im VICE aber auch zwischen zwei Tastaturen switchen. Oder wie bekomme ich eigentlich z. B. '@' und '[' sonst hin :whistling: ? (doof frag)


    Die Routine ist etwa 4x schneller als das SQR(X) im BASIC-Interpreter.


    Waren die damals etwa zu blöd dafür :bgdev ?

    Ich dachte, da müsste doch noch mehr passieren, als nur 'SQR'. Ein paar Raster-Color-Bars bei der richtigen Zahl oder so :P .

    P.S.: Glückwunsch zum 400. 401. Beitrag :winke:

    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.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • Zitat von Hexworx

    Ich musste im VICE aber auch zwischen zwei Tastaturen switchen. Oder wie bekomme ich eigentlich z. B. '@' und '[' sonst hin :whistling: ? (doof frag)


    Also, ich hab' hier im VICE durchgehend die 'positional mapping' eingestellt, mit der originalen 'win_pos.vkm'.

    Und da bekomme ich '@' auf der 'Ü'-Taste (ohne Shift) und '[' auf der 'Ö'-Taste (mit Shift).

    Zitat von Mike

    Die Routine ist etwa 4x schneller als das SQR(X) im BASIC-Interpreter.

    Zitat von Hexworx

    Waren die damals etwa zu blöd dafür? :bgdev


    Na, ja, blöd sicher nicht. Im Bitte melde dich an, um diesen Link zu sehen. 'besteht' SQR(X) auch nur aus 10 Bytes, welche die Konstante 0,5 laden. Dann fällt SQR(X) durch in die Potenzierroutine und rechnet X^(1/2) aus. Da X^Y vom Interpreter (bis auf ein paar Sonderfälle) so ausgerechnet wird, daß X^Y := EXP(Y*LOG(X)) ist, sollte klar sein, warum da kein Geschwindigkeitsrausch aufkommt. :)

    Auf die nächsten 100! :thumbsup:

  • Also, ich hab' hier im VICE durchgehend die 'positional mapping' eingestellt, mit der originalen 'win_pos.vkm'.

    Und da bekomme ich '@' auf der 'Ü'-Taste (ohne Shift) und '[' auf der 'Ö'-Taste (mit Shift).


    Das ist mir klar ;-). Die Frage bezog sich natürlich eher auf 'Symbolisch DE'.

    Im ROM 'besteht' SQR(X) auch nur aus 10 Bytes, welche die Konstante 0,5 laden. Dann fällt SQR(X) durch in die Potenzierroutine und rechnet X^(1/2) aus. Da X^Y vom Interpreter (bis auf ein paar Sonderfälle) so ausgerechnet wird, daß X^Y := EXP(Y*LOG(X)) ist


    Ähm... Ja...

    Da mag ich mich jetzt nicht mehr reindenken - wenn überhaupt... :prost:

    sollte klar sein, warum da kein Geschwindigkeitsrausch aufkommt.

    Ach jetzt... na klar :facepalm:. KLAR!! KLAR :biglach: !!!


    Watt... ?( ? :weg:


    :winke:

    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.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • @CommieSurfer:

    Tja, der Groschen fällt nicht bei jedem sofort.
    Du müßtest dich wohl erst in das System einarbeiten.
    Grundsätzlich ist es aber denke ich nicht so schwer zu verstehen, daß ein Maschinenprogramm auch ein String sein kann.

    Schönen Gruß.


  • Tja, der Groschen fällt nicht bei jedem sofort.
    Du müßtest dich wohl erst in das System einarbeiten.

    Schönen Gruß.


    Ja, aber eher noch in dein System ;).

  • CHR$(.) und CHR$(1) tut im übrigen absolut nix. Auch nicht addiert.

    Du musst schon echte Codes (wie 33 = ! usw. und so fort), wie sie im Handbuch stehen, nehmen.

    "Kommentieren"..., solltest du vlt. auch 'mal erklären, was du da überhaupt mit verfolgst. Da kommen mir versch. Bedeutungen in den Sinn (Kommentar-Ablegung per REM, Kommata-Setzung (in einem Stringwert),..), nur ausgerechnet wohl nicht diejenige, die von dir gemeint ist. ;)

  • Tja, der Groschen fällt nicht bei jedem sofort.


    Das merken wir hier seit Jahren. Allerdings nicht bei Commisurfer. :whistling:

    GREETINGS PROFESSOR FALKEN
    A STRANGE GAME.
    THE ONLY WINNING MOVE IS NOT TO PLAY.
    HOW ABOUT A NICE GAME OF CHESS?

  • Dann erkläre es doch 'mal. Auf die CHR$(.) und CHR$(1) bin ich gespannt.. .
    Einen Punkt/Trennung/Komma setzt er mit CHR$(.) z.B. nicht.

  • Ein einzelner Punkt ist für den Interpreter das Gleiche wie Null, er wird allerdings schneller interpretiert. CHR$(.) ist also das Gleiche wie CHR$(0).
    CHR$(0) und CHR$(1) "funktionieren" durchaus, die davon erzeugten Codes sind nur auf dem Bildschirm nicht sichtbar.
    Aber das ändert halt nichts daran, dass das Erzeugen von Maschinencode durch Stringaddition totale Grütze ist - man kann sich ein Loch ins Knie bohren und warme Milch reingießen, ja, aber... :whistling:

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

  • Man kann eben nicht jeden Geschmack treffen.

    Technisch gesehen erhält der Basic Programmierer dadurch aber die Möglichkeit Maschinenprogramme zu programmieren und zu assembeln (zusammenzubauen).

    Alles andere ist wohl Geschmackssache.
    Maschinenprogramme in Strings ist grundsätzlich eine sehr Basic-kompatible Lösung, die noch weiter ausbaufähig ist.

    Schönen Gruß.

  • Technisch gesehen erhält der Basic Programmierer dadurch aber die Möglichkeit Maschinenprogramme zu programmieren und zu assembeln (zusammenzubauen).

    Bin zwar ein ASM Newbie, aber selbst wenn ich masochistisch veranlagt bin und keine Monitortools oder einen Assembler verwenden würde: Warum soll ich mir den Aufwand machen und ein ASM Programm auf Papier aufschreiben, die Mnemonics etc. in Hexwerte/Dezimalwerte aus einer Tabelle aufschreiben UND dann daraus die String "Umrechnung" durchführen? Die Dezimalwerte kann ich viel komfortabler und weniger fehleranfällig und besser kontrollierbar gleich in DATA Zeilen eingeben.


    Maschinenprogramme in Strings ist grundsätzlich eine sehr Basic-kompatible Lösung, die noch weiter ausbaufähig ist.

    Ach, deshalb haben gefühlte 95% der BASIC Listings in der 64er & Co einen Stringassembler/MC Lader statt einen DATA Zeilen Lader? :anonym
    Wenn ich ein ASM direkt mit einem Monitor eingebe, dann bastle ich mir doch dann einen DATA Generator oder speichere/lade das ASM Programm nach.
    Gut, es wäre vermutlich auch möglich, einen Stringassembler/MC Ladegenerator zu bauen... :bgdev

    ___________________________________________________________
    Meine Kreationen: 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.
    | Bitte melde dich an, um diesen Link zu sehen.
    Avatar: Copyright 2017 by Saiki