Ich hatte den Schaltplan noch etwas abgeändert, ein Layout erstellt, die Platine herstellen lassen und zusammengebaut. Wenn sie vollends funktioniert, werde ich den aktuellen Schaltplan hier veröffentlichen.
Eins vorab. Den Comparator 74688N hatte ich, wie man sieht, als vorkonfiguriertes Bauteil in Eagle eingesetzt. Die Spannungsversorgung hat gefehlt, das habe ich im Layout letzten Endes übersehen und musste mit 2 Kabeln eine Spannungsversorgung herstellen.
Diese Diskselect-Geschichte funktioniert so nicht. Ich hatte ja nach dem Comarator eine Leitung an die Diskselect Logic geführt. Diese muß low sein, damit überhaupt irgendein Laufwerk selektiert wird bzw. an dem 50pol Stecker dementsprechend auf low ist. Da muß ich die Leiterbahn trennen und auf Masse bzw. low legen. Dann kann ich mit 2 Jumpern erstmal zwischen 4 Laufwerken wählen über den 74139n. Später werde ich mit einer separaten "Diskselectorkarte" über Userpin1 und Userpin2 (das sind 2 freie Pins auf der Backplane) in der Lage sein, im laufenden Betrieb zwischen den Floppys um zu schalten. "In der Not" hab ich jetzt erstmal den 74139 entfernt und DSK0 auf Masse gelegt. Um diese Disk-Select-Geschichte kann ich mich später immer noch kümmern.
Ich betreibe die Karte an dem RC2014 mit ROMWBW. Ein passendes Bios habe ich noch nicht geschrieben. ROMWBW hat zwar eine Floppyunterstützung, allerdings arbeitet diese mit dem 8272 Controller, welcher überhaupt nicht mit dem WDC2797 kompatibel ist. Der 8272 Controller wäre zwar auch IBM 3740 kompatibel, aber zu dem Zeitpunkt, als ich die Karte konstruiert hatte, hatte ich noch kein ROMWBW bzw. ich wusste sogar überhaupt nicht, dass es das gibt.
Wie dem auch sei, das Bios des ROMWBW ist etwas komplexer als ein normales Bios von einem CP/M Rechner von damals. Es besteht aus mehreren Sources und wird dann später über ein Skript komplett assembliert und gelinkt werden. Der Floppyteil besteht aus der Datei fd.asm. Diese muß ich jetzt komplett neu programmieren. Ich stehe mit dem Entwickler von ROMWBW in Kontakt.
Die Register bei dem WDC2797 sehen wie folgt aus:
A1 A0 READ(RE#) WRITE(WE#)
0 0 Status Command
0 1 Track Reg Track Reg
1 0 Sector Reg Sector Reg
1 1 Data Reg Data Reg
Die Karte liegt an Port 60.
Dementsprechend sollte es doch so sein:
status equ 060h
command equ 060h
track equ 061h
sector equ 062h
data equ 063h
Wenn ich in CP/M das Programm "Survey" starte, zeigt es auch die Ports 60-63 an.
Ich habe momentan ein Lotharek HXC mit 50 zu 34 Pin Adapter mit der Karte verbunden. Da kann ich auf dem Display sehen, welcher Track gerade "aktiv" ist. In ROMWBW ist ein Monitorprogramm enthalten. Mit diesem kann man einen Wert bzw. in dem Fall ein Befehl an einen Port schicken.
Als Beispiel nehme ich folgende Werte bzw. Befehle:
restoretrack00 equ 0Ah
trackseek equ 1eh
Theoretisch sollte es also so sein. Ich sende zuerst den Wert 4Dh (für Track 77) an den Port 61h. Dann sende ich den Wert 1Eh an den Commandoport 60h. Dann sollte der Controller Track 77 anfahren... das macht er aber nicht.
Praktisch ist es so. Ich sende zuerst den Wert 4Dh (für Track 77) an den Port 63h !!!!!!! Dann sende ich den Wert 1Eh an den Commandoport 60h. Dann fährt er einwandfrei und am HXC ersichtlich den Track 77 an.
Schicke ich dann den Wert 0Ah (für restore to track00) an den Commandoport 60h, fährt er auch sauber nochmal zurück auf Track00.
Ich verstehe einfach nicht, warum er den anzufahrenden Track in 63h erwartet und nicht in 61h ?! Vielleicht hat da einer eine Idee.
Zu meiner nächsten Frage.
Ich habe auf dem Board 2 Spindepotentiometer und einen einstellbaren Kondensator verbaut. Den Testpin des Controllers habe ich auf low gejumpert, um die Einstellarbeiten durchführen zu können.
1. Den Potentiometer TR1 habe ich auf 500 nanosekunden eingestellt, dieser hängt am RPW-Pin. Das ist der Phasencomparator in dem Data Separator.
2. Den Potentiometer TR2 habe ich nicht eingestellt, dieser ist nur für doubledensity und das möchte ich (momentan) nicht. Er hängt am WPW-Pin, also write precompensation mode.
3. Den Drehko TC1 habe ich auf 250khz eingestellt, dieser hängt am VCO-Pin und reguliert die VCO Frequenz.
Die Werte dafür habe ich irgendwo im Internet geklaut. Aber ich bin ganz ehrlich, ich weiß nicht, was sie bedeuten. Bezieht sich das alles auf die Schreibdichte ? Warum ist das überhaupt einstellbar ?
Vielen Dank !
Gruß Jan