PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nach BOOTDISK nach einer zweiten DISK fragen ?


Mike
26.04.2002, 17:22
HI,

ich bins mal wieder.
So langsa finde ich ASM richtig interessant.

Jetzt würde ich gerne wissen, wenn ich meine Bootdisk gestartet hab, kann ich leider auf der Diskette keine externe EXE datei aufrufen, weil ich diese nicht auf die Diskette laden kann...wegen dem bootrecord...
naja, wie krieg ich das denn hin, das wenn er gebootet hat, das er nach einer anderen DISKETTE fragt ?
Am besten wäre es, wenn diese dann autoatisch weiteracht, d.h. die externe EXE von alleine startet, aber es reicht auch wenn man irgendwie was eingeben muss von wegen "start.exe" oder so...

Wäre cool, wenn ihr mir helfen könntet.

Mike

PS: Sorry das ich soviele dumme Fragen stelle, aber es macht einfach spaß an seinem eigenen OS zu arbeiten... :))


Felix Kaiser
26.04.2002, 20:30
So gehts nicht. EXE ist ein DOS Format für Anwendungen, auch wenn Windowsanwendungen auch auf EXE enden. Du kannst die nicht laden, weil keiner da ist, der lädt. Der DOS Interrupt 21h heißt DOS Interrupt, weil er von DOS zur Verfügung gestellt wird. Wenn du dein Teil bootest gibt es aber zu dem Zeitpunkt kein laufendes DOS. Es gibt garnichts, außer dem BIOS. Von daher würde ich dir empfehlen, bau dir einen Code, der von der aktuellen Diskette ein Image lädt, eine Art .COM Datei, das Format ist dazu sehr günstig. Der Lader muss die Datei im FAT12 System der Diskette lokalisieren und Cluster für Cluster laden.

Mike
27.04.2002, 13:26
Aha...tja, ein wenig hab ich verstanden,
aber ich weiß nicht genau, wie ich eine COM datei laden, soll, weil auf der DISK mit de Bootrecord kann ich nichtsmehr draufkopieren, sonst sagt er, die Disktette ist unforatiert Wollen sie sie jetzt formatieren ? ...

Kannst Du mir vielleicht ein kleines Bsp zeigen ?

Wäre sehr nett,

danke,

Euer Forum ist echt spitze

Mike

Felix Kaiser
27.04.2002, 15:18
Oh Gott, da hab ich leider nichts mehr da. Aber das ist normal. Im Bootsektor sind die Laufwerksinformationen gespeichert, auch Informationen zum Dateisystem. Diese darfst du nicht überschreiben, die müssen da sein, dann kannst du auch weiterarbeiten unter DOS damit. Nach den Informationen kommt der Code. Am besten du nimmst den Code aus einer formatierten DOS Diskette und übernimmst die Informationen dieser in deinen Code.

http://home.no.net/tkos/info/fat.html

Damit du auch weißt, welche Informationen du genau aus dem Block brauchst ;)

Mike
27.04.2002, 17:59
Ich hab absolut keinen plan von dem was da steht...hab null kapiert...

Mike

Schaf
27.04.2002, 21:21
kleine n00b-zwischenfrage: com = direkt ausführbarer code? ohne dos?

Codeq
27.04.2002, 21:34
jap... sendet maschinenbefehle direkt in den RAM von wo aus er in die register geholt wird.. allerdings in festen WORD blöcken...

Felix Kaiser
28.04.2002, 01:12
*narf* Fast alles quatsch. Ein .COM File ist ein Codeblock, der maximal 64K groß sein kann, der von DOS in den unteren Arbeitsspeicher geladen wird, das Codesegment wird alloziert auf den gesamten verfügbaren RAM bis 640K. Einstiegspunkt liegt bei CS:0100. Stack liegt bei SS:0100, SS = CS.

COM ist ein DOS Pseudoformat und MUSS wie eine DOS Anwendung durch Aufrufen der Funktion AH=4Ch bei Int 21h oder auch durch Aufruf des Interrupts 20h beendet werden!

Als ich früher direkt bootbare Programme getestet habe, hab ich immer eine Weiche eingebaut. Wenn DOS aktiv ist, d.h. die Anwendung unter DOS gestartet wurde, wird mit Int21h das Programm beendet, ansonsten über ein RETF, da es kein Problem ist, Anwendungen, die auf diesem Pseudoformat basieren.

Und da sendet niemand Maschinencode in den RAM, CS:IP wird halt nur auf CS:0100 gesetzt, vom ausführenden Betriebssystem.

Codeq
28.04.2002, 16:47
uiuiui :D
najo so im groben... muss meine aufzeichnungen nochma wälzen.. is schliesslich klausur thema.. (mikroprogrammierung)
:rolleyes:

Schaf
01.05.2002, 00:13
wie, ihr habt (i3)86er mit dos in microprog? uiuiui ... heftig ... wir arbeiten ganz ohne os, höchstens mit einem kleinem monitor-prog, das man aber beinahe vergessen kann ;)

ist es denn überhaupt möglich, von dos aus reinen maschinencode zu starten, ohne irgendwelche dos-einflüsse, das direkt abgearbeitet wird?

Felix Kaiser
01.05.2002, 00:29
Problemlos ...

Einzige Einschränkungen kannst du haben, wenn Speichertreiber wie HIMEM oder EMM386 laufen, die die CPU in den V86 schalten. Somit hast du über direkten Maschinencode keinen effektiven Einfluss mehr auf die Betriebsmodi der CPU.