Hello, Guest the thread was called776 times and contains 17 replays

last post from mczero at the

U36 ROM: prg umwandeln?

  • Moin,


    Ich habe mir einen C128 zugelegt, und dann von dem leeren U36 Steckplatz erfahren. Es müsste ja möglich sein, prg Programme so zu packen oder umzuwandeln, so das diese per Code von der Startadresse vom U36 ins RAM entpackt und/oder kopiert werden.


    Gibt es Programme, die das machen können?

  • Es müsste ja möglich sein, prg Programme so zu packen oder umzuwandeln, so das diese per Code von der Startadresse vom U36 ins RAM entpackt und/oder kopiert werden.


    Gibt es Programme, die das machen können?

    Ja.
    Mein eigenes (Weiterentwicklung hiervon) wartet allerdings schon seit zwei Monaten darauf, dass ich es endlich mal veröffentliche. Es gibt beim Reset eine Meldung aus, per F-Taste kommt man in ein Menü, und dort kann man dann C64- und C128-Programme starten.
    Ich muss mir nur mal wieder ne Stunde Zeit nehmen...

  • Jau. Das klingt perfekt, im Prinzip genau das, was ich suche :)


    Alternativ müsste das ja mit einem Assembler auch möglich sein.


    prg disassemblieren, in einem Assembler Editor laden, einen Kopier-Header hinzufügen und dann einen jmp aufs RAM zum ausführen des prg... Vielleicht kennt jenand den Workflow im Detail?

  • Da die "schöne" Version bestimmt wieder länger dauern wird als gedacht, hier der aktuelle Stand:


    • Man braucht einen aktuellen ACME mit installierter Library.
    • Das Makefile erzeugt im Augenblick eine Datei ohne Ladeadresse. Wer unbedingt am C64 das EPROM brennen will, muss also eine Ladeadresse hinzufügen oder im Makefile die andere (derzeit auskommentierte) Zeile benutzen.
    • Der Benutzer muss die Datei "config.a" editieren, um ein paar Sachen einzustellen:

      • Chipkapazität (4/8/16/32 KiB)
      • internes (U36) oder externes (Modul) Funktions-ROM
      • Text der Startmeldung
      • F-Taste für das Menü
      • Menütext
      • die einzelnen Payload-Einträge
    • da ich dieses "Release" gerade ziemlich übers Knie gebrochen habe, ergibt die aktuelle Konfiguration nicht viel Sinn: Man bekommt zwar eine Ausgabedatei, aber das Menü enthält noch Einträge für Payloads, die auskommentiert sind. Und Payload "clean64" führt bei Druck auf RESTORE Code aus, den außer mir derzeit niemand sinnvoll einsetzen kann - also bitte nicht wundern.

    Wer es ausprobieren möchte: Am besten erst mit zwei kleinen C64- und C128-Basic-Programmen testen, bevor man da größere Payloads benutzt.

  • Warum so Umständlich? Du kannst die Programme in U36 auch Direkt dort ausführen, Die Adresse ist Bank 4 von $8000 bis $FEFF. U36 wird auch mit den Banken 5 - 7 und 12 angesprochen. Eine Uterscheidung zwischen Bank 4 und Bank 5 ist machbar, indem man A15 mit CAS 0 Verbindet, dabei ist dann das Eingeblendete Ram allerdings die Bank 1, auser bei der Common-Ärea natürlich.

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


    Alt werden ist schön, das Altern nicht.

  • Warum so Umständlich? Du kannst die Programme in U36 auch Direkt dort ausführen,

    Das möchte ich sehen, wie Du C64-Programme und Basic7-Programme direkt in U36 laufen lässt.


    [Gefühlte dreißig mal umformuliert, um nicht verdient gesperrt zu werden]

  • Es müsste ja möglich sein, prg Programme so zu packen oder umzuwandeln, so das diese per Code von der Startadresse vom U36 ins RAM entpackt und/oder kopiert werden.

    Ja.
    [...] per F-Taste kommt man in ein Menü, und dort kann man dann C64- und C128-Programme starten.

    Warum so Umständlich? Du kannst die Programme in U36 auch Direkt dort ausführen,

    Das möchte ich sehen, wie Du C64-Programme und Basic7-Programme direkt in U36 laufen lässt.

    Das geht natürlich nur im C128 Modus. Was aber geht ist, vom Rom ins Ram Kopieren und dann in der 64er Modus Wechseln.

    :oob:
    Hast Du das Forum auf "write only" eingestellt?

  • Wer es ausprobieren möchte: Am besten erst mit zwei kleinen C64- und C128-Basic-Programmen testen, bevor man da größere Payloads benutzt.

    Ich habe ACME nun mal unter Ubuntu kompiliert, läuft.


    Im Vice 128 im Basic 7 ein Hello World Basic Programm geschrieben, auf D71 gespeichert, mit Dirmaster exportiert.


    Dann in der config.a das Blue Max prg durch mein Hello World ersetzt. Mehr habe ich da nicht verändert.


    Dann kompiliert mit:


    Code
    1. ACME=/PfadXY/ACME_Lib make

    Alles klar, ich habe ein img8000.rom in meinem Verzeichnis liegen.


    Das habe ich im Vice 128 als internes Funktions ROM eingebunden.
    Ist das richtig, oder muss das als "externes Funktions ROM eingebunden sein?


    Jedenfalls startet der Emulator ins Funktions ROM, ich werde aufgefordert, F2 zu drücken.
    Dann wähle ich Blue Max aus (bzw das, was da laut config.a nun steht).


    Der Emulator springt dann aber ins C64 Basic und führt nichts aus.


    Sicher habe ich noch was falsch gemacht?

  • Im Vice 128 im Basic 7 ein Hello World Basic Programm geschrieben, auf D71 gespeichert, mit Dirmaster exportiert.


    Dann in der config.a das Blue Max prg durch mein Hello World ersetzt. Mehr habe ich da nicht verändert.

    Du hast die "Blue Max"-Zeile aber wieder aktiviert? Ich meine ich hatte die mit einem Semikolon auskommentiert.
    Sollte es nicht daran liegen, probier es bitte noch mal mit dem korrekten Typ: "Blue Max" ist als C64-Payload markiert (deshalb wird ja auch der C64-Modus angesprungen), aber Dein Programm war jetzt im 128er-Modus geschrieben und mit der entsprechenden Ladeadresse gespeichert.
    Zwar hätte es eigentlich (tm) trotzdem gehen sollen, aber getestet habe ich solche Fälle nicht.


    Wenn es dann immer noch nicht geht, schick mir bitte config.a und img8000.rom per PM.

    Das habe ich im Vice 128 als internes Funktions ROM eingebunden.
    Ist das richtig, oder muss das als "externes Funktions ROM eingebunden sein?

    "Intern" ist richtig. Für "extern" müsste man erst am Anfang der config.a die entsprechende Änderung vornehmen.

  • Du hast die "Blue Max"-Zeile aber wieder aktiviert? Ich meine ich hatte die mit einem Semikolon auskommentiert.

    Jaaaa... eigene Beschränktheit! Es war wie du sagtest, einfach nur auskommentiert. Auch das mit dem C64-Payload stimmte,
    ich habe den Eintrag im macro menu_table auf PRG128 gesetzt, und schwupps funktionierte mein Hello World. Nice!


    Das einzige, was jetzt noch auffällt, ist, das das Basic Programm mit den Farben und dem Font deines Menüs startet. Was ja so nicht schlimm ist.
    Kann man das trotzdem für den Payload zurückbiegen auf Standard, oder müsste assembler code eingefügt werden?

  • Das einzige, was jetzt noch auffällt, ist, das das Basic Programm mit den Farben und dem Font deines Menüs startet.

    In Zeile 75 in der Datei "funcrom.a" steht "jsr simple". Kommentier das aus, dann bleiben die Farben auf ihren Standardwerten.
    Abgesehen von den Farben passieren in der Routine noch zwei weitere Sachen: beim Start mit gedrückter 40/80-Taste wird automatisch auf 2MHz geschaltet, und die strunzdumme F-Tasten-Belegung von JiffyDOS wird auf den normalen 128er-Standard zurückgesetzt - das gehört alles in die Kategorie "ich habs auf meine persönlichen Bedürfnisse angepasst, aber niemand sonst wird das haben wollen". :D