Hallo Besucher, der Thread wurde 10k mal aufgerufen und enthält 86 Antworten

letzter Beitrag von Stephan Scheuer am

scpu-ramdisk

  • supercpu ram-disk zum testen



    infos und die befehle der suercpu ram-disk sind im 7z-archive



    das wollte ich schon immer mal versuchen. eine ramdisk für die scpu.


    ich hätte nicht gedacht, dass es so schwierig wird, eine ram-disk zu machen.


    vielleicht wäre es besser gewsen, auf basic- und kernalrom routinen zu


    verzichten. die haben nur probleme bereitet. jsl geht nicht,da kein rtl


    vorhanden ist. bei der textdarstellung mittels $ab1e muss dieser in der


    bank #$00 liegen weil kein bank-byte verarbeitet wird. usw. die bank #00


    wollte ich vom code völlig freihalten. das habe ich dann doch recht gut geschafft.





    stephan

  • dank des acme assembler, der auch den 65816 code verarbeitet.


    sonst wäre es sehr viel schwerer für die scpu zu coden.



    die daten in der ram-disk sind völlig sicher, gegen einen soft-reset.


    auch können spiele gespielt werden. nur angepasste software (geos), die die erweiterten


    ram-bereiche verwenden, überschreiben die ram-disk.


    ich werde die ram-disk soweit erweiten, dass es sogar möglich ist,


    nachladespiele zu spielen. ähnlich wie disk2easyflash.




    stephan

  • Hallo Stephan,


    ich habe mir die RamDisk mal angesehen.
    1. Eindruck: geil läuft.
    2. Eindruck: hmm bissel umständlich vielleicht, aber OK ist ja gerade erst mal so eben fertig geworden
    3. Eindruck:
    Ich habe alle 4 RamDisk Pratitionen formatiert und habe nun 4 RamDisks zur Verfügung a 255 Disk Blocks. Kann ich dem Format irgendwie beibringen "etwas größere" Partitionen zu erzeugen ? Ich habe 16MB in der RamCard, die jetzt noch ziemlich brach liegen.


    Anregung:
    Chic wäre, wenn man die Files per OPEN / CLOSE und, oder LOAD SAVE (oder ähnlichem Befehl) laden, speichern könnte. Die Fummelei mit SYS54xxx"dateiname" finde ich eher Suboptimal. Hintergrund ist, daß eine meiner Anwendingsideen ist z.B. aus nem BASIC Programm auf die RamDisk zugreifen zu können, z.B. für mein BBS. Oder als RamDisk Zwischenspeicher bei etwas umfangreicheren Coding Arbeiten, wo mal diverse Dateien abgelegt werden können, um flott darauf zugreifen zu können.


    Trotzdem für nen ersten Wurf finde ich das schon verdammt geil. Und Respekt, daß Du dich da überhaupt dran gemacht hast. Viele andere labern nur.... Du bist ein Macher ! TOP !

  • Danke für da lob :)


    Die größe der ram-disk ist genau eine bank. von z.b. $020000 bis $02FFFF


    als ich mit dem coden angefangen habe, habe ich zuerst das directory gemacht.


    dummerweise besteht die blockanzeige nur aus einem byte (von #$00 bis #$ff blocks)


    und die anderen zeiger haben eine 16bit adressierung. es läuft im moment nur in einer bank.



    ich werde es natürlich so umprogramieren, das eine belibige ram-disk größe möglich ist.


    dafür muss ich auch alle 16bit pointer auf 24bit adressierung umändern. und die


    anzahl der möglichen dir-einträge erhöhen.



    ich dacht früher immer, dass es doch einfach seien müsste, ein programm von 16bit


    auf 24bit adressraum zu ändern. falsch gedacht. selbst die 1block lange decrunch-routine


    des "level-crushers v1.0" musste ich erstmal vertehen bevor ich das richtig umsetzen konnte.



    die sys-anweisungen werden durch ein sehr einfaches menü ersetzt.


    das einbauen der ram-disk zum nachladen von programmteilen wird auch ganz


    einfach funktionieren.


    anstatt nach jmp $ffd5, einfach nach jmp $d3XX springen.



    schon mal versucht ein spiel zu starten, dann einen soft-reset und danach auf die ram-disk zuzugreifen ?



    stephan

  • Nein ein Spiel habe ich noch nicht probiert. Dafür aber C*BASE 3.1. Die Daten auf der RamDisk waren jedenfalls noch da.... :)
    Spiel test ich später mal. Momentan bin ich an einem anderen SuperCPU "Problemfall" dran.
    Das Punter Protokoll will nicht so richtig mit 20 MHz laufen und ich versuche gerade zu verstehen woran das liegt.
    Bisher muss ich nämlich im Coding immer per POKE53370,1 auf 1 MHz zurück stellen, damit das läuft (oder per Schalter).


    X-Modem und X-Modem1K laufen dagegen problemlos im 20MHz Modus.

  • Also ich glaub mich dunkel erinnern zu können das in einer der letzten
    Ausgaben der 64er eine Ramdisk für das SCPU-Ram dabei war.Damals hab auch ein
    wenig damit rumgespielt und dann weggelegt.Den Namen des Programms weiss nicht mehr
    aber es funktionierte leidlich.Alle Angaben ohne Kanone - kann auch ganz anders gewesen sein.

  • Hier mal die REU-Ram-disk


    es ist auch die beste ram-disk die es gibt.



    diese ram-disk wollte ich für die scpu anpassen.


    weil ich aber erstmal etwas über die funktionsweise einer ram-disk wissen wollte,


    habe ich mein eigenes projekt gestartet



    reu-ramdisk mit ,8,1 laden und


    sys25356
    poke780,9
    poke781,207
    sys25350


    eingeben.


    danach kann die ramdisk als laufwerk 9 benutzt werden


    z.b. load"$",8 zeigt das dir an

  • nein eine ramdisk für die scpu gab es nie.

    Das muss ich kommentieren. :) Es gab keine Ramdisk für die SuperCPU die man als User als solche verwenden konnte, ja. Aber: Ich habe Ende der 90er eine Ramdisk für die SCPU geschrieben und in Spiele integriert, das waren The Train, Last Ninja 3, Oil Imperium und ich glaube noch Boom und Bburago Rally. Man konnte die Spiele ganz normal spielen, jedes nachgeladene File blieb in der Ramdisk und kam beim nächsten Laden direkt von dort. Da man nicht vorher wissen konnte (v.a. bei Oil Imperium) wann welches File kommt und wie groß das ist, musste es ein Ramdisk-internes Directory und Blockbelegungstabelle geben. Nur zum Löschen gab es keine Funktion. :) Naja ich nannte es damals Ramdisk, aus User-Sicht war es eher eine Art File-Cache.

  • Du bist der Thunderblade,


    aus ende der 90ger mit den scpu-anpassungen ?

    Ja, der bin ich. Damals hielt ich große Stücke auf die SuperCPU, der 65816 faszinierte mich. Die Möglichkeit, statt zum Amiga oder PC zu wechseln, mehr aus dem C64 als Plattform zu machen fand ich toll. Ich war bis 2004 auf dem C64 aktiv, zuletzt ein wenig bei Metal Dust, wo ich u.a. die von Honey/Welle:Erdball gelieferte Musik in Sequenzen zerlegt habe, damit nicht jeder Level mehrere FD-2000 Disks einnimmt. :) Seit 2012 bin ich wieder ein wenig in der C64-Szene unterwegs. Game Art Beyond ist das neueste Produkt, an dem ich mitgewirkt habe.


    in der go64 wurde viel über die scpu geschrieben.

    Ja, das habe ich alles geschrieben... "SuperCPU durchleuchtet". Seufz, wenn mir damals jemand gesagt hätte: "In 20 Jahren wird man sich noch daran erinnern, was du da schreibst", hehe ich glaube ich wäre gerührt gewesen. :D Damals hatte ich keinen ACME-Assembler, aber zum Glück den Virtual Assembler von Sputnick. Hach, was waren das Zeiten... Ich weiß jedenfalls gut in welchen Gefilden Du Dich bewegst... Hut ab! Der 65816 ist gut zu verstehen - aber manchmal schwer anzuwenden... ;)

  • Deine artikel waren die erste hilfe und ich lese diese heute noch.


    z.b. habe ich es geschafft, ein mit dem exomizer gecrunchtes program in einer x-belibigen bank zu entpacken.


    das klappte vorher überhaupt nicht und zwar deswegen. siehe code



    zuerst habe ich mich auf das easyflash konzentriert. diverse routinen entwickelt,


    die so flexibel und kurz wie möglich sind.


    "borrowed time" war mein bisher schwierigstes spiel.


    aber in letzter zeit und mittels acme,das macht die sache bedeutend leicher (.rl,.al usw), mache ich auch wieder was für die scpu.


    mein bisher im umfamg größtes projekt, ist eine anpassung des "dark squeezer v3 und des level-crusher v1" auf 24bit adressierung.


    damit ist es möglich bis zu 14mb große dateien zu crunchen. ein sehr schweres projekt.



    den virtual assembler und den dreamon benutze ich auch noch.


    im emulator ist es nicht möhlich, das sperrbyte zu deaktivieren um ab $d300 zu schreiben.


    ich muss dam immer nach $01d300 schreiben.




    achja, hier meine echte 24bit decrunch-routine "level-crusher v1.0"




    Code
    1. 080f ba tsx
    2. 0810 bd 6a 0b lda $0b6a,x
    3. 0813 9d fc 00 sta $00fc,x ; ---- hier liegt das problem
    4. 0816 ca dex ; ---- ein teil liegt in der zp
    5. 0817 d0 f7 bne $0810 ; ---- der andere in der entpack-bank
    6. 0819 4c 38 0b jmp $0b38 ; ---- das funktioniert so nicht