Midicom Floppy Anschluss

    • Official Post

    Wie viel Arbeit ist es, den Code für den 8085 Prozessor umzuschreiben?

    Wenn du die ganzen Mnemonics aendern willst, viel Spass!


    Brauchst du aber gar nicht, du musst "nur" die Z80-spezifischen Befehle entfernen. Das laesst sich schon hinkriegen.

    ABER...


    Dadurch wird das Programm laenger und es aendern sich wieder ein paar Adressen usw usw.

    Wenn du einen anstaendigen Assembercode hast, ist das nicht so schwer (solange keine Index-Register benutzt werden und Interrupts etc lassen wir auch mal weg). Aber dieses diassemblierte Zeug ist weit weg von einem anstaendigen Assemblercode.


    BTW: djnz heisst "decrement B and jump if not zero"

    Meint:

    dec b

    jp nz,<Adresse>


    Aber warum die Muehe? Wegen dem Midicom?

    Der hat die Floppyroutinen schon drin. Es geht gerade "nur" um das Interface.

    • Official Post

    im besten Fall noch etwas Nacharbeit rein

    Ein sehr weitgefasster Begriff.

    Um die o.g. Punkte wirklich bearbeiten zu koennen, muss man sich sehr sicher sein, das Programm verstanden zu haben.

    Unter diesen Umstaenden ist das sehr wage. Hat man es wirklich verstanden, kann man es auch neu schreiben.

  • Aber warum die Muehe? Wegen dem Midicom?

    Der hat die Floppyroutinen schon drin. Es geht gerade "nur" um das Interface.

    Gute Frage. Ich hatte gehofft, mit der Routine, einem 8255 und einer VC1541 ein universelles Speichermedium für meine 8 Bit Rechner zu haben. 8085, Z80 und 6502/6510 Architektur.

    Konkret brauchen tue ich das nicht, aber man weiß ja nie...


    Und ja - zurück zu den eigentlichen Routinen im Midicom. Um die geht es hier ja eigentlich.

  • Was ich gerade mit dem Oszi rausgefunden habe: Der PIN 15 Ein Pin am Interface X11 geht kurz von High nach Low, wenn man die Floppyroutine mit S F aufruft. Nach meiner Messung dauert der Impuls 15 Mikrosekunden. Das müsste ein Pin am PIO1 sein.


    So jetzt aber erstmal fröhliche Weihnachten.:xmas:

    Edited 2 times, last by Aquarius ().

    • Official Post

    Gute Frage. Ich hatte gehofft, mit der Routine, einem 8255 und einer VC1541 ein universelles Speichermedium für meine 8 Bit Rechner zu haben. 8085, Z80 und 6502/6510 Architektur.

    Das ist natürlich eine interessante Geschichte.

    Z.Zt. würde ich die Routinen des Midicom dafür vorziehen. Die sind für den 808x und deutlich aufgeräumter.



    Das müsste Pin PC1 am PIO1 sein.

    Die PCx der PIO1 dienen als Art Adresse für die unterschiedlichen Bausteine an der PIO1, ADC, DAC, Centronics etc.

    Mess man lieber PA6 und PA7. Da muss es noch ein oder zwei Leitungen mehr geben an der PA, aber welche weiss ich noch nicht.



    So jetzt aber erstmal fröhliche Weihnachten. :xmas:

    Danke, wünsche ich dir auch.

  • Habe mittlerweile eine lauffähige Debug Umgebung und dank funkenzupfer ein immer übersichtlich werdendes Disassembly des Midicom Roms.


    Via Terminal kann ich den integrierten Tracemode oder den Single Step Mode benutzen.


    Am Stecker X11 habe ich ein altes Floppykabel und kann dort auf die einzelnen Pins der PIO1 zugreifen.


    Hier ein Teil der Floppyintitialisierungsroutine, die...


    1. PA1-7 setzt und dann PB7 auf gesetzt überprüft.

    2. PA 1-7 löscht und PB7 auf gelöscht überprüft



    Diesen Teil der Routine kann ich durch einfaches überbrücken von PA7 nach PB7 auf "i.O." bekommen, aber das ist nur ein (kleiner) Teil des Ganzen.



    Hier noch die Steckerbelegung (Kurzanleitung S.166):



    Spannend und Stand heute völlig offen, ob die 1541 in den Weihnachtsferien noch das Zucken anfängt...::solder::

  • Spannend und Stand heute völlig offen, ob die 1541 in den Weihnachtsferien noch das Zucken anfängt... ::solder::

    Kurz Frage ... kann es auch eine 1541 sein oder muss es eine 1571 sein ... die 1571 hat ein etwas anderes DOS-ROM als die 1541, obwohl im 1571 DOS-ROM auch der 1541 Code ist ...

    • Official Post

    Aktuell gehen wir (Florian und ich) davon aus, daß die SRQ-Leitung nicht angeschlossen wird und somit der Burst-Mode der 1571 nicht verwendet wird.

    Es ist also davon auszugehen, daß das ganze auch mit der 1541 läuft.

    Um aber unbekannte Probleme beim Testen auszuschließen, ist dafür eine 1571 vorgesehen.

    Wenn's damit funktioniert, kann mit einer 1541 weitergetestet werden.

  • Um aber unbekannte Probleme beim Testen auszuschließen, ist dafür eine 1571 vorgesehen.

    Das sehe ich auch so ... würde unbedingt auch erst mit einer 1571 anfangen ... die kann ja zusätzlich MFM (und ein paar CP/M - Formate) ... das kann die 1541 alles nicht. Ich finde diesen Thread superspannend ...

    • Official Post

    ob die 1541 in den Weihnachtsferien noch das Zucken anfängt...

    Du hast ja das Jahr nicht dabei geschrieben. :)

    Wird also klappen.


    Ausserdem sind Termine bei solchen Projekten nicht nützlich.


    Diesen Teil der Routine kann ich durch einfaches überbrücken von PA7 nach PB7 auf "i.O." bekommen, aber das ist nur ein (kleiner) Teil des Ganzen.

    Aber ein sehr interessanter Teil.


    Ich denke ich werd mal eine Schaltung auf einem Steckbrett probieren und von Toast_r eine Floppy leihen. Schau'n wir mal, vielleicht naechstes Jahr. :)

  • Habe mich durch die Floppyroutine bei Einsprungadresse 4000h durchge"traced" und bin bei einer eigenartigen Routine gelandet:


    Mit einem jmp nach 5800h landet man in einer Routine, die im ROM nicht an dieser Stelle steht. Auch den jmp-Aufruf sucht man im ROM vergebens. Beides wird also erst zur Laufzeit generiert. ::hacking::


    Hier wird der Kanal A auf Mode 1 Ausgabe geschaltet und Kanal B auf Mode 0 Eingabe. Kanal C ist ebenso auf Ausgabe gestellt. Das ganze sieht eigentlich nach einer Speicherfüllroutine aus ab Adresse 7000h, aber der Füllbefehl selbst fehlt!? Nur die Adressen 7FFBh bis 7FFFh werden einzeln befüllt:


    Leider habe ich es bei weiteren Versuchen nicht mehr geschafft den Trace bis zu dem jmp 5800h Aufruf zu verfolgen. So würde mich interessieren, wo dieser jmp steht und was im Register C steht.

  • Bei Adresse 612Dh stehen die Bytes 00 58. Diese Adresse und Adresse 0001h sind die einzigen Vorkommnisse.


    Ein sta X612d taucht fünf Mal im gesamten Dump auf.

    • Official Post

    Welcche Buechse der Pandora hast du denn da aufgemacht? :)


    Adresse 0001 und 5800 und folgende liegen im EPROM und damit nicht aenderbar.

    Eine Banking Logik habe ich im Schaltplan bisher nicht gefunden.

    Hast du irgendwelche Module angesteckt?


    Zum Code ab 5800:

    5804 - 5814 schreibt 0x7E nach 7000-7FFF

    Danach wird's interessant:

    Der Code ab 581A schreibt folgenden Code nach 7FFB: (ausnahmsweise 8085 Mnemonics)

    Code
    mvi a,99h ;7FFB
    out PIO1A ;7FFD
    halt      ;7FFF


    Danach Sprung nach 5592, das ist der default Kaltstart.

    So, aus einem HALT kommt man nur per Interrupt oder Reset wieder raus.

    Was sagt uns das?



    und was im Register C steht.

    Was willst du mit Register C?

  • Da bin ich auch gespannt...habe tatsächlich ein Zusatzboard(Hardwarebreakpoint) dranhängen. Muss ich mal abstecken und schauen, ob der Code dann auch da ist.


    5804 - 5814 schreibt 0x7E nach 7000-7FFF

    Ja, klar, es ist ein Memcopy ... das heißt Ziel<-Quelle ... habe das mov m,a genau anders herum interpretiert. :grübel:Kann es sein dass die Schreibweise bei Motorolla 68000 Assembler genau umgekehrt ist!? Quelle->Ziel

    Was willst du mit Register C?

    In Zeile 13 steht ora c. Damit wird der Akuuinhalt mit Register C per OR verknüpft, oder? Das folgende JNZ springt zurück in die Schleife, wenn die OR-Verknüpfung nicht Zero ist. Wenn Register C nicht Null ist, würde das ganze immer zurückspringen, da das Ergebnis nie Null werden könnte. :nixwiss:Macht das Sinn:nixwiss:

    • Official Post

    Kann es sein dass die Schreibweise bei Motorolla 68000 Assembler genau umgekehrt ist!? Quelle->Ziel

    Auf jeden Fall.


    In Zeile 13 steht ora c. Damit wird der Akuuinhalt mit Register C per OR verknüpft

    Mit lxi b,X0fff wird BC=7fffh

    Das

    mvi a,b

    or c

    jnz X580a

    testet BC != 0.

    Mehr nicht.



    Wenn du doch vom 68000 kommst :thumbup:, koennen wir uns auf die Z80 Mnemonics einigen?

  • Ja, klar, es ist ein Memcopy ... das heißt Ziel<-Quelle ... habe das mov m,a genau anders herum interpretiert. :grübel:Kann es sein dass die Schreibweise bei Motorolla 68000 Assembler genau umgekehrt ist!? Quelle->Ziel

    So isset. Intel und Zilog: Ziel links, fast alle anderen: Ziel rechts.

  • Wenn du doch vom 68000 kommst :thumbup: , koennen wir uns auf die Z80 Mnemonics einigen?

    Mal überlegen...Ich plane ein größeres Projekt, was auf der Intel Schiene 8008 - 8080 aufbaut. Deswegen will ich dort dann in Intel Mnemonics fit sein.


    Wenn es hier weiterhilft und für Dich eine Erleichterung ist, schalte ich auf Z80 Mnemonics um. Dann muss ich halt später nochmal Vokabeln lernen.

    • Official Post

    was auf der Intel Schiene 8008 - 8080 aufbaut

    Ok, 8008 weiss ich nicht, aber fuer den 8080 kannst du auch die Z80 Mnemonics verwenden, musst dich nur bei den Opcodes einschraenken.


    Wenn es hier weiterhilft

    Was heisst helfen, ist fuer mich nur gewohnter und weniger fehleranfaellig.

  • Welche Buechse der Pandora hast du denn da aufgemacht? :)


    Adresse 0001 und 5800 und folgende liegen im EPROM und damit nicht aenderbar.

    Eine Banking Logik habe ich im Schaltplan bisher nicht gefunden.

    Hast du irgendwelche Module angesteckt?

    Habe das Zusatzboard abgeklemmt und nochmal nachgeschaut:


    Der "Geistercode" bei 5800h ist immer noch da.

  • Das Zusatzboard ist das LN Measurement Panel with Address and Trigger SO4000-2N.


    Ich habe von meinem anderen Midicom das ROM ausgelesen, nicht von dem, an dem ich arbeite. Es könnte natürlich sein, dass sich die beiden ROMs unterscheiden! Dann wäre die Büchse der Pandora wohl eher eine Fatamorgana gewesen :)


    Ich lese dieses hier einfach auch aus, dann wissen wir es.

    • Official Post

    Dann wäre die Büchse der Pandora wohl eher eine Fatamorgana gewesen

    Puh, zum Glueck ist es die Fatamorgana!

    • Official Post

    Die Floppy laeuft



    Mit der von Toast_r geliehenen 1571 kann ich formatieren, schreiben und lesen.

    Alles soweit gut.

    Nur die Cursorsteuerung ist etwas komisch. Wer benutzt ein Ctrl-U fuer Cursor links?


    Die Schaltung entspricht der aus dem mc-Artikel. Allerdings wird statt des 7406 ein 7407 verwendet und die Pins sind anders mit der PIO beschaltet.

    Ich mach da gleich mal ein Schaltplan, dann darf es jeder nachbauen.


    Die Software im Midicom hatte auch grosse Aehnlichkeit mit dem mc-Artikel. Wer von wem abgeschrieben hat, keine Ahnung, mir egal.

    Nachdem ich die gemeinsamen Codeteile gefunden hatte, konnte ich die Bit Zuordnung mit der PIO nachvollziehen.


    Und das noch im jahr 2019. :)


    Viel Spass

    • Official Post

    Genau!

    Ne, die Verriegelung der Laufwerksklappe rastet nicht. Wollte ich gleich noch mal in Ruhe nachschauen.