Autor Thema: Probleme mit dem FDC  (Gelesen 10488 mal)

Programm Noob

  • Gast
Gespeichert
« Antwort #20 am: 14. November 2010, 12:18 »
bist du dir sicher das der Fehler da auftritt? Weil ich sehe da auch kein 0x96.
@taljeth : oder könnte das nen Fehler in qemu sein?

spaceemotion

  • Beiträge: 49
    • Profil anzeigen
    • SpaceEmotion
Gespeichert
« Antwort #21 am: 14. November 2010, 12:57 »
Als ich den die Zeile auskommentiert und eine while(1); danach eingebaut. Der Fehler trat nicht mehr auf. Also hat er etwas mit dem sendPara() zu tun.
taljhet hat allerdings recht, was seine "Fehlerdifinition" angeht.

S.
« Letzte Änderung: 15. November 2010, 14:41 von spaceemotion »

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #22 am: 14. November 2010, 17:12 »
Als ich den die Zeile auskommentiert und eine while(1); danach eingebaut. Der Fehler trat nicht mehr auf. Also hat er etwas mit dem sendPara() zu tun.

Hmm… ich weiß jetzt nicht genau wo du das "while" hingesetzt hast, aber wenn mit 'while' kein Fehler Auftritt dann liegt der Fehler eindeutig hinter dem 'while', das ist dir aber wahrscheinlich klar und du hast dich nur nicht genau ausgedrückt.

Zu deinem code:
Wo der Wiki-Code 'send_cmd' benutzt, benutzt du 'out', auch wenn das bei QEMU vermutlich nichts ausmachen sollte, könnte das spätestens bei echter HW zu Problemen fuhren wenn du nicht wartest bis der FDC bereit ist.
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #23 am: 14. November 2010, 17:16 »
Qemu sagt mir ja, dass ich 0x96 sende, ich weiß aber nicht wo.  :?
Dann bau ein paar kprintfs ein, bis du es weißt.

@taljeth : oder könnte das nen Fehler in qemu sein?
Nein, der Compiler und der Emulator haben immer recht. *

*) Die einzige Ausnahme, für die das nicht gilt, sind Leute, die genau wissen, was sie tun
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Programm Noob

  • Gast
Gespeichert
« Antwort #24 am: 14. November 2010, 17:55 »
@taljeth : oder könnte das nen Fehler in qemu sein?
Nein, der Compiler und der Emulator haben immer recht. *

*) Die einzige Ausnahme, für die das nicht gilt, sind Leute, die genau wissen, was sie tun
Hätte ja sein können, das das nen Bug in Qemu ist.

PNoob

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #25 am: 15. November 2010, 10:11 »
Hallo,

Die einzige Ausnahme, für die das nicht gilt, sind Leute, die genau wissen, was sie tun
Mit anderen Worten: es gibt hier keine Ausnahmen von der Regel. ;)

SCNR
Erik
Reality is that which, when you stop believing in it, doesn't go away.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #26 am: 15. November 2010, 10:36 »
*hust*

Vielleicht wäre s/genau/so ungefähr/ korrekter, aber dann bestünde die Gefahr, dass PNoob das auf sich bezieht, obwohl das definitiv nicht so gemeint ist. ;)
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

spaceemotion

  • Beiträge: 49
    • Profil anzeigen
    • SpaceEmotion
Gespeichert
« Antwort #27 am: 15. November 2010, 15:15 »
Als ich den die Zeile auskommentiert und eine while(1); danach eingebaut. Der Fehler trat nicht mehr auf. Also hat er etwas mit dem sendPara() zu tun.

Hmm… ich weiß jetzt nicht genau wo du das "while" hingesetzt hast, aber wenn mit 'while' kein Fehler Auftritt dann liegt der Fehler eindeutig hinter dem 'while', das ist dir aber wahrscheinlich klar und du hast dich nur nicht genau ausgedrückt.

Zu deinem code: 
Wo der Wiki-Code 'send_cmd' benutzt, benutzt du 'out', auch wenn das bei QEMU vermutlich nichts ausmachen sollte, könnte das spätestens bei echter HW zu Problemen fuhren wenn du nicht wartest bis der FDC bereit ist.
Ich glaube, dass ich hier ein paar Missverständnisse beseitigen muss:
  • outb ist eine ganz Normale Funktion um einen Wert in einen Port zu schreiben
  • Das while(1); ab ich wie folgt positioniert:
....
//sendPara( fdc.acDrive | (H << 2) ); //H = head, fdc.acDrive = aktueller Drive
while(1);
So tritt kein Fehle auf.

S.

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #28 am: 15. November 2010, 18:24 »
outb ist eine ganz Normale Funktion um einen Wert in einen Port zu schreiben
Das ist mir klar. Ich kenne die Spezifikation nicht, aber einfach so werte raus hauen scheint
mir bei dem, was im Wiki als Code steht, nicht angebracht.

Zitat
Das while(1); ab ich wie folgt positioniert:
....
//sendPara( fdc.acDrive | (H << 2) ); //H = head, fdc.acDrive = aktueller Drive
while(1);
So tritt kein Fehle auf.
Also doch :roll:. Wer sagt dir denn, dass der Fehler nicht sonst erst hinter dem while auftrit?
Entweder auskommentieren, oder while. So kannst du auch gleich das while vorne dran setzen.

while und fehler => fehler vor while
while und kein fehler => kein fehler vor while

Wenn du den potentiellen fehler code auskommentierst kannst du also gar nicht mehr sagen, ob er fehler frei ist.
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

spaceemotion

  • Beiträge: 49
    • Profil anzeigen
    • SpaceEmotion
Gespeichert
« Antwort #29 am: 19. November 2010, 14:46 »
Wie auch immer. Ich hab den Code neu geschrieben und er funktioniert.

S.

 

Einloggen