Hello, Guest the thread was called3.5k times and contains 23 replays

last post from kbr at the

Opencbm Timeout bugfix: Windowsumsetzung gesucht (war: XA1541 will nicht so recht...)

  • Also, ich habe mir ein XA1541 Kabel gebaut, doch ich kann weder Daten auf Diskette bringen noch lesen. Auf einen Reset reagiert meine 1541, aber sonst halt auf nix. PRG Mover bringt mir eine Fehlermeldung, dass kein Laufwerk angeschlossen wäre. Und noch was, ich habe nicht die empfohlenen Transistoren verwendet, ich habe BC639 benutzt, die sollten ja von der Schaltschnelligkeit her ausreichen...


    Also was könnte da noch schief gehen?


    EDIT by FXXS: Titel angepasst, in der Hoffnung, dass so sich jemand findet der Posting 16 umsetzen kann.

  • Ich würde es auf zu langsame Transistoren schieben. BC547 waren zu langsam.

    Zuletzt repariert:
    21.2. Logitech M570 Microschalter ausgetauscht - geplante Obsoleszenz durch Billigtaster?
    19.11. Toshiba 3,5" Floppy defekter Elko durch Kerko getauscht auf Motorplatine
    27.11. 1541B Dauerlauf, Elko im Resetschaltkreis defekt, nicht der 7406 wie zuerst verdächtigt!

  • Also, getestet und Ergebnis leider negativ... Wenn ich in der CBM über den Befehl "cbmctrl reset" einen Reset auslöse, funktioniert dieser vollkommen normal, wie vorher auch, frage ich allerdings den Status ab mit "cbmctrl status 8" kommt nichts... wenn man dann einfach das Laufwerk ausschaltet kommt ein "99, driver error,00,00". Jetzt ist die Frage, liegts wirklich am Treiber oder hat meine Floppy keine Lust? habe bereits eine andere 1541 getestet, ebenfalls ohne Erfolg.


    Hier mal die Assy meiner jetzigen Floppy, falls das hilft: 251830 REV.A

  • Quote


    Und welche Verzögerung produziert der im Schaltbetrieb?


    Richtiges Stichwort. Irgenwo im Netz sind noch meine ursprünglichen Messungen.


    Hier ist sozusagen die offizielle Referenz:
    http://wiki.trikaliotis.net/bi…penCBM/OpenCbmBuildCables

    Zuletzt repariert:
    21.2. Logitech M570 Microschalter ausgetauscht - geplante Obsoleszenz durch Billigtaster?
    19.11. Toshiba 3,5" Floppy defekter Elko durch Kerko getauscht auf Motorplatine
    27.11. 1541B Dauerlauf, Elko im Resetschaltkreis defekt, nicht der 7406 wie zuerst verdächtigt!

  • Gesagt, getan...


    Hab mir also ein XA1541-Kabel mit einem BC546B gebaut und mit opencbm unter Linux ausprobiert, und tatsächlich, irgendwie muckt das mit dem Kabel, wo am selben Rechner ein XM1541 wunderbar funktioniert. Folglich hab ich mir die Signale mal mit dem Oszi angeschaut, und da sah eigentlich alles sauber aus. Eine wesentliche Verzögerung, die für ein Problem verantwortlich sein könnte, war nicht zu sehen. Es mag ja sein, daß dieser Transistor etwas langsamer ist als andere, aber das bewegt sich wenn dann im ns Bereich, das wollte ich also nicht glauben. Außerdem wären dann ja alle Signale gleich verzögert, was auch wiederum kein Problem sein kann, zumal die kleinste Zeiteinheit beim IEC-Bus 20µs ist.


    Was mir jedoch aufgefallen ist, daß im Fehlerfall die Clock-Leitung nach übertragenen Daten zu schnell wieder auf high ging. Das sah für mich irgendwie nach einem Fehlverhalten in der Software aus. Und tatsächlich, nachdem ich mir die Sourcen von opencbm näher angeschaut habe, hab ich einen Bug gefunden, der wohl für diese Timingprobleme verantwortlich ist. Hab das kurzer Hand gefixt, und siehe da, das XA1541 funktioniert nun tadellos auch mit den BC546. :D


    Für die Experten hier mal der diff:



    Das Problem an der Stelle war, daß er unmittelbar nach dem Zurücksetzen der DATA-Leitung sofort wieder auf selbige geprüft hat, ohne erstmal 100µs zu warten. Jetzt wartet er in jedem Fall 1x 100µs und das wars. Scheinbar ist die DATA-Leitung je nach Kabel, Transistor, Rechner etc. einfach nicht immer sofort zurückgesetzt, so daß hier in jedem Fall eine gewisse Wartezeit notwendig ist. Das war mit den 100µs vermutlich auch so gedacht, aber leider falsch umgesetzt gewesen, so daß er eben in dem Fall völlig ohne Warten wieder aus der Routine zurückgesprungen ist, und das ACK auch noch fehlinterpretiert hat.


    Es gibt vermutlich noch ein ähnliches Problem in der reset-Routine, denn dieser funktioniert noch nicht, das muß ich mir aber erst noch näher ansehen...

  • Jetzt habe ich mir ein anderes Kabel in der Bucht besorgt, aber über die gefixte Version für Windows würde ich mich trotzdem freuen ^^ Dann brauche ich das Kabel nicht immer zu tauschen zwischen Keller und Büro ;)


    Edit: Die Reset-Routine läuft bei mir normal, ich kann über "cbmctrl reset" einen Reset ausführen und der funktioniert auch wie er sollte.

  • Leider hab ich unter Windoof von Programmierung keine Ahnung, und möchte mir das auch nicht antun. Da musste jemand mithelfen, der sich damit auskennt.


    Den Reset ausführen tut er bei mir auch, jedoch scheitert dann die Erkennung des Laufwerks, und er hängt eine Weile, bis wieder der Prompt kommt.

  • So, die Linux Reset-Routine hab ich auch gefixt, da war die Timeoutberechnung irgendwie falsch, bzw. passte wohl nicht mehr zum kernel. Unter Windows ist das wohl kein Problem.


    Den Windows Code hab ich mir dann auch noch angeschaut, und da ist genau der selbe Fehler drin:



    Jetzt bräuchte es nur jemanden, der das neu übersetzen kann...


    Kompletter Linux-Patch im Anhang.