Hallo Besucher, der Thread wurde 26k mal aufgerufen und enthält 83 Antworten

letzter Beitrag von Masterhit am

XS-1541 / OpenCBM Betatest

  • Nur ein einziger Interessent! Ich bereue es fast schon, da Zeit investiert zu haben. Zumindest war es eine interessante Erfahrung ...


    Bei sowenig Resonanz, mache ich eine öffentliche Beta.



    Das Backend unterstützt momentan standard CBM Modus für IEC und IEEE-488 Geräte. Die Performance ist leider nicht besonders gut, das liegt an der Art und Weise, wie OpenCBM Engeräte behandelt. Es kommt zu sehr vielen Zugriffen, weil alles in sehr kleine Arbeitspakete zerlegt wird. Das ist sehr ungünstig für die langsame serielle Schnittstelle.


    Vielleicht kann man etwas tricksen, indem man Arbeitspakete zusammenfasst und unter einmal sendet. Ich muss da wohl noch etwas experimentieren.



    + Die Firmware (HEX File) muss in das XS geflashed werden.


    + OpenCBM muss installiert sein (die Zoomfloppy Variante), da kein Installer dabei ist.


    + Die OpenCBM Dateien aus dem Paket müssen in das OpenCBM Verzeichnis kopiert werden.



    OpenCBM sollte weiterhin mit allem funktionieren, das vorher funktioniert hat. Damit das XS-1541 eingebunden wird, muss die Datei opencbm.conf modifiziert werden. Bei mir sieht die wie folgt aus:


    Der Pfad zur DLL muss natürlich angepasst werden.


    Man verwendet das XS-1541 nun normal mit allen OpenCBM Kommandos. Es gehen aber zur Zeit keine speziellen Transfer Modi wie PP, S1 oder S2.


    Code
    1. cbmctrl -@xs1541:18 detect
    2. cbmctrl -@xs1541:18 status 8
    3. cbmctrl -@xs1541:18 command 8 V0
    4. cbmctrl -@xs1541:18 dir 8
    5. d82copy -@xs1541:18 -b -2 8 xs_test.d82


    Man kann das default Endgerät umstellen, dan spart man sich das "-@xs1541:18". Dafür muss man dann halt beim Zoomfloppy "-@xum1541" eingeben.



    Beim XS-1541 Endpoint werden 16 Kanäle unterstützt (COM1: bis COM16: ). Bei Angabe von 0 wird automatisch COM1 bis COM16 nach einem XS-1541 untersucht (dauert aber etwas).


    Die Kanäle 1 bis 16 sind IEC Geräten zugeordnet. Für IEEE-488 muss man 16 addieren. Im Beispiel oben habe ich :18 angegeben. Das bedeutet ich will ein XS-1541 an COM2: ansprechen, und zwar den IEEE-488 Teil.

  • Auf Deiner Homepage (da wo ich die "normalen" Dateien her habe, finde ich nichts).


    Auf der XS-1541 Homepage findet man die Betatests im ZIP Ordner.




    Habe jetzt 2 Laufwerke an meinem XS-1541 Rev.D von Nils. Das XS-1541 belegt bei mir COM2:. Anbei die Kommandos um das Directory beider Laufwerke anzuzeigen:


  • Ich hab's mir runtergeladen und bin sehr gespannt, es zu probieren. Leider ist hier erst mal eine Woche renovieren angesagt, so dass ich erst mal keine Zeit habe...


    Aber falls sich jemand fragt, wie er das hex in den Atmel bekommt: ich habe die Bootloadergeschichte noch mal raus gesucht. Programmierung z.B. mit AVRDUDE (für Windos-Benutzer: ist in WinAVR enthalten.), unter Linux z.B. mit sudo apt-get install avrdude, gibt's auch für OSX


    Dann:


    Da der Bootloader in den ersten drei Sekunden nach einem Reset aktiv ist, ist die Vorgehensweise zum Aufspielen der Firmware wie folgt:


    Erst die Befehlszeige eintippen oder in die Konsole kopieren:


    Code
    1. avrdude -v -c avr109 -P COM3 -b 115200 -p m644 -u -U flash:w:XS1541.hex:i


    ...dann die Reset-Taste am XS-1541 drücken und binnen drei Sekunden die Eingabetaste am PC drücken um den vorbereiteten Befehl auszuführen.

  • Hallo Diddl,


    also ich habe mal die Datei in meinen Atmega 644p geflasht. (Ponyprog) Eingeschaltet und... nichts. Nichtmal die LED zuckt. Trotzdem OpenCBM installiert und versucht aus den für mich völlig unverständlichen Einstellhinweisen in den verschieden Beiträgen zu XUM und XS schlau zu werden.... hmmm... ne! Vice geladen und gestartet und versucht da die Floppy zu sehen...ne! Also nach einigen Stunden das alte File zurück in den 644p geschrieben und ...geht noch. Da habe ich Glück gehabt. Aber ich habe dabei gesehen, das OpenCBM auch nur eine Kommandozeile ist... Wo ist dann der Vorteil zum Terminal und dem XS1541? Ist doch genauso komplizert, nur anders kompliziert... Gut, ich könnte dann orginale Floppys im Vice laufen lassen ohne sie vorher in *.d64 zu wandeln... Aber für diese Nischenanwendung extra ein Zoomdevice kaufen...? Ich hatte einfach nur gehofft, dieses mühseelige editieren in dem cmd.bat umgehen zu können... Also selbst wenn mein Flashversuch funktioniert hätte, dann wäre das wohl nicht gegangen... Na ja einen Versuch wars auf jedenfall wert. Aber ich habe hier abgebrochen. Ich versteh von der Programmierung nichts und kann daher keinen Fehler suchen.


    Gruß aus Stendal


    Harald Redlin

  • Eingeschaltet und... nichts. Nichtmal die LED zuckt.


    Das ist ok so. Die LED ist ein sobald das OpenCBM.dll das Gerät aktiviert.



    Ist das XS-1541 nicht eigentlich ident mit der ZoomFloppy?


    Nö, ist ein haushoher Unterschied. Eigentlich kommuniziert das XS über die serielle Schnittstelle (daher das S für seriell). Der USB ist nur, weil da eine Bridge integriert ist. Es gibt auch XS-1541 die man direkt am COM Port anhängt.



    Ich habe leider kein xs-1541 mehr,sonst wäre es genau das richtige für mich gewesen,weil ich noch meine SFD habe


    Für dich empfehle ich ein Zoomfloppy oder einen Billignachbau um 13€ (NooGroove XUM).




    Ich komme heute erst spät nach Hause, aber ich werde noch ein kleines Testprogramm hochladen. Mit dem Testprogramm kann man das XS-1541-EP ansprechen auch wenn man kein OpenCBM installiert hat. Ich hätte es gleich in das Paket mit rein nehmen sollen.


    Wenn es mit dem Testprogramm geht, dann weiss man dass die XS-1541 Firmware richtig geflashed wurde, und dass es nur noch an der OpenCBM Installation liegt.


    Die OpenCBM Installation ist manchmal recht zickig, aber wenn es mal läuft, dann läuft OpenCBM richtig gut ...

  • Nur ein einziger Interessent! Ich bereue es fast schon, da Zeit investiert zu haben.


    Das ist Blödsinn. Du darfst nur nicht erwarten, dass sich alle sofort zu Wort melden und begeistert mit testen. Es hat eben nicht jeder sofort Zeit und die Masse der interessierten Mitleser (die das leise, still und heimlich nachvollziehen) ist immer deutlich größer, als die, die bereit sind, sich aktiv einzubringen.
    Wenn man das zu Ende bringt und gut dokumentiert, werden das auch mehr Leute benutzen.

  • Du darfst nur nicht erwarten, dass sich alle sofort zu Wort melden und begeistert mit testen.


    Da hast du sicher Recht.



    Wegen der Performance Engpässe sind mir über Nacht auch schon Lösungsansätze eingefallen. Den Paket Empfang und versenden sollte man in die Interrupt Routine auslagern. Dann kann man die Zeit wo am IEC Bus gelesen wird nutzen, um Daten zum oder vom PC zu übertragen.

  • geht das nur mit diesem AVRDUDE oder wie das heißt?


    Nils hat es beschrieben für das AVRDUDE etwas weiter oben.


    Wenn du Windows benutzt, würde ich zu AVRprog raten. AVRprog ist automatisch installiert wenn du AVRstudio installiert hast. Du kannst AVRprog aber auch separat downloaden und benutzen (Atmel Homepage).


    Einfach folgende Schritte durchführen:

    • XS-1541 resetten
    • du hast zwei Sekunden um AVR-prog zu starten (Timing!)
    • wenn AVR-prog verbunden ist, dann kommt eine Dialogbox. Sonst kommt eine Fehlermeldung ...


    AVR-prog ist etwas eigen, es funktionieren nur COM1 bis COM4. Sonst ist es sehr zuverlässig.



  • Das ist Blödsinn. Du darfst nur nicht erwarten, dass sich alle sofort zu Wort melden und begeistert mit testen. Es hat eben nicht jeder sofort Zeit und ...


    So ist es!!
    Und einen Bootloader habe ich damals auch nicht auf das XS-1541 gemacht. Ich habe gleich mit Pollin Board & Ponyprog geflasht.


    Oliver W.

  • So, hier ist das versprochene Testtool. Es hat den Sinn, dass man die Verbindung zum XS-1541 unabhängig vom OpenCBM testen kann. Wenn das Tool funktioniert dann

    • Ist die XS-1541-EP Firmware richtig geflashed
    • die Kommunikation zum PC funktioniert


    Also kann man sich dann auf die OpenCBM Installation konzentrieren.


    So sollte es aussehen (COM1 vorhanden, XS-1541 am COM2 angeschlossen):


    mit

    Code
    1. TestXS.exe 2

    ruft man es direkt für COM2 auf. Mit

    Code
    1. TestXS.exe 18

    ruft man es für COM2 (2+16) auf, es werden aber IEEE-488 Geräte angesprochen.

  • Das OpenCBM installiert man unter Win32 so:

    • Man holt sich das OpenCBM für das Zoomfloppy: ZoomFloppy win32 install package
    • in dem Verzeichnis wo die EXE liegen, kopiert man die Dateien aus dem ZIP
    • dann muss man noch das opencbm.conf modifizieren (Texteditor)
  • Hallo Diddl,


    das flashen hat geklappt-Ponyprog, Po..in-Board ohne Bootlader oder AVR-Dudel. Dein Testprogramm zeigt es mir. Es liegt also definitiv am OpenCBM. Das hinzukriegen ist genauso verwirrend wie dieses JAVA-Tool damals, was ich auch nur auf einem Rechner zum laufen gebracht habe. Warum es auf dem einen Rechner ging, und auf dem anderen nicht, ist mir heute noch unklar. Egal. OpenCBM verweigert wohl seinen Dienst, oder es liegt am Vice oder am User... Ich habe alles aus der .zip in das Verzeichnis /EXE/ kopiert,--> geht nicht, dann das ganze verzeichnis /EXE/ auch noch in das Verzeichnis /BIN/ kopiert... -->geht immernochnicht, dann opencbm-xs1541.dll noch in das System32 kopiert und die opencbm.conf nochmal editiert... geht wieder nicht. Trotzdem Vice2.3 gestartet, in Peripherie-einstellungen IEC-Gerät aktiviert... und geht auch nicht. Wie sage ich Vice, daß ich ein XS1541 kabel nehme und kein anders Kabel? Und woher weiß Opencbm und Vice das das XS-1541 bei mir über USB an Com4 liegt?


    An Hand meiner recht unlogischen Aneinanderreihung von Worten, siehst Du, daß ich nicht mal in der Lage bin, das Problem zu beschreiben, geschweige denn, es zu lösen...




    Gute Nacht..


    Gruß aus Stendal


    Harald Redlin

  • Ich habe alles aus der .zip in das Verzeichnis /EXE/ kopiert,--> geht nicht, dann das ganze verzeichnis /EXE/ auch noch in das Verzeichnis /BIN/ kopiert... -->geht immernochnicht, dann opencbm-xs1541.dll noch in das System32 kopiert und die opencbm.conf nochmal editiert... geht wieder nicht.


    Ich meinte weder das /EXE noch das /BIN Verzeichnis. Ich meinte eigentlich einfach den Pfad, wo sich dein installiertes OpenCBM befindet. Also wo die .EXE Dateien deines OpenCBM sind.


    Kurzum: meine EXE Dateien in meinem ZIP Archiv beinhalten weder driver noch Install vom OpenCBM.


    • Du musst zuerst das OpenCBM normal installieren (Install Script, InstCBM aufrufen)
    • Dann musst du meine EXE und die DLL Dateien über die bestehende OpenCBM Installation kopieren (die bestehenden Dateien durch meine ersetzen)
    • Zum Schluss musst du noch die OpenCbm.CONF datei editieren, damit das XS als Endpoint funktionieren kann.


    Den XS-1541 Patch kann man nur über eine bestehende, funktionierende OpenCBM Installation drüber legen.


    Der allererste Schritt ist also immer, standard OpenCBM für das Zoomfloppy installieren: ZoomFloppy win32 install package


    Wenn man bereits ein XU-1541 oder ein Zoomfloppy installiert hat, spart man sich diesen allerersten Schritt. Dann kann man gleich die Dateien aus meinem ZIP Archiv über die bestehende OpenCBM Installation kopieren, also die Dateien ersetzen. Die Funktionalität bleibt erhalten, es wird nur der neue Endpoint hinzugefügt. Man kann weiterhin auf sein XU, XA oder Zoomfloppy zugreifen.



    Wie sage ich Vice, daß ich ein XS1541 kabel nehme und kein anders Kabel?


    Der Vice interessiert sich nicht für den Endpoint. Er verbindet sich einfach mit OpenCBM. OpenCBM schaut in die opencbm.conf Datei, welche Endpoints vorhanden sind, und welcher Endpoint default ist, dieser Endpoint wird verwendet.


    Die OpenCBM Tools (cbmctrl.exe, d64copy.exe ...) machen das wie der VICE. Jedoch kann man bei den Tools mit dem -@ Parameter einen bestimmten Endpoint auswählen. Damit wird der "default Endpoint" ignoriert und der angegebenen verwendet. Also zB. mit "-@xs1541:2" wird ein XS1541 am COM2 verwendet, egal was als "default" definiert wurde in der opencbm.conf.



    Und woher weiß Opencbm und Vice das das XS-1541 bei mir über USB an Com4 liegt?


    Mit -@ kann man einen Endpoint bestimmen. Zb. "-@xa1541" verwendet ein XA-1541 Kabel. Der Port wird automatisch gesucht, wenn er nicht angegeben ist. Den Port angeben kann man mit einem ":" hinter dem Gerätenamen. Also im Beispiel XA Kabel durch "-@xa1541:3" verwendet den LPT3: als kanal zum XA-1541 kabel.


    Im Falle des XS-1541 heisst das Kommando "-@xs1541". Wenn man das XS-1541 zB. am COM5: angeschlossen hat, kann man das durch "-@xs1541:5" mitteilen.


    Wenn man die opencbm.conf editiert und die default Zeile einstellt auf "xs1541", dann spart man sich diese "-@xs1541" Option bei den Kommandos, weil dann eben das XS-1541 "default" ist.

  • Hallo Diddl,


    danke für Deine sehr ausführliche Anleitung. Genauso habe ich das ja gestern auch gemacht. Aber es hat nicht funktioniert. Also habe ich eben alles nochmal, genau nach Checkliste gemacht und das selbe Ergebnis wie gestern. Dann habe ich mir mal die *.pdf aus dem Zoomfloppy angesehen. Meine Englischkenntnisse sind begrenzt... Trotzdem ist mir aufgefallen, daß das Zoomfloppy als Hardware einen Treiber hat, der beim Einstecken installiert wird. Das XS hat ja so einen Treiber nicht. Mein XS wird über einen USB-TTL Wandler betrieben, der korrekt installiert ist und Dein Testprogramm hat ja auch funktioniert. Ich habe mal zwei Bildschirmfotos angehängt, aber mir fällt im Moment nichts ein. Trotzdem Danke für Deine tolle Hilfe.


    Gruß aus Stendal


    Harald Redlin

  • Die Ausgabe "no sync" ist aber schon mal ein gutes Zeichen. Die kommt vom XS-1541 Endpoint.



    Probier mal folgendes:


    Setze den Debuglevel rauf:

    Zitat

    SET XS1541_DEBUG=2


    Gib mal direkt

    Zitat

    cbmctrl -@xs1541:10 detect

    ein.



    Wenn das alles nix hilft, - ich habe niemals COM oberhalb von 9 getestet. Setze es mal in der Systemsteuerung auf COM1 oder 2,3,4.

  • Hallo Diddl,


    also habe ich gemacht, mit com10 und com4. Bei beiden das Gleiche Ergbniss. Com1 und 2 sind bei mir mit echten RS232 belegt, Com3 ist wohl meine Maus drauf, wenn ich das XS da drauf tue, geht die PS2-Maus nicht. Ansonsten hier das Ergebnis. Für mich sieht das ok. aus....


    Gruß Harald

  • Sehr gut, du hast es geschafft, er hat ja auch eine Floppy auf unit 8 erkannt.


    Also scheint es auf COM4 zu gehen und auf COM10 nicht. Mus wohl noch ein Bug bei mir sein, dass COM10 nicht geht.



    Mit

    Zitat

    SET XS1541_DEBUG=-1

    schaltest du die Debugmeldungen wieder ab. Dann sollte es normal funktionieren.

  • Hallo Diddl,


    es geht auch auf COM10 und auf allen anderen Coms die ich probiert habe, ich habe nur den Com4 hier angehängt. Und es funktioniert nur, wenn ich den COM port über den Parameter -@xs1541:4 mitteile. lasse ich :4 (oder welche Com ich auch verwende...) weg, also nur cbmctrl -@xs1541 detect -- erkennt er nicht das eine XS drannhängt. Nur wenn ich auf COM 1 bin, kann ich die die :1 weglassen. Auch bei COM1 kann Vice nicht darauf zugreifen. Ich habe auch verschiedene COM-Baudraten probiert, mit und ohne FIFO-puffer...


    Es würde wohl funktionieren, wenn ich dem opencbm fest mitteilen kann, das mein xs an COM 4 (beispielsweise) hängt. Aber wenn ich in der opencbm.conf


    [plugins]
    default=xs1541:4


    eintrage gibt es eine Fehlermeldung...? Und bei vice nur den Hake bei IEC-Gerät aktivieren zu setzen, reicht nicht um die Lampe am XS1541 zu aktivieren. Ich müsste dem Vice beibringen den XS1541 zu nutzen... Muß ich vor dem Vice noch irgentwie opencbm starten?


    Fragen über Fragen. Sorry für meine lange Leitung...


    Edit:


    CBMXfer geht, wenn ich auf COM1 bleibe! [ganz leises Hurra] auf COM 4 (habe nur den schnell probiert) gibts einen no synch. Was ist wenn ich irgentwas mit den Fuses falsch gemacht habe...? Habe die hier verwendet...


    Gruß Harry