APPLICATIONSDISQUE ★ RELATIVES DOS FÜR DD1 ★

RELDOS (Schneider Aktiv)Applications Disque
★ 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 ★ 

Haben Sie einen CPC464 mit DDI-1 Floppy, einen CPC664 oder CPC6128, dann haben Sie sicher schon gemerkt, daß dieses Floppylaufwerk bzw. vielmehr das Betriebssystem AMSDOS für dieses Laufwerk keine relative Dateiverarbeitung unter Basic zuläßt.

Für alle, die nicht wissen, was mit relativer Dateiverarbeitung gemeint ist; Eine relative Datei ist mit einer ASCII Datei (OPENIN/OUT) vergleichbar, jedoch hat man die Möglichkeit jedes beliebigen Schreib/Lese Zugriffs auf die Datei, d.h., Sie können dem Compzter sagen, er soll von einer 5000 Zeichen großen Datei die Zeichen 3200— 3210 durch andere ersetzen. Relative Dateien sind z.B. bei jeder besseren Datenverwaltung vonnöten.

Mit RELDOS haben Sie neben der „normalen“ Datenverwaltung aber noch weitere Möglichkeiten, so z.B. können Sie auf .BIN, .BAS oder .COM Dateien zugreifen. Mit dieser Möglichkeit läßt sich dann z.B. in wenigen Basiczeilen ein Einzel-File Kopierprogramm schreiben. Man könnte weiter einen Filemonitor schreiben, der es ermöglicht, eine beliebige Datei in HEX aufzulisten und zu verändern. RELDOS wurde unter anderem im Programm TELE-COM eingesetzt, um auf beliebige Dateien zuzugreifen und diese übers Telefon übertragen zu können.

Weiter könnte man z.B. mit RELDOS eine beliebige ASCD-Datei nicht wie normal vom 1. bis zum letzten Buchstaben einiesen, sondern z.B. rückwärts, also mit dem letzten Buchstaben angefangen.

Bemerkenswert ist, daß man eine relative Datei öffnen und gleichzeitig weiter mit OPENIN und OPENOUT mit dem Diskettenlaufwerk arbeiten kann. RELDOS erlaubt die Verarbeitungen von bis zu 160 KB großen Dateien.

DIE RELDOS BEFEHLE:

RELDOS erweitert das Schneider BASIC 1.0 / 1.1 um 9 RSC-Befehle: OPENREL, CLOSEREL, READ, WRITE, PUT, GET, RECLEN, STRADR und HILFE.

OPENREL, Cstring Bsp:

10 a$=“TEST.REL“
20 OPENREL,Ca$

Mit OPENREL können Sie eine Datei für den relativen Schreib/Lesezugriff öffnen.

CLOSEREL

Bsp:
10 CLOSEREL
Der Befehl CLOSEREL dient zum Schließen einer REL-Datei. Änderungen eines Records werden gespeichert.
READ,x
Bsp:
10 READ,1
READ dient zum Lesen eines beliebigen Records in den Speicher.
WRITE,x Bsp.
10 WRITE,1
WRITE schreibt einen im Speicher befindlichen Record auf die Diskette zurück. Wichtig ist, daß die Recordnummer mit der von READ übereinstimmt, da sonst der Record nicht an seine ursprüngliche Stelle auf der Diskette gespeichert wird. Sie können z.B. den Record 1 auf den Record 2 kopieren, indem Sie die Befehle READ,1 und anschließend WRITE,2 ausführen.
PUT,x,s,Cstring/variable
PUT schreibt eine Variable oder String an eine bestimmte Position in einem Record. Die Recordposition x muß zwischen 0 und der Recordgröße liegen, s ist dabei die Anzahl der Bytes, die in die Recordposition x kopiert werden sollen.

Bsp:
10 a$=“Dies ist ein Text.“
20 a%=0:REM Variable anlegen
30 STRADR,Ca$,Ca%: REM Adresse des Strings in a%
40 PUT,5 ,LEN(a$) ,a%

GET,s,x,Cstring/variable
GET ist das Gegenstück zu PUT. GET dient zum Lesen Ihrer Daten aus einem Record. In diesem Beispiel haben wir im Gegensatz zum obrigen keine String, sondern mal einen Wert verwendet, und zwar einen Fließkommawert.

Bsp:
10 a=0
20 GET,0,5,Ca

