APPLICATIONSDISQUE ★ DISKETTENSYSTEM / DISC-SYSTEM (CPC MAGAZIN) ★

Diskettensystem (CPC Magazin '87-06)Kopieren und Formatieren (CPC Magazin '87-07)Diskettensystem, Teil 3 (CPC Magazin '87-08)Disketten optimieren (CPC Magazin '87-09)Das Directory im Griff (CPC Magazin '87-10)Booten und Reaktivieren (CPC Magazin '87-11)
★ 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 ★ 

Sieben neue RSX-Befehle machen Sie zum Virtuosen im Umgang mit Ihren Disketten.

Viele Leser haben uns gebeten, doch einmal ein Programm abzudrucken, mit dem man wahlfrei auf die Diskette zugreifen kann. Mit dem Programm "Dirdoktor” (CPC-Magazin 1/86) ging dies nur innerhalb des Programms. Der Wunsch der Leser ließ uns jedoch nicht ruhen; hier ist nun unser Diskettensystem! Dem Benutzer werden sieben neue RSX-Befehle zur Verfügung gestellt, mit denen Sektoren gelesen, geschrieben und formatiert werden können. Weiterhin enthalten sind Funktionen wie z.B. testen, ob Diskette eingelegt ist, oder Kopf plazieren. Das Programm funktioniert auf den drei Schneider-Rechnern 464,664 und 6128, jedoch ausschließlich auf der Schneider- und nicht auf der vortex-Floppy.

Mit Hilfe der neuen Befehle können Anwendungen wie z.B. Formatierungs- und Kopierprogramme recht einfach erstellt werden. Die Programmierung von relativer und sequentieller Datenverarbeitung ist ebenfalls möglich. An dieser Stelle eine Bitte an alle Leser. Wenn Sie mit Hilfe von "Diskettensystemen” Programme erstellt haben, so senden Sie mir diese bitte zu. Wir prüfen dann, ob ein Abdruck in Frage kommt. In der nächsten Ausgabe werden Sie an dieser Stelle bereits ein Formatierungs- und ein Diskettenkopierprogramm finden, die beide mit Hilfe dieses Programms erstellt wurden. Das Ganze wird in eine Menüsteuerung verpackt.

Eine Diskette kann im CP/M-, im Daten- und im IBM-CP/ M-Format formatiert werden. Letzteres ist allerdings unüblich, so daß ich dieses Format sowohl in dieser Anleitung als auch im Progamm selbst vernachlässigt habe. Die Diskette ist in 40 Spuren (englisch: tracks) eingeteilt, die von 0 bis 39 numeriert sind. Jede dieser 40 Spuren ist wiederum in 9 Sektoren unterteilt, die von 1 bis 9 durchnumeriert sind. Ein Sektor hat eine Speicherkapazität von 512 Bytes oder einem halben Kilobyte.

Während beim Daten-Format die ganze Diskette zur Datenspeicherung und für das Inhaltsverzeichnis (Directory) zur Verfügung steht, sind beim AMSDOS-CP/M-Format die ersten beiden Spuren (0 und 1) für CP/M reserviert. Diese beiden Spuren sind folgendermaßen aufgeteilt:

  • Spur 0, Sektor 1: Boot-Sektor
  • Spur 0, Sektor 2: Configurations-Sektor
  • Spur 0, Sektor 8 und 9 sowie
  • Spur 1, Sektor 1 bis 9: CCP und BDOS

Falls Ihnen das jetzt nichts sagt, ist das auch nicht schlimm. Zur Anwendung des Programms ist es lediglich wichtig zu wissen, daß beim CP/M-Format die Tracks 0 und 1 für das CP/M vorgesehen sind.
Das Inhaltsverzeichnis ist jeweils 1 KByte lang und befin det sich in den ersten beiden Sektoren der ersten freiet Spur. Beim CP/M-Format wären dies die Sektoren 1 und I der Spur 2, beim Datenformat die Sektoren 1 und 2 de Spur 0. Die restlichen Sektoren stehen zur Speicherunt von Programmen zur Verfügung.

Den genauen Aufbau des Inhaltsverzeichnisses entneh men Sie bitte dem CPC-Magazin 1/86, S. 64 unter de Überschrift: ”So machen Sie Ihre Disketten fit”.

Eintipphilfe zum Programm

