Hallo Besucher, der Thread wurde 10k mal aufgerufen und enthält 26 Antworten

letzter Beitrag von Kongo-Otto am

Seka vs ASM-One

  • Hallo,


    ich weiß nicht ob ich hier richtig bin, aber ich habe einige Frage.


    Ich möchte Assembler lernen und nutze dazu den ASM-One 1.2 (von Retro-Programming.de)


    Ich arbeite gerade den Kurs von Jeff Kandle durch, der ja mit dem Seka Assembler beschrieben wird.


    Nun habe ich festgestellt, dass der ASM einige Befehle, die der Seka hat nicht umsetzt.


    1. Gibt es irgendwo eine Quelle, die diese Unterschied und/oder Lösungen anbietet??

    1.1 Oder ist der Kurs sehr fehlerhaft dargestellt?


    Bei dem Beispiel Bilder laden, ( 2 Farben) funktioniert das im Seka, aber beim ASM-One bleibt der Bildschirm schwarz.

    Bei dem Beispiel 32 Farben, wird das Bild in beiden angezeigt, aber, wohl Speicherreste flimmernd dargestellt.


    2. Oder sollte ich mit besser den DevPac Assembler aneignen? ( hab ich mich bisher vor gedrückt :rolleyes: )

    3. Wie binde ich reqtools.library mit WinUae richtig ein? Andere Versionen von ASM verlangen das.

    4. Kann ich die deutsche Tastatur mit WinUae im Programm ASM-One einstellen?


    Danke schon mal für Hilfe.


    Liebe Grüße Joki/Walter

  • 1. Schreib' mal einen Link zu dem Quelltext, der im ASMone nicht tut. Das ist sicherlich nur eine Kleinigkeit. Ich hab' früher Seka benutzt und nehm' jetzt hauptsächlich ASMone.

    3. reqtool.library einfach in libs: kopieren.

    4. Ich glaub' in Menü unter Input kann man die Tastaturbelegung ändern. Und dann eben auf der Workbench auch auf Deutsch umstellen.

  • Hallo R4M.S,


    der Link: https://www.amigafuture.de/app.php/kb/viewarticle?a=3409 .... musst du ein wenig runter scrollen ....


    Der Kurs wurde hier schon mal behandelt, aber ich möchte ja gerne wissen, warum der Code nicht mit dem ASM funktioniert.


    Zu der Reqtools.library: Wie komme ich mit WinUae an den "libs" Ordner?


    Tastatur: Da habe ich nur die .adf-Datei, wohbemerkt, alles mit dem Emulator ...

  • Ich würde mit erstmal eine virtuelle Festplatte anlegen. Da geht viel mehr drauf. Die gibt's z.B. bei Amiga Forever schon fertig.

    Ohne Festplatte müsstest Du eben mit einer Workbenchdisk booten und die adf als zweites Laufwerk einbinden. Dann kannst Du da etwas drauf kopieren.

    Hänge am Besten mal den Quellcode an... sonst müsste man den ganzen Artikel durchlesen und auch dann ist nicht klar, ob Du alles genau so abgetippt hast.

  • In der Zeile holt er die Farben aus der Adresse $5fffc

    Code
    1. Lea $5fffc,a0

    Und es wird nirgendwo in dem Code definiert, was da steht. D.h. was der Code macht, hängt vom Inhalt dieser Adresse und nicht vom Assembler ab.


    Ersetze den Abschnitt einfach mal durch

    move.w #$0000,$dff180

    move.w #$0fff,$dff182

    Das sollte (in beiden Assemblern) weiße Schrift auf schwarzem Hintergrund liefern.

  • Doch, da wird definiert, was da steht. Und die Farben würde ich eher per Copper Liste setzen und nicht direkt. Sonst werden die durch den Copper direkt wieder geändert, wenn man nicht aufpasst.


    Für den Jeff Kandle Kurs gilt aber das, was ich in einem der Threads dazu geschrieben habe: da wird einem viel vermittelt, was man so auf keinen Fall machen sollte. Wenn man ein wenig Ahnung hat, dann kann man sich zwar so manche Inspiration holen, aber wenn man gar keine Ahnung hat, dann ist der Kurs für den Anfang nix.


    Die Befehle in Seka und in ASMOne sind meines Wissens nach identisch. Die Kommandos für den Assembler unterscheiden sich aber genauso, wie sie sich für verschiedene SEKA Versionen unterscheiden.


    Der Grund, warum das Bild nicht angezeigt wird, ist wahrscheinlich, dass du es gar nicht geladen hast.


    Edit: Ergänzung:

    Die über EXTRN eingebundenen Daten werden nicht automatisch geladen. Das musst du händisch machen. Was total schlecht an dem Beispiel ist, ist das Verwenden von festen Adressen. Das ist an der Stelle ein totales No-Go, da du nie weißt, ob der verwendete Speicherbereich auch wirklich frei ist.

  • Ich hab mir ein paar Folgen von dem Assemblerkurs von Scoopex angesehen um wieder rein zu kommen. Der ist recht gut:

    Ist aber auch schon ein wenig her und war für mich nur Wiederholung. Insofern weiß ich jetzt nicht, ob der auch für Anfänger taugt.

  • Und die Farben würde ich eher per Copper Liste setzen und nicht direkt. Sonst werden die durch den Copper direkt wieder geändert, wenn man nicht aufpasst.


    Es ist durchaus möglich, die Farben ohne Copperliste zu setzen. Manchmal will man keine Copperliste haben und dann muss man das sowieso so tun. Gerade als Anfänger würde ich den Code erstmal ohne große Änderungen übernehmen, um so schnell wie möglich das gewünschte Ergebnis zu sehen. Auch wenn der Code in diesem Fall, wie Du ja auch schon bemerkt hast, alles andere als gut ist, da absolute Adressen auf dem Amiga nur in seltenen Fällen Sinn machen.


    Die über EXTRN eingebundenen Daten werden nicht automatisch geladen.


    Hier kann man die "AUTO" Direktive von ASM-One benutzen. Besser wäre allerdings INCBIN zu nehmen, das kannte der SEKA aber damals nicht.

  • R4M.S & Kongo-Otto & Stingray


    Also laut Kurs ist das die Ladeadresse für das Bild, was sich ja später in EXTERN zeigt, bei Ziel.


    Das Bild habe ich in 2 Fraben mit DPaint gemalt und mit dem Kefrens IFF-Converter in RAW konvertiert.


    Das Kommado zum Laden des Bildes ist beim Seka "Y" und beim ASM-One "E", natürlich habe ich das Bild geladen.


    Hier mal eine Ansicht der Ausgabe beider Assembler bei gleichem Code.



    Links der ASM und Rechts der Seka


    Ich würde nur gerne verstehen warum die Ausgabe so unterschiedlich ist.


    Das Unendliche Assemblerbuch habe ich als .pdf Datei, und so wie es ausschaut werd ich mich wohl an den Devpac ran machen müssen ....


    Lieben Dank für die Antworten

  • Hier mal eine Ansicht der Ausgabe beider Assembler bei gleichem Code.


    Kannst Du mal bitte den Source posten? Ich gehe mal schwer davon aus, dass da Sachen drin sind, die SEKA schluckt (obwohl er das nicht sollte, bsr.l auf 68000 und solche Scherze) und ASM-One nicht oder anders handhabt.

    Edit: Hab gerade gesehen, dass hier im Thread schon ein Link zum Source ist. Ich schau mir den mal an.



    Es könnte sein, dass ASMOne "even" nicht versteht


    ASM-One kennt die EVEN Direktive. Daran liegt das nicht. Wenn er den Code auf einem 68000 ausführt, würde er dort abstürzen, aber nicht so ein Verhalten zeigen, wie man auf den Bildern sieht.

  • So, ich habe mal eben einen Blick auf den Code geworfen und der ist echt übel! Modulowerte werden nicht gesetzt, andere Register werden auch nicht initialisiert. Dass der Code irgendwo überhaupt funktioniert, ist reine Glückssache! SEKA wird die Systemcopperliste nicht verändern, so dass da brauchbare Werte drinstehen, bei ASM-One wird das anders sein und auch das unterschiedliche Verhalten erklären. Kurz: Der Code ist extrem schlecht (selbst für damalige Verhältnisse) und man sollte sich solche Sachen gar nicht erst angewöhnen (es sei denn, man muss extrem auf Größe optimieren, aber dann weiß man in der Regel auch genau, was man macht).


    Edit: Füge mal in der Copperliste folgende Zeilen ein:


    dc.w $108,0

    dc.w $10a,0


    Damit werden die Modulos für die Bitplanes gesetzt. Mit etwas Glück siehst Du dann das Bild korrekt.

  • StingRay: werde ich morgen mal probieren, ist mir jetzt zu spät.


    Aber so Grundsätzlich, welches Buch würdest Du empfehlen?


    Amiga Programmieren in Maschinensprache Modularer Kurs mit dem Devpac, von Frank Riemenschneider oder

    Amiga Assembler Buch von Peter Wollschlaeger? Oder hast Du vielleicht eine andere Empfehlung?


    Gruß Joki/Walter

  • Aber so Grundsätzlich, welches Buch würdest Du empfehlen?


    Da kann ich Dir leider keinen kompetenten Rat geben, da ich mir damals (vor 30 Jahren) 68000 Assembler selbst beigebracht habe. Alle Bücher, die ich irgendwann zu diesem Thema in den Fingern hatte, waren voller Fehler und/oder enthielten teilweise sehr schlechten Code und Praktiken, die man nicht vermitteln sollte. Von daher habe ich irgendwann aufgehört, mich mit dem Thema "Bücher für Assembler auf dem Amiga" zu befassen.

    Grundsätzlich empfehlenswert ist auf jeden Fall das Hardware Reference Manual (http://amigadev.elowar.com/rea…anual_guide/node0000.html), dort findet man alle grundlegenden Informationen. Für einen Einsteiger ist das aber sicher nicht die beste Lektüre, um mit dem Coden auf dem Amiga anzufangen, da es doch einiges an Grundwissen voraussetzt.

  • Und die Farben würde ich eher per Copper Liste setzen und nicht direkt. Sonst werden die durch den Copper direkt wieder geändert, wenn man nicht aufpasst.


    Es ist durchaus möglich, die Farben ohne Copperliste zu setzen. Manchmal will man keine Copperliste haben und dann muss man das sowieso so tun. Gerade als Anfänger würde ich den Code erstmal ohne große Änderungen übernehmen, um so schnell wie möglich das gewünschte Ergebnis zu sehen. Auch wenn der Code in diesem Fall, wie Du ja auch schon bemerkt hast, alles andere als gut ist, da absolute Adressen auf dem Amiga nur in seltenen Fällen Sinn machen.

    Da hast du Recht. Das mit der Coppersliste hatte ich geschrieben, da in dem Beispiel die Farben offenbar per Copper Liste gesetzt werden und deshalb ein einmaliges Setzen der Farben im Code nichts bringen würde.

  • wie kommt es nur dass wir dieselbe Meinung haben, was die Fehlerrate in Büchern betrifft? :)


    Ich finde es auch sehr schade, dass ich damals ( auch vor ca. 30 Jahren ) nicht einfach weiter gemacht habe!


    Deswegen wohl auch mein Interesse am „alten Amiga“, wo im Alter ein wenig Ruhe kommt und „retrofeeling“ einfach ein gutes Gefühl vermittelt. :)

  • wie kommt es nur dass wir dieselbe Meinung haben, was die Fehlerrate in Büchern betrifft? :)


    Ich finde es auch sehr schade, dass ich damals ( auch vor ca. 30 Jahren ) nicht einfach weiter gemacht habe!


    Deswegen wohl auch mein Interesse am „alten Amiga“, wo im Alter ein wenig Ruhe kommt und „retrofeeling“ einfach ein gutes Gefühl vermittelt. :)


    Zu spät ist es ja nie, mit dem Coden auf dem Amiga anzufangen. :) Was die Bücher betrifft, wir haben uns damals (auch so vor 25-30) Jahren einen Spass draus gemacht, die schlimmsten Fehler, die wir gefunden haben, vorzulesen und haben uns dabei teilweise echt vor Lachen auf dem Boden gekugelt. Ja, was pubertäre Coder, die gerade die Welt erobern wollten, halt manchmal so machen. :D

    Was mir noch einfällt, es gab damals in der Amiga Special einen sehr brauchbaren Assemblerkurs von Manfred Leidorf (möge er in Frieden ruhen!), falls Du irgendwie an diese alten Amiga Special Ausgaben herankommst, wäre das sicher hilfreich. Ich hab' den Kurs damals gerne gelesen, weil er didaktisch recht gut aufgebaut war und viel Wissen vermittelt hat.