WICHTIG: Fließkommawerte sind 5 Bytes lang, deshalb die 5. Aber was auch wichtig zu wissen ist: Wenn Sie z.B. den Befehl a=40 ausführen, so ist a keineswegs eine Integervariable, sondern wird auch als Fließkomma variable im Speicher abgelegt. STRADR,Ca$,Ca%

Variablen lassen sich durch Voranstellen von C bei den Befehlen PUT und GET leicht verarbeiten. Bei String muß allerdings hierfür der Befehl STRADR ein springen. Er bestimmt die Adresse eines String im RAM. Die Adresse des Strings a$ wird in die Variable a% übergeben. WICHTIG: Der Variablen a% muß vor ihrer ersten Benutzung z.B. mit a%=0 ein Wert zugewiesen werden.

Bsp:
10 a$=“Mailbox“+CHR$(0)
20 a%=0
30 STRLEN,Ca$,Ca%
40 PUT,0,LEN(a$),a%

Wie Sie sehen, muß nach STRLEN kein C mehr vor a% beim Befehl PUT gesetzt werden. Würden Sie dies trotzdem tun, so würde nicht der Text in a$, dessen RAM-Adresse in a% steht, in den Record kopiert werden, sondern der Inhalt der Variable a%, und das ist natürlich hier falsch.

Die Zeile 10 ist auch nicht ganz klar? Nun, würde man das CHR$(0) weglassen, so wäre der String a$ 7 Bytes lang, und es würden nur 7 Bytes in den Record kopiert. Um beim späteren Lesen wieder zu wissen, wie lang denn der String war, hängt man an den String z.B. CHR$(0), so daß Bytes im Record gespeichert werden. Dies sollten Sie immer bei Strings machen.

ALLGEMEINES

Record Größe

Mit dem Befehl RECLEN.x können Sie die Recordgröße ändem/fe stiegen. Die Record große darf nur folgende Werte haben: 1,2,4,8,16,32,64,128,256, 512 und 1024 Bytes. Gibt man als Recordgröße 1 an, so werden nur einzelne Bytes gelesen/geschrieben.

Zur Schreib/Lese Routine

RELDOS liest/schreibt immer 1024 Bytes von/auf die Diskette. Somit ist die maximale Recordgröße auch 1024 Bytes. Verarbeiten Sie aber z.B. nur 128 Bytes große Records, so liest RELDOS immer gleich 8 Records in den Speicher. Der Effekt ist, daß RELDOS mehr Records im Speicher verarbeiten kann und diese nicht ständig von Diskette lesen muß. Die Verarbeitungsgeschwindigkeit nimmt dadurch stark zu.

Beim öffnen einer Datei mit OPENREL werden alle Infos über diese Datei eingelesen, z.B. wo sich diese Datei auf der Diskette befindet. Dadurch muß RELDOS bei Schreib/Lese-Funktionen nicht mehr aufs Directory (Inhaltsverzeichnis) der Diskette zugreifen. Dies macht RELDOS noch schneller.

Automatisches Update (sichern) der Änderungen

Öffnen Sie z.B. eine REL-Datei und ändern ein Byte eines Records, so können Sie mit WRITE diesen geänderten Record wieder auf Diskette speichern. Dies müssen Sie aber nicht, da RELDOS automatisch Änderungen speichert, d.h. wenn Sie nach einer Änderung mit READ weiter arbeiten °der CLOSEREL aufrufen, so schreibt RELDOS die Änderungen auf Diskette zurück (aber nur, wenn wirklich mit PUT auf diesen Record zurückgegriffen wurde).

Integer und Fließkomma mit PUT und GET

In den obigen Beispielen wurden immer nur Strings mit PUT oder GET verarbeitet, da diese wohl am häufigsten verwendet werden. Was aber z.B. mit Integer- (a%546) oder Fiießkomma- (A=.45.65465) zu tun? Nun als ersten brauchen Sie bei diesen Variablentypen nicht den STRADR Befehl verwenden. Sie müssen lediglich vor die Variablennum-mem wieder das C Zeichen stellen und anstatt der Stringlänge die unten aufgeführten Werte verwenden. ilG: Sie müssen immer das C Zeichen

