NeoRAM Brainstorming

  • NeoRAM Brainstorming

    @x1541

    Coole Hardware, vielen Dank dafür! 2 Megabyte SRAM auf meinem C64, noch dazu Batterie gebuffert, davon hätte ich geträumt als Jugendlicher. Quasi der USB Stick der 80er ... :thumbsup:

    Zwei Erweiterungen zum Neo-RAM wären aus meiner Sicht wünschenswert:
    • Ein Reset Taster
    • Optional die ersten 8KB ab $8 einblendbar, quasi als Modul mit Autostart



    @Enthusi

    Gigageil dein Neo-Drive!! Respekt was du da in ein paar hundert Byte untergebracht hast! :respect:

    Das SYS57E3 hat mich ca. 40 Sekunden verblüfft ehe der Groschen gefallen ist.

    Auch hier fallen mir spontan Verbesserungswünsche ein:
    • Problem: Nach einem Restore oder Softreset geht der LOAD Vektor flöten. Das SYS57E3 geht dann nicht mehr.

      Abhilfe: Nach jeder LOAD oder SAVE Operation zurück auf die Page 0 Block 0 schalten, dann würde SYS57E3 immer gehen.

    • Problem: Lange Programme laden nicht.

      Abhilfe: Code unters Kernel ganz nach oben verlegen ($FC00). Der Load Vektor zeigt auf eine Neo Page die den Kernel ausblendet und auf $FC.. springt

    • Problem: File Kopierprogramme laufen nicht

      Abhilfe: Der LOAD "$",2 sollte "richtig" funktionieren und das Directory als Datei zurückgeben. Dazu müsste man allerdings auch die CHKIN,CHKOUT,OPEN,GETIN,BSOUT Vektoren umsetzen und emulieren. Dafür wäre man einer richtigen Floppy allerdings schon wieder einen Schritt näher ...

    • Wenn man sich sehr bemüht könnte man den Code direkt in der Neo-Page ausführen. Man verwendet halt fix die letzten 10 Bytes für Banking oder man überlegt sich eine kleine Switcher Routine außerhalb der Page (Kassettenbuffer?)

    • Langfristig wäre ein D64 Support der Hammer!! Ich würde dazu D64 LOAD und D64 SAVE schreiben. Platz für Code wäre ja genug vorhanden, man könnte ein DOS emulieren so wie das SD2IEC.

    • Langfristig wäre ein Neo Kernel eine Idee. Statt der Kassetten Routinen kommen Routinen für das Neo Drive rein. Unterprogramme kann man ja direkt in vielen Neo Pages auslagern, Platz ist ja genug ... Eine Grundfunktionalität hat ja im Kernel bestimmt Platz.
    Letztlich ist alles nur Illusion
    Es gibt hier nichts von Bedeutung
  • Diddl schrieb:

    @x1541

    Coole Hardware, vielen Dank dafür! 2 Megabyte SRAM auf meinem C64, noch dazu Batterie gebuffert, davon hätte ich geträumt als Jugendlicher. Quasi der USB Stick der 80er ... :thumbsup:

    Zwei Erweiterungen zum Neo-RAM wären aus meiner Sicht wünschenswert:
    • Ein Reset Taster
    • Optional die ersten 8KB ab $8 einblendbar, quasi als Modul mit Autostart




    Danke, freut mich dass es Dir so gefällt :)

    Reset Taster wäre trivial und ich hatte es mir auch schon überlegt, aber dann müsste man das schöne Gehäuse wieder bearbeiten ;) So hab ich es dann doch nicht realisiert, zumal es doch die schönen Userport-Resettaster gibt :gruebel

    8kB vom vorhandenen RAM als Modul einzublenden dagegen ist gar nicht trivial, da nur 8 Adressleitungen zwischen C64 und den SRAMs verdrahtet sind. Der Rest geht auf die Register. Das sozusagen umschaltbar zu machen wäre zuviel Aufwand nur für einen Autostart. Wenn es aber reichen würde nur 256 Bytes einzublenden, das wäre relativ einfach machbar, liesse sich evtl. sogar noch nachrüsten. Über das freie Registerbit liesse sich evtl. sogar die EXROM Leitung schaltbar machen, müsste man sich mal ansehen. Nur verliert man so ein Stückchen Kompatibilität zur originalen GEORAM.
    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!
  • x1541 schrieb:

    Reset Taster wäre trivial und ich hatte es mir auch schon überlegt, aber dann müsste man das schöne Gehäuse wieder bearbeiten ;) So hab ich es dann doch nicht realisiert, zumal es doch die schönen Userport-Resettaster gibt :gruebel

    Mal ne ganz fiese Idee: Im Gehäuse der Neoram baut man einen Reedschalter (z.B. Reichelt KSK 1A87) ein. Den verdrahtet man an den Resetpin und Masse, und positioniert den dann so, das er mit einem Magneten von außen ausgelöst werden kann.

    Oliver W.
  • x1541 schrieb:

    Wenn es aber reichen würde nur 256 Bytes einzublenden, das wäre relativ einfach machbar, liesse sich evtl. sogar noch nachrüsten.

    Das wäre genial! Ein Block würde mir schon langen.


    x1541 schrieb:

    Über das freie Registerbit liesse sich evtl. sogar die EXROM Leitung schaltbar machen, müsste man sich mal ansehen. Nur verliert man so ein Stückchen Kompatibilität zur originalen GEORAM.

    Kompatibilität verlieren? Nicht wenn man es über einen Jumper oder Schalter wählbar macht
    Letztlich ist alles nur Illusion
    Es gibt hier nichts von Bedeutung
  • Also ich habe mir mal Gedanken gemacht, wie folgt könnte es gehen:

    1. Modulbereich für Autostart aktivieren

    Modifikation: das freie Registerbit, Pin 19 vom HCT273 mit Expansionport Pin 9 (/EXROM) über Jumper verbinden.

    Das Bit ist nach dem Einschalten auf 0 und aktiviert so den Modulbereich für Autostart bei $8000. Per Software kann man dann den Modulbereich abschalten, allerdings muss jeder Bankingzugriff auf das Modul das Bit entsprechend setzen sonst geht der Modulbereich wieder an! Für Software, die das Bit falsch setzt, muss man den Jumper abstecken.

    2. RAM im Modulbereich einblenden

    Das ist leider schwieriger, weil hier die Select Signale /ROML (Pin11 Export) und /IO1 (Pin7 Export) passend verwurschtet werden müssen. Wahrheitstabelle wäre:

    Quellcode

    1. /ROML /IO1 out
    2. 0 0 0 (ungültig, gibts so nicht am 64er)
    3. 0 1 0
    4. 1 0 0
    5. 1 1 1


    Das wäre also ein AND Gatter. Haben wir aber leider keins über auf der Platine :( Und wegen einen AND einen TTL nachrüsten ist auch doof.

    Alternativ könnte man ein wired AND aus zwei Schottky Dioden bauen, und so die Signale zusammenführen. Evtl. ist noch ein Pullup Widerstand nötig.

    Schaltbild:

    Brainfuck-Quellcode

    1. /ROML ----->|-----\
    2. +-------- out (HCT138 V2 Pin5)
    3. /IO1 ----->|-----/


    Oder ich muss NeoRAM V1.2 doch mit einem GAL anstatt von den beiden TTLs V1 und V2 (die beiden HCT138) bauen.
    Jetzt bitte Kommentare :)
    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!
  • x1541 schrieb:

    Oder ich muss NeoRAM V1.2 doch mit einem GAL anstatt von den beiden TTLs V1 und V2 (die beiden HCT138) bauen.

    Genau das war auch mein Gedanke!

    Wenn das GAL NeoRAM kommen sollte, bitte eines für mich reservieren!


    Im übrigen könnte man mit dem GAL evtl auch mehr als eine Page einblenden denke ich? Oder gleich einen CPLD und ein eigenes Control Register wo man /GAME und /EXROM schalten kann. Und einen Schreibschutz für das RAM ab $8. So wäre GEORAM Kompatibilität gegeben
    Letztlich ist alles nur Illusion
    Es gibt hier nichts von Bedeutung
  • x1541 schrieb:

    Alternativ könnte man ein wired AND aus zwei Schottky Dioden bauen, und so die Signale zusammenführen. Evtl. ist noch ein Pullup Widerstand nötig.

    Schaltbild:

    Brainfuck-Quellcode

    1. /ROML ----->|-----\
    2. +-------- out (HCT138 V2 Pin5)
    3. /IO1 ----->|-----/

    Das ist ein Wired-OR

    Ich fände es ja interessanter, das freie Bit im Register für eine 4MB-Version zu verwenden - falls sich mal jemand die Mühe machen sollte, dafür die Software anzupassen.

    Quellcode

    1. 10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    2. 20 forj=1to5:printchr$(rnd(1)*16+70);:next
    3. 30 printint(rnd(1)*328)-217

    sd2iec Homepage
  • Das teuerste ist mit Abstand das RAM. Ein GAL anstatt zweier TTL sind nur Mehrkosten von ca. 50 cent. Wenn überhaupt :)

    Eine Erweiterung auf 4MB ist mit SRAM deshalb in meinen Augen nicht sinnvoll. Die Kosten, egal ob es nun Chips mit 512kB oder 2MB pro Chip sind, belaufen sich auf ca. 15 Euro pro 2MB, also es wären alleine 30 Euro für die 4MB!

    Momentan sind glaube ich die 512kB RAMs noch am günstigsten, die 2MB RAMs haben den Nachteil etwas teurer, schwerer erhältlich zu sein und dazu ist die Bauform unpraktischer (finepitch SMD). Trotzdem tendiere ich irgendwann dazu, diese Bauform zu verwenden um etwas Platinenplatz zu sparen. Aber da würde ich mir dann überlegen ob man das irgendwie vorbestücken lassen kann.
    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!
  • Halt schade dass es keine CPLD im 16 bis 20 pol DIL Gehäuse gibt.
    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!
  • OliverW. schrieb:

    Wie sieht es denn mit dem GAL programmieren aus? Ist sowas auch mit Ponyprog, usw. machbar??


    Es gibt da ja den GALblast und das einfachste "Kabel" ist auch sehr günstig zu machen :D Das Programm hatte ich früher aber mit der "richtigen" Platine dazu.

    armory.com/~rstevew/Public/Pgmrs/GAL/_ClikMe1st.htm
    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!
  • x1541 schrieb:

    OliverW. schrieb:

    Wie sieht es denn mit dem GAL programmieren aus? Ist sowas auch mit Ponyprog, usw. machbar??


    Es gibt da ja den GALblast und das einfachste "Kabel" ist auch sehr günstig zu machen :D Das Programm hatte ich früher aber mit der "richtigen" Platine dazu.

    armory.com/~rstevew/Public/Pgmrs/GAL/_ClikMe1st.htm


    Öööööhm... Danke. Aber, wegen einmal so ein GAL programmieren, *so* einen Aufwand... Dann mach das doch bitte Du für uns! :D

    Oliver W.
  • Diddl schrieb:

    ...
    Zwei Erweiterungen zum Neo-RAM wären aus meiner Sicht wünschenswert: [*]Ein Reset Taster

    @Enthusi

    Gigageil dein Neo-Drive!! Respekt was du da in ein paar hundert Byte untergebracht hast! :respect:

    [*]Problem: File Kopierprogramme laufen nicht

    Abhilfe: Der LOAD "$",2 sollte "richtig" funktionieren und das Directory als Datei zurückgeben. Dazu müsste man allerdings auch die CHKIN,CHKOUT,OPEN,GETIN,BSOUT Vektoren umsetzen und emulieren. Dafür wäre man einer richtigen Floppy allerdings schon wieder einen Schritt näher ...

    [*]Wenn man sich sehr bemüht könnte man den Code direkt in der Neo-Page ausführen. Man verwendet halt fix die letzten 10 Bytes für Banking oder man überlegt sich eine kleine Switcher Routine außerhalb der Page (Kassettenbuffer?)

    [*]Langfristig wäre ein D64 Support der Hammer!! Ich würde dazu D64 LOAD und D64 SAVE schreiben. Platz für Code wäre ja genug vorhanden, man könnte ein DOS emulieren so wie das SD2IEC.

    [*]Langfristig wäre ein Neo Kernel eine Idee. Statt der Kassetten Routinen kommen Routinen für das Neo Drive rein. Unterprogramme kann man ja direkt in vielen Neo Pages auslagern, Platz ist ja genug ... Eine Grundfunktionalität hat ja im Kernel bestimmt Platz.
    [/list]


    Lang ists her, ich grab mal aus. :D

    Hat sich denn an den angesprochenen Punkten was getan? Ich "formatiere" grad wiedermal die Neoram und sie hat sich immer noch ein wenig zickig.
    Dazu noch eine Hardwarefrage: Kann man irgendwo eine SchreibLED anlöten? So würde man sehen ob der C64 schreibt oder nix mehr tut.

    mfg :)