Hello, Guest the thread was called116 times and contains 1 replay

last post from Mike at the

Vergangenheitsbewältigung Teil II: "Funsaver" zum Speichern des gesamten RAMs

  • In meiner sündigen Jugend wollte ich unbedingt auch ein großer Cracker sein, aber weil es dazu nicht ganz gereicht hat, habe ich mir mit einem Kumpel preiswerte Spiele (meistens Kassettenspiele von Mastertronic usw.) gekauft und auf die eine oder andere Art auf Diskette kopiert. Da auch diese billigen Spiele in aller Regel einen Kopierschutz hatten, war das irgendwie auch eine Art von Crack, aber halt natürlich reichlich provinziell und billig. Mein Standardvorgehen war dabei, das Spiel irgendwie zu unterbrechen (zur Not per Reset), im Zweifel den gesamten Speicher auf Diskette zu dumpen, die Startadresse zu suchen und das ganze dann wieder zusammenzupacken - im besten Fall mit einer minimalen Intro, um meinen vermeintlichen Ruhm zu mehren.


    Wie auch immer: ich habe mir dafür so 1986/1987 eine kleine Maschinenspracheroutine geschrieben, die im Kassettenpuffer ab Adresse 828 liegt und die auf das gesamte RAM zugreifen kann, indem sie für den Lesezugriff das Basic-ROM, Kernal-ROM usw. ausblendet. Weil der Kernal zum Speichern benutzt wird, wird das Ausblenden der ROMs immer nur kurz während des Lesezugriffs gemacht. Die Idee war/ist, die Startadresse bei 0x3d0 (Standard: 0x800), die Endadresse bei 0x3d2 (Standard: 0xffff) und den Filenamen bei 0x3d4 (Standard "AAAA-EEEE) vor dem Aufruf von SYS828 per Monitor oder Poke zu überschreiben, um so z.B. gezielt den Bereich A000-AFFF in eine Datei "A000-AFFF" zu schreiben.


    Leider habe ich damals keinen Assembler benutzt, sondern die Programme direkt mit einem Monitor in den Speicher gehackt bzw. bestenfalls zeilenweise assembliert. Insofern hatte ich dafür nie einen Quelltext. Im Rahmen der Aufarbeitung meiner C64-Vergangenheit habe ich diese kleine Programm jetzt disassembliert, ins C64Studio importiert, etwas aufgehübscht und kommentiert. Ich hoffe, ich habe dabei nichts vermurkst, aber zumindest mit den Standardeinstellungen scheint es zu tun.

    Aus Sicherheitsgründen habe ich ein D64 angehängt, denn wenn man die Funktion per SYS828 aufruft , wird sofort mit dem Schreiben eines Dumps von 0x800 bis 0xFFFF auf die gerade eingelegte Diskette begonnen.

    Mir ist selber klar, daß das ein sehr rudiimentäres Programm ist und es keinerlei Sicherheitsabfragen usw. gibt, aber es hat seinen Sinn erfüllt und viel mehr Platz ist eh nicht im Kassettenpuffer.

    Wie auch immer: vielleicht findet es ja irgendjemand hilfreich - und wenn nur als minimales Beispiel eines ASM-Programms in C64Studio.

  • In meiner sündigen Jugend [...]

    Ach, ja, da gab's noch die etwas dekadentere Methode, den C64 auf einem C128 in Bank 1 zu starten. :D


    Nach einem Reset in den C128 (wogegen sich das Programm/Spiel nicht wehren konnte) war es dann ein Klacks, den gesamten Speicher von $0400..$FEFF in einem wegzuschreiben. Von $(1)FF00 bis $(1)FF04 war dann leider die MMU im Weg, aber den Teil von $FF00 bis $FFFF konnte man dann nach Löschen der CBM80-Signatur (sofern notwendig) noch hinterherschicken und dann beide Teile kombinieren.


    Zuletzt noch einen Loader geschrieben, welcher im Tape-Buffer sitzend das Programm/Spiel im RAM von $0400..$FFFF wieder rekonstruiert und dann gestartet hat ... fertig. :)