Sie haben zwei Möglichkeiten, das Programm einzugeben. Entweder Sie tippen das abgedruckte Listing 1 eir oder das ebenfalls für Interessierte abgedruckte Assem blerprogramm mit ausführlichen Kommentaren. Es wurde mit dem DEVPAC-Assembler erstellt, müßte sich aber mi leichten Änderungen auch an andere Assembler anpassen lassen. Bedenken Sie aber die Syntax, die Ihr Assembler "versteht”, z.B. Klein-/Großschreibung, Zeichen für hexadezimal (hier #, normal &) usw. Liegt Ihnen das Programm als Assemblerfile vor, können Sie es natürlich zusätzlich verschieben. Das ist in der normalen Version nicht möglich.

Da unser "Diskettensystem” noch wachsen soll, sollten Sie sich zunächst eine leere Diskettenseite auswählen, diese beschriften und im CP/M-Format formatieren. Das machen Sie mit Hilfe der mitgelieferten CP/M-Prögramme ("Format” beim 464 und 664, "Diskkit II” beim 6128).

Wenn Sie das Assemblerlisting eintippen, assemblieren Sie das Programm ab Adresse 42000 und speichern Sie das entstandene Maschinenprogramm unter dem Namen SYSTEM.MC auf der vorbereiteten Diskette ab. Die Länge des Programms ist 526 Bytes. Das Assemblerlisting sollten Sie sich für den Fall gesondert abspeichern, daß Sie mal eine Version mit anderer Startadresse benötigen. (Anm.: CPC 664- und 6128-Besitzer müssen den Befehl JP #ca98 in Zeile 3350 in JP #cb58 umändern.)

Wollen Sie das Programm nicht als Assemblerlisting eingeben, müssen Sie das ebenfalls abgedruckte Listing 1 abtippen und mit SAVE "SYSTEM.LDR” abspeichern. Starten Sie es danach mit RUN. Der Rechner überprüft nun die Richtigkeit der DATA-Zeilen. Taucht ein Fehler auf, so verbessern Sie die entsprechende Zeile und starten Sie erneut. Wenn Sie den Fehler nicht finden, gibt es dafür mehrere mögliche Erklärungen:

  1. Sie haben eine Zeile ausgelassen oder ähnliches, so daß sich die Numerierung verschiebt und die angezeigte Zeile gar nicht die fehlerhafte ist.
  2. Die Fehlermeldung "TYPE MISMATCH” taucht dann auf, wenn Sie in einer Zeile eine nicht hexadezimale Ziffer verwendet haben. Um die Nummer der Zeile zu erfahren, tippen Sie PRINT ze (bedenken Sie dabei Punkt 1).

Läuft das Programm ohne Meldung eines Fehlers durch, entscheiden Sie zuerst, ob Sie eine 464- oder eine 664/ 6128-Version benötigen. Danach können Sie das entstandene Maschinenprogramm mit SAVE "SYSTEM.MC”, b, 42000,526 auf die vorbereitete Diskette abspeichern. Sollten Sie das Programm auch einem Freund überspielen wollen, wäre es am besten, das Basic-Programm (Listing 1) auf eine andere Diskette abzuspeichern.

Um das Programm zu laden, führen Sie folgende Schritte durch:

  1. MEMORY 41999
  2. LOAD "SYSTEM.MC”
  3. CALL 42000

Danach stehen sieben neue RSX-Befehle zur Verfügung.

Sieben neue RSX-Befehle

Allen neuen Befehlen ist ein senkrechter Balken (SHIFT & Klammeraffe) vorangestellt. Werden zuviel oder zuwenig Parameter angegeben, erfolgt die Fehlermeldung "OPERAND MISSING". Liegen die Werte außerhalb der zulässigen Grenzen, wird die Meldung "INTEGER OUT OF RANGE” ausgegeben.

1. |DRIVE, Laufwerknummer

Mit |DRIVE können Sie das aktive Laufwerk wählen. Dies gilt allerdings nur für die erweiterten Befehle. Für das normale Save-Kommando und ähnliches ist dieser Befehl nicht relevant. Diese Befehle benützen weiterhin das durch |A oder |B spezifizierte Laufwerk, haben allerdings wiederum keine Wirkung auf die erweiterten Befehle. So handelt es sich um zwei voneinander unabhängige Befehlsgruppen mit verschiedenen Laufwerkspezifikationsbefehlen. Als Parameter ist lediglich der Wert 0 (für Laufwerk A) oder 1 (für Laufwerk B) zugelassen. Zu Beginn ist immer Laufwerk A eingestellt.

2. |TEST, Vaiablenpointer

Mit diesem Befehl läßt sich prüfen, ob in einem Laufwerk die Diskette eingelegt ist. Das Laufwerk wird dabei durch den Befehl |DRIVE spezifiziert. Bevor Sie einen Variablenpointer (Klammeraffe + Variablenname) angeben, müssen Sie die Variable erst einmal einrichten, z.B. z%=0: |DRIVE,0: |TEST, @z%o. Danach befindet sich in der angegebenen Variablen der Laufwerkstatus. (Es muß sich dabei um eine Integervariable handeln, die mit einem Prozentzeichen gekennzeichnet ist.) Ist die Diskette eingelegt, hat z% den Wert 0, ist sie nicht ordnungsgemäß eingelegt, den Wert 1.

So kann man gut prüfen, ob die Diskette richtig oder überhaupt eingelegt wurde. Mit dem Befehl kann man allerdings nicht prüfen, ob das Laufwerk angeschlossen ist. Bei nicht angeschlossenem Laufwerk oder bei schreibgeschützten Disketten liefert der Befehl immer 0.

3. |PLACE, Track

Es kann auch sehr nützlich sein, den Kopf übereiner bestimmten Spur zu positionieren (z.B. über dem Inhaltsverzeichnis). Dann muß der Kopf nicht erst bewegt werden, wenn ein Befehl ausgeführt wird. Das spart Zeit. Als Parameter wird die Tracknummer (0 bis 39) angegeben.

4. |FORMAT, Format, Track

Mit diesem Befehl wird eine komplette Spur formatiert, die durch den zweiten Parameter ausgewählt wird (das Format durch den ersten). Dabei sind als Werte 0 und 1 zugelassen, wobei 1 für das Daten-Format und 0 für das AMSDOS-CP/M-Format steht. Für Profis: Die Formatoffsets für den Sektor werden automatisch addiert. Beim Formatieren im CP/M-Format ist zu bedenken, daß sich das CP/M-Betriebssystem danach noch nicht auf Diskette befindet, so daß der Befehl |CPM nur eine Fehlermeldung auslösen würde. Das Betriebssystem (Track 0 und 1) muß noch auf die Diskette kopiert werden, was mit den folgenden beiden Befehlen leicht möglich ist.

5. |READ, Format, Adresse, Track, Sektor

Die Leistungsfähigkeit dieses Befehls sollte man nicht unterschätzen. Mit ihm ist es möglich, jeden normalen Sektor der Diskette einzulesen. Die Parameter Track und Sektor spezifizieren diesen. Der Parameter Format wird wie unter 4. gebraucht, denn das Programm muß wissen, ob eine CP/M- oder eine Datendiskette gelesen wird. Adresse schließlich gibt an, ab welcher Adresse die 512 Bytes von der Diskette im Speicher abgelegt werden. Vergessen Sie vorher nicht, mit MEMORY adresse-1 genügend Speicherplatz vor dem Oberschreiben zu schützen.

6. |WRITE, Format, Adresse, Track, Sektor

Schon am Aufbau der Parameter erkennt man, daß dieser Befehl das Gegenstück zum READ-Befehl ist. Die Parameter weden wie bei 5. gewählt. Der einzige Unterschied ist, daß dieser Befehl 512 Bytes ab der angegebenen Adresse in den angegebenen Track und Sektor der Diskette schreibt.

7.|PARAM < Hochlaufzeit, Nachlaufzeit, Spurwechselzeit, Retry Count >

Mit diesem Befehl kann man einige wichtige Parameter des Diskettenlaufwerks einstellen und auch einiges an Zeit herausholen. Werden keine Parameter angegeben, werden sie auf die normalen Werte gesetzt. Ansonsten kann man vier Parameter angeben:

a) Hochlaufzeit

