Posts by Vernunftmensch


    Ich habe jetzt mehr als eine Stunde in den ASM-Seiten gestöbert und finde keine Antwort auf diese Frage:


    jsr $1000 funktioniert.
    Nun möchte ich aber nicht zu einer festen Adresse springen, sondern einer, die in einer Variablen drinnen steht.
    Also


    Wie realsiere ich jsr ($hhll) ?

    Ohne Interrupt völlig in c mit Schnelllader:


    Mit Interrupt völlig in c mit Schnelllader:


    Das spielt schon manche richtigen SID-Files ab:


    A@BlackJack:
    (rekursive Lader, die über Eingabeadresse Code und Data trennen und danach rel. verschieben, gibt es, dauern aber bei einem C64 unpraktisch zu lange. besser: zwei programme, bei denen der Code entweder am Anfang oder am Ende ist und ein kleines Programm, das aussucht, welches gebraucht wird.)


    B Beim C64er kann man doch in Basic komplett in ein neues Programm rüberspringen. Wie sieht das gleiche in C aus?


    C Sind im SID-Header wichtige Informationen, die das Abspielen betreffen?

    mit Startadresse noch drinnen:



    Klappt.


    Meine nächste Fragen:
    A Was gibt es beim C64 für Interrupts und wie kann man die ändern?
    B Welche Format haben die SID-Dateien?
    C Gibt es schon irgendwo eine Routine, mit der man immer ab $1000 schreiben kann, aber die Routine die JSR JMP BNE BEQ und soweiter alle anpaßt?

    Das Hauptprogramm:



    Die Linker.cfg:


    Immerhin startet der C64 das Hauptprogramm, welches folgendes macht, besser nicht macht. :-(


    1. Mozart.dat einbeziehen mit Erfolgsmeldung (Vielleicht Programmfehler?)
    2. Abstürzen mit leerem READY.-Bildschirm bei lda #0 und jsr $1000, obwohl Sidplay das als Initialisierung angibt
    3. Zum eigentlichen Abspielen kommt er nicht.


    Woran liegts diesmal?

    Meine C-Datei:


    Meine Linker-Konfiguration:


    StartUp im LOWRAM: Warum schreibt der Computer nicht einmal mein printf ?

    Hier steht zwar veraltet und erledigt, aber ich habe mir alles durchgelesen und noch eine Frage:


    Wie spiele ich ein SID auf dem C64 mit CC65 ab? Ich habe schon mir von einem Vivaldi-SID mit Sidplay die .Dat erstellt und die Daten Initialisierungszeiger und Spielroutinezeiger aus den Eigenschaften herausgelesen. Jetzt möchte ich die Datei mit C nicht direkt einbinden. Wie ich die Datei an die Stelle $1000 byteweise oder blockweise schreibe weiß ich. In der Makefile kann man auch die Startadresse des eigentlichen Programmes angeben.
    @$(LD) -t $(SYS) -m $(basename $@).map --start-addr 0x4000 -o $@ $^ $(CLIB) Wie aber sorge ich dafür, daß cc65 den platz ab $1000 bis zum Ende der SID-Code-Datei freihält?


    Helmut