Vielleicht traut sich ja doch der Eine oder die Andere mit Ideen zur Problemlösung.
Weitergeleitet:
--------><--- schnipp
Hallo
Der widerspenstige Floppy Disk Controller der Firma Lakosa überträgt die Daten von/zur Floppy per DMA (BUSREQ_N/BUSAK_N).
Der Hauptprozessor bereitet einen I/O-Parameter-Block (7Bytes) im Speicher vor und übergibt dessen Anfangsadresse
über zwei I/O-Zeilen an den Floppy Disk Controller.
Der FDC liest und interpretiert den IOPB und überträgt die Daten von/zur Floppy per DMA in den Speicher.
Der Hauptprozessor pollt ein Status-Register des FDC, um das Ende der Operation festzustellen.
Nach dem Ende der Operation liest der Hautprozessor zwei Status-Register des FDC, um festzustellen. ob die Operation
ohne Fehler ausgeführt wurde.
IOPB und Register-Layout des Lakosa FDC sind kompatibel zum FDC des Intellec MDS Entwicklungssystems für 8080/85, 8086 aus den 70er Jahren.
Somit kann man das ISIS-II Betriebssystem booten.
Anfang der 80-er Jahre hatte ich auch eine Floppy, von der ich CP/M booten konnte.
Es ist ein Monitorprogramm vorhanden, mit dem Speicher angezeigt und verändert werden kann.
Den Monitor habe ich Ende der 70-er, Anfang der 80-er Jahre durch Aufbohren des Intel MDS Monitors selbst geschrieben.
Leider existieren die Sourcen und auch die Listings nicht mehr.
Ich habe den Monitor im letzten Jahr vor Ostern disassembliert und das Ergebnis so lange getunt, bis ich ein bit-genaues Abbild des EPROMs erzielt habe.
Ich weiss zwar immer noch nicht, genau, wie alle Routinen des Monitors funktionieren, wäre aber theoretisch in der Lage Veränderungen, Verbesserungen vorzunehmen.
Über den Monitor können Kommandos zum Floppy Disk Controller abgesetzt werden wie SEEK, Format, READ Sector, WRITE Sector.
Kommandos, wie Format und Seek, welche keine Datenübertragung zwischen Speicher und Floppy erfordern, funktionieren in der Regel.
Das Lesen und Schreiben einzelner Sektoren bereitet schon mehr Schwierigkeiten.
Manchmal funktioniert das Lesen eines Sectors einwandfrei, manchmal hängt sich der FDC auf.
Das häufigste Symptom ist, daß der Motor der Floppy kurz anläuft und das System dann hängt.
BUSAK_N ist dann low, MREQ_N ist low, WR_N ist low.
Das Lesen von FD auf Memory Adresse A000 funktioniert besser als das Lesen von FD auf Memory Adresse 4000.
Das Lesen von FD funktioniert besser, wenn mehr Karten auf dem Bus eingesteckt sind, z.B. Bus Extender.
Auch funktioniert das Lesen von FD besser wenn 2 Stück 32K SRAM-Karte eingesteckt sind statt einer 128K SRAM-Karte.
Es deutet vieles auf ein Signal-Integrity- oder ein Timing-Problem hin.
ISIS-II von Floppy zu booten funktioniert nur in ganz wenigen Fällen.
Meist hängt sich der FDC auf, mit den oben geschilderten Symptomen.
Manchmal werden alle erforderlichen Sektoren geladen, ISIS-II Ver. 4.3 gibt seine Meldung aus, stürzt dann aber ab.
In dem Fall sind vermutlich falsche Daten geladen worden, oder die Daten wurden auf falsche Adressen geschrieben.
Mir steht ein Tektronix MSO-4054 zur Verfügung.
Das MSO hat 4 Analoge Kanäle, einen Trigger-Eingang und 16 digitale Kanäle.
Nachdem mit der Chinesischen Methode (Tausch der Bauteile) nichts auszurichten war, habe ich einige Messungen am ECB-Bus durchgeführt.
Was ist mir aufgefallen:
1.
Der ECB-Bus ist mit einer aktiven Terminierung versehen, 110 Ohm gegen 2,5 Volt.
Wenn die Signale RD_N, WR_N, MREQ_N weder von der Z80-CPU Karte noch vom FDC getrieben werden, sehe ich einen sehr hohen Ripple auf
diesen Signalen (Taktfrequenz 8 MHz oder 4 MHz). Die Z80-CPU-Karte läuft mit 8 MHz)
Ich bin nicht sicher, ob das ein Messfehler ist. Ich greife die Signale von einem Bus Extender ab. Die 2,5 Volt Terminierungsspannung ist sauber.
2.
Der FDC kann die RD_N, WR_N, MREQ_N nicht auf den gleichen HIGH-Level treiben wie die Z80 CPU-Karte.
Ein Austausch der Treiber 74LS244 gegen 74F244 hat keine grundsätzliche Verbesserung gebracht.
Frage:
Muss man RFRSH_N in die Adressdekodierung einer Speicherkarte einbeziehen oder kann man darauf verzichten,
weil beim Refresh WR_N nicht aktiviert wird?
Ich hänge die Screenshots einiger Messungen an.