APPLICATIONSDISQUE ★ DISKETTEMONITOR (CPC AMSTRAD INTERNATIONAL) ★

DiskettemonitorDiskettemonitor (CPC Amstrad International 89/03)
★ 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 ★ 

Der Diskette aufs Byte geschaut

Last, but not least — ein Nachtrag zum Floppykurs

Wie wir bemerken konnten, stieß unser Floppykurs auf reges Interesse. Leider hat sich aber in den ersten zwei Teilen des Floppykurses der Fehlerteufel unbemerkt breitgemacht. Wir wollen nun hier an dieser Stelle mit einem Nachtrag die eventuell entstandene Verwirrung (hoffentlich) beseitigen.

Zuerst die Arbeit...

Auf Seite 33 in Heft 10/88 wurde im Listing 1, welches die erste Möglichkeit des Befehlsaufrufes zeigen soll, bei der Befehlssequenz LD A, # FF das #FF vergessen. Falls Sie diesen Befehl wie dort abgedruckt eingetippt haben, werden die Fehlermeldungen nicht unterdrückt. Nach der Verbesserung funktioniert die Routine einwandfrei.

Ein weiterer Fehler hat sich auf der gleichen Seite in der mittleren Spalte eingeschlichen. Dort muß die im Z-80-Prozessor nicht vorhandene Befehlsfolge 'LD (ADR+2),C' durch 'LD A,C' und 'LD (ADR+2),A' ersetzt werden.

