Ich habe den Fehler gefunden. Zumindest in meinem MegaST, denn es ist nicht gesagt, dass sich alle gleich verhalten.
Hier ist das Problem zu sehen. Die hellblaue Kurve zeigt die /AS-Leitung an der FPU; also alle Buszugriffe im Rechner. (Nicht jeder Bus-Zugriff geht zur FPU, natürlich.) Die magenta Kurve zeigt die /CS-Leitung (Chip-Select) an der FPU. Wenn sie "low" ist, wird die FPU angesprochen, reagiert also auf Bus-Zugriffe über /AS usw. Dargestellt ist ein Zugriff auf ein 32-Bit-breites FPU-Register; erkennbar daran, dass zwei Zugriffe in unmittelbarer Folge passiert. Zur Erinnerung: Die 68000-CPU im ST hat nur einen 16-bittigen Datenbus und muss die 32 Bit aus dem Register folglich in zwei "Häppchen" holen.
Was man nun sieht: Die Chip-Select-Logik hat irgendeinen Glitch, eine Race-Condition, was auch immer. Diese Nadel beim zweiten Zugriff führt dazu, dass sich die FPU kurz
nicht und dann doch
wieder angesprochen fühlt, also statt zwei Zugriffen letztlich drei sieht. Und das ist genau das Problem! Das passt der State-Machine in der FPU nicht und sie steigt mit einem Fehler (Status 0x1D0D, "protocol violation", wie bei Dir
@Lukas Frank) aus.
Vorläufige Lösung ... eher ein Hack, ganz offensichtlich
so keine Dauerlösung:
Der 1 nF Kondensator zwischen /CS und VCC macht die Nadel auf der /CS-Leitung quasi platt. Ich will noch herausfinden, wie die /CS-Logik implementiert ist; vielleicht kann das Problem an anderer Stelle besser lösen.