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

letzter Beitrag von abraXxl am

CBM80 Kennung für Internal7External Function Roms

  • Ich würd mal spontan aufs PRG tippen? Oder guck dir im 128-Intern die Reset-routine an.


    Kurz gesagt blendet die MMU die Roms ein (Bank 4, Bank 8 oder so?) udn das Kernal schaut dann bei $8000 und $c000 nach der Autostartkennung. IIRC decodiert die MMU auf ROML und ROMH jeweils 16K aus, während das interne ROM auf den gesamten 32K angesprochen wird- man hat also im internen ROM zwei Autostart-Punkte. Wozu auch immer das nützlich ist...


    Übrigens: In den oberen 16K werden immer die MMU-Register bei $FF00 eingeblendet. Die 5 Bytes des ROM-Inhaltes sind also (mit Bordmitteln) nicht auslesbar.

  • Damit die Nachwelt auch was davon hat hier ein XA Code Fragment, was als Func Rom startet.


    Entry Point ist func_rom_entry.


    Die Startadresse kann nach auch von 8000 nach c000 gelegt werden, jedoch hat man dann in den Function-Rom-StartUp-Banken 4 oder 8 ein Loch in d000-dfff, da dort der IO Bereich ist.
    Achtung ist auch geboten, da bei ff00 ein Teil der MMU eingeblendet ist.


    Wie man C64 Code im Funcrom her startet ist mri klar. Jedoch wie starte ich z.B. ein Basicprogramm im 128er Modues nachdem ich es an den Basic Start kopiert habe?



    Im Anhang befinden sich die Sourcen und Makefiles um aus dem FuncRom ein Go64, FIBR@C64, und DC64@C64 zu starten.


    cya

  • Auf 1FFF5 befindet sich die CBM Kennung, im gegensatz zum C64 entfällt die 80.
    Auf 1FFF8 ist die Adr. LO / HI Autostart in Configreg. $FF00 Wert $00


    1FFF8 Kernal Vektor C128MODE
    1FFFA NMI
    1FFFC Reset
    1FFFE IRQ


    Du kannst hier also auch Programme vom Ram aus Autostarten.

  • Hi Gikauf!


    Ist dir schon wieder beim Bitzaehlen schwindelig geworden ? ;) Warum beginnen deine Adressen bei 1ffff?


    Die Adressen die du angibt haben nicht viel mit der CBM Kennung beim C128 zu tun, oder zu mindest liegen Sie an der falshen Stellen. Ich habe das Nötige bereits entziffert wie du im vorigen Post meinerseits gesehen haben solltest.


    Funtion Roms können bei $8000 oder $c000 eine Startkennung haben. Das nötige hier.


    Zur Vereinfachung hier bei $8000


    8000/8001 ???
    8002/8003 ???
    8004/8005 Function Rom Entry Vector
    8006 ???
    8007-8009 CBM Kennung


    Grüße

  • Das macht wiederum IMO auch keinen Sinn.


    Wir sprechen von Function Roms welche entweder an $8000 oder $c000 in Bank 4 oder 8 eingeblendet werden und auch in der jeweiligen Speicherkonfiguration gestartet werden.
    Bank 4 wäre Ram Bank0 + internal Function Rom und Bank 8 wäre Ram Bank 0 + external Function Rom.


    Also nach meiner Zählung mit deinem Bankprefix 48000 und 88000 bzw. 4c000 oder 8c000.
    Das MMU Config Register nicht $3f sondern $16 bei ausführung eines Internen FuncRoms.
    Es ist aber richtig dass man passende NMI /IRQ Einsprungpunke in den Roms benötigt, ab 1fffc-1ffff. Dafür machen deine Zahlen sinn, jedoch nicht für die CBM Kennung diese muss bei Funktion Rom wie in Post #5 beschreiben liegen.


    gruesse

  • Der C128 hat 5 solcher Einspungspunkte, die 4 von dir genannten und der, den ich genannt habe. Für die im Rom, mußt du ein Eprom brennen, eine andere möglichkeit gibt es da nicht. Der Punkt im Ram ermöglicht es Programme zu testen bzw. von Diskette Ladbar zu machen, also im Ram zu arbeiten. Zu beachten dabei ist die Sprungadresse liegt in Rambank 1 die Zieladresse ist Rombank 15 mit Rambank 0 bis $3FFF.
    Auch eine Anwendung mit Neoram ist denkbar muß aber auch erst gestartet werden.