CODINGFDC ★ Arbeiten mit Diskette (1) Einleitung ★

Arbeiten mit Diskette (1) Einleitung (Computer Schau)
In dieser Rubrik konnten Sie im letzten Kompaktwissen vor allem Einzelheiten und Eigenarten über Ihren CPC kennenlemen. Diesmal geht es um ein externes Gerät, die Diskettenstation.

Der CPC 664 und auch der CPC 6128 sind mit diesem schnellen Massenspeicher von Hause aus versehen. Der CPC 464 kann damit nachgerüstet werden. Will man nun nicht nur mit käuflicher Software arbeiten, dann ist es gut, mehr über den Umgang mit dem Diskettenlaufwerk zu wissen.

Bevor ich nun auf das eigentliche Thema eingehe, vorab gleich ein „echter Hammer“: Demnächst werden von einem Fremdanbieter auch Harddiscs für den CPC 464 angeboten. Weiterhin ist mit einer Zusatzplatine zu rechnen, die durch einen Coprozessor den CPC 464 auch MS-DOS-fähig und IBM-kompatibel machen soll. Dann sind für die CPCs weitere professionelle Einsatzmöglichkeiten offen. Bis zum Zeitpunkt der Niederschrift dieses Artikels konnte ich nur ein Mustergerät in Betrieb sehen. Es liegen außerdem noch keine detaillierten Angaben hierüber vor, deshalb kann ich auch noch keine genaueren Angaben machen. Geplant sind jedoch zwei Ausführungen mit zehn und zwanzig Megabyte.

Ein einziges Programm für viele Anwendungen

Doch zurück zum Umgang mit der Diskettenstation, ich will Ihnen ja einiges hierüber mitteilen. Für die Anwendung der in diesen Artikeln veröffentlichten Programme ist dieses Wissen zwar nicht unbedingt erforderlich aber sehr, sehr nützlich.

Lesen Sie deshalb, auch wenn Sie an Maschinensprache nicht interessiert sind, weiter. Ich bemühe mich, die Dinge so einfach wie nur möglich darzustellen. Auch weitere eigene Disketten-Programme können Sie dann durch den Einsatz von nur einem (!) Maschinenprogramm entwickeln. Und dies alles in Basic! Keine Angst, Sie sollen nun nichts über den komplizierten technischen Ablauf zu lesen bekommen, sondern nur die Dinge, die für alle Anwendungen, die nun durchgesprochen werden sollen, erforderlich sind.

Das Basiswissen über die Diskettenstation und über die Diskette selbst aber, sollten Sie den Handbüchern entnehmen.

Zur Auffrischung bzw. Erinnerung sei nur noch einmal darauf hingewiesen, daß eine Diskette bei der Formatierung ein magnetisches Muster „aufgedrückt“ bekommt und dadurch die Diskette in Spuren (tracks) und Sektoren (sectors) eingeteilt wird.

Diese Formatierung kann für drei Formate durchgeführt werden.

  • IBM-Format
  • Data-only-Format
  • System Format (CP/M-Format und Vendor)

(Das Vendorformat ist nur eine Sonderform des CP/M-Formates.)

Aber auch andere Formate sind mit dem Wissen über die Arbeitsweise, innerhalb der Grenzen des Controllerbausteines möglich. Hierzu müssen dann eigene - anstelle der „eingebauten“ - Routinen geschrieben und die Diskettenparameter direkt in den „Extended Disk Parameter Block“ gepatcht werden. Softwareanbieter benutzen derartige Techniken als Schutz gegen Raubkopien. Das IBM-Format will ich derzeit größtenteils noch unberücksichtigt lassen, da wahrscheinlich nur weni-
ge Anwender unter dieser Formatierung arbeiten. Prinzipiell kann aber alles folgende auch analog für dieses Format „umgedacht“ werden. Was Sie nun lesen, trifft also für beide behandelten Formate, nämlich Data-only und CP/M zu. Bei der Formatierung wird die Diskette in 40 Spuren (0 bis 39) mit je 9 Sektoren (1 bis 9) eingeteilt. Die Sektoren erhalten als Kennzeichen für das Format ein Identifikationszeichen, welches sowohl die Sektornummer, als auch den Code für das Format beinhaltet.

Das Formatkennzeichen für Data-only ist dabei der Wert &C0 und für CP/M &40. Diese Werte müssen zur jeweiligen Sektornummer addiert werden. Unter CP/M gibt es in jeder Spur also die Sektornummern &41 bis &49 und unter Data-only die Nummern &C1 bis &C9. (IBM-Format 01 bis 08!)

