★ APPLICATIONS ★ DIVERS ★ RAMDISC|CPC Amstrad International) ★![]() |
Ahsoft - Ramdisc (CPC Amstrad International) | Applications Divers |
Der schnelle Zugriff Eine RAM-Disk mit der VORTEX-Speichererweiterung Das Programm RAMDISK ermöglicht dem CPC mit der Speichererweiterung von VORTEX, deren untere Blöcke (0 bis &7FFF) als einfache RAM-Disk und Datenspeicher unter Locomotiv-BASIC zu benutzen. Damit dürfte der CPC 464 (und auch der CPC 664) dem CPC 6128 unter BASIC sogar überlegen sein. Das Programm besetzt den Speicher von Adresse &A0C0 bis &A668. Unter BOS bietet die Speichererweiterung selbst zwar auch eine RAM-Disk, die aber nur Strings aufnimmt. Vorteile von RAM-Disk
Die Grundbefehle In der Folge wird der Speicher des CPC als Bank 0, die Speicherbänke der Speichererweiterung als Bänke 1 bis n gekennzeichnet (n richtet sich nach der Ausbaustufe der VORTEX-Karte). |INIT, Anfangsbank, Endbank : Dieser Befehl muß vor der ersten Benutzung der RAM-Disk stehen, da er sie gewissermaßen initialisiert und für den ersten Eintrag einrichtet. Mit diesem Befehl kann das Programm an die Ausbaustufe der RAM-Erweiterungskarte angepaßt und die angeführten Zusatzbänke als RAM-Disk deklariert werden. Man muß durchaus nicht alle Zusatzbänke als RAM-Disk deklarieren; die übrigen Bänke können für spezielle Anwendungen benutzt werden, aber zu diesem Thema kommen wir später näher. |PUT, Adresse, Länge : Die Anzahl "Länge" Byte ab "Adresse" der Bank 0 wird in die RAM-Disk übertragen. Jeder Eintrag mit IPUT beginnend mit 1 wird mit einer fortlaufenden Recordnummer gekennzeichnet und dessen Kenndaten wie Banknummer und Adresse in der RAM-Disk sowie die Datenlänge ins Direktorium eingetragen. Das Direktorium belegt die ersten 512 Byte der mit dem IINIT-Befehl deklarierten Anfangsbank und kann 85 Einträge in der RAM-Disk verwalten. Der RAM-Disk-Bereich wird bündig mit Daten gefüllt. Der Benutzer braucht nicht darauf zu achten, wann eine Bank aufgefüllt ist. Dies erledigt das Programm. Pro Eintrag kann das Programm einen Bankumbruch mittels Übergang von einer in die nächste Bank selbsttätig bewältigen (siehe dazu auch Fehlermeldungen). |REWRITE, Recordnr., Adresse, Länge : Wird ein Datensatz nicht mehr benötigt, kann er mit diesem Befehl überschrieben werden. Der neue Datensatz soll nicht länger als der überschriebene sein, um nicht den nachfolgenden teilweise oder ganz zu überschreiben. Mit der Recordnummer wird die Nummer des zu überschreibenden Datensatzes angegeben. Adresse und Länge entsprechen den Parametern des |PUT-Befehles. |ERASE, n : Mit diesem Befehl werden alle Datensätze ab dem n-ten gelöscht und der entsprechende Speicherplatz für neue Einträge ab Recordnummer inklusive n freigegeben. Die Daten in der RAM-Disk bleiben dabei bis zum ersten neuen Eintrag erhalten. Nur die Zeiger im Direktorium werden neu gesetzt. |REC, @n% : Dieser Befehl gibt in der Integervariable n% die Anzahl der aktuellen Einträge bekannt. Die Variable muß vom Typ Integer sowie zuvor deklariert sein (z. B. n%=0: IREC,@n%: PRINT n%). Die Zusatzbefehle |XRAM, Quellbank, Quelladresse, Länge, Zielbank, Zieladresse : Mit diesem Befehl werden Daten aus der angegebenen Quellbank ab Quelladresse der angegebenen Länge entsprechend in Byte in die Zielbank an die Zieladresse kopiert. Für solche speziellen Anwendungen ist es daher sinnvoll, nicht alle Zusatzbänke als RAM-Disk zu deklarieren (siehe Befehl UNIT). Mit dem Befehl |XRAM können Bildschirminhalt oder Maschinensprachenprogramme in den Zusatzbänken abgelegt werden. Man muß darauf achten, nur legale Banknummern anzugeben sowie die übertragenden Daten in den Bänken die Adresse &7FFF nicht überschreiten. In jeder Bank können zwei Bildschirminhalte untergebracht werden. Beispiel: |XRAM,0,&C000,&4000,3,0 Bildschirm 1 oder |XRAM, 0, &C000,&4000,3,&4000 Bildschirm 2 Aus der Bank 3 wird der Bildschirm 2 mit folgendem Befehl wieder in den Video-RAM-Bereich kopiert: |XRAM,3,&4000,&4000,0,&C000 In der Zwischenzeit darf der Bildschirm natürlich nicht ge-scrollt werden. Wird für Quell- und Zielbank Bank 0 angegeben (CPC-Speicher), bewirkt der |XRAM-Befehl dasselbe wie der Z80-Befehl LDIR und ist nicht auf den Bereich bis &7FFF eingeschränkt. Die Bereiche dürfen sich ausschließlich bei einer tiefer als die Quelladresse liegenden Zieladresse überschneiden. Mit dem |XRAM-Befehl ist es auch möglich, das Programm RAMDISK selbst bis einschließlich der Adresse &A40F in eine Bank zu kopieren und den Platz für andere MC-Programme zu nutzen. Die RSX-Kette wird dadurch nicht unterbrochen, die Daten bleiben erhalten. Nur die Grundbefehle von RAMDISK dürfen bis zum Wiedereinlesen durch |XRAM nicht benutzt werden. |XCALL, Banknummer, Adresse [,Parameter] Damit wird ein Maschinensprachenprogramm in der Bank Banknummer ab der angegebenen Adresse ausgeführt. Bis zu 30 Werte können als Parameter angehängt werden. Zu beachten ist folgendes:
|XRAM, 0,0,&3F,Banknr,0 Adressen- und Längenermittlung Die des öfteren benötigten Anfangsadressen und Längen der Feldvariablen können mit dem Variablenpointer ermittelt werden: Realfeld a(n,m): Anfangsadresse: @a(0,0)Entsprechend können auch Teilbereiche der Felder ermittelt werden. |
| ![]() |
|