Viele Grüße an alle!
Ich habe hart an meinem Revision 3 integrierten ATX XT-Mainboard gearbeitet und bin schließlich mit dem Ergebnis zufrieden.
Ich habe den Turbo-XT PC mit einigen eigenen Schaltungen überarbeitet und diverse PC-Erweiterungen auf dem Mainboard integriert.
Beim Zusammenbau und Testen meines Prototyps hatte ich ein sehr schwieriges Instabilitätsproblem. Nach weiteren Tests stellte ich fest, dass die Ursache ein instabiler Taktimpuls war. Die Lastkondensatoren mussten gesenkt werden, da die Kapazität meiner neuen PCB-Leiterbahnen auf der Taktleitung etwas höher war als zuvor. Ich habe versucht, die Taktleitungen stärker abzuschirmen, was den Nebeneffekt hatte, dass eine größere Kapazität auf den Taktleitungen entstand.
Außerdem stellte ich fest, dass das Timing meines Entwurfs im Zusammenhang mit dem DMA-Handshaking äußerst kritisch war. Nun, natürlich nicht nur mein Design, dieses Problem ist sicherlich auch für andere ähnliche Designs relevant.
Bisher habe ich mich von programmierbarer Logik ferngehalten, aber diese Erfahrung erinnert mich wirklich daran, dass ich sie in zukünftigen Designs ausprobieren sollte. Zum Beispiel in der DMA-Handshaking-Logik. Wie auch immer, ich habe jetzt einen Revision 3 XT-PC, der völlig stabil läuft und 100 % zuverlässig arbeitet. Nach so viel Arbeit glaube ich nicht, dass ich einen Revision 4-Entwurf machen werde. Ich hatte zu viele schlaflose Nächte damit, die Ursache für die Instabilitätsprobleme herauszufinden.
Jedes Mal, wenn ich anfing, mein neuestes XT-Mainboard zu bauen, brachte ich es irgendwie schnell zum Laufen, aber es tauchten unerwartete Probleme auf. Das liegt wirklich an der Komplexität des XT-PC-Designs, oder ich könnte sagen, des IBM-Industriestandarddesigns.
Kürzlich habe ich irgendwo gelesen, dass der 8237-DMA-Controller speziell zur Unterstützung des Diskettenlaufwerk-Controller-ICs hinzugefügt wurde, der offenbar ein schwieriges I/O-Timing aufweist, mit dem der 8088-Prozessor extreme Schwierigkeiten hat. Deshalb haben sie den 8237 hinzugefügt, der sich viel besser mit Diskettenlaufwerk-Controllern verbinden lässt. Zumindest ist das die Geschichte, die ich gelesen habe.
In meiner zweiten Revision habe ich den 5380 SCSI-Controller-Chip in einer „Factory Direct“-Schnittstellenmethode verwendet. Es erwies sich jedoch als unmöglich, es zum Laufen zu bringen, da ich herausgefunden habe, dass es keine echten SCSI-Adapterkarten gibt, die ausschließlich auf dem 5380 basieren und funktionierende SCSI/ASPI-Treiber bereitstellen. Deshalb habe ich mich für den Einsatz des 53C400 in meinem dritten Mainboard-Design entschieden. Dieses Mal konnte ich den SCSI-Controller mithilfe einer Kombination aus LS2000 und Adaptec SCSI-Festplattenunterstützungstreibern unter DOS ohne Probleme zum Laufen bringen.
Kurz gesagt, mein Prozess war wie folgt: Ich studierte zunächst die IBM XT-Designs und einen Taiwanesischen Nachbau des XT-Mainboard-Designs. Ich habe die DRAM-Steuer- und Aktualisierungslogik sowie die Speicherdecoder entfernt und den RAM durch zwei 512-MB-SRAM-Chips ersetzt. Außerdem habe ich einen 128-KB-ROM-Chip verwendet, der zwei Bänke im Bereich F0000-FFFFF hat. In D0000 und E0000 gibt es 128 KB UMB-RAM, der mit Jumpern aktiviert werden kann und zum Laden von DOS TSR-Treibern in obere Speicherbereiche verwendet werden kann. Ich habe alle Puffer und Latches durch modernere Typen ersetzt und einen Teil der DMA-Steuerlogik überarbeitet, um nicht verwendete Teile zu entfernen und die Logik-ICs durch Typen zu ersetzen, die ich am häufigsten verwende. Ich habe benutzerdefinierte I/O-Decoder erstellt, um alle Onboard-Erweiterungen zu unterstützen, und habe einfach anhand von Datenblättern und alter Dokumentation gearbeitet. Nur die Schnittstelle zum Diskettenlaufwerk war etwas knifflig, da ich die richtige Steuerungsmethode aus verschiedenen Dokumentationsquellen herausfinden musste. Endlich konnte ich es aus mehreren Quellen überprüfen und bekam eine funktionierende FDC-Schnittstelle.
Nicht jeder 8237 DMA-Controller kann das Diskettenlaufwerk auf meinem Mainboard steuern. Von 10 ICs, die ich getestet habe, erfüllten nur 3 das Timing, um Disketten formatieren zu können. Irgendwie ist das Formatieren einer Diskette der ultimative Test auf einem XT- und frühen AT-PC. Nachdem dieser Test erfolgreich verlaufen ist, würde es mich nicht wundern, wenn der gesamte PC völlig stabil läuft.
Ein Großteil meiner Arbeit bestand darin, noch einmal zu überprüfen und sicherzustellen, dass alles korrekt ist.
Eine Liste der integrierten Erweiterungen:
- XT-Tastaturcontroller
- COM-Anschluss
- Diskreter LPT-Port (PS/2-Typ)
- Diskettenlaufwerk-Controller
- IDE-Controller (kompatibel mit dem XT-IDE-BIOS, "Chuck mod")
- NCR 53C400 SCSI-Controller
- RTL8019AS LAN-Port
- Diskrete Steuerlogik für das ATX-Netzteil
- Diskrete Power-On-Reset-Logik
- 7 8-Bit-Erweiterungssteckplätze
Ich glaube, wenn ich schnellere Logik-ICs finde oder PAL-Logik verwende, kann ich alle DMA-Controller zum ordnungsgemäßen Funktionieren bringen. Ich sollte eines Tages einige Chips aus anderen Logikfamilien finden, um diese Theorie zu testen.
Hier ist ein Link zu meiner englischen Hobbyseite über das Projekt.
Wie geht es nach diesem Projekt weiter? Es gibt zwei Ideen, über die ich gerade nachdenke.
Ein Projekt wäre der Entwurf eines ATX 80286-Mainboards auf Basis des IBM 5170, das andere Projekt wäre der Entwurf einer ATX-Version eines NCR Decision Mate V-Computers. Dieser Computer kann in erweiterter Form ein Z80-System mit einem XT-PC kombinieren. Eine Art hybrides Computerdesign, das wirklich interessant ist.
Außerdem habe ich kürzlich das GLaTICK-Projekt auf Github von Benutzer 640-KB entdeckt, das vielversprechend aussieht, um einen RTC-Chip auf XT-Computern mithilfe einer neu entwickelten BIOS-Codeerweiterung zu unterstützen.

Schade, dass ich dieses Github-Projekt nicht entdeckt habe, bevor ich dieses Mainboard-Design fertiggestellt habe. Allerdings wird der Platz auf der Platine jetzt sowieso ziemlich knapp. Deshalb denke ich darüber nach, eine Erweiterungskarte für den RTC zu erstellen, um seine BIOS-Erweiterung zu testen und zu verwenden.
Im Moment verwende ich mTCP, um die Systemuhr mit einem NTP-Server zu synchronisieren, aber eine echte RTC wäre auch schön. Da ich den RTC-Chip nie mit meinem XT zum Laufen bringen konnte, habe ich den RTC in meinem zweiten Mainboard-Design entfernt.
Über meine 80286-Designidee werde ich separat berichten. Ich hoffe, dass einige Mitglieder hier im Forum mir bei diesem Vorhaben helfen können!
Viele Grüße,
Rodney