Dieser Parameter gibt die Zeitspanne in 50stel Sekunden an, die vergehen muß, bis der Laufwerkmotor seine Nennlaufdrehzahl erreicht. Normalerweise wartet der Rechner vor einer Diskettenoperation 1 Sekunde, damit der Motor richtig anlaufen kann. Wenn Ihnen das zu lange ist, können Sie diese Zeit heruntersetzen. Bedenken Sie aber, daß ein drastisches Herabsetzen der Hochlaufzeit eine höhere Datenunsicherheit zur Folge hat, da es sein kann, daß beim Schreiben oder Lesen der Motor noch nicht richtig angelaufen ist. Falsches Schreiben auf die Diskette konnte ich aber nicht feststellen. Der Wert 0 ist nicht erlaubt.

b) Nachlaufzeit

Durch diesen Parameter wird die Zeitspanne in 50ste Sekunden spezifiziert, die der Diskettenmotor nach dei letzten Operation noch weiterläuft. Wenn das Summer stört, kann diese Nachlaufzeit gesenkt werden. Normalerweise läuft der Motor 5 Sekunden nach. Der Wert 0 ist nich' erlaubt.

c) Spurwechselzeit

Dieser Parameter gibt die Zeitspanne an, die zwischer einem Spurwechsel gewartet wird. Sie wird nicht wie bei a und b) in 50stel Sekunden, sondern in Millisekunder (1000stei Sekunden) angegeben. Dabei sind nur Werte vor 1 bis 255 Millisekunden erlaubt. Eine Erhöhung der Datenunsicherheit beim Senken der Spurwechselzeit wurde nicht bemerkt, ist aber möglich. Normalerweise wird beim Spurwechsel 12 Millisekunden gewartet. Der Wert 0 is nicht erlaubt.

