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:
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:
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