APPLICATIONSDISQUE ★ DISK-MONITOR ★

Disk-MonitorApplications 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 ★ 

Disketten Byte für Byte gelesen

Mit einem Disk-Monitor kann man jedes Byte einzeln lesen und verändern. Hier finden Sie die Grundlagen, wie auf einer Diskette die Daten abgelegt sind.

Neben einem entsprechenden Programm braucht man grundsätzliche Kenntnisse über das Format, in dem die Daten gespeichert werden. Das Programm »Disk-Monitor« ist eine menügesteuerte Routine, die es erlaubt, einzelne Sektoren einer Diskette zu lesen und zu verändern. Der geänderte Datensatz kann selbstverständlich auf die Diskette zurückgeschrieben werden, so daß man beispielsweise versehentlich gelöschte Programme wieder aufrufen kann.

Die wichtigsten Routinen des Disk-Monitors stehen in dem Binärfeld »DMON.BIN«. Dieses erhält man. wenn man das Listing 1 eingibt und einmal laufen läßt. Auf der Diskette wird dann automatisch der Speicherinhalt ab 7000 hex abgelegt. Das Basic-Programm (Listing 2) lädt »DMON.BIN« im Bedarfsfall (das heißt wenn die Maschinencode-Routine noch nicht im Speicher steht) nach.

Die Bedienung des Programms ist sehr einfach, da alle wichtigen Eingaben auf dem Bildschirm angefordert werden. Bevor Sie aber beginnen, müssen Sie ein paar grundsätzliche Kenntnisse über das Format haben, in dem Ihr Computer seine Daten auf der Diskette ablegt.

Ein »Sector« (Sektor) ist die Grundeinheit, in der die Daten gespeichert werden. Die Bytes werden nämlich nicht einzeln gelesen, sondern immer in Portionen von 512 Stück. Jede einzeln les- und beschreibbare Einheit ist also exakt 512 Byte lang.

Ein itfrack« (Spur) besteht im Schneider-Format aus 9 Sektoren. Es können also auf einer Spur 4.5 KByte Daten abgelegt werden. Auf der normalen 3-Zoll-Diskette befinden sich 40 dieser Tracks, die von 0 bis 39 durchnumeriert sind.

Ein »Block« besteht aus zwei Sektoren, enthält also genau 1 KByte Informationen. Das Amsdos (Diskettenbetriebssystem Ihres Schneiders) speichert alle Daten immer in 1 KByte langen Blöcken. Somit brauchen auch Dateien mit nur einem Zeichen immer 1 KByte Speicherplatz auf der Diskette Im Block 0 ist das Directory (Inhaltsverzeichnis) zu finden. Dieser Block 0 liegt bei Disketten im Datenformat (formatiert mit »FORMAT D«) im Sektor 1 der Spur 0. Im CP/M-Format (»FORMAT«) steht das Inhaltsverzeichnis im Sektor 1 der Spur 2. Die ersten beiden Tracks werden ja in diesem Fall vom Betriebssystem belegt.

Einfache Bedienung

Nachdem Sie den Disk-Monitor gestartet haben wird auf dem Bildschirm die Ausgabemaske aufgebaut. In der Kopfzeile ist das Menü, mit dem Sie die einzelnen Routinen aufrufen. eingeblendet. Die Auswahl erfolgt wahlweise mit dem Joystick oder den Cursor-Tasten. Im folgenden werden die einzelnen Programmteile beschrieben:

Lesen: Prinzipiell wird immer ein Sektor, das heißt 512 Byte, von Diskette gelesen. Zuerst fragt das Programm, ob man den ersten oder einen ganz bestimmten Sektor eines Blocks lesen will. Im ersten Fall wird man nach der hexadezimalen Nummer des Blocks, im zweiten Fall nach dem Track und dem Sektor befragt. Track und Sektor werden immer mit dezimalen Ziffern bestimmt. Nachdem der Sektor von Diskette geladen ist. wird er in hexadezimalen Werten und in ASCII-Zeichen ausgegeben. Da aber nur 256 Byte auf eine Bildschirmseite passen, muß man. um die zweite zu sehen, den Punkt Editieren aufrufen.

