interner Eprom Sockel

Es gibt 13 Antworten in diesem Thema, welches 2.020 mal aufgerufen wurde. Der letzte Beitrag (27. Februar 2013 um 21:48) ist von mc71.

  • Ich möchte ein wenig mit dem Internen Eprom Sockel des 128er spielen und bin auf folgenden Post gestoßen:

    Um den leeren EPROM-Sockel zu verwenden, muß ein EPROM ab Offset $0006 folgenden Inhalt haben:

    $0006 - Zeitpunkt, wann das ROM angesprungen wird.
    $0007 - $43 (C)
    $0008 - $42 (B)
    $0009 - $4D (M)

    Das Byte an Offset 6 gibt an, wann das ROM während des C128-Reset angesprungen wird.

    $00 - Kein Sprung.
    $01 - Früh, bevor irgendwelche Initialisierungen vorgenommen wurden.
    $02 - Spät, nachdem alles Initialisiert wurde und auch die Einschaltmeldung ausgegeben wurde.

    Das ROM wird bei $8000-$FFFF eingeblendet. Es kann sowohl von $8000 als auch von $C000 gestartet werden.

    Gibt es da noch nähere Infos, da der Post für mich noch nicht 100% klar ist.

    Angenommen ich möchte mir auf das Eprom ein .prg brennen, welches direkt nach dem Einschalten angesprungen wird.

    Ist dann $0000 - $0005 unbenutzt?
    $0005 wäre dann $02 danach dann $43 $42 $4D und ab $0010 dann das Programm?

    - WiC64 - The Commodore 64 Wireless Interface -> Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.
    - WiC64 - Radio -> Bitte melde dich an, um diesen Link zu sehen.
    - WiC64 - GameBox -> Bitte melde dich an, um diesen Link zu sehen. :thumbsup:
    - WiC64 - DemoBox -> Bitte melde dich an, um diesen Link zu sehen.

  • Angenommen ich möchte mir auf das Eprom ein .prg brennen, welches direkt nach dem Einschalten angesprungen wird.


    Bedenke das du nicht einfach irgendein .prg nehmen kannst. Das sollte schon im Bereich $8000 laufen können.

  • Das Byte an Offset 6 gibt an, wann das ROM während des C128-Reset angesprungen wird.

    $00 - Kein Sprung.
    $01 - Früh, bevor irgendwelche Initialisierungen vorgenommen wurden.
    $02 - Spät, nachdem alles Initialisiert wurde und auch die Einschaltmeldung ausgegeben wurde.

    Das ROM wird bei $8000-$FFFF eingeblendet. Es kann sowohl von $8000 als auch von $C000 gestartet werden.

    $03 - Sollte das Rom 2 x Anspringen, so ein alter Bericht einer 64'er. Früh heißt am Anfang der Resetroute, da kann man also seine eigene Resetroute Basteln. Und Spät, ist am Ende der Resetroute wenn man nur sein Programm Initialisieren will.

    Das Rom ist in Jedem Fall bei $FF00 - $FF3F ausgeblendet da Hier das CR liegt.

    Die Bankadresse ist 4, du kannst auf Bank 5 erweitern wenn du ein Kabel von RAM0 nach A15 Verlegst, allerdings ist der Ramzugriff dann immer auf Bank1, auser bei der Zerropage.
    Bank 4 und Bank 8 sind gleichgestellt, Bank 8 ist am Expansion-Port.

    Wem es beim Bit zählen schwindelig wird, der hat zuviel davon.

    Alt werden ist schön, das Altern nicht.

  • Ich möchte ein wenig mit dem Internen Eprom Sockel des 128er spielen und bin auf folgenden Post gestoßen:


    Gibt es da noch nähere Infos, da der Post für mich noch nicht 100% klar ist.

    Angenommen ich möchte mir auf das Eprom ein .prg brennen, welches direkt nach dem Einschalten angesprungen wird.

    Ist dann $0000 - $0005 unbenutzt?
    $0005 wäre dann $02 danach dann $43 $42 $4D und ab $0010 dann das Programm?


    Nein, der Einsprung ist bei $0000, das Programm muss also innerhalb der ersten sechs Byte einen Sprung machen, um den Header zu überspringen.
    Ich mutmaße mal, dass die Entwickler sich das so gedacht haben:

    Code
    *=$8000
        jmp install
        jmp deinstall
        !by 2, $43, $42, $4d


    Den zweiten Jump müsste man manuell aufrufen - ich reime mir das nur deshalb so zusammen, weil mir kein anderer Grund einfällt, warum da ausgerechnet sechs Byte Platz vor dem Header sind.
    In meinem 128er hatte ich mal eine Zeitlang ein batteriegepuffertes 32KiB-SRAM, dann ein 128KiB-FlashROM, derzeit ein 8KiB-EEPROM (für solche direkt schreibbaren Chips muss man aber etwas mehr basteln, da die PLA keine Schreibzugriffe auf diesen Sockel erlaubt). Bei Speichergrößen von weniger als 32 KiB muss man aber aufpassen: Der Inhalt wird ggfs. mehrmals eingeblendet, d.h. dass ein und dasselbe Programm dann sowohl bei $8000 als auch bei $c000 gefunden und angesprungen wird. Das erzeugt dann u.U. schwierig zu findende Fehler. ;)
    Sonst noch wichtig: Von $ff00 bis $ff05 blenden sich *immer* die MMU-Register ein. Und wenn man den Speicher mit dem internen Monitor untersucht (Bank 4!), sieht man ab $d000 die I/O-Chips, IIRC.
    Ich habe mir dort ein paar kleine Optimierungen gestrickt:
    a) Ist 40/80 gedrückt, geht der Rechner sofort in den FAST-Modus.
    b) Ist Shift gedrückt, wird der C64-Modus ohne Speichertest aufgerufen (somit schneller), wobei der Modulstart überschrieben wird (um resetfeste Spiele totzukriegen).
    c) Die grauslichen Farben des 40-Zeichen-Modus werden verändert.
    d) Die hirnrissigen F-Tasten-Belegungen von Jiffy werden auf die CBM-Defaults zurückgesetzt.
    e) Eine F-Taste (im 128er-Modus) bzw. RESTORE (im 64er-Modus) starten ein Programm, welches den mit dem Userport verbundenen PC als Laufwerk anspricht.

    (edit)
    Noch was Wichtiges: In der letzten Page sollten die Interrupt-Vektoren und der Rücksprungcode enthalten sein, wie es auch in den Banks 0, 1 und 15 der Fall ist. Also beim EPROM-Brennen darauf achten!

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..


  • $03 - Sollte das Rom 2 x Anspringen, so ein alter Bericht einer 64'er.


    Nein, genaugenommen gibt es dort nur 0, 1 und "irgendwas anderes". Die Geschichte mit dem "zweimal anspringen" kommt daher, dass wenn in der Speicherstelle eine 1 steht (also "früh anspringen"), und der Code dann per RTS wieder zurückspringt, er beim zweiten ("späten") Versuch nochmal angesprungen wird. Beim zweiten Versuch wird nämlich nur noch auf "ungleich-Null" geprüft.

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

  • Zitat

    Den zweiten Jump müsste man manuell aufrufen - ich reime mir das nur deshalb so zusammen, weil mir kein anderer Grund einfällt, warum da ausgerechnet sechs Byte Platz vor dem Header sind.


    vektoren für reset/nmi/irq ? :)


  • vektoren für reset/nmi/irq ? :)


    Kann nicht sein, da das erste Byte ja schon ausführbarer Code sein muss. Oder meinst Du, dass es sich hier um ein Artefakt aus einer älteren Planungsphase handelt?

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

  • Dann eben Sprungleiste für Reset/Interrupt... *gezählteerbsenwiederinglaszurückleg*

    KI-Verwendung in diesem Posting: Rechtschreibkontrolle des Browsers.
    Abweichungen aufgrund des technischen Fortschritts oder individueller Vorlieben vorbehalten.


  • Das stimmt so nicht. Nur $ff00-$ff05 sind durch die MMU belegt.

    Die MMU Belegt nur $FF00 - $FF05 aber ausgeblendet wird $FF00 - $FF3F und ist daher für andere Bankbereiche nicht zu sehen, darauf kam es doch in der Fragestellung an.

    Wem es beim Bit zählen schwindelig wird, der hat zuviel davon.

    Alt werden ist schön, das Altern nicht.

  • Die MMU Belegt nur $FF00 - $FF05 aber ausgeblendet wird $FF00 - $FF3F und ist daher für andere Bankbereiche nicht zu sehen, darauf kam es doch in der Fragestellung an.


    Pics or it didn't happen.
    Probier es aus, geh in den TedMon und lass Dir mit M 4FF00 oder M 8FF00 den Bereich anzeigen. Wenn kein ROM in den Sockeln steckt, ist der Inhalt zufällig.
    Allerdings dürften die meisten ROMs in dem von Dir genannten Bereich den gleichen Code liegen haben wie der Kernel, und zwar aus dem in Post Bitte melde dich an, um diesen Link zu sehen. genannten Grund (Interrupt-Handler).

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

  • $FF3F ist 264er/TED Zeug.

    KI-Verwendung in diesem Posting: Rechtschreibkontrolle des Browsers.
    Abweichungen aufgrund des technischen Fortschritts oder individueller Vorlieben vorbehalten.