Hallo.
Nachdem wir jetzt seit einiger Zeit hier fleissig Assembler am lernen sind, wollte ich in diesem Thread etwas über meine Erfahrungen bzw. jetzigen Wissensstand und meine Vorgehensweise schreiben und außerdem interessieren mich natürlich eure Erfahrungen sehr !!
Thoralf macht sich da ja sehr viel Arbeit und ist unermüdlich lehrreiche und sehr verständliche Threads am schreiben. Nochmals ein Dankeschön an dieser Stelle !! Aber ich vermisse ein Feedback bzw. Fragestellungen anderer Mitglieder. Dass man hier als Einsteiger nicht direkt Turrican 7 oder so programmieren will, ist klar. Aber ich denke, jeder, der sich mit Assembler beschäftigt, hat da ein kleines Progrämmchen im Hinterkopf, das er verwirklichen will. Ich vermisse Fragen, wie zB:
Ich schreibe ein Programm X, das soll das und das können, soweit bin ich jetzt, aber es funktioniert nicht. Woran liegt das ?
Dann könnte man sich über das Listing gemeinsam unterhalten und eine Lösung suchen. Das hätte einen noch größeren Lerneffekt. Außerdem wäre es dann auch ein Feedback für Thoralf, dass er sieht, dass man sich wirklich ernsthaft damit beschäftigt und er seine ganzen Threads nicht "für die Katz" schreibt. In seinen Threads bin ich persönlich eher zurückhaltend mit schreiben, um die Übersichtlichkeit zu erhalten.
Mein Lernprogramm sieht momentan so aus:
Die Lektüre:
- Thoralfs Assemblerkurs
- Einführung in die Mikrocomputertechnik
- 6502 programmieren von Lance Leventhal
- Der 64er Assemblerkurs in Buchform
- Machine Language for C64 and other Commodore computers von Jim Butterfield
-Über Thoralfs Assemblerkurs gibt es nur positives zu berichten. Leicht verständlich und einfach klasse geschrieben.
-Das Buch "Einführung in die Mikrocomputertechnik" ist wirklich super dazu geeignet, um zu verstehen, wie ein Computer funktioniert und garantiert den ein oder anderen "aha"-Effekt. Es ist schön unterteilt und man kann sich aussuchen, was man lernen will. Den ein oder anderen mögen aufsteigende oder abfallende Flanken am Oszi nicht so interessieren ?! Von Anfang an werden Zahlensysteme, boolsche Algebra und das Rechnen mit verschiedenen Zahlensystemen erklärt. Mit dem Zweier Komplement hatte ich persönlich im Leben noch nie zu tun, aber es ist interessant, wie der Rechner mit Addition subtrahiert. Alles in allem eine klare Kaufempfehlung !!
-Das Buch "6502 programmieren" von Lance Leventhal ist grundsätzlich nicht verkehrt. Natürlich ist es fachlich korrekt und übersichtlich. Was mich an dem Buch nervt (nein, es geht mir richtig auf den Sack) ist dieser ständige Verweis auf das Buch "Einführung in die Mikrocomputertechnik". Immer dann, wenn es gerade interessant wird, kommt dieser Verweis. Oder es wird ein Thema aus der Luft gegriffen, mit der Begründung, dass man es in dem Buch "Einführung in die Mikrocomputertechnik" bereits gelernt hat. Also ich würde dieses Buch eher jemandem empfehlen, der mal irgendwann mit Assembler gearbeitet hat und seine Kenntnisse auffrischen möchte. Oder aber ergänzend zu anderen Lektüren.
-Das Buch "Der 64er Assemblerkurs - Assembler ist keine Alchemie" fängt klein an und springt dann voll in die Materie. Grundsätzlich ist es lesbar. Aber ich finde, zumindest für mich als Anfänger, ist es noch zu grob gestrickt. Ok, wie in jedem anderen Buch auch, lernt man die Befehle und wie sie zu handhaben sind und was sie machen. Aber das wars dann auch schon. Auf den Akku, die Register, die Alu und die Statusflags wird nur kurz eingegangen. Verschiedene Passagen muss man (zumindest ich) mehrmals lesen, um sie zu verstehen,was aber nicht unbedingt schlimm ist. Fazit: Es schadet sicherlich nicht, das Buch ergänzend zu anderen Büchern in der kleinen Retrocomputer Privatbibliothek zu haben. Aber für einen Anfänger, der bei null anfängt, finde ich es (zumindest in meinem Fall) nicht geeignet.
-Das Buch "Machine language for C64 and other Commodore computers" von Jim Butterfield hab ich bis jetzt nur angefangen zu lesen. Aber so langsam wird mir bewusst, warum es bei ebay und Amazon für mindestens 105 Euro in einigermaßen passablen Zustand zu haben ist. Ich habe das Buch nur als englische PDF Version da. Normalerweise bin ich eher ein Freund von Print-Versionen. Aber um 105 Euro zu sparen, liest man auch gerne mal am Ipad. Dieses Buch ist sehr schön geschrieben ! Es ist sehr verständlich und bestens für Einsteiger geeignet ! Da es sich speziell auf Commodore bezieht, geht man von Anfang an nicht nur auf die Mnemonics und den Speicher ein, nein, man geht speziell auf die Speicheradressierung von Commodore Rechnern ein und was für mich persönlich noch viel interessanter ist, den Umgang mit der Anwendung von Kernal Routinen. Was bei den anderen Büchern sehr oft sachlich und fachlich trocken ist, liest man in diesem Buch mit Freude. Jim Butterfield hat anscheinend die Gabe, auch für Anfänger sehr gut erklären zu können ! Bei den anderen Büchern macht es eher den Eindruck, dass diese zwar von Vollprofis geschrieben wurden, allerdings vergisst man als Vollprofi oft die Kleinigkeiten, die das Ganze verständlich und logisch, auch für Anfänger, erscheinen lassen. Ich freue mich sehr darauf, das Buch vollends zu lesen ! Also klare Kauf- bzw. Herunterladempfehlung !!!
Die Rechner:
Ich lerne Assembler am C64 und am CBM 8032. Am CBM 8032 habe ich bis dato noch keinen Assembler gefunden, der mir zusagt. Da programmiere ich (staubtrocken) im erweiterten Maschinensprachemonitor. Stürzt das Programm ab, bleibt mir nur ein und ausschalten. Ich habe mir mittlerweile angewöhnt, jedes Mal das Programm vor dem Starten ab zu speichern. Ich habe noch keinen Reset-Taster montiert. Reset auf GND zu legen bewirkt bei diesem Rechner einen Kaltstart, der Speicher ist als gelöscht. Gleicher Effekt wie aus und einschalten. Das ist für mich momentan ein Problem. Ich hätte nie gedacht, dass ein Warmstart-Reset-Taster mal einen so hohen Stellenwert in meiner Computerei hat.
Am C64 habe ich das Retroreplay und arbeite mit Turboassembler. Hier steht selbstverständlich der geliebte Warmstart-Reset-Taster zur Verfügung *freu*. Somit kann ich ein Programm schreiben, wenn es abstürzt, mache ich einen Reset und das Programm steht immer noch im Speicher. Außerdem kann ich resetten und mir das Programm im Maschinensprachemonitor anschauen, was mir auch schon geholfen hat, die Einsprungadresse zu finden.
Meine Programme:
Bis jetzt habe ich nur "Hello world"-Programme mit flackernden Hintergrundbildschirmen geschrieben und ich versuche das einfach zu erweitern. zB, dass man mit einem Tastendruck via Kernalroutine aus der Schleife aus dem Programm aussteigen kann.
Außerdem hatte ich mir mal irgendwann eine LED Platine für den Userport gebastelt. Da dann ein Lauflicht programmieren etc.
Ich hab zwar schon sehr viel gelesen, aber noch nicht sehr viel gemacht, einfach aus Zeitgründen. Aber ich habe jetzt Urlaub und werde dann doch die ein oder andere Stunde am C64 mit TurboAss verbringen.
Meine aktuellen Ziele:
Als erstes sämtliche Mnemonics lernen und das nutzen von Kernalroutinen. Wenn das sitzt, möchte ich mich mit Sprites beschäftigen. Es wäre ja schon super, ein Sprite mit dem Joystick über den Bildschirm steuern zu können..
Vorgehensweise:
ich muss aufpassen, dass ich nicht versuche, zu große Schritte zu gehen. ich denke, dass ich es hin bekäme, jetzt aktuell Sprites mit dem Joystick auf dem Bildschirm bewegen zu können. Allerdings dann nur mit Ach und Krach, zusammengeklauten Routinen etc. Mir ist es wichtig, dass ich weiß wie es bis ins Detail funktioniert. Und nicht nur zu wissen, dass es funktioniert. Ich, als ungeduldiger Mensch, muss also lernen diesbezüglich geduldig zu sein...
Zudem ist es wichtig, vor dem Programmieren ein Ziel zu definieren. Bei Assembler (und auch bei anderen Sprachen) arbeitet man ja viel mit Subroutinen, also Nebenprogrammen. Bevor man sich also an den Rechner setzt, sollte man sich Blatt und Stift nehmen und ein Flussdiagramm zum Programm zeichnen. Letzten Endes macht das die Sache einfacher. Ich weiß, welche Nebenprogramme ich programmieren muss, welche Variablen ich setzen muss und komme nicht (so schnell) durcheinander.
Was ich vermisse:
Ich erinnere mich gerne an die Zeit Anfang der 90er, als ich GFA Basic am Atari ST gelernt hatte. Ich hatte ein Buch, das Ziel war ein Kalenderprogramm. Schritt für Schritt hatte ich das Buch durchgearbeitet, hatte am Schluss ein Ergebnis (das Kalenderprogramm) und wusste auch noch wie es funktioniert. Daraus konnte ich dann viel ableiten und war nach einiger Zeit richtig fit in GFA-Basic. Ich habe damals viel damit gearbeitet.
Ein solches Buch vermisse ich im Bezug auf Assembler. Sagen wir mal, am Ende soll ein kleines Demo oder ein kleines Spielchen rauskommen und man arbeitet sich dann Stück für Stück zum Ziel.
Ich bin auf eure Antworten und euren Stand der Dinge gespannt.
Gruss Jan