d) Retry Count

Wenn der Controller Schwierigkeiten beim Lesen eine Diskette hat, so versucht er normalerweise, zehnmal erfolgreich zu lesen. Erst nach dem zehnten erfolglosen Ver such wird die Fehlermeldung ”READ FAILED” angezeigt Bei schlechten Disketten mit Leseproblemen kann es von Nutzen sein, diese Zahl heraufzusetzen. Der Wert 0 ist nicht erlaubt.

Zum Schluß möchte ich meine Bitte noch einmal wieder holen, mir gute Anwendungen dieses Programms direkt zuzusenden. Im nächsten Heft folgen die ersten Anwendungsprogramme. Weitere bringen wir, wenn gute Lösungen eingehen.

Andreas Zallmann , CPC Magazin

★ PUBLISHER: CPC Magazin
★ YEARE: 1986 , 1987
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTIONS: CPC MAGAZIN 1987 , CPC MAGAZIN 1987 , CPC MAGAZIN 1987 , CPC MAGAZIN 1987 , CPC MAGAZIN 1987 , CPC MAGAZIN 1987
★ AUTHOR: Andreas Zallmann
     

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» Disc-System  v87-06    (CPC  Magazin)    GERMANDATE: 2020-05-27
DL: 207
TYPE: ZIP
SiZE: 5Ko
NOTE: 40 Cyls
.HFE: Χ

» Disc-System  v87-06    (CPC  Magazin)    LISTING    GERMANDATE: 2020-05-28
DL: 202
TYPE: PDF
SiZE: 432Ko
NOTE: 4 pages/PDFlib v1.6

» Disc-System  v87-07    (CPC  Magazin)    GERMANDATE: 2020-05-28
DL: 188
TYPE: ZIP
SiZE: 7Ko
NOTE: 40 Cyls
.HFE: Χ

» Disc-System  v87-08    (CPC  Magazin)    GERMANDATE: 2020-05-28
DL: 208
TYPE: ZIP
SiZE: 7Ko
NOTE: 40 Cyls
.HFE: Χ

» Disc-System  v87-09    (CPC  Magazin)    GERMANDATE: 2020-05-28
DL: 215
TYPE: ZIP
SiZE: 11Ko
NOTE: 40 Cyls
.HFE: Χ

» Disc-System  v87-10    (CPC  Magazin)    GERMANDATE: 2020-05-28
DL: 210
TYPE: ZIP
SiZE: 14Ko
NOTE: 40 Cyls
.HFE: Χ

» Disc-System  v87-11    (CPC  Magazin)    GERMANDATE: 2020-05-28
DL: 185
TYPE: ZIP
SiZE: 16Ko
NOTE: 40 Cyls
.HFE: Χ

» RSX-Diskettensystem    (CPC  Magazin)    GERMANDATE: 2020-06-13
DL: 167
TYPE: ZIP
SiZE: 5Ko
NOTE: 40 Cyls
.HFE: Χ

» RSX-Diskettensystem    (CPC  Magazin)    LISTING    GERMANDATE: 2021-02-02
DL: 158
TYPE: PDF
SiZE: 408Ko
NOTE: 4 pages/PDFlib v1.6

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

Lien(s):
» Applications » GOS (Graphics Operating System)
» Applications » Alkatraz Protection System (CPC Amstrad International)
» Applications » Stock Accounting System (Amstrad Computer User)
» Applications » Ox'verscan Systeme v2
» Applications » Musician - The Teach Yourself to Read Music System
» Applications » CP/M 2.0
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 469 millisecondes et consultée 3378 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.