Neo-RAM


  • cbmhardware
  • 36363 Views 114 replies

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • NeoRAM und MMC64 geht doch!

    Oliver_A wrote:

    Original von x1541
    Oliver, wo Du schonmal hier bist: Hast Du eine Idee, warum ich bei I/O1 kein RAM lesen kann wenn ich die NeoRAM in das MMC64 stecke? Müsste normal doch gehen, oder?


    Ja,müsste es. Vielleicht versagt ja der Ramtest, weil standardmäßig bei $de00-$de0f der Clockport gemapped ist, und das MMC64 IO/1 in dem Bereich dann nicht durchschleift. Dazu müsstest du den Clockport bei $df20 mappen, das geschieht durch:

    lda #$0b
    sta $df11



    Ich habe noch einmal etwas probiert, und es hilft doch. Das wirkliche Problem sind die zu kurzen Kontaktstreifen am NeoRAM, oder die Portbuchse im MMC64, wie mans nimmt. Dabei hab ich extra alle greifbaren Buchsen untersucht, nur nicht die vom MMC64.

    In BASIC hilft auch POKE 57105,11 :)

    Man darf also das NeoRAM nicht ganz in das MMC64 einschieben, dann klappt es :roll:

    D.h. sämtliche Software für NeoRAM muss nun zuerst erkennen ob ein MMC64 vorhanden ist und $DF11 entsprechend programmieren, oder, als ersten Befehl das Register beschreiben. Beim NeoRAM geht der Zugriff ins Leere, bei GeoRAM wird $DFFF beschrieben, aber beim nächsten Zugriff zurückgesetzt. Also auch ungefährlich ...

    Zwischenzeitlich hatte ich Timingprobleme untersucht, Probleme mit den 3,3V Signalen des MMC64 vermutet, aber alles Sackgasse. Zum Glück :)
    Zuletzt repariert:
    21.2. Logitech M570 Microschalter ausgetauscht - geplante Obsoleszenz durch Billigtaster?
    19.11. Toshiba 3,5" Floppy defekter Elko durch Kerko getauscht auf Motorplatine
    27.11. 1541B Dauerlauf, Elko im Resetschaltkreis defekt, nicht der 7406 wie zuerst verdächtigt!
  • enthusi wrote:

    ich konnte das nicht auf sich beruhen lassen.
    Konnte das jetzt noch NICHT selbst testen aber sollte gehen :)
    Also wie gehabt alles, AUSSER:
    "Pfeil-nach-links" als Dateinamenanfang führt zu einer Formatierung vom Neo/Georam. (geht ungleich schneller also vorher :)
    Der Rest ist geblieben (ausser endlich ne Versionsnummer *g*).

    Also bitte: testen :o)

    geht um Version 0.10
    Ich habe das Programm eben mit meiner heute zusammengebauten NeoRAM (2048 KB) getestet. Der LOAD "<=",2 zum Formatieren funktioniert bei mir nicht (FILE NOT FOUND). Nach einem Durchlauf von FORMAT.PRG funktioniert Laden und Speichern aber offenbar problemllos. :)

    CU
    Kratznagel
  • @x1541: Hallo Nicolas. Kannst du aktuelle Eagle-Dateien hier im forum64 (oder auf deiner Webseite) zu diesem Projekt ablegen.. (oder bin ich zu blöd die hier zu finden..).. Habe nur einen Schaltplan ...2c.jpg gefunden..



    Peter
    AVR CP/M, C64, 1541, SwinSID, Apple-1 EMU, Jiffy-DOS, XM1541
  • Nein, die Jumper kannst Du einfach so lassen. Die Jumper geben ja nicht an, wieviel Speicher wirklich auf der Karte installiert ist, sondern wieviel Sie maximal ansprechen kann. Manche etwas dumm programmierte Software (z.B. BBG-RAM Testprogramm) erwartet aber dass der Jumper jeweils angepasst wird. Wenn Du nicht auf eine ähnlich zickige Software stösst, lass es wie es ist. Lieber die Software ändern als die Hardware ;)

    Effektiv gibt der Jumper vor, wie die 512kB RAM Bausteine angesprochen werden, wenn die Bits 5 und 6 im Bankregister verwendet werden (die es bei einer 512kB GeoRAM ja nicht gibt). Wird ein nicht vorhandener Baustein angesprochen, blendet man natürlich ein Speicherloch ein, und damit muss entsprechende Software klarkommen. Die meiste Software geht aber eh von fest 512kB aus und funktioniert einwandfrei. Und GEOS Configure 2.1 erkennt den Speicher auch immer richtig :)
  • Bounty für Autostart Ramdisk

    Hallo, alle Assembler-C64 Entwickler (enthusi etc. ;-)

    Ich möchte hiermit gerne eine kleine Prämie ausloben, für die Entwicklung einer Autostart RamDisk für die NeoRAM Karte. Eine Unterstützung für nur 512kb Bestückung ist mind. erforderlich.

    Darunter verstehe ich, das man die Karte einmalig formatiert und mit einem geeignetem Programm bespielt, sodaß sie, wenn man sie in einen jeglichen C64 steckt, diese die Karte automatisch als Ramdrive ansprechen kann. Also load"$",2 .. save"name",2,1 .. load"name",2,1 etc. automatisch funktionieren, OHNE das dazu noch ein Programm von einem anderem Datenträger benötigt wird!

    (Also nicht wie aktuell, erst ramdrive.prg z.B von mmc2iec/1541 geladen werden muß...)

    Das Programm muß unter die GPL (Version 2 oder größer) gestellt werden! D.h. Sourcecode muß

    öffentlich sein.

    Wenn das Programm die Tests bei mir erfolgreich absolviert und ich das Programmarchive habe, gilt

    die Entwicklung als erfüllt und ich werde die Prämie überweisen.

    Der Rechtsweg ist ausgeschlossen!

    Die Prämie beträgt: 30€ (dreißig Euro)

    Peter
    AVR CP/M, C64, 1541, SwinSID, Apple-1 EMU, Jiffy-DOS, XM1541
  • RE: Bounty für Autostart Ramdisk

    PeterSieg wrote:

    Darunter verstehe ich, das man die Karte einmalig formatiert und mit einem geeignetem Programm bespielt, sodaß sie, wenn man sie in einen jeglichen C64 steckt, diese die Karte automatisch als Ramdrive ansprechen kann. Also load"$",2 .. save"name",2,1 .. load"name",2,1 etc. automatisch funktionieren, OHNE das dazu noch ein Programm von einem anderem Datenträger benötigt wird!


    Dazu braucht man mehr als nur ein Programm. Da muss das Kernel des C64 gepatched werden.


    Michael
    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
  • ich habe den thread nur mal überflogen, weil mich die nutzung/unterstützung einer reu interessiert, so ein Teil aber scheinbar nirgends mehr auf der Welt zu haben ist... und ich hoffte, das neoram wäre eine art kompatibler ersatz.

    Zum Thema autotart-ramdisk: Wenn ihr die programme für die ramdisk schon habt und nur nicht separat von disk laden wollt: Hat das neoram kein flashbares ROM? das man wie eine cartridge programmieren kann? Dann könnte man ja das bestehende programm einbauen und die kernal-vectoren für load/save etc ja wie bei dem action replay/retro replay, etc. ja überlagern. Kurz: Funkiert das neoram gleichzeitig als cartridge? Sorry für meine blöden Fragen, aber am 64er habe ich nie rumgebastelt, sondern immer am original programmiert (von der nutzung meines action replay mal abgesehen...) und den thread habe ich auch nur überflogen :roll:

    die entwickler vom retro-replay können hier vielleicht mehr sagen, wie schnell/einfach das realisierbar ist
  • @lubber: Na dann lies mal anstatt nur zu überfliegen. Der Rat ist grundsätzlich allgemeiner Natur ;-)

    @cbmhardware:

    Evtl. hatte ich das hier dann nicht richtig verstanden..?

    NeoRAM Bestellthread




    Gikauf:
    Hallo Peter,
    ich wollte da mal ein Programm schreiben für die Geo-Ram, hat auch super Funktioniert, aber da die Geo-Ram nicht Speicher-resident ist, sprich nach dem Ausschalten wieder leer ist, blieb es bei den 1. Tests.
    Da die Neoram Kompatibel ist sollte es so Funktionieren: Nach dem Einschalten befindet sich die Ram auf $FF $FF in diesem Block wird die Startroute geladen, das Programm wird mit SYS gestartet und schreibt sich in einen freien Speicherbereich, setzt die Zeiger und was sonst noch nötig ist, dort befindet sich dann nur den Teil des Programms das dazu dient das ganze zu verwalten, das eigentliche Programm ist dauerhaft dann im Neoram und kann dort Direkt ausgeführt werden.


    enthusi:
    Hi
    Ja ein PRG das sich aus dem default-page beim Einschalten per SYS selbst initialisiert ist eigentlich kein Problem
    Werde mich beizeiten (das ist der Haken - ich ziehe grade um...) daran machen





    Peter
    AVR CP/M, C64, 1541, SwinSID, Apple-1 EMU, Jiffy-DOS, XM1541
  • PeterSieg wrote:


    @cbmhardware:
    Evtl. hatte ich das hier dann nicht richtig verstanden..?


    Er hatte es auch etwas duenn beschrieben. Nach dem Einschalten haben die Register (Adressen) mit denen die 16K-Page/Bloecke angesprochen werden einen Wert. Wenn ich es richtig verstanden habe, wird das wohl $FF $FF sein. Ist eigentlich auch nicht so wichtig. Das eigentliche Problem ist, dass sich dieses erste Programm noch in dem RAM des Moduls befindet, also erstmal in den Speicher des C64 transferiert werden muss, damit alle weiteren Zugriffe stattfinden koennen. Wenn man mal davon ausgeht, dass dieser Sektor einen "Boot" fuer eine Shell (oder sonstwas) enthaelt.
    Der zweite schnell stoerende Effekt waere, dass dieses Programm irgendwo Speicher belegt. Kleinigkeiten kann man evtl. unter $0400 ablegen, welches dann aber meistens nach Starten eines gepackten Programms zerstoert wird. Dann steht man beim naechsten Laden wieder "vor der Tuer" und die Registerwerte koennten auf einen ganz anderen Bereich zeigen.
    Nach meiner Meinung hat man zwei dicke Problem :

    1. die erste Routine muss per Hand aus der Georam in den C64 geholt werden.
    2. es belegt immer Speicher.

    So etwas erinnert mich immer wieder an einen Spruch : "wie man sich auch dreht, der A... bleibt immer hinten".

    Mit einem zusaetzlichen Modul (evtl. Ultimax-Mode) saehe die Welt schon ganz anders aus. Das waere dann aber deutlich mehr Aufwand. Nicolas, wie waere ein Atmel-Flash ? ;)

    Michael
    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
  • Im großen und ganzen richtig cbmhardware, aber etwas anders und einfacher ist es dann doch.
    Bei der Georam sind die Register $dffe (57342) und $dfff (57343) mit $FF (255) belegt, bei der Neoram habe ich festgestellt sind sie nach jedem Reset auf $00 (0). Die Daten liegen auf $de00 (56832) bis $deff (57087). Wenn man nun eine Laderoute in Maschinen Sprache in den Bereich auf $00 $00 legt kann man die Laderoute mit SYS Starten um das ganze besser zu merken kann man die Adresse $dea8 (57000) nehmen.
    Man gibt dann nach dem einschalten einmalig SYS57000 ein und hat das Programm am laufen.
    P.s.fall das Programm nicht Resetfest ist muß man natürlich nach jedem Reset den SYS Befehl wiederholen.
    Wem es beim Bit zählen schwindelig wird, der hat zuviel davon.

    Alt werden ist schön, das Altern nicht.
  • RE: Bounty für Autostart Ramdisk

    PeterSieg wrote:

    Also
    load"$",2 .. save"name",2,1 .. load"name",2,1 etc. automatisch
    funktionieren, OHNE das dazu noch ein Programm von einem anderem
    Datenträger benötigt wird!




    Bitte erläutere das 'etc'... wenn Du Dich auf LOAD "filename" / SAVE
    "filename" / LOAD "$" beschränkst könnte das klappen. Nachteil: Du
    kannst einmal gespeicherte Programme nicht ohne weiteres löschen. Oder
    muß es das volle Programm sein mit Kommandokanal (wenn ja: welche
    kommandos sollen unterstützt werden?) und OPEN 2,2,2,"datei,typ,modus"
    samt PRINT# ? Relative Files?



    Daß 'automatisch' nur zu Fuß mittels SYS-Befehl geht, hatten wir schon.
    Soll der nötige Programmcode ins RAM unterm Kernal-ROM, darf er nach
    $c000, oder wohin sonst? Selten gebrauchte Teile könnte man ggf. aus
    der Ram-Erweiterung nachladen (Swap-File-mäßig), aber ein paar wenige
    Bytes wirst Du zwangsläufug im Hauptspeicher haben, und je mehr Du
    swapst, desto lahmer wird das Ganze...
  • Hallo an alle.
    Ein einmaliges SYS xxxx ist völlig ok. Ideal wenn Resetfest.. wenn nicht aber auch ok!
    Wichtig sind mir die Ramdiskfunktionen wie:
    LOAD "$",2 - Directory holen.. LIST dann zeigen.. = MUSS
    LOAD "name",2,1 - Programm laden = MUSS
    SAVE "name",2,1 - Programm sichern = nice to have
    des Rest/etc. ist optional..

    Ich möchte halt erreichen, das ich mit einer einmal gefüllten NeoRAM zu einem anderem, nicht irgendwie vorbereitetem C64 - ohne weitere Laufwerke/Dateizugriffsmöglichkeiten gehen kann, diese NeoRAM einstecken, den C64 einschalten und höchstens SYS xxxx eingeben muß, um dann mind. die oben genannten Funktionen zu haben.. also z.B ein Spiel/Programm laden kann...

    Ist ja super, das so viele Antworten kommen und das es anscheinend doch eine Möglichkeit gibt..

    Peter
    AVR CP/M, C64, 1541, SwinSID, Apple-1 EMU, Jiffy-DOS, XM1541
  • :dafuer: Ich würde mir wünschen wenn jemand das Betacopy auf das Neoram anpassen würde. Das Tool gibt es ja bereits jeweils mit Reu, SCPU und Flash 8 Anpassung. Warum nicht auch ne Neoram Anpassung. Ich würde ebenfalls ne Prämie von 50 Euro zahlen.
  • LOAD, SAVE, LIST $ und SCRATCH kann das Ramdisk-Tool von enthusi ja schon.

    Und das Starten mittels SYS 57000 aus der NeoRam heraus wäre überhaupt kein Problem, wenn man es eh nur unmittelbar nach dem Einschalten machen möchte. Das wäre eine Sache von ein paar Minuten, einen zusätzlichen Loader dafür einzubauen (man bräuchte noch nichtmal den Original-Sourcecode dafür :D).

    Das ist im Prinzip mit jedem beliebigen PRG-File möglich. Bei dem Ramdisk-Tool müsste man nur aufpassen, dass es nicht seinen eigenen Loader auf der Page $00 $00 überschreibt. Aber auch das könnte man mit einem kleinen Trick sicherstellen. :)

    CU
    Kratznagel