Hallo Besucher, der Thread wurde 58k mal aufgerufen und enthält 114 Antworten

letzter Beitrag von DerSchatten am

Neo-RAM

  • 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 :)

    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 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

  • Ich kann mal den Schaltplan online stellen der zur Platine passt. Das Layout überarbeite ich gerade, die Version will ich so nicht online stellen ...


    Ich baue das heute abend irgendwo hier im Forum ein ...

    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
  • Peinlich, peinlich.


    Da ist mir doch eben noch ein Schaltungsfehler aufgefallen :rotwerd:


    Betrifft aber nur die Jumper SJ1 und SJ2 auf der Platinenunterseite. Ich glaube die funktionieren nicht, also besser so lassen wie sie sind ...


    Ich habe zum V1.0 Schaltplan noch einige Kommentare hinzugefügt und hier ist er nun, bitteschön:


    NeoRAM V1.0 Schaltplan

    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
  • Wenn das Neoram nur mit z.B. zwei RAMs bestückt wird, muß dann *generell* was an den Jumpern'n (oben oder unten!) geändert werden??


    Ich frage deshalb nochmals, da ich verm. erstmal nur zwei Stück auflöten werde... :)


    Oliver W.

  • 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 :)

    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
  • 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

  • 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

  • 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





    Peter


  • 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

  • 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.

  • 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

  • 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

  • Enthusi hat das Programm vor ein paar Tagen schon angepasst, aber bisher unterstützt es NUR die 2MB Version :)


    http://noname.c64.org/csdb/release/?id=60560

    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