Warum schaltet mir dieser Code nicht in den Pmode
-
Simulier das mal auf Bochs, der Neustart klingt nach 3rd exception ohen Auffangen. Boch schreibt dann nämlich in die bochsout.txt, was der Grund für die Exception war.
-
omg das programm is aber komplex und die Hilfe is auch nich grad klein - kannst du mir schnell sagen was ich da alles einstellen muss um mein Programm zu simulieren?
Kevin
-
Original erstellt von Surkevin:
omg das programm is aber komplex und die Hilfe is auch nich grad klein - kannst du mir schnell sagen was ich da alles einstellen muss um mein Programm zu simulieren?Hm, eiegntlich ist Bochs nicht sehr komplex. Zumidnest, wenn man sichauf die wichtigen Optioonen beschränkt
Einstellen musst du wahrscheinlcih nur die Laufwerke, die Festplatte vermutlich keine und die Floppys, entweder auf die Image-Datei richten oder A: für das Diskettenlaufwerk. Das sollte eigentlich genügen. Achja, du musst noch die Pfade zu den BIOS-Dateien einstellen, die stimmen immer nicht ganz afair. Und dass er von Floppy bootet wäre auch ganz nützlich.
Laufwerkseinstellungen:
8. Disk Options
BIOS-Dateien:
6. Memory optionsBei den Datein schau nach, ich glaub die liegen im bochs-verzeichnis, in der config steht aber sie wären in nem unterverzeichnis bios/ oder so. Das sollte ansich dann reichen.
-
Man ich krieg ne BIOS Panic :(( super
Woran kann das liegen?
-
Oh jetzt gehts *g* hattest recht mit der Vermutung - jedoch den Fehler zu finden hilft mir dies auch nicht - kannst du da etwas auslesen?:
00000000000i[MEM0 ] allocated memory at 00B40020. after alignment, vector=00B41000
00000000000i[MEM0 ] 32.00MB
00000000000i[MEM0 ] rom at 0xf0000/65536 ('../BIOS-bochs-latest')
00000000000i[MEM0 ] rom at 0xc0000/32769 ('../VGABIOS-elpin-2.40')
00000000000i[CMOS ] Setting initial clock to: Wed Apr 09 20:42:30 2003 (time0=1049913750)
00000000000i[DMA ] channel 4 used by cascade
00000000000i[DMA ] channel 2 used by Floppy Drive
00000000000i[FDD ] fd0: '1.44.img' ro=0, h=2,t=80,spt=18
00000000000i[VGA ] interval=30000
00000000000i[VGA ] VBE Bochs Display Extension Enabled
00000000000i[HD ] Boot device will be 'a'
00000000000i[HD ] Floppy boot signature check is enabled
00000000000i[KBD ] will paste characters every 1000 keyboard ticks
00000000000i[SER ] com1 at 0x3f8/8 irq 4
00000000000i[PAR ] parallel port 1 at 0x378
00000004256i[BIOS ] rombios.c,v 1.85.2.1 2003/01/16 21:58:42 cbothamy Exp $
00000330043i[KBD ] reset-disable command received
00000506792e[HD ] device set to 0 which does not exist
00000507085e[HD ] device set to 1 which does not exist
00000550758i[FDD ] partial read() on floppy image returns 232/512
00000560061e[CPU ] jump_protected: dpl > CPL
00000560061p[CPU ] >>PANIC<< exception(): 3rd (13) exception with no resolution
00000560061i[SYS ] Last time is 1049913751
00000560061i[CPU ] protected mode
00000560061i[CPU ] CS.d_b = 16 bit
00000560061i[CPU ] SS.d_b = 16 bit
00000560061i[CPU ] | EAX=60000011 EBX=00000007 ECX=00140002 EDX=00000000
00000560061i[CPU ] | ESP=0000ffff EBP=00000000 ESI=00000017 EDI=0000ffe4
00000560061i[CPU ] | IOPL=0 NV UP DI PL NZ NA PE NC
00000560061i[CPU ] | SEG selector base limit G D
00000560061i[CPU ] | SEG sltr(index|ti|rpl) base limit G D
00000560061i[CPU ] | DS:9000( 0000| 0| 0) 00090000 0000ffff 0 0
00000560061i[CPU ] | ES:9000( 0000| 0| 0) 00090000 0000ffff 0 0
00000560061i[CPU ] | FS:0000( 0000| 0| 0) 00000000 0000ffff 0 0
00000560061i[CPU ] | GS:0000( 0000| 0| 0) 00000000 0000ffff 0 0
00000560061i[CPU ] | SS:4000( 0000| 0| 0) 00040000 0000ffff 0 0
00000560061i[CPU ] | CS:9000( 0000| 0| 0) 00090000 0000ffff 0 0
00000560061i[CPU ] | EIP=000000ba (000000ba)
00000560061i[CPU ] | CR0=0x60000011 CR1=0x00000000 CR2=0x00000000
00000560061i[CPU ] | CR3=0x00000000 CR4=0x00000000
00000560061i[CTRL ] quit_sim called with exit code 1Wäre echt nett
Kevin
-
Wichtig ist die Zeile vor der Exception:
00000560061e[CPU ] jump_protected: dpl > CPL 00000560061p[CPU ] >>PANIC<< exception(): 3rd (13) exception with no resolution
Siehe da: Ein Interlevel-Sprung, ohne dass der Privileg Level stimmte. Habe gerade keine Zeit das nachzuchecken, aber vielelicht hilft dir diese Info ja schonmal. Check mal die DPL-Felder in den Selektoren ab.
-
Hmmm nur wo könnte dies in meinem Code der Fall sein? Wenn ich die Adresse eintrage könnte dies sein, aber wenn ich dies weglasse kommt der selbe Fehler - wieso?
-
Bochs dumpt ja noch die Register:
00000560061i[CPU ] | EIP=000000ba (000000ba)
sieht irgendwie aus, als wenn der EIP sich verlaufen hat, auf 000000ba liegt dohc nicht dein code, oder?
-
HM allerdings merkwürdig - aber wo veränder ich denn die Adresse von meim Codesegment? Grml man zum ausrasten
-
hab jetzt nicht alles genau studiert, aber mein Tipp wäre, nicht das BIOS für die Ausgabe zu nutzen.
Ich würde jetzt mal so vermuten, dass die BIOS-Funktionen in 16-Bit-Code geschrieben sind, für den RM, wenn du die nun mal einfach aufrufst, finde ich es nicht sehr verwunderlich, dass das exceptions gibt.Ich hab damals den Text einfach in den Graphikspeicher geschrieben.
mfg
-bg-