Ein weiterer Unterschied zwischen diesen beiden Formaten ist, daß unter CP/M zwei komplette Spuren für das System reserviert sind und dem Anwender normalerweise nicht zur Verfügung stehen. Diese beiden Spuren beinhalten den „Boot-Sec-tor“, den „Configuration-Sector“, „CCP“ und „BDOS“.

Immer ans Copyright denken!

Beim Format Vendor werden diese beiden ersten Spuren nicht mit wirklichen Daten beschrieben, sondern freigehalten. Deshalb dient diese Formatierung auch zur Weitergabe von Disketten mit CP/M-Programmen. Bitte denken Sie immer daran, daß Sie aus Copyright-Gründen keine „echten“ CP/M-Disketten weitergeben dürfen!

Wenden wir uns nun weiteren Einzelheiten zu. Jeder Sektor auf der Diskette „faßt“ insgesamt 512 Bytes an Daten. Eine einfache Multiplikation zeigt nun die Diskettenkapazität unter den beiden Formaten. Formel: VS • AS • BS Hierbei bedeuten:

VS = Anzahl der verfügbaren Spuren
AS = Anzahl der Sektoren pro Spur
BS = Bytes pro Sektor.

Mit eingesetzten Werten ergeben sich folgende Kapazitätswerte:

SYSTEM-Format:

(40-2) • 9 • 512 = 175 104 Bytes = 171 KByte.

Data-only-Format:

40 • 9 • 512 = 184 320 Bytes = 180 KByte.

Wer sich bei einer frisch formatierten (oder „gelöschten“) Diskette schon einmal das Inhaltsverzeichnis angesehen hat, wird nun bereits Differenzen zwischen meinen Angaben und der Mitteilung der „free-Meldung“ feststellen. Der Grund dieser Differenz ist aber schnell geklärt. Das Inhaltsverzeichnis (Directory) benötigt nämlich ebenfalls Platz und deswegen fehlen zwei Kilobyte bei der Mitteilung des freien Speicherplatzes. Zieht man diese von den berechneten Zahlen ab, dann stimmt alles wieder.

Nur 64 Directory-Einträge sind möglich

Damit sind wir aber bereits an einem weiteren Punkt angelangt. Das Inhaltsverzeichnis (Directory) belegt also 2048 Bytes. Da jeder Fileeintrag 32 Bytes belegt, sind aus diesem Grunde auch nur 64 Fileeinträge im Directory möglich. Das heißt, daß nicht mehr als 64 Programme (und seien sie auch noch so kurz) pro Diskettenseite gespeichert werden können. Der Kapazitätsumfang des Inhaltsverzeichnisses setzt dabei die Grenze! Hiervon und auch noch von anderen Dingen, können sich anhand der Programme, die ich Ihnen in diesen Grundlagen-Artikeln gebe, auch in der Praxis überzeugen. Doch bevor wir zur Entwicklung dieser Programme übergehen, müssen noch ein paar weitere Punkte geklärt werden.

Damit die Diskettenstation vom CPC „angesprochen“ werden kann, befindet sich im CPC (664 und 6128) oder im aufsteckbaren Interface beim CPC 464, AMSDOS (AMStrad Disc Operating System), das Disketten-Betriebs-System. Dieses erlaubt es, Diskettenfiles in der gleichen Art und Weise wie Kassettenfiles anzusprechen. Es steckt in einem der sogenannten „Sideways-ROMs“, die vom CPC angesprochen werden können. Zusatzroms sind bei den CPC's auf hervorragend durchdachte Weise in das Betriebssystem der CPCs „einbindbar“. Während der Initialisierungsphase des Computers wird - aufgrund verschiedener Speicherstelleninhalte in den Zusatzroms - nämlich abgeprüft, welche ROMs im Vordergrund oder Hintergrund arbeiten, bzw. ob es sich um sogenannte „On-board“-ROMs handelt. Eine mir - in dieser Art - bisher nur von den CPCs her bekannte Technik, die äußerst leistungsstark ist und deshalb (bezüglich Betriebserweiterungen) vergleichbare Computer um Längen schlägt. Wer mehr über diese Methode erfahren will, kann einen Teil darüber im ersten Teil des Compu-terSchau-Kompaktwissens nach-schlagen oder - falls er voll in die Thematik einsteigen will - sich das Firmwarehandbuch zulegen. Zum augenblicklichen Verständnis dieser Grundlagenartikel reicht es aber, zu wissen daß der CPC ROMs, die in den Bereich ab &c000 „eingeklinkt“ werden können, ansprechen kann und daß diese ROMs eine Auswahlnummer haben müssen. Diese Auswahlnummer (Select-number) wird benötigt damit bei evtl. Zugriffen auf solche Erweiterungen, auch der richtige Chip angesprochen wird. Die Auswahlnummer des Disketten-ROMs (BIOS-ROM) ist mit sieben festgelegt. BIOS heißt Basic Input/ Output System, hat aber mit der Programmiersprache Basic nichts zu tun. In diesem ROM steckt auch AMSDOS und ein Teil von Dr. LOGO.

