Es gibt einen neuen EPROM für das D004 mit folgenden erweiterten Funktionen:

- Erkennung von Disketten in 3,5"-Laufwerken (auch wenn Ready fest verdrahtet ist!)
- Bootfolge erweitert: phys. Diskettenlaufwerke 0/1/2/3, dann Festplatte
- erweiterte Selbsttest, einschließlich dRAM-Test im D004!
- ZAS Version 1.5 integriert

Am KC werden mehr und mehr 3,5"-Diskettenlaufwerke eingesetzt. Diese sind fast kompatibel mit den ursprünglich eingesetzten 5,25"-Laufwerken, aber eben nur fast: Denn die 3,5"-PC-Laufwerke haben kein READY-Signal, aber dieses wird von der CP/M-Software benötigt. Deshalb hatten wir uns damals eine kleine Zusatzschaltung ausgedacht, die bei Aktivierung des Laufwerks das READY-Signal erzeugt - egal ob eine Diskette eingelegt ist oder nicht. Das funktioniert prima, solange man das 3,5"-Laufwerk nicht als erstes Laufwerk B: einsetzten und davon Booten will. Denn hier wird ebenfalls das READY ausgewertet und nur wenn das Laufwerk nicht bereit ist, wird der Bootvorgang von der am GIDE-Interface angeschlossenen Festplatte durchgeführt. Man könnte also nicht mehr von Festplatte booten, wenn ein 3,5"-Floppy Laufwerk als erstes Diskettenlaufwerk mit Hilfe der kleinen Zusatzschaltung angeschlossen ist. Hier nochmal zu Erinnerung der Schaltplan dieser Zusatzschaltung:

Floppy 3,5

Es müsste trotzdem irgendwie erkannt werden ob sich eine Diskette im Laufwerk befindet. Dem PC gelingt das doch auch ohne READY-Signal? Durch Nachforschungen und Überlegungen stellte sich dann heraus, dass dieses Problem recht einfach gelöst werden kann: Statt des READY-Signals muss nur das INDEX-Signal ausgewertet werden, denn das steht sowohl bei den 5,25"- als auch bei den 3,5"-Laufwerken zur Verfügung. INDEX ist kein statisches Signal wie READY. Es liefert bei jeder Umdrehung der Diskette genau ein 0-Impuls. Zwar stellte sich beim Test heraus, dass es noch ein paar Unterschiede gibt zwischen den 3,5"- und den 5,25"-Laufwerken. So liefern die 5,25"-Laufwerke einmal ein statisches 0-Signal oder auch ein 1-Signal jenachdem ob eine Diskette eingeschoben ist oder nicht - Laufwerkshebel geöffnet! Offensichtlich wird hier direkt die Lichtschranke des Index-Loches ausgewertet. Bei den 3,5"-Laufwerken bleibt das Signal 1 solange keine Diskette vollständig eingelegt wurde. Deshalb muß zur Erkennung zunächst der Pegel des INDEX-Signals erfasst werden und dann in einer Zeitschleife getestet werden ob sich das Signal ändert. Eine Pegeländerung heißt dann "Diskette eingelegt".

Nachdem ich diese Routine funktionstüchtig hatte, kam mir die Idee den Test nacheinander für alle 4 Diskettenlaufwerke auszuführen und erst danach von Festplatte zu booten. Dann kann man von jedem Diskettenlaufwerk booten und hat trotzdem die Möglichkeit von Festplatte zu booten, indem man alle Disketten entfernt (was ja beim Einschalten der Normalzustand sein sollte). Die Zeitverzögerung beträgt dabei ca. eine Sekunde je Diskettenlaufwerk und verzögert den Bootvorgang von Festplatte um vertretbare 4 Sekunden. Auch wenn keine 4 Laufwerke angeschlossen sind, stellt das kein Problem dar, denn in diesem Fall wechselt das INDEX-Signal ja seinen Pegel auch nicht.

Da dieser Programmteil im D004-EPROM steckt, mußte ein neuer EPROM gemacht werden. Dabei habe ich gleich noch zwei weitere Bestandteile dieses EPROMs mit aktualisiert: ZAS gibt es ja inzwischen in der Version 1.5 und die D004-Selbsttestroutine habe ich auch noch etwas erweitert. Dazu eine kurze Übersicht, was bei dem Selbsttest mit JUMP FC FF jetzt abläuft:

  1. CRC-Test des EPROM-Inhalts und Vergleich mit der eingespeicherten Vergleichsprüfsumme. Wenn diese übereinstimmen, erscheint O.K., ansonsten wird der berechnete Wert angezeigt.
  2. Schreib/Lesetest Koppel-RAM: Hier wird Bit für Bit getestet, ob der Koppel-RAM vom Grundgerät aus gelesen und beschrieben werden kann. Es laufen zur Kontrolle die Adressen durch. Als mögliche Fehler werden angezeigt:
    Soll= xx Ist= yy wenn eine Abweichung zwischen Soll- und Istwert erkannt wird. oder
    Übersprechen von xxxx auf yyyy wenn bei Änderung einer Speicherzelle eine benachbarte Speicherzelle mit beeinflußt wird.
  3. Programmtest Koppel-RAM: Abarbeiten eines kleinen Programms im Koppel-RAM und Abwarten ob das erwartete Ergebnis zurück kommt.
  4. Testen des 63K großen Arbeitsspeichers (dRAM) im D004. Dazu läuft ein Miniprogramm im Koppel-RAM und nimmt Adresse sowie Daten entgegen, schreibt die Daten in den dRAM und liest sie wieder zurück. Das wird für jede Adresse einmal mit 0FFh und einmal mit 0h gemacht. Einzelne Bits oder Übersprechen auf benachbarte Speicherzellen wird nicht getestet. Zur Kontrollewird die Adresse angezeigt.
  5. Als letzter Test wird schließlich ein kleines Programm in den dRAM kopiert und abgearbeitet.
D004 Selbsttest

So sieht ein erfolgreich absolvierter Test aus. Der gesamte Test dauert knapp 1 Minute. Am längsten dauert dabei der dRAM-Test, deshalb läßt sich dieser mit der BRK-Taste abbrechen. Sobald ein Fehler erkannt wird, bricht der Test außerdem von selbst ab.

Das alles wurde nun in einen neuen EPROM gebrannt und steht ab sofort zum Download als KCC-Datei in der Rubrik "EPROM-Inhalte" zur Verfügung:  D004-EPROM Version 3.2