Autor Thema: Zurück in den Real Mode schalten, wie?  (Gelesen 5335 mal)

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« am: 26. January 2006, 15:50 »
Hallo,

ich möchte gerne aus dem 16Bit PM in den RM zurück schalten. Aber das funktioniert bei mir nicht so ganz. Ich mache es bis jetzt so:

interrupts mit cli deaktivieren
Master PIC auf int 08h setzten
Slave PIC auf int 70h setzten
dann ds, es und ss auf Segmentselektoren mit limit FFFFh setzten
im CR0 das erste bit löschen
mit einem jump zur RM Adresse
Segmentregister so setzten wie ich sie haben will
mit sti die interrupts aktivieren

Wenn ich vor dem sti ein jmp $ setzte, macht er logischerweise nichts mehr. Aber wenn ich das jmp $ weg lasse, startet der PC neu. Das heißt, sobald im RM ein int aufgerufen wird, startet der Rechner neu. Aber warum? Muss ich die lidt noch irgendwie setzten, weil die im PM nicht als Basis Null hat. Wenn ja, wie muss das limit lauten? Was fehlt bzw. ist falsch?

Danke!!!

bitmaster
In the Future everyone will need OS-64!!!

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 26. January 2006, 15:53 »
Zitat von: bitmaster
Muss ich die lidt noch irgendwie setzten, weil die im PM nicht als Basis Null hat. Wenn ja, wie muss das limit lauten? Was fehlt bzw. ist falsch?

ja. das limit muss anzahl der interrupts * groesse eines eintrags in der ivt/idt - 1 = 256 * 4 - 1 = 0x3ff lauten.
Dieser Text wird unter jedem Beitrag angezeigt.

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #2 am: 26. January 2006, 16:04 »
Zitat von: PorkChicken
Zitat von: bitmaster
Muss ich die lidt noch irgendwie setzten, weil die im PM nicht als Basis Null hat. Wenn ja, wie muss das limit lauten? Was fehlt bzw. ist falsch?

ja. das limit muss anzahl der interrupts * groesse eines eintrags in der ivt/idt - 1 = 256 * 4 - 1 = 0x3ff lauten.
Danke, aber leider funktioniert es immer noch nicht. Es wird nach wie vor neu gestartet.
In the Future everyone will need OS-64!!!

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 26. January 2006, 16:07 »
bei mir funktionierts
Dieser Text wird unter jedem Beitrag angezeigt.

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #4 am: 26. January 2006, 16:14 »
Zitat von: PorkChicken
bei mir funktionierts
Ach misst, ich hatte in der alten 48 Bit idt Adresse geschrieben anstatt in der neuen. Jetzt funktionierts, danke für eure bzw. deine Hilfe.

bitmaster
In the Future everyone will need OS-64!!!

 

Einloggen