★ APPLICATIONS ★ DISQUE ★ RELATIVES DOS FÜR DD1 ★ |
RELDOS (Schneider Aktiv) | Applications Disque |
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“ Mit OPENREL können Sie eine Datei für den relativen Schreib/Lesezugriff öffnen. CLOSEREL Bsp: Bsp: GET,s,x,Cstring/variable Bsp: 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: 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 Bsp. 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: 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:
|