Man kann den Bildschirm RAM unter Basic mit
10 as$="BR"
20 poke 193,0: poke 194,4
20 poke 173,231: poke 174,7
30 sys57812 b$,8
speichern. Weiß jemand wie man den Bildschirm wieder laden kann ?
Viele Grüße
Udo
Du bist in Begriff, Forum64 zu verlassen, um auf die folgende Adresse weitergeleitet zu werden:
Bitte beachte, dass wir für den Inhalt der Zielseite nicht verantwortlich sind und unsere Datenschutzbestimmungen dort keine Anwendung finden.
letzter Beitrag von GoDot am
Man kann den Bildschirm RAM unter Basic mit
10 as$="BR"
20 poke 193,0: poke 194,4
20 poke 173,231: poke 174,7
30 sys57812 b$,8
speichern. Weiß jemand wie man den Bildschirm wieder laden kann ?
Viele Grüße
Udo
So geht das nicht, umueller-wsw !
Das funktioniert nur so:
Mit 57812 legst du nur die Fileparameter fest (lädst aber noch nicht), 173/174 ist komplett falsch (muss 174/175 sein), und das Speichern macht dann 62957. Bei Paradroid musst du noch bemerken, dass du hinterher NEW eingeben musst, sonst kriegst du "out of memory". Die Zeilen 120/130 speichern zusätzlich die Farben ab.
Arndt
Hi,
erstmal Danke. Es funktioniert alles. Da load "name",8,1 innerhalb des Programms immer zum Anfang des Programms zurückspringt habe ich hier eine Routine eingeführt.
Den Speicherfehler "out of memory" habe ich bisher nicht erhalten?!
Da New das ganze Programm incl. Variablen löscht, ist das innerhalb des Programms keine Lösung. Man sägt am Ast....
Gruß Udo
Ein bischen robuster wird das ganze, wenn man nicht mitten ins ROM springt und 780..783 als Übergabeadressen für die CPU-Register hernimmt, anstatt auf *irgendwelche* Zeropage-Adressen zuzugreifen! Dafür gibt's schließlich die Einsprungtabelle ins ROM, und dann klappt das auch mit Schnellladern:
Zum Speichern:
193 und 194 werden deshalb genommen, weil die Werte am Start der KERNAL-SAVE-Routine genau dahin kopiert werden. Sie werden also quasi "in sich selbst" kopiert und man braucht keine anderen zwei Adressen in der Zeropage dazu herzunehmen. <end> ist die Adresse des letzten Bytes des zu speichernden Bereichs plus 1!
Zum Laden (ohne "versehentlichen" Neustart des Programms oder wilde "IFA=0THENA=1:LOAD"-Konstruktionen):
Für die Anwendung im OP also:
... mit N$ als gewünschtem Dateinamen. In Adresse 186 steht übrigens das zuletzt genutzte Gerät. Bei der Verwendung mit SYS57812 sollte dann allerdings zuerst eine Variable damit zuweisen, als z.B. DN=PEEK(186), da die Routine in 57812 als allererstes 186 auf 1 setzt (Default Tape) bevor die Parameter in BASIC-Text abgefragt werden. Also: DN=PEEK(186):SYS57812(N$),DN (oder ,DN,1) ... usw.
robuster wird das ganze, wenn man nicht mitten ins ROM springt und 780..783 als Übergabeadressen für die CPU-Register hernimmt
Natürlich! Es geht aber auch so - auf jedem C64...
Aber ich versteh schon, was du sagen willst. Ist eigentlich auch mein eigener Standpunkt...
Arndt