APPLICATIONSDIVERS ★ RAMDISC|CPC Amstrad International) ★

Ahsoft - Ramdisc (CPC Amstrad International)Applications Divers
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

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 RAM-Disk ist an die Ausbaustufe der Speichererweiterungskarte anpaßbar,
  • arbeitet unter dem normalen Locomotiv BASIC (kein BOS notwendig).
  • Der Speicherumfang des CPC bleibt voll erhalten, also kein HIMEM &7F68 wie bei BOS.
  • Alle Befehle des Locomotiv BASIC sind uneingeschränkt verwendbar (ON ERROR, DEF FN, SYMBOL AFTER, usw.), damit bleiben auch alle Programme voll lauffähig.
  • Die RAM-Disk verwaltet alle Variablentypen; bei Realvariablen Speicherplatzersparnis (die RAM-Disk unter BOS benötigt im ungünstigsten Fall dafür 12 Byte),
  • bedingt erhebliche Speicherplatzersparnis bei mehrdimensionalen Variablen (Beispiel: Anstelle eines dreidimensionalen Feldes wird im CPC nur ein zweidimensionales angelegt, die einzelnen "Scheiben" der dritten Dimension werden in der RAM-Disk abgelegt und nur bei Bedarf ins Feld übertragen).
  • aschinenspracheprogramme, die sich einen Speicherbereich teilen, können ein- und ausgeblendet werden oder sogar gleich in den Zusatzbänken ausgeführt werden.
  • Wer sich mit der Programmzeilenablage und den Systemvariablen des CPC auskennt, kann auch BASIC-Pro-grammteile ein- und ausblenden oder nahezu ohne Wartezeit nachladen.

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).
|GET, Recordnr., Adresse : Diese Befehle holen den Datensatz, der unter der angeführten Recordnummer in der RAM-Disk abgelegt ist, und überträgt ihn ab der angegebenen Adresse in den Speicher des CPC (Bank 0).

|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:

  • Das Maschinensprachenprogramm muß im Bereich unter &8000 lauffähig sein und mit dem |XRAM-Befehl in die ausgewählte Bank übertragen werden
  • Die Restartvektoren der Bank 0 (CPC-RAM) müssen in die entsprechende Bank kopiert werden, andernfalls wäre ein Absturz vorprogrammiert:

|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)
Länge: @a(n,m)-@a(0,0)+5
Integerfeld a(n,m):
Anfangsadresse: @a(0,0)
Länge: @a(n,m)-@a(0,0)+2
Stringfeld a$(n,m):
Anfangsadresse: PEEK(@a$(n,m) + 1)+256*PEEK (@a(n,m)+2)
Länge: PEEK(@a$(0,0) +1)+256*PEEK(@a$(0,0)+2)
— Anfangsadresse + PEEK(@a$(0,0))

Entsprechend können auch Teilbereiche der Felder ermittelt werden.

Fehlermeldungen

RAMDISK beinhaltet zwei Fehlermeldungen von folgender Bedeutung:

Incorrect RAMDISK handling

  • An den Befehl wurde nicht die laut Syntax erforderliche Anzahl von Parametern angehängt.
  • Es wurde versucht, an einem Datensatz (Record) zuzugreifen, der noch gar nicht existiert.

RAMDISK overflow

  • Das Direktorium ist bereits voll (85 gültige Einträge).
  • Der für die RAM-Disk vorgesehene Speicherumfang ist soweit belegt, daß für die neuen Daten nicht genügend Speicherplatz vorhanden ist.
  • Die Länge der Daten ist derart groß, daß mehr als ein Bankumbruch notwendig wäre. Bei Datensätzen, die nicht länger als 32 kByte sind, kann diese Fehlermeldung nie auftreten. Im günstigsten Fall darf die Datensatzlänge 64 kByte betragen.

Die Befehle |XRAM und |XCALL sind nicht durch Fehlermeldungen abgesichert. Der Befehl |XRAM überprüft nur, ob ihm fünf Parameter übergeben wurden, und läßt vielmehr ein Tonsignal ertönen, ohne Daten zu übertragen.

Den BASIC-Lader eintippen, abspeichern und danach mit RUN starten. Das MC-Programm wird mit CALL &A0C0 initialisiert.

cd, CPCAI

★ PUBLISHER: CPC Amstrad International
★ YEAR: 1990
★ CONFIG: 128K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC AMSTRAD INTERNATIONAL 1990
★ AUTHOR: Aleksander Hercog / AHSOFT
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» RSX-Ahsoft-RAMdisc    (CPC  Amstrad  International)    GERMANDATE: 2013-01-04
DL: 263
TYPE: ZIP
SiZE: 6Ko
NOTE: 40 Cyls
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Dixi (Computer-Schau)
» Applications » Discotheque
» Applications » ROMDOS XL
» Applications » Statistics Program (Computing Today)
» Applications » Analyse: Aide a l'Analyse de Programme Basic (CPC Revue)
» Applications » Trans-Form pack 88 (Amstrad Personal)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 386 millisecondes et consultée 1756 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.