Hello, Guest the thread was called995 times and contains 36 replays

last post from Mac Bacon at the

RAMexp Erkennung

  • Ich habe eine Erkennungsroutine für meine Anpassungen gecoded.

    Es werden GeoRAM, REU und Supercpu erkannt und auch die vorhandene RAM-Größe.

    Könnte irgendwer Bitte mal das Programm auf echter Hardware testen.


    Weitere Infos stehen in der Textdatei im Anhang und natürlich auch im Quellcode.

  • OK, nicht unter realer Hardware, aber VICE tuts auch...


    Was ist bei einer SuperCPU mit 16Mb oder einer Ultimate mit 16Mb GeoRAM?


    Bei der SuperCPU wird bei Speicher immer 1 angezeigt, ob obwohl unter VICE 16Mb eingestellt sind. Meine reale SCPU hat auch eine RAMCard mit 16Mb Speicher.


    Nutze unter VICE die GeoRAM mit Patch mit 16Mb, aber es werden nur 4Mb (63) erkannt. Die Ultimate kann da auch 16Mb GeoRAM einrichten, also gibt es auch "reale" Hardware, nicht nur VICE.


    An meinem C64 mit TC64 und einer 16Mb REU und 4Mb GeoRAM wird die GeoRAM korrekt erkannt, die REU aber nicht.

  • Ja, genau da hakt. Es git Unterschiede zwischen Winvice und realer Hardware.

    Die Erkennung sollte auch nur das erkennen, was real möglich ist, die Ultimate mal ausgenommen.


    Die Erkennungsroutine soll nur bis Maximal 2MB REU und Maximal 4MB Georam erkennen zudem auch Maximal 1MB ScpuRam erkennen.

    Die Routine lässt sich auf die gewünschte Größe einstellen. Wenn z.B. als Minimum 512kb vorausgesetzt wird, ist es egal, ob die Ramexp über mehr RAM verfügt.

    Die Supercpu Ramerkennung ist auf 1mb begrenzt. Wenn mehr vorhanden ist, wird das auch als 1mb interpretiert, weil meine Anpassungen maximal 1mb benötigen.

    Das erspart mir auch zusätzlichen Code.

  • NeoRAM und GeoRAM fast sind identisch. Die NeoRam hat im gegensatz zu GeoRAM eine Batterie eingebaut. Die Daten bleiben erhalten, selbst wenn die NeoRam aus dem

    Expansionsport entfernt wird.


    Die Erkennung findet im Stillen statt. Ich habe das für meine Anpassungen gecodet, um nicht ständig drei identische Anpassungen zu erstellen, sondern nur eine, die die

    vorhandene RAMExp automatisch erkennt und den entsprechenden Treiber installiert.

  • Die Erkennungsroutine soll nur bis Maximal 2MB REU und Maximal 4MB Georam erkennen zudem auch Maximal 1MB ScpuRam erkennen.

    Ah... ok, dann keine generische Routine sondern für den speziellen Einsatzzweck.


    Das erklärt evtl. auch warum an meinen C64 mit TC64 + GeoRAM+CREU nur die GeoRAM erkannt wurde. Die CREU wird dann nicht mehr getestet? Da wurde 0/0 angezeigt.


    Da wäre die Frage ob sich an einem realen System beide gleichzeitig nutzen lassen (z.B. Weiche oder RAMLink?). Falls ja, evtl. CREU bevorzugen wegen schnellerem Chip? Oder die GeoRAM, da evtl. eine NeoRAM+Batterie drannhängt (hat ja auch einen Vorteil).

  • Die Geo bzw. Neo Ram läßt sich problemlos gleichzeitig mit der Reu verwenden. Weitere Module auser reine ROM Module lassen sich dann nicht mehr Verwenden. Das Ram-Link läßt sich auch mit der Reu Verwenden. Georam und Ram-Link Torbetieren sich.

  • Ich müsste die Routine mit menschlichen Vorlieben coden, dass was der Eine oder Andere nun lieber mag, und das kann ich leider nicht.:)

    Ich kann aber die Testprogramme für die GeoRAM und die REU durchlaufen lassen. so wird dann beides angezeigt.

    Bei der SuperCPU kann das RAM nur getestet werden, wenn auch eine angeschlossen ist. Ohne SCPU würde das Testprogramm abstürzen, weil ich dafür den 65816-Code nutzen muss.

    Ohne Longadresseing, ist es nicht möglich, das vorhandenen RAM richtig zu testen.

  • Bei der SuperCPU kann das RAM nur getestet werden, wenn auch eine angeschlossen ist. Ohne SCPU würde das Testprogramm abstürzen, weil ich dafür den 65816-Code nutzen muss.

    Hilft Dir das hier? Ich teste ob eine SCPU vorhanden ist durch Abfragen von $D0BC:

    Wenn das zutrifft, dann kann man den 16Bit-Code nutzen...


    Ich müsste die Routine mit menschlichen Vorlieben coden, dass was der Eine oder Andere nun lieber mag, und das kann ich leider nicht. :)

    Nö... das kannst Du entscheiden und der Anwender muss damit leben ;)


    Die neue Version teste ich mal heute Abend :)

  • .....Nö... das kannst Du entscheiden und der Anwender muss damit leben.


    Recht hast du.:):)


    Danke für deinen Code. Ja, teste die neue Version mal auf Herz und Nieren. Wenn Verbesserungen gewünscht werden, werde ich diese auf alle Fälle im Code einfügen.


    PS: Bei der ROM v1.40 funktioniert die RAMCard nicht richtig. Das hatte ich beim Testen der SCPU-RAMDisk in Erfahrung gebracht. Lies mal ab Post 51 die Kommentare im unten angegebenen Link


    scpu-ramdisk


  • Hm... also die V2 erkennt bei mir am C64 die CREU (ohne GeoRAM) des TC64v2 nicht. Ergebnis: 2/0. Egal ob mit 1Mb, 4Mb oder 16Mb. Egal ob Turbo an oder aus.


    Das die REU aktiv ist sehe ich aber wenn ich meine eigenen Programme starte, das testet ja auch alle RAM-Erweiterungen durch und die REU wird da mit der richtigen Größe angezeigt.


    Schalte ich um auf eine 1Mb GeoRAM bekomme ich 1/15. Die GeoRAM des TC64 wird also erkannt.


    Unter VICE funktioniert V1 und V2.

  • Ich habe eine Erkennungsroutine für meine Anpassungen gecoded.

    Es werden GeoRAM, REU und Supercpu erkannt und auch die vorhandene RAM-Größe.

    Könnte irgendwer Bitte mal das Programm auf echter Hardware testen.


    Weitere Infos stehen in der Textdatei im Anhang und natürlich auch im Quellcode.

    Wenn Du es vollständig machen willst, könntest Du das Quartett mit 256 kB CMOS-Speichererweiterung aus der 64'er noch vervollständigen. Kennst Du die? Ich habe die zwar nicht, aber für die gab es damals sogar eine Geos-Anpassung. Aber vielleicht hast Du das auch bereits versucht und da gab es einen Haken.

    Die fiel mir gerade noch ein, dass es die Speichererweiterung ja auch noch gibt.

  • Nachdem es bei WW auch nicht geht... hier mal mein Code wie ich eine CREU erkenne (nicht die Größe, nur ob Ja oder Nein, stammt aus GEOS-Code, daher die I/O-Umschaltung)):


    Die Größe teste ich in dem ich (wie bei der GeoRAM wegen 16Mb-Patch) in dem ich Testbytes in die Speicherbänke schreibe und wieder auslese. Wenn das Byte nicht mehr zur Vorgabe passt ist die Speichergrenze überschritten und ich hab die Größe.

  • Für eine 16mb REU ist die Routine auch nicht ausgelegt, sondern nur für Maximal 2MB. Die GeoRAM Erkennung ist nur bis 4MB ausgelegt. Das stand auch alles im Quellcode.

    Einzig die SCPU wird, wenn vorhanden, mit 16MB erkannt.:) Ich hatte das am VinVice x64 Version getestet und es wurden die richtigen Werte angezeigt. Die x128 Version nutze ich nicht für das Testen.


    @darkvision


    Danke für den Code. Den werde ich morgen mal ich den Code einbauen und testen.:)


    TC64v2 und die Ultimate64 kann ich leiden nicht testen, weil ich diese Hardware leider nicht besitze.


    Achja und es darf nur eine Erweiterung aktive sein.

  • Die x128 Version nutze ich nicht für das Testen.

    Ich habs dennoch mal probiert, da kamen total krumme Werte raus... ich denke mal das funktioniert nur am 64er...


    Abgesehen davon glaub ich das die REU nur im 1MHz-Modus funktioniert. Im 80Z-Modus sind das aber 2MHz... (glaub ich, der 128er ist nicht so meines...)


    Danke für den Code. Den werde ich morgen mal ich den Code einbauen und testen. :)

    Ein Teil der Credits muss auch an markusC64 gehen, der mir bei der GeoRAM geholfen hat, die Routine für die CREU wurde daran angelehnt. :thumbsup:


    Achja und es darf nur eine Erweiterung aktive sein.

    Hab ich bei meinen letzten Tests beachtet.

  • Für eine 16mb REU ist die Routine auch nicht ausgelegt, sondern nur für Maximal 2MB.

    Der REU-Test geht tatsächlich bis 8MB

    Aber auch bei CBM-REU 1 MB oder 8 MB (1541 UII+) ändert sich hier das Ergebnis nicht:


    1

    0

    2

    0

    3

    0


    Gruß

    Werner