Große Festplatten am Bridgeboard / Option ROM ohne ROM Chip


  • Jan
  • 353 Aufrufe 25 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Große Festplatten am Bridgeboard / Option ROM ohne ROM Chip

    Hallo,

    auf die Gefahr hin mich mit etwas Offensichtlichen lächerlich zu machen:
    Ich denke ich habe eine einfache Möglichkeit gefunden, Option ROMs auf einer Brückenkarte (hier speziell die A2286, sollte aber übertragbar sein) zu laden ohne diese vorher brennen zu müssen. Das erlaubt die verwendung großer Festplatten mit Hilfe des XTIDE bzw ATIDE BIOS an Standard Controllern ohne eigenes BIOS. Auch Option ROMs für SCSI Controller sollten sich so laden lassen:

    Der Janus Handler selbst ist auch ein Option ROM. Er ist nicht fest im BIOS der Januskarte integriert. Er befindet sich auf der Amiga Seite in der Datei PC/System/pc.boot. Die ersten beiden bytes enthalten auch den Option ROM Header 0x55AA. Die Datei pc.boot lässt sich so einfach 1:1 durch einen Option ROM wie das XTIDE BIOS ersetzen. Dieser wird dann anstelle des Janus Handlers geladen.
    Man kann aber auch beides haben: Die Option ROMs (Janus Handler und XTIDE BIOS) lassen sich über den JOIN Befehl der Workbench zu einer neuen pc.boot kombinieren:

    Shell-Script

    1. cd SYS:PC/System
    2. rename pc.boot janus.bin
    3. join ide_at.bin janus.bin AS pc.boot
    Wichtig dabei ist dass das xtide BIOS zuerst kommt und dann der janus Handler. Das funktioniert da das PC BIOS in einem bestimmten Speicherbereich an 2k grenzen nach dem Option ROM Header 0x55AA sucht und so mehre ROMs erkenn kann. Bei mir hat es allerdings nur funktioniert wenn das ide_at BIOS vorne steht und der janus Handler hinten. Sonst wurde nur der Janus Handler geladen. Das IDE_AT BIOS hat nur 8KB und der Janus Handler hat 12kb. Ich vermute dieser ist so groß, dass er den zweiten ROM aus dem durchsuchten Bereich schiebt.

    Wenn das AT_IDE BIOS allein geladen wird meldet es dass es an Adresse D400 gelandet ist. Mit dem Janus Handler dahinter ladet es an D700. Der Janus Handler scheint auch trotzdem zuerst geladen zu werden.

    Getestet habe ich das ganze Momentan nur in WinUAE getestet, da ich gerade nicht an meinen Amiga komme..


    Falls das jemand ausprobiert und auf Nebenwirkungen stößt würden mich diese interessieren.

    Auch wenn sich jemand mit den Details von den Speicher Mappings vom Dual Ported RAM auskennt könnte er für mich etwas Klarheit in die Sache bringen:
    Ich habe das jetzt so verstanden: mit der Adresse in PC Prefs stelle ich ein in welches Segment der x86 den "Janus Bereich" eingeblendet bekommt. Ist das der gesammte Dual Ported RAM? Nur die Option ROMs oder etwas mehr? Ich nehme an die Bereiche für die Framebuffer der der emulierten Videokarten sind fest, sonst würde man ja bei falsch eingestellten Bereich überhaupt nicht sehen und soweit ich weiß sollten deren Adressen beim normalen PC auch immer gleich sein.
    Belegen die Option ROMs dauerhaft Dual Ported RAM oder werden diese umkopiert und der Speicher wieder freigegeben?
    Oder ist die Logik um den Dualported RAM gar so schlau, dass sie eine Art Paging unterstüzt, also ein Teil des PC Adressraums auf einen Teil des Amiga RAMs mappt und falls ein ausschnitt davon gerade nicht im DP RAM ist, beim Zugriff ein Pagefault ausgelöst wird und etwas anderes verdrängt wird und der entsprechende Ausschnitt vom Amiga in den DP RAM kopiert wird?
    Warum hat die 2088 eine höhere Adresse für den Janus Handler als die 2086 obwohl letztere mehr RAM hat?
    Wenn ich mich mit dem segmentierten Speicher nicht vertue ist sollte es ja bei E000 So sein, dass noch genau Platz für die 128KB DP RAM ist. Hat die 2286 hier etwas anderes gemappt?

    MfG Jan
    Bilder
    • XTIDE+Janus.png

      9,34 kB, 642×456, 13 mal angesehen
    • Bridgeboard XTIDE no Janus.png

      9,06 kB, 637×439, 9 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Jan ()

  • Klingt sehr interessant.

    Mein Adaptec 1542 erkennt die Festplatten und bootet davon nur, wenn ich den Janus-Handler deaktiviert habe.



    Verstehe ich das richtig, dass mit deiner Vorgehensweise der SCSI-Controller die Festplatten auch mit aktiven Janus-Handler erkennen kann?

    Das wäre nämlich äusserst interessant, da ich nämlich nur mit aktiven Janus-Handler "Etherbridge" nutzen kann.



    Bisher habe ich mir immer mit einem Hard-File geholfen, wenn ich Etherbridge verwenden wollte.


    Bei mir handelt es sich allerdings um eine A2386SX
  • Bei dem Adaptec ist das Problem wahrscheinlich dass die Adresse seines Option rom sich mit der des Janus Händlers überlagert.
    Wenn der Controller keine Option hat die Adresse zu verschieben, kannst Du seinen ROM ja mal dumpen un ihn auf der Karte deaktivieren.
    Versuche es dann einfach mal wie von mir beschrieben, es kostet ja nichts. Durch das Vorgehen wird ja einer der ROMs
    zwangsläufig relokiert. Die Frage ist dann halt ob er damit umgehen kann oder absolute Adressen verwendet.
    Auch habe ich noch nicht überprüft ob der Janus Handler tatsächlich noch funktioniert. Von daher ist jedes Feedback sehr willkommen.

    Wie groß ist denn der Rom vom Adaptec? Größer als 8KB ist wahrscheinlich problematisch.

    Notfalls kann man auch noch einen der Option ROMs über einen modifizierten Bootloader von Diskette oder Platte laden. Das war auch mein ursprüngliches Vorgehen, allerdings hat es nach einem Reset vom Amiga immer rumgebuggt, was aber wahrscheinlich an meiner Hardware liegt.

    Ich kann dann noch mal nach der bootsektor Methode gucken, wenn es über die pc.boot Datei nicht klappt.


    EDIT: Es hat mir jetzt doch keine Ruhe gelassen und ich habe das BIOS in der Version 3.2 für den 1542B gefunden. Es hat 16KB. Ich habe es gerade mal im Emulator ausprobiert und siehe da, es werden beide Option ROMs geladen (Adaptec + Janus) wobei hier das Adaptec BIOS für dem Janus Handler kommt. Da das Adaptec BIOS ganze 16KB hat ist auch meine Theorie wiederlegt, dass der Janus ROM zu groß war und so den XTIDE verdrängt hat. In meinem pc.boot image ist der Adaptec ROM am Anfang und der Janus als zweiter.
    Ob die richtig ROMs funktionieren kann ich mangels Kontroller und Jansu Software leider jetzt nicht testen, deshalb bin ich mal gespannt auf deine Rückmeldung.
    Bilder
    • Adaptec + Janus.png

      10,56 kB, 649×469, 11 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Jan ()

  • Bitte auch immer testen, ob der Janus tatsächlich funktioniert, oder nur als "laufend" angezeigt wird.
    Bisher hatten wir, gerade mit dem XTIDE Bios, immer das Problem, dass der Janus ausgestochen wurde.

    Testen kann man das recht einfach per AMouse, ARead und/oder AWrite.

    Wäre aber freilich eine Granaten-Lösung! :D
  • Diese Idee hatte ich grundsätzlich auch schon mal, habs aber noch nie wirklich ausprobiert, aber schön zu erfahren, daß es prinzipiell funktioniert.

    Wie das Dual-Port-RAM genau gemapped wird, ist glaub im Amiga-Intern ganz gut beschrieben.

    Die Option-ROM's müssen PC-seitig glaub auf 8K Boundaries zu liegen kommen, daher geht es wohl nicht, wenn direkt das nächste ROM hinter das Janus gejoined wird, da müsste man dann wohl noch 4K dummy Daten dazwischen packen.
    Wer die Ironie findet, darf sie behalten ^^
  • Neu

    Das mit den 8k wäre eine Erklärung, ich war von 2k ausgegangen, das werde ich heute Abend mal versuchen.

    Der Rom müsste sich ja einfach kopieren lassen. An einem PC sollte er ja einfach an seiner Adresse im Speicher auftauchen, da braucht man dann keine extra Hardware zum auslesen.

    Und ich werde dann heute Abend mal noch gucken, dass ich mir ein MS-Dos und die Janus Software auftreibe.
  • Neu

    Der eine ROM ist der Microcode für den Controller selbst, der interessiert denke ich erst mal nicht und der andere "SCSI BIOS" ist der Option ROM. Der sollte am PC in einen Speicherbereich gemappt werden von wo du ihn mit debug oder anderen Tools einfach am PC über software dumpen kannst.
  • Neu

    Das sollte unter DOS mit dem Befehl DEBUG relativ selbsterklärend funktionieren.
    Muß man nur mit der Segmentierung aufpassen, also z. B. C000:0 angeben für physikalisch C0000.

    EDIT: Oder man nimmt einfach das hier.
    Wer die Ironie findet, darf sie behalten ^^

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von kbr ()

  • Neu

    Die genauen schritte kann ich leider nicht nennen, ich kenne da nur die Theorie. Aber zunächst brauchst Du ein Tool welches dir die Adressen der Option ROMs auflistet. Dann kann man irgendwie mit dem dos tool debug einen Speicherbereich auf eine Diskette schreiben.

    Momentan verzweifle ich gerade daran, dass der Emulator auf einmal die kombi aus atide und janus nicht mehr mag und das ATIDE BIOS einfach nicht mehr ausführt ?(

    Ich habe nun aber mal in die Technische Referenz für den XT und den AT von IBM gelesen. Damit ist klar warum für den AT das Janus Segment eine kleinere Startadresse hat: er hat dahinter einen größeren Bereich vorgesehen, in den ROMs gemappt werden können. Laut der Dokumentation wird beim AT der Bereich von C8000 bis E0000 nach Option ROMs auf Erweiterungskarten durchsucht. Von E0000 bis EFFFF wird nach onboard ROMS gesucht, die ein leicht anderes Format haben. Deshalb musste wohl der Janus Handler nach D0000 verschoben werden, da aber E0000 die etwas anderen ROMs vorgesehen waren. Das Durchsuchen erfolg übrigens in 2k schritten beim originalen XT und AT von IBM in dem Bereich ab E0000 beim AT ind 64K Schritten.

    Kann das XTIDE BIOS + Janus Handler bitte jemand mal auf echter Hardware testen, auch wenn kein IDE Controller vorhanden ist sollte das XTIDE/ATIDE BIOS sich wenigstens melden und der Janus Kram sollte noch funktionieren.
  • Neu

    Interessant: ich habe das ATIDE BIOS wieder zum laufen gebracht indem ich es mehrmals concatiniert habe: ide + ide + janus + ide. Vielleicht hatte ich es bei meinem funktionierenden versuch versehentlich auch mehrfach... ?( Jetzt ist es bei DB00 rausgekommen.

    EDIT: Aread hat leider nicht funktioniert :(

    EDIT2: aread geht aber auch mit dem janus handler only nicht. Er meint dosserv würde nicht laufen. Ideen?

    EDIT3: ok ich habe mit amouse getestet, so wie es aussieht stört es sich mit dem ATIDE BIOS :(

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Jan ()

  • Neu

    captain_zzap schrieb:

    Zur Vernetzung, hier wird auch versucht, das xtide Bridgeboard kompatibel zu machen. Vielleicht hilft ja vereintes Know-how.
    Das sieht auch interessant aus, leider sehe ich da weder den Sourcecode noch was geändert wurde und zum Download muss ich mich da erst noch anmelden.
    Was Problematisch sein könnte wäre dass der XTIDE RAM Variablen hat die eventuell etwas wichtiges von Janus überschreiben. Ein anderes Problem könnte sein dass der ROM jetzt selbst einen wichtigen Teil vom DP RAM blockiert. Laut der Technical Reference vom Amiga dürfte der jetzt im "Disk Buffer RAM" liegen.
    Vielleicht überschreibt er aber auch Interrupts.

    Kennt jemand ein fertiges Tool um den gesamten RAM zu dumpfen, sonst schreibe ich es mir selbst oder nehme debug.
    Und ein Tool das mir die Lage von Option ROMs und anders allokiertem Speicher anzeigt wäre auch gut falls es da Empfehlungen gibt.

    Ich werde heute Abend vielleicht noch mal versuchen XTIDE von Diskette zu laden wie sich das auswirkt.

    DOSServ habe ich schon gesucht aber es nicht auf der Diskette gefunden.

    Mit einem extra Gerät den ROM auslesen geht bestimmt auch, aber damit kenne ich mich nicht aus.
  • Neu

    Jan schrieb:

    Und ein Tool das mir die Lage von Option ROMs und anders allokiertem Speicher anzeigt wäre auch gut falls es da Empfehlungen gibt.
    Option-ROM-Adressen anzeigen kann IIRC selbst das alte msd.exe (Microsoft Diagnostics)

    Quellcode

    1. 10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    2. 20 forj=1to5:printchr$(rnd(1)*16+70);:next
    3. 30 printint(rnd(1)*328)-217

    sd2iec Homepage
  • Neu

    Ich habe gerade MSD mal versucht und es scheint auszureichen um die Option ROMs zu sehen.

    Ich würde gerne die Interrupt Vector Table (IVT) dumpen, einmal ohne ROM, mit Janus und einmal mit XT IDE. Allerdings scheint WinUAE einen Bug zu haben, dass es disketten auf der PC Seite zerstört, sobald ich darauf schreibe. Das macht es etwas schwierig die Dumps irgendwie da raus zu bekommen um sie zu analysieren, Ich habe sowohl 360KB als auch 1.44MB Disketten versucht.

    Falls mich jemand dabei mit echter Hardware unterstützten will: hier die befehle zum IVT dumpen:

    Quellcode

    1. n A:\IVT.bin
    2. w 0:0 400