der Variablen bei PUT und GET voranstellen, da die RELDOS Befehle an dieser Stelle nur Zeiger
auf Variablen verarbeiten, d.h. nur die Speicheradresse der Variablen im RAM übergeben bekommt. Deshalb muß auch bei Strings die Länge gesondert übergeben werden. Integer- und Fließkomma-Va-riablen brauchen unterschiedlich viel Speicher. Bei Integer-Variablen muß der Wert 2 für 2 Bytes und bei Fließkomma 5 übergeben werden.

Bsp.
10 a%=546:PUT,0,2,Ca%
20 b=-0.3532873: PUT,0,5,Cb

Adreßbestimmung bei Strings:

Die Basjcfunktion C liefert bei Strings keinen Pointerwert, sondern die Adresse eine 3 Bytes langen Pointers, dessen 1. Byte die Länge des Strings und 2-3. Byte die RAM-Adresse des Strings an gibt. Der Befehl STRADR,Cstr,Cadr holt die Adresse/Pointer des Strings str und schreibt diesen Wert in die Variable adr. adr. enthält also die Speicheradresse des Strings str, welche bei PUT und GET übergeben werden muß. WICHTIG: Nun muß kein C mehr vor die Variable adr gestellt werden, d.h. also:

Bsp:
10 a$=“RELDOS, einfach iire.“
20 a%=0
30 STRADR,Ca$ ,Ca%
40 PUT,0,LEN(a$),a%

Wie Sie sehen, es wird kein C in Zeile 40 benötigt. Was Sie aber auch sehen werden, ist Zeile 20. Sie werden sich vielleicht fragen, was die da macht? In Zeile 30 wird der Pointer (Zeiger) auf die Variable a% übergeben, und wenn diese Variable nicht existiert, dann gibt's Ärger (probiem Sie es mal aus). Das heißt also, diese Variablen müssen vor ihrem ersten Gebrauch erst mal mit einem Wert versehen werden.

DIE BEISPIEL PROGRAMME

Wir haben noch 2 Beispielprogramme abgedruckt, eine einfache Dateiverwaltung und einen FILE-MONITOR, mit dem Sie .COM, .BIN etc. Dateien „unter die Lupe nehmen können. D.h. Sie können sich 'iles in HEX und ASCII auflisten lassen. Dies Programm zeigt insbesondere, welche Möglichkeiten mit RELDOS gegeben sind.

Fehlermeldungen:

Natürlich gibt RELDOS auch Fehlermeldungen aus, z.B. wenn Sie eine Datei öffnen wollten, die gar nicht existiert. Die Fehlermeldung erscheint auf dem Bildschirm. Um nun vom Programm her solche Fehler ab fragen zu können, gibt es das FEHLERFLAG mit der Adresse &3C (hex). D.h. also, wir können mit PRINT PEEK (&3C) den Wert des Fehlerflags auslesen. Diese Werte haben folgende Bedeutung:

WertBedeutung
0Kein Fehler alles ok
1der bei READ oder WRITE angegebene Record existiert nicht, es wurde z.B. versucht, den Record 3000 zu lesen, obwohl die Datei nur für max. 500 Records gedacht ist.
Dieser Wert wird also beim Erreichen oder Überschreiten des Dateiendes übergeben.
2Es wurde versucht, eine Datei mit OPENREL zu öffnen, die nicht existiert, Datei erst mit OPENOUT anjegen.
3Es wurde READ oder WRITE verwendet, obwohl gar keine Datei mit OPENREL geöffnet ist.
4Sie wollten eine weitere Datei mit OPENREL öffnen, obwohl immer noch eine geöffnet ist, Schließen Sie die alte mit CLOSEREL.

(Th. Gigge) , SA

★ PUBLISHER: Schneider Aktiv
★ YEAR: 1986
★ CONFIG: 64K + AMSDOS
★ LiCENCE: LISTING
★ COLLECTION: SCHNEIDER AKTIV 1986
★ LANGUAGE:
★ AUTHOR: Thomas Gigge
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» RELDOS  R1.4    (Schneider  Aktiv)    GERMANDATE: 2021-06-12
DL: 158
TYPE: ZIP
SiZE: 6Ko
NOTE: Dumped by Johnny Farragut ; 40 Cyls
.HFE: Χ

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

Lien(s):
» Applications » Rodos Catalogue (RODOS disc tree reader)
» Applications » Loader for drive B (RAMDOS) format (CPC Attack)
» Applications » X-Ddos v1 ROM
» Applications » iMPDOS
» Applications » Dostel (CPC Revue)
» Applications » BonnyDOS
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 432 millisecondes et consultée 620 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.