Ein sehr gravierender Fehler ist in Heft 11/88 auf Seite 25 zu finden. Hier wird gesagt, daß man bei Aufruf von &88 (Test Drive) im Akku das Statusregister 0 zurückerhält. Dies ist jedoch nicht richtig. Nach Abarbeitung von 'Test Drive1 erhalten Sie im AKKU das Statusregister 3 mit AND &C0 verknüpft zurück, folglich ist es wenig sinnvoll, die Bits 1 bis 7 auszublenden. Um den Originalwert von Status 3 zu bekommen, laden Sie ihn mit 'LD A, (# BE4C)' in den AKKU. Den genauen Aufbau von ST3 entnehmen Sie bitte dem dritten Teil des Floppykurses (Heft 12'88). Hier sei nur noch erwähnt, daß Sie mittels folgender Be-
fehle Auskunft über den Zustand des gewünschten Laufwerkes erhalten können:

LD A,(#BE4C) ; ST3 in AKKU
BIT 5,A ; Laufwerk bereit? ZERO-Flag ist zurückgesetzt, wenn das DRIVE bereit ist
JR NZ,NONERR ; kein Fehler
BIT 6,A ; Diskette schreibgeschützt ? ZERO-Flag ist gelöscht, wenn die Diskette schreibgeschützt ist
JR Z,NONERR ; kein Fehler

Das Kommando TEST DRIVE (&88), steht im AMSDOS an der Adresse &C630. Von dort wird nach &C638 verzweigt und der Befehlscode sowie die Laufwerksnummer an den FDC übergeben. Hierauf wird 'Resultphase auslesen“ angesprungen. Im AMSDOS wird die Routine 'Resultphase ausle-sen' an der Adresse &C91C normalerweise dazu benutzt, um die Resultphase an der Adresse &BE4C abzulegen. Hierbei wird vor Abschluß der Routine der Wert aus &BE4C mit &C0 AND- verknüpft, um den Interruptcode zu isolieren. Dies ist jedoch nur beim Statusregister 0 sinnvoll, beim ST3 ergibt sich hierdurch ein absurder Wert, der keine Aussagekraft mehr hat. So ist es auch nicht weiter verwunderlich, daß diese Routine immer ein gelöschtes CARRY-Flag zurückgibt, da beim AND-Befehl das CARRY gelöscht wird. Es handelt sich hierbei also um einen Fehler im AMSDOS.

Im gleichen Heft befindet sich ein Druckfehler auf Seite 27, Spalte 3. Dort steht die Befehlssequenz 'LD IX, (#E42)', richtig muß es jedoch 'LD IX,(# BE42)' heißen. Mit dieser falschen Adresse kann man dann natürlich nicht die richtige Startadresse derzwei-ten Tabelle ermitteln. Im Listing tritt dieser Fehler zum Glück nicht auf, so daß dieses einwandfrei läuft.

... dann das 'Vergnügen'!

Nun noch ein Nachtrag zu einem Thema, das wir ganz gezielt nicht in den Floppykurs integriert haben. Es handelt sich hierbei um die EINFACHE SCHREIBDICHTE. Von einfacher Schreibdichte (engl. Single Density) spricht man dann, wenn die Daten im MF-Format aufgezeichnet werden, das heißt bei einer 3“-Diskette befinden sich dann zwar immer noch 40 Spuren auf einer Diskettenseite, die Spurgröße hat sich jedoch halbiert, so daß nur noch 3125 Byte statt wie beim MFM-Format 6250 Byte auf einer Spur Platz finden. Jetzt werden Sie sich sicherlich fragen, warum auf einer Spur 6250 Byte passen, wenn 9*512 (Sektoranzahl * Sektorlänge) doch nur 4608 Byte ergeben. Diese Differenz läßt sich sehr einfach beantworten. Sie kommt dadurch zustande, daß zwischen jedem Sektor auf einer Spur eine Lücke, die GAP #03 ist. Ebenfalls hat jede Spur auch eine Kennzeichnung, die Speicherplatz benötigt. Den genauen Aufbau einer Spur entnehmen Sie bitte Kursteil 3. Um den genauen Ablauf des Lesens und Schreibens auf Diskette (das ist die Magnetisierung der Diskettenoberfläche) zu erklären, wäre ein tiefes Eindringen in die Physik notwendig. Um jedoch unnötige Verwirrung zu vermeiden, wollen wir dies lieber sein lassen. Das MF-Format findet im AMSDOS keine Verwendung, es ist jedoch denkbar, daß es über kurz oder lang einen Kopierschutz mit Single Density geben wird. In unserem Diskettenmonitor DMON haben wir bewußt darauf verzichtet, da einfache Schreibdichte heute noch nicht angewandt wird (sollte dieses Problem jedoch akut werden, wird es sicherlich einen Update von DMON geben).

Ein weiteres Thema, das wir hier noch ansprechen wollen, ist die in unseren Listings oft auftauchende Fehlerbehandlungsroutine ERROR: oder ERR:. Wie eine solche, immens wichtige Routine programmiert werden kann, soll Ihnen Listing 1 und 2 verdeutlichen.

Wichtig ist hierbei die richtige Behandlung des Stacks; darauf müssen Sie aber selbst achten, da man nicht im voraus sagen kann, wie aus dem Hauptprogramm in die Fehlerbehandlung verzweigt wird (CALL, JP, etc.). Prinzipiell gibt es zwei verschiedene Routinen. Die erste kann bei folgenden Befehlen verwendet werden:

  • DATEN LESEN
  • GELÖSCHTE DATEN LESEN
  • SPUR LESEN
  • ID LESEN
  • DATEN SCHREIBEN
  • GELÖSCHTE DATEN SCHREIBEN
  • SPUR FORMATIEREN
  • SPUR ÜBERPRÜFEN ( > = , < = , =)

Eine Möglichkeit für diese ERROR-Routine entnehmen Sie bitte Listing 1. Sie deckt fast das gesamte Spektrum der Fehlermöglichkeiten ab. Besondere Fehler, wie etwa OR (Over Run), die nur dann auftreten, wenn Ihre Routine fehlerhaft ist, wurden nicht berücksichtigt.

Die zweite Fehlerbehandlungsroutine kommt beim Befehl LAUFWERKSSTATUS ERMITTELN zum Einsatz, ihr Aufbau wird in Listing 2 dargestellt. Hierbei ist zu beachten, daß Bit 6 immer gesetzt wird, falls die Diskette
schreibgeschützt ist. Dies kann bei DATEN LESEN zu Fehlinterpretationen führen, da es dabei unrelevant ist, ob die Diskette über Schreibschutz verfügt oder nicht.

So, das war es nun endgültig von der Floppy-Programmierung. Wir hoffen, daß diese Berichtigungen den letzten Zweifel beseitigt haben und Sie unserem Kurs wertvolle Anregungen und Informationen entnehmen konnten. Sollten Sie weitere Fragen zum Thema FDC-Programmierung haben oder eigene Erkenntnisse und Vorschläge an die anderen Leser weitergeben wollen, so tun Sie dies ruhig, die Autoren des Kurses stehen gerne zur Verfügung.

Christoph Hipp/ Alexander Knopp/ Ulrich Weiß/jb, CPCAI

★ PUBLISHERS: CPC Amstrad International , MERCURYSOFT
★ YEARE: 1989 , 1988
★ CONFIG: ???
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTIONS: CPC AMSTRAD INTERNATIONAL 1989 , CPC AMSTRAD INTERNATIONAL 1989
★ AUTHOREN: Christoph Hipp , Alexander Knopp , Ulrich Weiß
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» DisketteMonitor  v1.3    (CPC  Amstrad  International)    (Source)    GERMANDATE: 2021-02-02
DL: 223
TYPE: PDF
SiZE: 1844Ko
NOTE: 12 pages/PDFlib v1.6

» DisketteMonitor  v1.3    (CPC  Amstrad  International)    GERMANDATE: 2020-06-23
DL: 197
TYPE: ZIP
SiZE: 8Ko
NOTE: 40 Cyls
.HFE: Χ

» DisketteMonitor    (CPC  Amstrad  International)    (Source-Error-Routine)    GERMANDATE: 2021-02-02
DL: 186
TYPE: PDF
SiZE: 701Ko
NOTE: 7 pages/PDFlib v1.6

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

Lien(s):
» Applications » RPM
» Applications » Reductor (Amstar&CPC)
» Applications » Disc Head Reader (Schneider Aktiv)
» Applications » Pride Utilities - FIDO/F.I.D.O
» Applications » LDir
» Applications » Luxuserase (CPC Amstrad International)
Je participe au site:
» 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 295 millisecondes et consultée 2365 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.