atari-home.de - Foren
Hardware => Hardware (Classic 16-/32-Bit) => Thema gestartet von: Lukas Frank am Mi 02.03.2016, 21:19:02
-
Ich habe mir als Festplatten Ersatz so ein Interface mal auf Lochraster aufgebaut und hatte Probleme damit. Mein billig China GAL Programmer hat wohl Probleme mit einigen JED Files. Wenn ich das 16V8 GAL mit dem original JED File brenne ist der Rechner tot da DTACK nicht richtig bedient/erzeugt wird.
Hatte die Idee mit JEDI ein neues JED zu erzeugen aber das scheitert an der ersten Fehler Meldung das DTACK kein Ausgang wäre ...
*IDENTIFICATION
T206IDE4;
*TYPE
GAL16V8;
*PINS
%INPUTS %
A23 = 1,
A22 = 2,
A21 = 3,
A20 = 4,
A19 = 5,
A18 = 6,
A17 = 7,
A16 = 8,
A5 = 9,
AS = 11,
RW = 12,
ROM2 = 19,
%OUTPUTS %
CER = 18, %E00000-E3FFFF %
SELP = 13,
SELS = 14,
IORD = 15,
IOWR = 16,
DTACK = 17; %Goes to inverter with Open Collector e.g. 74LS03 %
*BOOLEAN-EQUATIONS
DTACK = /AS*A23*A22*A21*/A20*/A19*/A18*RW+
A23*A22*A21*A20*/A19*/A18*/A17*/A16;
/CER = /AS*A23*A22*A21*/A20*/A19*/A18*RW+/ROM2;
/SELP = A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A5;
/SELS = A23*A22*A21*A20*/A19*/A18*/A17*/A16*A5;
/IORD = /AS*A23*A22*A21*A20*/A19*/A18*/A17*/A16*RW;
/IOWR = /AS*A23*A22*A21*A20*/A19*/A18*/A17*/A16*/RW;
*END
Ich habe keine Ahnung wie ich da weiter kommen kann. Wer weiss Rat ?
Dann hatte ich die Idee da das programmieren der VOFA GAL ohne Probleme klappte mir die JED Dateien als Vorbild zu nehmen und die IDE Interface Werte dort einzutragen ...
//Harry-O. Computer// GAL_PROG.PRG V1.0 April 1989
*L0000 00000000000000000000000000000000
*L0032 00000000000000000000000000000000
*L0064 00000000000000000000000000000000
*L0096 00000000000000000000000000000000
*L0128 00000000000000000000000000000000
*L0160 00000000000000000000000000000000
*L0192 00000000000000000000000000000000
*L0224 00000000000000000000000000000000
*L0256 01010111101110111011111111011110
*L0288 11111110111111111111111111111111
*L0320 00000000000000000000000000000000
*L0352 00000000000000000000000000000000
*L0384 00000000000000000000000000000000
*L0416 00000000000000000000000000000000
*L0448 00000000000000000000000000000000
*L0480 00000000000000000000000000000000
*L0512 01010111101110111011111111011110
*L0544 01010111011110111011101110111111
*L0576 00000000000000000000000000000000
*L0608 00000000000000000000000000000000
*L0640 00000000000000000000000000000000
*L0672 00000000000000000000000000000000
*L0704 00000000000000000000000000000000
*L0736 00000000000000000000000000000000
*L0768 01010111011110111011101110101110
*L0800 00000000000000000000000000000000
*L0832 00000000000000000000000000000000
*L0864 00000000000000000000000000000000
*L0896 00000000000000000000000000000000
*L0928 00000000000000000000000000000000
*L0960 00000000000000000000000000000000
*L0992 00000000000000000000000000000000
*L1024 01010111011110111011101110011110
*L1056 00000000000000000000000000000000
*L1088 00000000000000000000000000000000
*L1120 00000000000000000000000000000000
*L1152 00000000000000000000000000000000
*L1184 00000000000000000000000000000000
*L1216 00000000000000000000000000000000
*L1248 00000000000000000000000000000000
*L1280 01010111011110111011101110110111
*L1312 00000000000000000000000000000000
*L1344 00000000000000000000000000000000
*L1376 00000000000000000000000000000000
*L1408 00000000000000000000000000000000
*L1440 00000000000000000000000000000000
*L1472 00000000000000000000000000000000
*L1504 00000000000000000000000000000000
*L1536 01010111011110111011101110111011
*L1568 00000000000000000000000000000000
*L1600 00000000000000000000000000000000
*L1632 00000000000000000000000000000000
*L1664 00000000000000000000000000000000
*L1696 00000000000000000000000000000000
*L1728 00000000000000000000000000000000
*L1760 00000000000000000000000000000000
*L1792 00000000000000000000000000000000
*L1824 00000000000000000000000000000000
*L1856 00000000000000000000000000000000
*L1888 00000000000000000000000000000000
*L1920 00000000000000000000000000000000
*L1952 00000000000000000000000000000000
*L1984 00000000000000000000000000000000
*L2016 00000000000000000000000000000000
*L2048 10100001010101000011001000110000
*L2080 00110110010010010100010001000101
*L2112 00110100100000011111111111111111
*L2144 11111111111111111111111111111111
*L2176 111111111111111110
*C254A
*0F69
Klappt scheinbar auch, das Interface arbeitet jetzt und ich kann die CF Karte mit HDDriver ansprechen. Allerdings nicht richtig, da ist noch der Wurm drin ...
Original JED
08.02.2007, 20:09:08
IDE4.GAL assembled to IDE4.JED
with GAL-Assembler V1.2, (c) May 17 1992 by Ulrich Hack *
F0 *
N pin 19 = 'ROM2' = function19 *
N pin 18 = 'CER' = /function18 *
L0256 0101 0111 1011 1011 1011 1111 1101 1110 *
L0288 1111 1110 1111 1111 1111 1111 1111 1111 *
N pin 17 = 'DTACK' = function17 *
L0512 0101 0111 1011 1011 1011 1111 1101 1110 *
L0544 0101 0111 0111 1011 1011 1011 1011 1111 *
N pin 16 = 'IOWR' = /function16 *
L0768 0101 0111 0111 1011 1011 1011 1010 1110 *
N pin 15 = 'IORD' = /function15 *
L1024 0101 0111 0111 1011 1011 1011 1001 1110 *
N pin 14 = 'SELS' = /function14 *
L1280 0101 0111 0111 1011 1011 1011 1011 0111 *
N pin 13 = 'SELP' = /function13 *
L1536 0101 0111 0111 1011 1011 1011 1011 1011 *
N pin 12 = 'RW' = function12 *
N XOR(19..12) bits: *
L2048 10100001 *
N user ID: "T206IDE4" *
L2056 01010100001100100011000000110110
01001001010001000100010100110100 *
N AC1(19..12) bits: *
L2120 10000001 *
N enable product terms: *
L2128 11111111111111111111111111111111
11111111111111111111111111111111 *
N SYN bit: *
L2192 1 *
N AC0 bit: *
L2193 0 *
0000
Meine Fragen ...
- Was bedeuten die vier Nullen am Ende des original JED ?
- Was bedeutet das " *C254A " in meinem Handgemachten JED ?
- Was bedeutet das " *0F69 " in meinem Handgemachten JED ?
- Ich kann beim Prommer ungenutzte Stellen mit Einsen oder Nullen beschreiben, macht das einen Unterschied ?
-
- Was bedeuten die vier Nullen am Ende des original JED ?
Checksumme über die Datei, wobei 0000 ein reservierter Wert ist für "Checksumme ignorieren"..
- Was bedeutet das " *C254A " in meinem Handgemachten JED ?
Checksumme über die Fuses. Prüft Dein Programmer offensichtlich nicht, sonst hätte er sich schon beschwert, dass Du die Fuses von Hand geändert hast.
- Was bedeutet das " *0F69 " in meinem Handgemachten JED ?
Checksumme über die Datei. S. oben.
- Ich kann beim Prommer ungenutzte Stellen mit Einsen oder Nullen beschreiben, macht das einen Unterschied ?
Zumindest ist der originalen Datei angegeben ("F0 *"), dass alle undefinierten Fuses zu 0 gesetzt werden sollen.
Formatbeschreibung siehe z.B. http://www.pldtool.com/pdf/jesd3c_jedecfmt.pdf
-
Vielen Dank für das Wissen ...
Meinst du ich kann die Prüfsummen einfach weglassen ?
Hatte auch noch die Idee im original JED die Zeilen Nummerierung ordentlicher zu machen ...
-
Zumindest die Datei-Checksumme ist nach meinem Verständnis verpflichtend, wobei sie ja auf "0000" = "don't care" stehen kann. Andererseits scheint Dein Programmer sie ja eh zu ignorieren...
Bist Du denn sicher, dass es an einem fehlprogrammierten GAL liegt, dass Dein Adapter nicht funktioniert?
-
Mit dem Handgemachten JED und dem GAL dazu geht es ja, allerdings nicht richtig wenn ich den Rechner ausschalte und wieder an sind die Partitionen weg. Das liegt bestimmt am GAL weil es einen Fehler enthält ...
-
Ich bin gerade im Kontakt mit Uwe Seimet wegen dem IDE Interface generell, da die Logik in dem GAL zu unsauber decodiert ist reagiert das Interface auf 4 IDE Interface. Aussage von Uwe Seimet
Zitat von Uwe Seimet
Falls ein Port nicht existiert sollte möglichst auf keine der nicht belegten Adressen ein Zugriff
möglich sein, d.h. es sollte einen Busfehler geben.
Der Grund warum ich mit ihm in Kontakt bin ist das das Interface unsauber Arbeitet und abhängig der Einstellungen im HDDriver zu Fehlern führt.
@Lukas Frank
Ich kann dir das nochmal Kompilieren unter Windows, das Original Jedec File geht auch bei mir nicht zu Brennen. Wenn du kein Tos2.06 benutzt würde ich dir zwei Files aufbereiten, eins mit einer kleinen Erweiterung dazu müßtest du allerdings noch A8 an den GAL anlegen aber das würde ich dir dann noch genau sagen.
VG Ingo
-
Hallo Tuxie, das ist aber dieses hier -> http://atari.8bitchip.info/megastide.html
Die I/O Ports ROM_2 und CE für das TOS 2.06 nutze ich nicht. Ich lade TOS 2.06 von Diskette, das reicht mir so ...
Hatte mir das vor 10-15 Jahren mal aufgebaut auch auf Lochraster und ich meine das es ging. Hatte damals mit einem GABI gebrannt ohne Probleme.
Wäre dir Dankbar wenn du mir ein verbessertes JED machen könntest ...
-
Na ist doch das was ich auch aufgebaut habe, du nutzt aktuell das vom IDE mit Tos, ich schmeisse da denn Tos2.06 Teil raus. An Pin 19 des Gals legst du Adresse A8 an. Ich gebe dir dann beide GALs, modifiziert und unmodifiziert.
-
Klasse ...
-
Wichtige Änderung Pin 19 des GAL Adresse A8 anlegen um F000XX genauer zu dekodieren und nicht nur F00xxx. Gib bitte ein kurzes Feedback.
-
Was die Stabilität verbessern könnte (noch nicht versucht) wären 100ohm Widerstände in die Datenleitungen und 33Ohm in die Steuerleitungen.
-
Wäre schön wenn das noch weitere Leute Testen können, wenn das Funktioniert dann würde ich gern ein neues Interface bauen, mit CPLD und 2 Interface.
-
Ich kann nicht sagen ob dein GAL funktioniert. Wenn ich die CF Karte auf einem anderen Rechner mit MonSTer einrichte, erkennt HDDriver keine Partitionen. Das verhalten ist mit deinem GAL und mit meinem Handgemachten genau gleich. Habe jetzt bestimmt einige Male nach Verdrahtungsfehlern gesucht aber kann nichts finden. Ich kann die CF mit HDDriver einrichten und auch Programme darauf kopieren, nur laufen die dann nicht, es kommen keine Bomben oder sowas nur die Meldung Laufwerk C:\ antwortet nicht ...
-
Wie groß sind deine Pullup Widerstände auf dem Mainboard ? Sind die Noch Standard oder schon abgeänderte ? Sind die 4,7K oder 10k ?
Hast du das Obere Byte gedreht ? Oder 1:1 amgeschloßen ?
-
Habe mich verzählt, und wir brauchen auch zwei Leitungen. Muß mal schauen wo ich noch Platz haben muß A10 und A11 mit auswerten
IDE Port 1 wird ab F00000 eingeblendet
IDE Port 2 ab F00040
IDE port 3 ab F00080
IDE Port 4 ab F000C0
Um das Auzudekdieren brauchen wir A10 und A11 zusätzlich, ich hoffe ich bekomme das extra pin noch in den GAL, ich schaue nochmal.
VG Ingo
-
Kleine Modifikation im Layout
Pin 9 geht an A10
Pin 19 geht an A11
-
Wie groß sind deine Pullup Widerstände auf dem Mainboard ? Sind die Noch Standard oder schon abgeänderte ? Sind die 4,7K oder 10k ?
Hast du das Obere Byte gedreht ? Oder 1:1 amgeschloßen ?
Alles original Mega ST4 Mainboard. Der IDE Adapter ist 1:1 verbunden also D0 an D0 und so weiter ...
-
Kleine Modifikation im Layout
Pin 9 geht an A10
Pin 19 geht an A11
Ist das für mich gedacht ?
Pin 9 ist doch original A5 ?
-
Ja ist für dich gedacht :)
-
Also muss ich jetzt A5 und A8 weglassen und dafür A10 und A11 verdrahten ?
-
richtig
Was ich mir jetzt nochmal angesehen habe ist das DTACK Signal welches ich finde unschön gelöst ist. Einmal meldet der GAL ein DTACK Signal und dann wiederum das IDE Device. Meiner Meinung nach sollte die Festplatte das DTACK Signal dem GAL liefern und der GAL meldet dann das DTACK an den ST. Wiederum ist die Frage wann erwartet der ST das DTACK Signal ? Nach Beendigung des Transfers ? Oder wenn das Device fertig ist und bereit zum Daten empfangen.? Das ist mir noch nicht ganz klar daher finde ich den Weg wie DTACK erzeugt wird nicht ganz richtig.
-
Bei einem Lesezugriff setzt das Gerät /DTACK low, sobald es die Daten auf den Datenbus gelegt hat. Die CPU liest die Daten vom Bus und setzt dann /AS wieder auf high. Dann muss das Device die Daten wieder vom Bus nehmen und /DTACK zurücksetzen.
Bei einem Schreibzugriff liest das Gerät die Daten vom Bus und setzt dann /DTACK als Quittung low, ebenfalls so lange, bis die CPU /AS zurücksetzt.
Ich denke, das wird alles noch klarer, wenn Du das Handbuch zum MC68000 liest: http://www.nxp.com/files/32bit/doc/ref_manual/MC68000UM.pdf (http://www.nxp.com/files/32bit/doc/ref_manual/MC68000UM.pdf), insbesondere die Buszyklusdiagramme (Kap. 5) und die Timingdiagramme (Abs. 10.10), denen Du entnehmen kannst, wie lange die einzelnen Phasen dauern.
-
Ich denke da haben wir den Salat, denn genau das Passiert nicht richtig, das IDE Device wurschtelt rum ohne das der Decoder was davon weiß. Habe aber beim 16V8 keinen Eingang mehr frei habe.
Aber ich glaube das letzte Listing wird nicht Funktionieren, A5 wird doch benötigt, zum Umschalten zwischen
Command Block Registers und Control Block Registers... also bleibt nur um eine genaue Ausdecodierung zu machen auf einen 20V8 zu gehen, der sollte dann dafür ausreichen.
-
A5 kann doch bei Pin 9 bleiben und Pin 19 ist A10 und Pin 18 ist A11, oder ?
Ansonsten kann ich auch umbauen auf ein 20V8 ...
-
So habs nochmal so geändert wie du vorgeschlagen hast. DTACK ist auch nochmal etwas Optimiert. Wobei ich der Meinung bin das DTACK zu zeitig anliegt und deswegen es zu Lesefehler kommt.
-
In anderem Kontext habe ich das auch schon mal geschrieben: http://forum.atari-home.de/index.php?topic=12419.msg200257#msg200257 (http://forum.atari-home.de/index.php?topic=12419.msg200257#msg200257)
Dass dieses IDE-Interface meist dennoch funktioniert, liegt einfach daran, dass das IDE-Gerät schnell genug ist. Wie Du den Timing-Diagrammen entnehmen kannst, dauert es immer eine gewisse Zeit, bis die CPU auf DTACK reagiert. Wenn das Gerät vorher die Daten vom Bus liest bzw. auf den Bus schreibt, geht es, obwohl DTACK vom GAL zu früh erzeugt wird.
-
Ja genau aus diesem Grund bin ich darauf gestoßen, weil wir schon einmal darüber gesprochen hatten. Man könnte das DTACK vorher nochmal durch ein Gatter (UND) jagen und somit eine Künstliche Verzögerung erzeugen. Könnte ggf. ausreichen. Ich weiß beim IDEAL IDE Adapter ist das DTACK Signal über den GAL angeschlossen und auf der ST Seite eine Diode wegen Open Collector.
-
Ja genau aus diesem Grund bin ich darauf gestoßen, weil wir schon einmal darüber gesprochen hatten. Man könnte das DTACK vorher nochmal durch ein Gatter (UND) jagen und somit eine Künstliche Verzögerung erzeugen. Könnte ggf. ausreichen. Ich weiß beim IDEAL IDE Adapter ist das DTACK Signal über den GAL angeschlossen und auf der ST Seite eine Diode wegen Open Collector.
So ist das auch bei dem Vofa Adapter. Da ist DTACK über eine Diode an das GAL angeschlossen. Vielleicht reicht das schon aus?
-
der 74LS03 ist ja nur wegen open Collector Notwendig, man könnte dies auch mit einer Diode machen. Aber man braucht die Verzögerung. Am besten wie gesagt vom IDE zum GAL und dann vom GAL über eine Diode zum ST.
-
Hallo Tuxie, das war ein Schuß in den Ofen. Zwei Bomben beim Booten mit und ohne CF Karte oder Diskette.
Wieso kommst du auf A10 und A11 ?
Bei dem großen IDE Interface von ppera mit den Treibern für die Datenleitungen werden zusätzlich A15 und A14 benutzt, sonst alles wie beim MegaSTIDE Interface.
Mache mir doch bitte mal ein JED für A15 an Pin19 und A14 an Pin18 ...
-
Nimm den Taschenrechner und geh auf Programmierer, gib F00000 ein und schau welche Bits gesetzt sind. Fann setze F00040 und F00080 dann F000C0 und du wirst sehen das sich bits 10 und 11 sich ändern
-
Ich glaube ich sollte nochmal eine Nacht drüber schlafen, hm komme wieder auf einen anderen wert.
A6 und A7 anstatt A10 und A11....
F00000 = 1111 0000 0000 0000 0000 000
F00040 = 1111 0000 0000 0000 0100 000
F00080 = 1111 0000 0000 0000 1000 000
F000C0 = 1111 0000 0000 0000 1100 000
Demnach sollte für F00000 Folgende Erweiterung der Gleichung gelten
DTDCK = A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A6*/A7*/AS*RW;
/SELP = /AS*A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A6*/A7*/A5;
/SELS = /AS*A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A6*/A7*A5;
/IORD = /AS*A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A6*/A7*RW;
/IOWR = /AS*A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A6*/A7*/RW;
-
So ich hab dir nochmal eine Normale Datei angelegt...
Versuch DTACK mal zu verzögern indem du ein UND gatter nimmst. Erst einmal dann ein zweites Mal, so gewinnst du ein paar nanosekunden Zeit.
-
Hier noch was interessantes zu dem Thema :)
http://www.joogn.de/atari_ide.html
-
Wie hier
ftp://ftp.lip6.fr/pub/atari/Docs/hardware.txt
-
Das ist fast das gleiche wie das große von ppera ...
A23 bis A15 + A5, ppera hat aber noch A14 dabei.
-
/SELP = A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A15*/A14*/A5;
/SELS = A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A15*/A14*A5;
/IORD = /AS*A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A15*/A14*RW;
/IOWR = /AS*A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A15*/A14*/RW;
1111 0000 00
Hm stimmt ich hab in meinem STE Projekt auch den 20V8 drin, ich setz mich am Wochenende hin und Teste bei mir, und wenn ich was Lauffähiges habe werde ich es hier Posten. H
-
Ich habe jetzt erstmal die Nase voll und baue mal auf das große IDE Interface von ppera um ohne die Treiber, mal schauen ...
-
Ich bekomme das einfach nicht hin mit dem IDE Interface. Habe jetzt mal alle Signale und Gleichungen von dem großen IDE Interface von ppera in ein 16V8 GAL gepackt mit Hilfe wegen den JEDI. Habe jetzt bestimmt drei bis viermal alles nachgemessen und kann keinen Verdrahtungsfehler finden. Das Verhalten ist so das ich die CF Karte mit HDDriver einrichten kann und auch Programme drauf kopieren aber der Rechner bootet HDDriver nur von Floppy und es lassen sich keine Programme von der CF Karte starten. Wenn ich den Rechner ausschalte und wieder ein sind die mit HDDriver erstellten Partitionen weg, sprich HDDriver findet keine Partitionen mehr.
Wo soll ich den Fehler suchen ?
(http://forum.atari-home.de/index.php?action=dlattach;topic=12759.0;attach=10743;image)
------------------------------------------------
%ID
IDE
%TYP
GAL16V8
%PINS
A23 A22 A21 A20 A19 A18 A17 A16 A15
A14 A5 AS RW IOWR IORD SELS SELP DTACK
%LOGIC
DTACK = /AS*A23*A22*A21*/A20*/A19*/A18*RW
+ A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A15*/A14;
/SELP = A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A15*/A14*/A5;
/SELS = A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A15*/A14*A5;
/IORD = /AS*A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A15*/A14*RW;
/IOWR = /AS*A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A15*/A14*/RW;
%END
------------------------------------------------
Das ich die TOS 2.06 Ansteuerung raus genommen habe kann doch nicht der Grund sein das es nicht geht, oder ?
Habe das mal mit meiner MonSTer probiert und boote mit der MonSTer TOS 1.04 und starte/boote dann von Diskette und lade TOS 2.06 nach ins Ram und der Rechner läuft darauf hin mit den IDE Geräten einwandfrei ...
-
jage das dtack signal durch ein UND gatter um zeit zu verbrauchen, oder durch zwei gatter 74f04 also ich meine das signal welches zur cpu geht
-
Kann ich mal machen aber ich denke die beiden IDE Interface Sachen von ppera sollten doch auch so laufen. Die sind ja schon Älter und für das kleine sogar mit Platine. Ist bestimmt auch das gleiche wie das von Popsel und ppera ...
-
So wie Du es beschreibst, klingt es ja, als ob der Root-Sektor der CF-Karten beim Bootversuch durch TOS 2.06 überschrieben wird. Zur Eingrenzung des Fehlers hilft es evtl., folgende Fragen zu klären:
- Wird der Rootsektor tatsächlich überschrieben? Falls ja, mit was?
- Sind noch andere Sektoren betroffen?
- Passiert das wirklich nur beim Booten oder auch im Betrieb, wenn Du eifrig Dateien auf die CF-Karte bzw. von ihr kopierst?
Das sind alles Fragen, die ein Blick mit dem Diskeditor auf die ersten Sektoren der CF-Karte beantworten kann. Ich weiß allerdings nicht, ob Claus Brods SED http://www.clausbrod.de/cgi-bin/view.pl/Atari/SED (http://www.clausbrod.de/cgi-bin/view.pl/Atari/SED) mit IDE-Devices klarkommt; wenn Du die CF-Karte an den PC hängen kannst, tut es auf alle Fälle der Diskeditor aus der Eval-Version von WinHex: http://www.x-ways.net/winhex/index-d.html (http://www.x-ways.net/winhex/index-d.html).
-
Das sind schwierige Fragen, ich weiss nicht ob ich die beantworten kann ?
Die Software von Uwe Seimet sollte doch auch gehen -> http://hddriver.seimet.de/downloads/disk3991.zip
-
Stimmt, mit DISKUS und HDDRIVER kannst Du auf IDE-Geräte zugreifen. Also:
1. CF-Karte mit HDDRIVER einrichten
2. Root-Sektor (physikalischer Sektor 0) mittels DISKUS dokumentieren, z.B. durch Screenshot
3. CF-Karte ein wenig "stressen", indem Dateien kopiert werden
4. Root-Sektor erneut dokumentieren
5. Reboot und HDDRIVER von Diskette laden, auch wenn er jetzt keine Partitionen mehr findet
6. Root-Sektor erneut dokumentieren; dieser dürfte jetzt überschrieben sein
-
In der GAL Gleichung liegt DTACK zu früh an, d.h. es kommt zu dem Phenomen das es mal geht und mal wieder nicht. Pack einfach das Gatter rein und ich denke du hast die Probleme los
-
Grundsätzlich hast Du natürlich recht, aber die Durchlaufzeit durch einen der Inverter eines 74F04 liegt in der Größenordnung 2 - 3 Nanosekunden. Das macht hier wohl keinen Unterschied, da die CPU /DTACK sowieso erst zwei States (nominell 125 ns) nach dem Low-Setzen von /AS auswertet.
-
Dann einen LS nehmen der hat eine viel langsamere Reaktionszeit, oder einfach mehrmals durchlaufen lassen sind ja meist mehrere Gatter.
-
Ich habe erstmal keine Lust mehr auf die Dinger von ppera ...
Ich habe hier das Quellfile zum c´t IDE Interface und versuche mal mir daraus was zu Basteln ohne die 244/245 Treiber und ohne Eprom Ansteuerung, mal schauen ob ich das mit JEDI hinbekomme ...
-
Hast du schon mal pperas treiber probiert? Also auch mit bigdos? Ich weiss z. B. Dass ich mit hddriver auch die probleme wie du hatte. Probiere das einfach mal aus. Autoboot funktioniert bei poeras ide nur mit seinem patch.
-
Leute das doch egal welches es ist, die sind doch alle nach Falcon Standard, wird doch nur in den Speicherberei eingeblendet. Selbst die gleichungen werden sich nicht groß unterscheiden.
-
Meine Idee war das DTACK im GAL zu erzeugen, nur wie bekomme ich die TOS Ansteuerung da raus ?
----------------------------------------------------------------------------
// 16.04.93 Kai Scheffer
// 20.06.93 Kai Scheffer Pinbelegung gem c't Layout abgendert
GAL-Listing fr IDE-Platten-Adapter am ATARI ST (c't 9/93)
IDE-Register $F00000 bis $F1FFFF
ROM-Breich $E00000 bis $EFFFFF und ROM2-Select
Erzeugung von:
/DTACK zum Atari
/CS0 geht zur IDE-Platte Pin 37 gleich SELP
/CS1 geht zur IDE-Platte Pin 36 gleich SELS
/IORD geht zur IDE-Platte Pin 25
/IOWR geht zur IDE-Platte Pin 23
/G Enable-Signal fr die Datenbustreiber (2x74HCT245)
/INT Interrupt-Signal zum Atari (DMA-Port Pin 10)
*IDENTIFICATION
IDE_ST;
*TYPE
GAL20V8;
*PINS
/AS = 3,
RW = 5,
A5 = 1,
/ROM2 = 2,
A17 = 6,
A18 = 7,
A19 = 9,
A20 = 8,
A21 = 10,
A22 = 11,
A23 = 13,
/LDS = 4,
/IOCHRDY = 14,
IRQ14 = 23,
/INT.T = 19,
/TOS.T = 20,
/IOWR.T = 22,
/IORD.T = 21,
/G.T = 16,
/CS1.T = 18,
/CS0.T = 17,
/DTACK.T = 15;
*BOOLEAN-EQUATIONS
TOS.E = VCC;
IOWR.E = VCC;
IORD.E = VCC;
G.E = VCC;
CS1.E = VCC;
CS0.E = VCC;
INT.E = IRQ14;
INT = IRQ14;
DTACK = /A17 & /A18 & /A19 & A20 & A21 & A22 & A23
+ TOS;
DTACK.E = /IOCHRDY & AS & /A19 & A21 & A22 & A23;
CS0 = /A5 & /A17 & /A18 & /A19 & A20 & A21 & A22 & A23;
CS1 = A5 & /A17 & /A18 & /A19 & A20 & A21 & A22 & A23;
G = LDS & RW & /A17 & /A18 & /A19 & A20 & A21 & A22 & A23
+ /RW & /A17 & /A18 & /A19 & A20 & A21 & A22 & A23;
IORD = LDS & RW & (CS0 + CS1);
IOWR = LDS & /RW & (CS0 + CS1 + TOS); % Signal TOS wegen EEPROMs %
TOS = ROM2
+ AS & A23 & A22 & A21 & /A20 & /A19;
*END
----------------------------------------------------------------------------
-
Habe es equivalent mal in den Gal gepackt
CHIP STIDE GAL20V8 Simple_Mode
A23 A22 A21 A20 A19 A18 A17 A16 A15 A14 A5 GND
AS RW LINEA SELP SELS IORD IOWR DTACK NC NC IORDY VCC
DTACK = A23*A22*A21*A20*/A19*/A18*/A17*/A16*/AS*RW*/IORDY;
/SELP = /AS*A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A15*/A14*/A5;
/SELS = /AS*A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A15*/A14*A5;
/IORD = /AS*A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A15*/A14*RW;
/IOWR = /AS*A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A15*/A14*/RW;
LINEA = /AS*A23*A22*A21*A20*/A19*/A18*/A17*/A16*/A15*/A14;
Pinbelegung ist wie beim pperas IDE nur ohne ROM, IORDY ist Pin 23 und geht zum IDE und Pin20 ist DTACK die über eine Diode zur CPU geht, Achtung Polung beachten weil LOW Activ (Sperrichtung zur CPU, kannst natürlich auch ein Gatter des 74LS03 nehmen (nur wegen Open Collector Notwendig).
Unterschied den ich feststellen kann ist das LDS nicht ausgewertet wird und das IORD und IOWR aus den beiden Signalen SELP und SELS erzeugt wird, was nochmal zu einer kurzen Verzögerung führt.
-
Hab da was gefunden
(http://atari.8bitchip.info/p/IDE_PIO_timing_AtariTim.png)
(http://atari.8bitchip.info/p/IDE_PIO_timing_modes.png)
-
So ein GAL kann doch auch Open Collector, wieso noch ein Gatter oder eine Diode nehmen ?
Ich denke ich versuche das GAL original zu nutzen und lege den Eingang ROM2 einfach auf 5V ...
-
hm wohl schon ja aber die diode schadet ja nicht
-
Hallo Tuxie, das ist aber dieses hier -> http://atari.8bitchip.info/megastide.html
Die I/O Ports ROM_2 und CE für das TOS 2.06 nutze ich nicht. Ich lade TOS 2.06 von Diskette, das reicht mir so ...
Hatte mir das vor 10-15 Jahren mal aufgebaut auch auf Lochraster und ich meine das es ging. Hatte damals mit einem GABI gebrannt ohne Probleme.
Wäre dir Dankbar wenn du mir ein verbessertes JED machen könntest ...
Könntest Du aber trotzdem original lassen... kannst damit ja immer noch von Diskette booten oder möchtest Du jetzt ein kleineres GAL verwenden?
Hier noch mal das diskret aufgebaute IDE Interface von Joogn (http://www.joogn.de/atari_ide.html)... vielleicht hilft es ja.
-
Der 16V8 reicht nicht aus um DTACK mit durch zu schieben. Da braucht man schon den 20V8 und so groß ist der Preisunterschied nicht als das man knausern muß.
@Lukas Frank ja klar kann man Open Collector ausgang schalten, glaube aber so einfach war das nicht dazu brauchte man bestimmte Voraussetzungen, muss ich ehrlich nochmal Nachlesen wie das ging.
-
@tuxie
IORDY ist der Pin_27 vom IDE Port, oder ?
Pinbelegung ist wie beim pperas IDE nur ohne ROM, IORDY ist Pin 23 und geht zum IDE und Pin20 ist DTACK die über eine Diode zur CPU geht, Achtung Polung beachten weil LOW Activ (Sperrichtung zur CPU, kannst natürlich auch ein Gatter des 74LS03 nehmen (nur wegen Open Collector Notwendig).
Pin_23 am IDE Port ist aber IOWR !?!
Ich habe jetzt bestimmt schon viermal umgebaut und so langsam keine Lust mehr. Habe auch schon überlegt mir eine zweite MonSTer zu kaufen. Kannst du deine Gleichungen nicht bei dir Testen im 1040STE ?
Beim JEDI ist OpenCollector einfach ein .T anhängen.
DTACK = /A17 & /A18 & /A19 & A20 & A21 & A22 & A23
+ TOS;
DTACK.E = /IOCHRDY & AS & /A19 & A21 & A22 & A23;
Das DTACK.E hat doch vielleicht etwas mit einer Laufzeit Verzögerung zu tun, oder ?
-
@tuxie: Wie man dem von Dir geposteten IDE-Timing entnehmen kann, sollte ab PIO-Mode 3 ein IDE-Gerät auf alle Fälle schnell genug sein, um die Daten in einem Bus-Zyklus des MC68000 zu liefern. Das Einschieben von Wait-States durch Verzögern von /DTACK ist nicht nötig und würde das IDE-Interface nur Ausbremsen.
Und wie bereits erwähnt, musst Du /DTACK um mind. 150 ns oder so verzögern, damit die CPU überhaupt einen Wait-State einlegt, ein paar Nanosekunden mehr oder weniger wegen eines Gatters mehr oder weniger ändern nichts.
@Lukas Frank: Die Syntax mit dem DTACK.E und DTACK.T sorgt dafür, dass DTACK vergleichbar einem Open-Collector-Ausgang arbeitet. Insbesondere ist das .E das "Output Enable" des entsprechenden IO-Pins im GAL.
-
Habe mal das IDE Listing aus der c´t mit JEDI übersetzt. Ich musste nur die Klammern auflösen da JEDI das wohl nicht versteht ...
// 16.04.93 Kai Scheffer
// 20.06.93 Kai Scheffer Pinbelegung gem c't Layout abgendert
GAL-Listing fr IDE-Platten-Adapter am ATARI ST (c't 9/93)
IDE-Register $F00000 bis $F1FFFF
ROM-Breich $E00000 bis $EFFFFF und ROM2-Select
Erzeugung von:
/DTACK zum Atari
/CS0 geht zur IDE-Platte Pin 37
/CS1 geht zur IDE-Platte Pin 36
/IORD geht zur IDE-Platte Pin 25
/IOWR geht zur IDE-Platte Pin 23
/G Enable-Signal fr die Datenbustreiber (2x74HCT245)
/INT Interrupt-Signal zum Atari (DMA-Port Pin 10)
*IDENTIFICATION
IDE_ST;
*TYPE
GAL20V8;
*PINS
/AS = 3,
RW = 5,
A5 = 1,
/ROM2 = 2,
A17 = 6,
A18 = 7,
A19 = 9,
A20 = 8,
A21 = 10,
A22 = 11,
A23 = 13,
/LDS = 4,
/IOCHRDY = 14,
IRQ14 = 23,
/INT.T = 19,
/TOS.T = 20,
/IOWR.T = 22,
/IORD.T = 21,
/G.T = 16,
/CS1.T = 18,
/CS0.T = 17,
/DTACK.T = 15;
*BOOLEAN-EQUATIONS
TOS.E = VCC;
IOWR.E = VCC;
IORD.E = VCC;
G.E = VCC;
CS1.E = VCC;
CS0.E = VCC;
INT.E = IRQ14;
INT = IRQ14;
DTACK = /A17 & /A18 & /A19 & A20 & A21 & A22 & A23
+ TOS;
DTACK.E = /IOCHRDY & AS & /A19 & A21 & A22 & A23;
CS0 = /A5 & /A17 & /A18 & /A19 & A20 & A21 & A22 & A23;
CS1 = A5 & /A17 & /A18 & /A19 & A20 & A21 & A22 & A23;
G = LDS & RW & /A17 & /A18 & /A19 & A20 & A21 & A22 & A23
+ /RW & /A17 & /A18 & /A19 & A20 & A21 & A22 & A23;
IORD = LDS & RW & CS0 + LDS & RW & CS1;
IOWR = LDS & /RW & CS0 + LDS & /RW & CS1 + LDS & /RW & TOS; % Signal TOS wegen EEPROMs %
TOS = ROM2
+ AS & A23 & A22 & A21 & /A20 & /A19;
*END
-
EDIT: Jetzt die richtige Antwort für diesen Thread. Mir scheint, die Klammern sind nicht richtig aufgelöst.
Müsste aus
IORD = LDS & RW & (CS0 + CS1);
nicht eher
IORD = LDS & RW & CS0 + LDS & RW & CS1;
werden? Usw.
-
Meinst du so kann das richtig sein ?
IORD = LDS & RW & (CS0 + CS1);
IOWR = LDS & /RW & (CS0 + CS1 + TOS); % Signal TOS wegen EEPROMs %
IORD = LDS & RW & CS0 + LDS & RW & CS1;
IOWR = LDS & /RW & CS0 + LDS & /RW & CS1 + LDS & /RW & TOS; % Signal TOS wegen EEPROMs %
-
Genau.
-
Das war aber ein schönes "genau" ...
Vielen Dank für deine Hilfe.