Problem mit Listing für 6502

  • Hallo, wäre schön wenn mir hier jemand weiterhelfen kann.

    Ich bin mehr so der Hardwarebastler und meine Kenntnisse in Sachen Programmieren sind unterirdisch (ich arbeite daran :) ).

    Ich tippe gerade das folgende Listing in meinen TIM-1 aber ich hänge bei der Addresse $053E. Entweder fehlt da ein Byte oder die Adressen sind irgendwie um 1 verschoben.

    Könnt ihr mir helfen wie ich mit der "Lücke" umgehen soll ? Evtl. ein NOP einfügen ?

    Das vollständige Listing (Luna Lander) ist auf HansOtten s TIM-Seite gaaanz unten. Die Subroutine "FuelSubsract" ist auf der 2. Seite.

    TIM 6530-004 – Retro Computing


    Viele Grüße,

    Chris





  • Mach halt das NOP da rein ($EA). Sollte dann passen.


    edit: da ist wirklich ein BYTE zuviel/zuwenig. Keine Ahung, wie man sowas baut, aber vielleicht ist es ja eine Art "absichtlicher Fehler".

    Fürs Lernen unbedingt das SED Kommando beachten. Das ist ein Mode, den i.a. wenig bis kaum benutzt worden ist. Es passen dann also bestimmte Erklärungen in irgendwelchen Büchern, die Du evtl. parallel zum Verstehen benutzt, nicht so recht.

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • In einer früheren Version des Programms standen da vielleicht andere Befehle. Vielleicht wurde kein Assembler benutzt, sondern in einer Textdatei Maschinenbefehle von Hand hingeschrieben und dann mit einem Hex-Editor eingegeben, und man wollte sich nach dem Kürzen der Befehle das Relozieren des Rests sparen? Denn ein Assembler würde beim Ausgeben die Adressen automatisch erzeugen und dabei nicht von sich aus Lücken lassen.

  • Es gibt auch noch eine ganz andere Variante: Der Buch Autor hatte nur den Binary Ausdruck in Hexzahlen vor sich liegen und hat dieses Listing einfach direkt von den Hexzahlen ausgehend hingeschrieben und sich dann eben mal bei einer Stelle vertan (normales LDA aus Adresse XY non-zeropage hat ja schließlich 3 Bytes). Sozusagen ein Error at biological based disassembly

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • Beide Varianten funktionieren, sowohl die eingefügte NOP, als auch der LDA in Form von AD mit der vollen Adresse Danke !

    Die Subroutine hat sogar noch einen weiteren Fehler (falsche Adresse für das out of Fuel Flag) , das übrige Listing scheint o.k.