Der 74240 muss ein 74F240 oder 74ALS240 sein. auch der 7402 muss ein 74F02 oder 74ALS02 sein. Wenn die beiden zu langsam sind, dann wird das /ROM2 Signal nicht schnell genug durch geleitet und der Atari bootet nicht.
Ich dachte ich hätte darauf schon hingewiesen.
Solltest du keinen 74F240 oder 74ALS240 bekommen kannst du das /ROM2 Signal auch am 7402 invertieren. Dazu legst du das /ROM2 an die Pins5,6 Pin4 verbindest du dann mit Pin12. Damit umgehst du den langsamen 74LS240.
Beim 7402 ist es wichtig das er richtig schnell ist. Wenn du einen 74S02 bekommen kannst ist es noch besser. Das problem ist nämlich, das die GLUE schon das /DTACK gesendet hat bevor es das /ROM2 Signal aktiviert. der 68000 will also schon lesen. Ist die Schaltung zu langsam. Beendet der 68000 den Vorgang bevor die EPROMs aktiviert werden konnten. Und die EPROMS brauchen auch noch Zeit, bis sie Die Daten auf den Bus legen.
Das ganze ist nach dem ersten Zugriff weit weniger kritisch. Da hat die Schaltung "viel mehr" Zeit die Adresse zu dekodieren und das /CS bzw. das /DTACK zu erzeugen.
Du kannst aber schon testen, ob die Schaltung funktioniert.
Als erstes machst du einen Generellen Funktionstest:
Verbinde R/W, A23,A22,A21 mit 5V, Verbinde A20, A19, A18 mit Masse. An /CS schießt du ein ein Voltmeter (Multimeter auf Gleichspannungsmessung 5V) an. Wenn du /AS und /ROM2 mit 5V verbindest sollte das Multimeter ~5V zeigen ( so zwischen 2,5 und 4,5V) Sobald du einen der beiden Letungen mit Masse in Verbindung bringst (und den anderen an 5V lässt) sollte der /CS auch Low werden (zwischen 0V und 0.5V)
Das Wechseln von /AS sollte auch das /DTACK Signal verändern. Aber das Wechseln von /ROM2 sollte das /DATCK nicht beeinflussen. Ist /AS gegen Masse geschaltet, so hat /DATCK 0V, Ist /AS gegen 5V geschaltet so wird eine krumme Spannung zwischen 1,5V und 3.5V gemessen. Das ist normal. Der Ausgang ist "gesperrt" wenn er nicht aktiviert ist. Das Messgerät misst sich sozusagen selber.
Sollte es immer 0V anzeigen, so hast du ein gutes Gerät und musst die Leitung mit einem Widerstand mit 5V verbinden. Der Widerstand sollte so zwischen 1KOhm und 10KOhm haben. (es kommt nicht so darauf an.) Das macht aus dem Open Collector Ausgang einen Normalen Ausgang der zwischen 5V und 0V schaltet.
Wenn alles soweit funktioniert kannst du dir recht sicher sein, dass du alles richtig verlötet hast. Sollte es nicht funktionieren Liegt der Fehler entweder bei mir oder Du hasst einen Fehler mit dem Verkabeln gemacht.
Fehler die ich bei mir immer suche:
- Brücken gelötet? (passiert ständig. Man muss Immer benachbarte Lötstellen gegeneinander auf Durchgang prüfen.)
- Unsaubere oder kalte Lötstellen?
- Beim anschließen Verzählt?
- Beim umdrehen die Seiten der ICs vertauscht? (passiert mir ständig.)
- Hat ein Kabel einen Kabelbruch?
- Sind die ICs in Ordnung? (gegen andere Tauschen)
Du kannst auch einen vollen Funktionstest machen.
/AS gegen Masse legen und /ROM gegen 5V und dann alle Anderen Eingänge Durch testen Einzeln von der vorgegebenen Polung lösen und an die Gegenteilige legen dann wechselt /CS und /DATCK passend dazu. Bei jedem Spannungswechsel sollte auch die Ausgänge die Spannung wechseln.
Wenn das Funktioniert, Dann ist die Schaltung soweit in Ordnung.
Jetzt noch etwas Hintergrund zur Schaltung. Wenn Die Adressleitungen A23=1,A22=1,A21=1 und A20=0 sind Ist das das Hexadezimale "C" Sind die anderen Adressleitungen auf 0 so bekommt man insgesamt "C00000". Das ist die Basisadresse der neueren TOS ROMs.
Wenn dann noch R/W=1 (es wird gelesen) und /AS=0 (Adresse auf dem Bus ist Gültig) ist, wird das /DTACK erzeugt. Dann wird das Signal mit dem /ROM2 verknüpft, und zwar mit einem ODER.
Das heißt wenn /ROM2 aktiv ist oder die richtige Adresse anliegt, oder die richtige Adresse anliegt und /ROM2 aktiv ist, ist /CS aktiv (low, 0V).
Nun kannst du testen, ob der Adressdecoder auch schnell genug ist.
Dazu baust du alles so auf das du von den alten ROMS booten kannst. Du verbindest Alle Signale bis auf das /CS, das lässt du offen. Der Rechner sollte noch normal booten. Wenn das nicht der Fall ist, hast du etwas falsch angeschlossen.
Nun schreibst du ein ganz kleines GFA-Basic Progrämmchen:
print HEX$(LPEEK(&HC00000),16)
Das ließt ein Word (16Bit) von "C00000". Auf dem Bildschirm sollte "FFFF" stehen. Stürzt das Programm mit zwei Bomben ab. Funktioniert Die Schaltung nicht, denn das DTACK wird gar nicht, oder zu spät gesendet.
Die Fehler können sein:
- An die falschen Signale Angeschlossen. (noch mal die Pinouts prüfen)
- Die Stromversorgung ist zu schwach. (An einer anderen Stelle anlöten, Einen Condesator nahe den IC zwischen +5V und Masse löten)
- Die Kabel sind zu lang.
Solltes es Funktionieren kannst du einen Abstrurz provozieren, indem du
LPOKE(&HC00000,&HFF)
schreibst. Wenn die Schaltung korrekt funktioniert, wird erkannt das auf die ROMs geschrieben werden soll (R/W ist low) und die Schaltung sendet kein /DATCK. Funktioniert das wird R/W nicht richtig dekodiert.
Wenn alles wie erwartet Funktioniert, schließt du die Beiden ROMS symmetrisch (gleich) an. Bootet er nicht, kann nur noch liegen das das /CS Signal nicht oder nicht rechtzeitig an den ROMS ankommt. Entweder ist etwas falsch angeschlossen, oder die ICs sind zu langsam.
Ich bin mir einigermaßen sicher, das die Schaltung funktioniert. So sicher wie man sein kann wenn man eine Schaltung der Art das letzte mal vor einigen Jahren frei zusammen gelötet hat. Aber das ist keine Quantenphysik. Die Logik dahinter ist einfach.