Beiträge von emulaThor im Thema „Gerätenummern von mehreren Floppy-Drives smart per Software jonglieren (C128-1571, Pi1541, etc.)“

    Ich bevorzuge für das SD2IEC:

    10 OPEN15,z,15,"X?":INPUTBitte melde dich an, um diesen Link zu sehen.,A$,B$,C$,D$
    20 CLOSE15
    30 PRINT A$,B$,C$,D$

    Hallo Werner, ich teste gerade eine Detection unter Einbindung von "X?". Ich bekomme da für normale Laufwerke (1541II,1571) 31 SYNTAX ERROR zurück. Das die zu erwartende Antwort im Normalfall, weil die realen Laufwerke keinen Befehl "X?" kennen?

    Für die Pi1541 mit v1.20 bekomme ich den Identifier zurück (wie zu erwarten) "73 PI1541 V01.20". SD2IEC kann ich nicht testen, da ich die Hardware nicht habe.

    Bitte melde dich an, um diesen Link zu sehen. schrieb in diesem Thread, in dem String solle man nach "sd2iec" oder "uiec" suchen, um ein SD2IEC zu erkennen. Wie sieht das bei Dir aus?

    Nur ein kurzer Hinweis: Dein Link verzweigt auf eine Seite, wo in Zeile 1343 ein Link zu einer total veralteten UIEC.PDF angegeben ist. Ist ja erst 10 Jahre alt ;-).Die aktuelle ist auf sd2iec.de

    Ich bin nicht der Autor des Quellcodes auf der Seite, das ist Stephen White. Wenn Du denkst, dass er da einen Irrweg einschlägt, mache im verlinkten Github-Repo bitte ein Issue auf dazu. Aber wir reden ja "nur" über einen Quellcode-Kommentar und Stephen hat immer betont, dass es nicht sein Ziel ist, den Funktionsumfang der IEC-Kommandos von SD2IEC komplett nachzubauen. Deswegen halte ich den Link nicht für ein Verbrechen.

    Ich bevorzuge für das SD2IEC:

    10 OPEN15,z,15,"X?":INPUTBitte melde dich an, um diesen Link zu sehen.,A$,B$,C$,D$

    Mit der heute erschienenen Version 1.20 des Pi1541-Kernels wird "X?" auch unterstützt. Dies kann ich in einer der nächsten Versionen ausprobieren und hätte damit evtl. eine gute Detection inkl. SD2IEC.
    Bitte melde dich an, um diesen Link zu sehen.

    Im letzten Posting waren noch Flüchtigkeitsfehler, hier ist die v3. Zukünftige Änderungen werde ich nicht mehr hier im Thread posten, wird sonst zu unübersichtlich. Ich werde den Sourcecode auslagern.

    Ich habe eben schon meine Pi1541 auf die neue Version 1.20 aktualisiert. Es kommt noch ein Screenshot, der zeigt, wie es bei mir in der Praxis am C128 aussieht.
    Bitte melde dich an, um diesen Anhang zu sehen.

    So, habe mal das Basic-Programm aus Post Nummer 6 etwas aufgeräumt, funktional sollte sich aber nichts verändert haben.

    Wie handhabt Ihr das hier allgemein - gibt es sowas wie ein kollaboratives Arbeiten an Basic-Programmen? Wahrscheinlich gibt es viele Gründe, dass man als 64er-Fan die Existenz von Basic 2.0 nach dem Einschalten des C64 super findet, aber ansonsten im Jahr 2019 nichts mehr damit zu tun haben will.

    Jedenfalls kann ich im Sourcecode-Editor vom Board hier kein petcat-Syntax-Highlighting auswählen... Gibt es hier Leute, die regelmäßig Basic-Programm-Updates veröffentlichen? Wie machen die das? Via Github und Konsorten? Über Beispiele wäre ich dankbar.

    Meiner Erfahrung nach darf man nicht das Gerät erkennen sondern das Medium.

    Das ist nicht mein Ziel hier bei diesem Projekt und würde mein Problem nicht lösen, das ich mit diesem Basic-Programm lösen kann.

    Das hängt davon ab, was für ein ROM-File der Benutzer eingestellt hat. Wenn er keines eingestellt hat wird im Augenblick einfach der aktuelle Inhalt eines internen Puffers zurückgeliefert, aber das kann sich jederzeit ändern. M-R ist keine geeignete Methode, um sd2iec zu erkennen.

    Ähnlich ist es mit der Detection der Pi1541: Nach dem Start ist die Pi1541 im Browse-Mode.

    Sobald man ein d64- oder ein d81-Image auswählt, ist sie im Emulationsmode und verrät dann auch nicht mehr ohne weiteres, dass sie eine Pi1541 ist. In der verwendeten Detection-Logik hat meine Pi1541 im Browse-Mode mit Kernel 1.19 den Wert 48 zurückgeliefert, der von den anderen bekannten Werten für die "realen" Laufwerke glücklicherweise abweicht.

    Allerdings habe ich nicht geprüft, ob der Wert 48 bei allen Kernel-Versionen der Pi1541 zurückgeliefert wird, oder ob er sich während der Browse-Mode-Runtime ändert. Es ist halt eine Art Notnagel, der für meinen Anwendungsfall bisher funktioniert.

    Wenn es neben M-R noch weitere Detection-Methoden gibt, dann bin ich interessiert. Ich hatte mit U9/UI rumgespielt, aber das Problem dabei ist, dass damit auch die 1571 resettet wird.

    Mit U9 bekommt man schön als Antwort "CBM DOS V3.1 1571". Und bei der Pi1541 bekommt man schön "PI1541 V01.19" (im Browse-Mode). Allerdings setzt halt ein U9 die verbogenen Laufwerksnummern wieder zurück. Eine 1571, die vorher meinetwegen bei 11 war, ist dann wieder bei 8.

    Mache ich... muss aber erst noch was Löten :syshack:

    Prima, ich wünsche guten Lotfluss!

    Es ist auch nicht gesagt, dass die Detection oben, so wie sie ist, stabil und gut funktioniert. Gestern Abend habe ich in Vice rumgetestet damit mit allen virtuellen Laufwerkstypen - und mit einer 1540 wollte der Check gar nicht zusammenarbeiten. Da blieb die Detection hängen.

    Manchmal blieb es bei mir auch auf dem realen C128DCR hängen. Das Basic-Programm verwendet nur Basic v2 und sollte daher auf dem C64 und C128 funktionieren, allerdings kann ich mein mit petcat generiertes prg, dass ich oben angehängt habe, nicht in VICE 128 einfach reinziehen. Im VICE 64 geht es. Muss ich mit petcat für 64er und 128er getrennte prg's erzeugen?

    Mein Basic-Programm ist immer noch chaotisch, aber ich hänge eine erste Version hier mal rein. Es greift folgendes Coding auf zur Detection von Geräten: Bitte melde dich an, um diesen Link zu sehen.

    Das prg hängt unten an.

    Klingt ja schonmal gut.
    Jetzt noch ein kleines Menü (mein ein paar Wahlmöglichkeiten) und die Funktion von STFU dazu... ;)

    Bitte melde dich an, um diesen Link zu sehen. kannte ich noch nicht, interessant. Deaktivieren eines Laufwerks sollte auch von Basic kein Problem sein, ist Bitte melde dich an, um diesen Link zu sehen. beschrieben. Ein Menü mit Wahlmöglichkeiten wäre cool, da ich heute direkt am C128 gecodet habe, ist es eher Kraut- und Rübencode momentan ohne Struktur. Aber vielleicht komme ich dazu, ein Menü zu bauen. Glücklicherweise ist die Funktionalität des Tools in Basic nicht unglaublich langsam, so dass es nicht unbedingt eine Lösung in Assembler sein muss - jedenfalls nicht von Anfang an.

    Was hast du denn alles am Rechner hängen um alle Gerätenummern von 4 bis 30 zu belegen?

    Ich hatte mich nur auf die Nummern 8,9,10,11 beschränkt in dem Fall. Habe zum Testen noch zustäzlich eine 1541-II dran, so dass tatsächlich nur noch eine Nummer frei ist. (1571, Pi1541, 1541-II).

    Ich muss den Basic-Code mal ein bisschen aufbereiten, dann melde ich mich wieder.

    Hallo,

    ich habe heute einige Zeit damit verbracht, ein kleines Basic-Programm zu coden, welches die vier Gerätenummern 8,9,10 und 11 abklappert und prüft, was da so dranhängt. Danach tauscht es bei zwei Laufwerken die Gerätenummern aus (softwareseitig bis zum nächsten Reset des Laufwerks).

    Alles kein Hexenwerk, und wer das ganze per Hardware löst, braucht sowas nicht. Mich hat eher interessiert, ob es überhaupt von Basic aus möglich ist.

    Hintergrund: Ich habe einen C128DCR und eine Pi1541. Der C128DCR hat eine 1571 eingebaut, die immer auf Adresse 8 lauscht. Hardwaremäßig müsste ich an die Platine ran, um die Adresse umstellbar zu machen. Softwaremäßig kann ich von Basic aus die Adresse ändern bis zum nächsten Reset, was mir evtl. schon reicht.

    Die Pi1541 habe ich je nach Laune an mehreren Rechnern hängen, deswegen habe ich sie auf der SD-Karte momentan auf Gerätenummer 10 eingestellt (und ich hänge selten eine USB-Tastatur dran). Nun wollte ich ein Basic-Programm haben, das nachschaut, ob auf Gerätenummer 10 meine Pi1541 hängt und auf Gerätenummer 8 meine 1571. Wenn das der Fall ist und noch mindestens eine weitere Gerätenummer frei ist, wird die 1571 auf eine freie Gerätenummer verschoben und die Pi1541 wird auf Gerätenummer 8 gesetzt.

    Das scheint nach einigen Fehlversuchen ganz gut zu funktionieren. Bei Interesse kann ich mehr darüber berichten.

    Viele Grüße
    emulaThor