Mit diesen Informationen können Sie nun bereits tiefer einsteigen. Mit z. B. dem Hexpeeker aus dem ersten Heft oder (natürlich viel sinnvoller !) mit einem leistungsfähigen Disassembler/Monitor kann man sich nach Auswahl der Selectadresse dieses DOS (Disk-operating-system) näher ansehen.

Neun sehr leistungsfähige Befehle

„Maschinenprogrammierer“ werden bei näherer Betrachtung schnell die „Sprungleiste“, also den (auf neudeutsch) „Jump block“ der Diskettencontrollerbefehle finden. Diese Sprungbefehle stehen von &C033 bis &C04D im - dem Bildschirm-RAM überlagerten - BIOS-ROM.

Die Befehlscodes für diese (insgesamt neun) Befehle stehen von &C0B6 bis &C0BF und gehören zum CP/M-BIOS, stehen aber auch dem AMSDOS zur Verfügung. Wer hier noch tiefer „eintauchen“ will, dem kann - als Zusatzliteratur zum Handbuch - das von Data Becker herausgegebene Floppy-Buch empfohlen werden. Trotz der (in den Listings) leider enthaltenen Fehler ist es ein brauchbares Informationswerk. Wer einen „guten Draht“ nach England hat und auch noch der englischen Sprache mächtig ist, der findet im „Disc Firmware Supplement“ ebenfalls viel an tiefergehenden Informationen. Auch die in manchen Veröffentlichungen als „versteckt“ genannten Befehle und deren Handhabung sind dort ausführlich beschrieben. Vielleicht gibt es bis zum Erscheinen dieses Heftes aber auch bereits eine deutsche Übersetzung hiervon.

Für uns reicht es im Augenblick zu wissen, daß es im Disketten-Be-triebssystem sowohl einen Befehl für das Lesen, als auch für das Schreiben eines Sektors gibt. Außerdem ist noch von Interesse, daß das Betriebssystem der CPCs eine Firmwareroutine für das Auffinden von Befehlen und Routinen bereitstellt. Diese Routine findet auch Befehle von externen ROMs. Sie hat den Namen „KL FIND COMMAND“ und wird durch call &BCD4 aufgerufen. Beim Einsprung in diese Routine, ist nur eine Einsprungbedingung erforderlich, das „HL“-Register muß die Adresse des Kommandonamens, nach dem gesucht wird, enthalten. Der CPC prüft daraufhin, ob ein RSX-Befehl oder ein Hinter-grund-ROM-Befehl, der diesen Spezifikationen entspricht, vorhanden ist. Durch „Carry-Flag“ an oder aus, wird der Verlauf der Suche signalisiert. Carry-Flag an heißt gefunden, im anderen Falle nicht gefunden. Da ich voraussetze, daß das CPC-System ordnungsgemäß arbeitet und die Programme, die Sie später einsetzen, korrekt abgeschrieben wurden, brauchen wir uns nur um die „erfolgreiche“ Suche zu kümmern. Nach der Rückkehr aus der Suchroutine enthält das Register „C“ die ROM-Auswahladresse (ROM-select) und „HL“ enthält die Adresse der gesuchten Routine. Die-
se Registerinhalte müssen in Speicherstellen geladen werden, auf die ein „Folgeprogramm“ zugreift. Damit haben wir nun die Voraussetzungen für den direkten Zugriff auf die Diskette.

Welche „Mächtigkeit“ Sie mit diesem Wissen haben, wird Ihnen nach Lektüre dieser Grundlagenaxtikel und deren Anwendungsbeispielen bestimmt klar werden, Ich kann Ihnen vorab nur mitteilen, daß Ihnen Möglichkeiten offenstehen, die Ihre
Erwartungen vermutlich weit übertreffen. So ist es möglich, sehr komfortabel gelöschte Files wieder zurückzuholen, sogenannte RAN-DOM-Dateien aufzubauen, „COM-Files“ in Binärfiles zu ändern und vieles mehr. Einzige Voraussetzung, daß auch Sie all dies programmieren können ist Ihr Wille. Wie es geht wird in diesem Heft durch einige Beispiele gezeigt. Im nächsten Kapitel führe ich Sie dann wirklich ins „Eingemachte“.

L. Miedel, ComputerSchau

★ PUBLISHER: COMPUTER SCHAU
★ ANNÉE: 1986
★ LANGAGE:
★ LiCENCE: LISTING
★ AUTHOR: Lothar MIEDEL
 

Je participe au site:

» 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
Page créée en 420 millisecondes et consultée 101 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.