Hallo Besucher, der Thread wurde 4,2k mal aufgerufen und enthält 7 Antworten

letzter Beitrag von angryking am

How to detect size of GeoRAM?

  • You will need to check for page mirrors manualy.


    - Save Page 0 to normal memory.
    - Write some known value to page 0. $de,$ad,$f0,$0d repeated to fill the page would be a good value. ;)
    - Flip trough all pages and check when the known value is seen.
    - If we get our known value we have the size of the GeoRAM/NeoRAM.
    - Dont forget to write back Page 0. :)

  • Hi!


    Many thanks!


    But I'm confused...


    I'm using to detect size of REU e.g. 10 known values to bank $00 - $ff and at mem-switch if is compare error, this means that the latest bank was size of REU...


    So, why PageZero of memory - it may cause unknown computer behavior - ZeroPage is used for lot of system values...


    Or I understand not correctly?


    Miro

  • About using REU and GeoRAM at the same time: this is not easily possible, because the command registers of both expansions share the same I/O area in the C64 memory map: IO2 from $DF00-$DFFF. REU uses $DF00-$DF0A but is mirrored all over the place, and GeoRAM uses only two bytes $DFFE-$DFFF but also mirrored.


    Now in NeoRAM I reduced the mirroring to $DFC0-DFFF, so there is a chance to use it together with REU if it doesn't care about writes to its mirrors at $DFFE-$DFFF. It shouldn't since the registers are unused.


    About size detection of GeoRAM/NeoRAM it isn't easy because there exist different versions from 256kB up to 2MB. Some versions use memory mirrors others have memory holes. E.g. my NeoRAM uses 512kB minimum and then there are holes at 1MB-2MB. Maybe you can talk to cbmhardware who wrote a program that works well with different versions: http://www.cbmhardware.de/georam/index.php

    Code: Floppy Fehlerkanal abfragen - Ausserdem kann ich bei "drive not ready" den I: und N: Befehl verwenden und notfalls den Kopf manuell zurückschieben. Und Finger weg vom Stepper!
    1. 10 open1,8,15 : rem 8 ist die Geräteadresse und das kann man bei Bedarf natürlich anpassen
    2. 20 get#1,a$:?a$;:ifst<>64goto20 : rem Das CLOSE 1 am Ende kann man sich sparen, weil beim RUN automatisch ein CLOSE ALL ausgeführt wird.
    3. RUN
  • Ich habe mich hieran auch versucht und beigefügtes Testprogramm entwickelt, um die Größe einer GeoRAM/NeoRAM zu testen. Der Teil zum Erkennen, ob überhaupt eine GeoRAM angeschlossen ist, ist in dem Programm nicht enthalten, aber ohne angeschlossene GeoRAM kommen trotzdem Werte raus, die den eindeutigen Rückschluss erlauben.


    Im Vergleich zu den anderen Versionen, die man u. U. im Netz finden kann, kann mein Code die GeoRAMs mit Kapazität 8 MB und 16 MB, die ich in der 1541 Ultimate II Firmware eingebaut habe, ebenfalls erkennen.


    Ich würde mich freuen, wenn ich Testergebnsse bekäme, ob das Programm korrekt arbeitet. Insbesondere auf NeoRAMs, die Speicherlöcher haben (diese Situation emuliert Vice nicht).


    Wenn alles geht, liefere ich den CC65 Queltext nach.


    Nachtrag: Sehe gerade, dieser alte Thread ist im C128 Forum. Naja, läuft auch auf jenen, nur halt im C64-Mode. Und natürlich auf allen C64.

  • ch glaube, ich habe hier noch einen Quelltext angekündigt und dann vergessen, Hier ist er.