Autor Thema: Bochs: Eigenes Bootsektorscript "Not a bootable disk"  (Gelesen 2977 mal)

HustensaftOS

  • Beiträge: 13
    • Profil anzeigen
Gespeichert
« am: 15. December 2011, 21:03 »

hi,
ich will unter Bochs just for fun ein einfaches Bootsektorscript testen und Bochs will das Diskettenimage nicht booten.


Mein ASMx86-Bootsektorscript in AT&T-Syntax (für GAS):movb   $0x09, %AH
movb   $0x41, %AL
int      $0x10


.org   512*8-2
.byte   0xAA
.byte   0x55
.end



Das von GAS erzeugte Objekt wird dann im ein rawbin umgewandelt:
objcopy -O binary xx.out xx.img
Schaut dann so aus:
0000: b4 09 b0 41 cd 10 00 00 00 00 00 00 00 00 00 00
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
0fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 aa 55

Das ganze wird als Image für ein Bochs-Laufwerk verwendet:
[...]

boot: floppy
floppy_bootsig_check: disabled=0
floppya: type=1_44, 1_44="C:\Ordner\xx.img", status=inserted, write_protected=0
# no floppyb
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15
ata2: enabled=0
ata3: enabled=0
[...]

Und Bochs meldet:
[...]

Press F12 for boot menu.


Booting from Floppy...
Boot failed: not a bootable disk


FATAL: No bootable device.
[...]

Ich häng hier schon seit gestern und habe alles mögliche durchprobiert, leider habe ich nicht sehr viel hilfreiches gefunden... Hilfebittteee...
lg hustensaft.


Edit: Code/Schrift falsch formatiert...
« Letzte Änderung: 15. December 2011, 21:22 von HustensaftOS »
Es folgt ein Wuschelkopf :mrgreen:

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 15. December 2011, 21:23 »
Hallo,


Ich gehe mal davon aus das Deine Disketten Sektoren mit 512 Bytes haben:

.org   512*8-2
Ich schätze das muss gegen ".org 512-2" ohne das "*8" ersetzt werden.

0ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 aa 55
Dann dürfte auch hier die Adresse 01f0 stehen.


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

HustensaftOS

  • Beiträge: 13
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 15. December 2011, 22:08 »

hi,
.org   512*8-2
[...]muss gegen ".org 512-2" [...] ersetzt werden.
danke für den Hinweis, allerdings bleibt der Erfolg (und der Bochs-Output) so oder so der gleiche...

Danke für deine Hilfe.
lg hustensaft.

Es folgt ein Wuschelkopf :mrgreen:

HustensaftOS

  • Beiträge: 13
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 15. December 2011, 22:21 »
hi,
ich hab mich noch ein bisschen gespielt (beim Test des Erikcodes war der Signaturcheck on) und habe es jetzt zu einem ständigen endlosen "BOUND_GdMa: fails bounds test" auf der Kommandozeile geschafft. Ich werde mich morgen dazu genauer kundig machen, wollte nur einmal Statusupdate geben... Oder weiß wer von euch auf die Schnelle, woran das liegen könnte? Alle reden in den Threads über diese Meldung immer nur von fehlerhaften Stacks, wobei ich nicht einmal einen Stack habe...


lg hustensaft.
Es folgt ein Wuschelkopf :mrgreen:

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 16. December 2011, 00:25 »
Du solltest an das Ende deines Codes noch eine Endlosschleife stellen. Sonst führt er die nachfolgenden Bytes aus.
Dieser Text wird unter jedem Beitrag angezeigt.

HustensaftOS

  • Beiträge: 13
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 17. December 2011, 12:30 »
hi,
[...]an das Ende [...]Endlosschleife[...]
thx, das haut jez hin:

int_video= 0x10
half_b= 0x04
assci_digits= 0x30
end_char= '-'




movb $0x32, %DL



movb %DL, %DH
shr $half_b, %DH

shl $half_b, %DL
shr $half_b, %DL


addb $assci_digits, %DH

addb $assci_digits, %DL


movb $0x0E, %AH
movb %DH, %AL
movb $0x00, %BH
int $int_video

movb %DL, %AL
int $int_video

movb $end_char, %AL
int $0x10


jmp end


end:
jmp end






.org 512-2
.byte 0xAA
.byte 0x55
.end




thx&lg hustensaft.
Es folgt ein Wuschelkopf :mrgreen:

 

Einloggen