Schreiben: Diese Anweisung funktioniert im Prinzip wie das Lesen. Nur wird jetzt der bearbeitete Sektor auf die Diskette zurückgeschrieben.

Editieren: Der Sektor, der gerade im Speicher steht, wird beim Aufruf dieser Routine mit Cursor in der oberen linken Ecke auf dem Bildschirm ausgegeben. Sie können mit diesem Cursor jede Speicherstelle ansteuern und einzelne Werte überschreiben (immer hexadezimal). Mit der Copy-Taste erreichen Sie den zweiten Tteil des Sektors (beziehungsweise den ersten, wenn der zweite schon auf dem Bildschirm steht). Mit der Tastenkombination Shift und Cursor links (rechts) wird ein Sektor vor (zurück) gegangen. Mit Shift und Cursor hoch (herunter) wird der davor (dahinter) liegende Track aufgerufen. Mit der Enter-Taste kann man auf ASCII-Ein-gabe umschalten. Die Esc-Taste ruft das Menü wieder auf.

Catalog: Diese Routine ruft ähnlich dem Basic-Befehl »CAT« das Directory auf. Atterdings ist der User-Bei eich nicht auf Werte zwischen 0 und 15 beschränkt, sondern es können alle benutzbaren Werte zwischen 0 und 255 eingegeben werden. Da beispielsweise gelöschte Dateien durch User-Nummer E5 hex gekennzeichnet sind, kann man sich so alle gelöschten Felder ausgeben lassen.

Ende oder Esc: Programm-Ende. In der untersten Bildschirmzeile werden die aktuellen Daten in bezug auf den Block, die Spur und den Sektor angezeigt. »Page = 1« sagt, daß im Moment die zweiten 256 Byte zu sehen sind. Der Offset (Startpunkt) im Sektor-Header (-Kopf) ist im CP/M-Format 40 hex. im Datenformat CO hex. Dieser Wert steht hinter dem Namen Format-Offset.

Directory als Schlüssel zu den Daten

Zum Schluß brauchen Sie noch ein paar Informationen zum Directory und dem File-Header. Das Directory liegt, wie schon erwähnt, im Block 0. Das bedeutet, daß es unter CP/M auf Spur 2 im ersten Sektor zu finden ist. Ein Eintrag umfaßt 32 Byte. Da maximal 64 Einträge erlaubt sind, ist das Directory also genau ein Block (zwei Sektoren) lang. Im Folgenden wollen wir die 32 Byte eines Eintrags mit den Ziffern 0 bis 31 fortlaufend durchnumerieren.

In Byte 0 steht immer die User-Nummer des Datensatzes. Normalerweise ist sie 0 Mit dem Befehl »USER« kann sie geändert werden. Aber noch eine wichtige Information ist in Byte 0 versteckt. Gelöschte Felder werden nämlich nicht wirklich gelöscht, sondern bekommen nur den User-Eintrag F5 hex. Dieser Wert steht deshalb bei einer frisch formatierten Diskette an jedem der 64 möglichen Directory-Einträge. Hat man also ein Programm versehentlich gelöscht, so muß man mit dem

Disk-Monitor nur dieses Byte wieder au! 0 setzen und schon ist der Schaden behoben. Mit einer Einschränkung allerdings. Man darf noch nichts anderes auf die Diskette geschrieben haben, da diese neuen Daten dann natürlich die alten überschrieben haben können.

16 KByte sind keine Grenze

In den Bytes 1 bis 8 steht der Dateiname, in 9 bis 11 der Zusatz. Der Punkt zwischen Name und Zusatz wird nicht mitgespeichert. Die Bytes 13 und 14 sind unbenutzt und in 15 steht die Zahl der Records des Files (der Datei). Ein Record ist ein Viertel eines Blocks und damit genau 128 Byte lang. In den Bytes 16 bis 31 stehen dann die Block-nummem, in denen die eigentlichen Daten gespeichert sind. Somit könnte ein File eigentlich nur 16 KByte (16 Blöcke mit je 1 KByte) lang sein. Dies umgeht man aber durch einen Trick. Man legt bei Bedarf einfach mehrere Directory-Einträge an. ln diesen Zusatzeinträgen stehen — bis auf die Block-Nummern — die gleichen Daten wie im ersten Eintrag. Mit Byte 12 werden diese verschiedenen Einträge auseinander gehalten. Beim Original steht in Byte 12 eine 0, im ersten Zusatz eine 1 und so weiter.

