Hallo Besucher, der Thread wurde 980 mal aufgerufen und enthält 4 Antworten

letzter Beitrag von BruderJo am

MEGA65 - Fragen zum ROM

  • Hoffentlich gehört meine Frage zur dem ROM-Thread :-)

    Ich stöbere mit dem Monitor im Mega65 Kernel v920377.

    Zur "jmp_far" Kernel-Routine hätte ich Erklärungsbedarf. Einsprung ist $FF71


    Code
    1. $FF71 jmp jmp_far ;jump to code in any bank, springt nach $03D5

    egal, welcher Wert im Z-Register steht, er wird bei $03E4 mit #$83 überschrieben. (LDZ #$83)

    Kann mir jemand diese Logik erklären?

  • Kann mir jemand diese Logik erklären?

    Das war nicht immer so. Im späteren original C65-ROM von Commodore sah jmp_far so aus:


    Bei meinem BASIC 65.EX ROM 220605 habe ich das so umgesetzt:



    Das MEGA-Team (hier BitShifter) haben dann das Z-Register bei jmp_far fix mit $83 belegt. Soweit ich mich richtig erinnere (ist schon paar Tage her :D ) , war die Motivitation dafür, dass man von BASIC aus mit SYS und über die jmp_far-Kernelroutine nicht Kernel und I/O ausblenden können soll. Das ist in der Hinsicht "sicherer", gerade wenn Interrupts und so im Spiel sind. Also quasi zum Schutz des Anwenders/Programmierers hat man an der Stelle das System etwas "eingeschränkt". Es gab dazu auch Diskussionen, aber es wurde halt dann so entschieden.


  • Hallo Snoopy,

    ganz dolle Dank für die erleuchtende Antwort.

    Die C65 Quellen hatte ich zum Vergleich genommen. Deshalb kam mir das Fragment vom Mega65 so komisch vor.

    Ich baue mir meine Library mal zusammen und teste, wenn ich soweit bin, ob ich die ROM Routine nehme oder eine eigene einbaue.

    Dein Vergleich mit $B0 macht Sinn. So wird das Basic-Rom auch gemappt.


    Zur Info: meine Library soll die Runtime für einen P-Code Interpreter bilden und da brauche ich solche Aufrufe in den Kernel oder Basic.