Hello, Guest the thread was called26k times and contains 111 replays

last post from fireworker at the

Assemblercompo "Dreh das Wort"

  • Wenn es einen Satz dreht, dürfte das doch ausreichend sein. Mehr wird doch nicht verlangt.


    Mein generischer Ansatz in 46 Bytes. Geht sicher kürzer. Fertig.;)


    Mehr mache ich daran sowieso nicht :


  • Keine Ahnung. Mir ist hier auch noch einiges unklar. Mit Zahlen scheint das Demoprogramm irgendwie gar nicht zu funktionieren:

    Also was soll nun mit Zahlen geschehen? Sonderzeichen sollen vermutlich bleiben, ja?

  • War Gottseidank nicht allzu schwierig, meine Fehler zu fixen. Jetzt bekomme ich sowas:




    Weiß nicht, ob ich da noch was geschnipselt bekomme:

  • Ich habe dem Beispielprogramm entnommen, dass "Wörter" strikt nur aus den Zeichen 1-26 bestehen. Alles größer als 26, und auch die 0, sollen also m.E. nicht zu den Wörtern gezählt und somit auch nicht umgedreht werden. Rolands Beispiel mit der C64-Einschaltmeldung fand ich gut. Also, m.E. sollten auch mehrfache Leerzeichen korrekt unterstützt werden, und keine weiteren Voraussetzungen wie "an Adresse 1xyz soll aber ein Space / kein Space stehen". @Bastet: Wie siehst Du das?

  • Mein erster halbwegs vernünftiger Versuch jetzt gerade 28 Bytes. Allerdings auch noch nicht das @-Zeichen behandelt und noch ein paar weitere Schönheitsfehler...
    Wird wohl beim ausbessern erstmal wieder länger werden...


    BTW: Von Akku, X und Y darf ja wohl Inhalt "00" (sozusagen Plain-C64 Kaltstart Verhältnisse) angenommen werden!

  • Ich habe mal ein kleines Testprogramm (Binärprogramm siehe Dateianhang) geschrieben, dass ab $2000 liegt, den Code von $1000-$10ff sichert und für jeden Test wiederherstellt, und dann jeweils auf einem Testsatz ausführt. Alle Register werden vor dem Aufruf von $1000 mit 0 initialisiert.


    Die Tests sind "hallo, welt!", "blackjack@civitas.de", und " pez = array[index];".

  • OK, den Klammeraffen habe ich noch nicht drin. Trotzdem hier meine 32 Byte Version :



    Für was kürzeres muß ich den Ansatz wohl ändern.

  • Stack und $0e sind mir auch gleich eingefallen. Ist wirklich naheliegend.

    Menschen wurden geschaffen um geliebt zu werden. Dinge wurden erschaffen um benutzt zu werden.

    Der Grund, warum die Welt sich im Chaos befindet, ist weil stattdessen Dinge geliebt und Menschen benutzt werden.

  • Der Ansatz mit dem Stack kann aber doch noch verfeinert werden, damit er gleich die 0- und die "Wort am Ende"-Problematik abdeckt. Grundgedanke: Kiste darf am Ende der Routine crashen, deswegen ist das Verbiegen des Stackpointers erlaubt. Man schiebt so lange auf den Stack, bis ein nicht-Buchstabe dabei war, dann TSX, X auf das Lowbyte der Startadresse der 2. Zeile addieren und so lang aus dem Stack in die zweite Zeile kopieren, bis X null ist.


    Haken: Stackpointer zählt rückwärts. Grrmpf. Aber vielleicht fällt einem von Euch ja noch was ein mit dem Stackpointer-Ansatz?


    Jens