Woher weiß nun aber das Betriebssystem was für Daten in einem File gespeichert sind? Im Directory ist ja keine Aussage gemacht, ob ein Basic- oder Maschinencode-Programm vorliegt — oder ob das Feld einfach eine ASCII-Datei ist. Diese Infonnationen findet man im Füe-Header. Dieser steht am Anfang der Daten, genauer gesagt im ersten Record des ersten Sektors. Man findet ihn, wenn man sich das 16. Byte anschaut. Hier steht ja die Nummer des ersten Blocks der Datei. Dieser Block wird in den Speicher mit der Routine »Lesen« geladen.

Wenn man sich die ersten Byte anschaut, so findet man in Byte 0 nochmals die User-Nummer und in den Bytes 1 bis 11 den Namen mit Zusatz. Diese Daten sind prinzipiell überflüssig und werden auch von den System-Routinen nicht beachtet. So verändert »Rename« auch nur das Directory und nicht den ersten Datenblock. In Byte 18 steht die wichtige Information über den File-Typ. Ein Basic-Programm ist mit einer 0, ein geschütztes Basic-Programm mit einer 1 und eine Maschinencode-Routine mit einer 2 gekennzeichnet. In den Bytes 21 und 22 steht die Startadresse — zuerst das niederwertige, dann das höherwertige Byte. Für Basic-Pro-gramme ist diese Adresse fast immer 170 hex. In den Bytes 24 und 25 steht die Länge des Programms und in 26 und 27 die Executive-Adresse, das heißt die Adresse, bei der eine Maschinencode-Routine nach dem Befehl »RUN"Name"« startet.

Kopflose Dateien

ASCII-Dateien, die mit OPENOUT und PRINT #9 geschrieben werden, haben keinen File-Header. Bei ihnen stehen die Daten ab der ersten Adresse. Beim Speichern eines Nicht-ASCII-Files addiert das Diskettenbetriebssystem die ersten 66 Byte und schreibt diesen Wert in die Bytes 67 und 68. Bei öffnen einer Datei zum Lesen, wird diese Prüfsumme verglichen. Bei ASCII-Feldern, die ja vom ersten Byte an mit Daten beschrieben sind, stimmt der Wert dann nicht.

Wollen Sie nun auf Ihrer Diskette Daten direkt ändern, so müssen Sie auch die Prüfsumme berücksichtigen, damit das File korrekt behandelt werden kann. Für die ersten Schritte mit Ihrem neuen Disk-Monitor sollten Sie aber eine Übungsdiskette nehmen, damit eventuelle Fehlbedienungen keine unwiderruflichen Folgen haben.

Erik Pfeiffer/hg , Happy Computer

★ PUBLISHER: Happy Computer
★ YEAR: 1986
★ CONFIG: ???
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: HAPPY COMPUTER 1986
★ AUTHOR: Erik Pfeiffer
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Disk-Monitor    (Happy  Computer)    LISTING    GERMANDATE: 2017-01-21
DL: 234
TYPE: PDF
SiZE: 431Ko
NOTE: Uploaded by hERMOL ; 3 pages/PDFlib v1.6

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

Lien(s):
» Applications » Déplombeur Automatique
» Applications » Copion Turbo
» Applications » Discology v6.0 ROM
» Applications » Bankraid III/Bankraid 3
» Applications » Ultradisc (Expanded version)
» Applications » Déplombeur (Ghost Ram)
Je participe au site:
» Pour ce titre nous ne disposons de fichier executable sur CPC (Dump, Saisie du listing) , alors si vous avez ça dans vos cartons ou vous désirez usé vos petit doigts boudinés sur votre clavier faites le nous savoir.
» Vous avez des infos personnel ?
» 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 547 millisecondes et consultée 1602 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.