80-Bus Journal

  

November 1983 · Ausgabe 10/11

aber für Floppy-Neulinge etwas zu hoch sein (ich konnte die Lücken auch nur durch einige Telefongespräche schließen). Deshalb möchte ich hier eine detaillierte Beschreibung anhand des Programmablaufs geben, wie ich es in der letzten Ausgabe mit den Testroutinen gemacht habe. Den Artikel haben allerdings einige Leser nicht aufmerksam verfolgt, sonst hätte sich nicht das Gerücht halten können, der Controller liefe nicht mit CP/M, weil auf den Speicher unterhalb 100H durch den NMI zugegriffen würde. Deshalb nochmals: der Bereich bei 66H wird vor den Floppy-Zugriffen gerettet und danach wieder restauriert. Im Prinzip wird der genannte Speicherbereich nicht angegriffen.

Nun aber zur Programmbeschreibung.

Das EMDOS wird bei A100H gestartet. Nun macht es zunächst eine Initialisierung der Controllerkarte und versetzt sich selbst in den Warmstart-Modus, d.h. bei erneuten Starts mit EA100 wird die Initialisierung nicht mehr durchgeführt. Beim Auftreten irgendwelcher Fehler könnte es aber von Vorteil sein, das EMDOS erneut kaltzustarten. Zu diesem Zweck können Sie die Speicherzelle A187H mit B7 laden, und ein Kaltstart wird wieder möglich. Wenn wir das DOS in Zukunft mit einem geeigneten Urlader von der Diskette „booten“, wird diese Manipulation nicht mehr nötig sein. (Mehr dazu im nächsten Heft).

Im folgenden nochmals die möglichen EMDOS-Anweisungen mit gekürzten Erklärungen. Ausführlichere Beschreibungen können Sie in Heft 7/8 Seite 41 nachlesen.

EMDOS Anweisungen

LFilename[neue Anfangsadresse]
SFilenameAnfang Ende [Start 0 nur laden
1 laden und RET.
2 starten
3 Call von EMDOS]
SFilename (abspeichern mit gleichen Param.)
BFilename(abspeichern des BASIC Programms)
D(Inhaltsverzeichnis)
EFilename(löschen)
RFilenameAnfang Länge
FilenameAnfang Länge
M(Nassys oder BASIC)
Filename(laden und starten)

Durch die Anpassung haben sich noch zusätzliche Fehlermeldungen ergeben. Deshalb drucken wir hier nochmals den gesamten Katalog ab.

Fehlermeldungen des DOS:

Das DOS meldet die Fehler in Form einer Fehlernummer:

10 – Keine Diskette eingelegt
11 – Disketten Lesefehler
15 – Diskette ist schreibgeschützt
16 – Disketten Schreibfehler
17 – Falsche Laufwerksnummer
1F – Kein Laufwerk angeschlossen
20 – File nicht gefunden
21 – Diskette voll
22 – Fileende erreicht
23 – Falscher Filename
40 – Falscher Filetyp bei L (mit W abgespeichert)
41 – Falsche Anweisung
42 – Falscher Parameter bei Load
43 – Falscher Parameter bei Save
44 – Falscher Parameter bei Read/​Write

Die folgenden Ausführungen laufen parallel zum Asseblerlisting. Ein Vergleich dürfte Ihnen helfen, die Funktionen zu durchschauen.

EMDOS ruft PHEAS (die Schreib/​Leseroutinen) auf und enthält in A die Funktion.

00 bedeutet dabei „Initiieren“. Den Programmteil INIT kennen Sie schon aus der letzten Ausgabe.

01 sollte das Laufwerk abstellen, wird aber nicht benutzt, da unsere Controllerkarte das hardwaremäßig selbst besorgt, wenn nicht mehr auf die Karte zugegriffen wird.

02 selektiert das Laufwerk. Im Register C ist die Laufwerksnummer enthalten. Nach dieser Nummer wird die entsprechende Routine angesprungen. Hier wird der PIOA das Steuerwort übergeben (siehe Tabelle Journal 9/83 Seite 8) und HL auf die Tabelle des Laufwerks gerichtet (DSB). In dieser Tabelle findet EMDOS die Anzahl der Sektoren, die für das Betriebssystem reserviert sind (bei meinem augenblicklichen Format 3 Spuren mit je 10 Sektoren =30), die Anzahl der Sektoren, die auf Spur 3 für das Inhaltsverzeichnis vorgesehen sind (hier wurden 8 Sektoren angenommen) und die Anzahl der „Gruppen“. Das sind jeweils 4 Sektoren (also zusammen 1 KByte). Da wir mit unserem Format im Augenblick 92K speichern können, entspricht das 92 Gruppen.

Entsprechend PINIT und PSEL werden durch 03 und 04 im Akku die Lese- bzw. Schreibroutinen aufgerufen.

Die Routine TSTHOM testet, woher eine Fehlermeldung kommt, (gesetztes Carry-Flag weist immer auf einen Fehler hin. Deshalb auch immer das SCF/​Set Carry Flag bei den

Seite 10 von 52