Das habe ich ja auch nur genutzt, oder muss ich noch was einstellen?
Osys15 - das ASM OS | Jetzt als Gast-OS für Windows HIER zum Download verfügbar! SDK nun auch verfügbar!
-
campweb -
3. Juni 2011 um 13:50
-
-
ProblemUser da fehlen nur Leerzeichen, unterteil es sinnvoll
Campweb, machst du das überhaupt selber? Eigentlich müsstest du doch sonst erkennen, dass da nur Leerzeichen fehlen
-
Natürlich. Bloß bei mit korrigiert Der Debugger beim Compilne diese Fehler wie Leerzeichen, Anführungsstrichen usw...
Deshalb dachte ich er hätte einen anderen Compiler benutzt.MfG, campweb
-
vergleicht mal den source der ersten seite mit den seiten:
http://www.emu8086.com/assembler_sour…kernel.asm.html
http://www.emu8086.com/assembler_sour…loader.asm.html -
- Offizieller Beitrag
vergleicht mal den source der ersten seite mit den seiten:
LOL - Ein Schelm, wer Böses dabei denkt.@campweb: Ich bitte um einen Nachweis, dass auch der (ja wohl übereinstimmende) Code der geposteten Links von dir stammt. Anderenfalls Ist das hier ein Plagiat und wir müssen davon ausgehen, dass du dich mit fremden Federn schmücken willst. :wacko:
-
Jetz weiß ich warum der Fehler (Panicer, Debugger) nur aus einem Text besteht
emu8086 berichtigt auch keine fehlenden leerzeichen, wie auch. -
Ich darf den Code weiterverwenden, da hab ich gefragt, kanns aber natürlich gerne noch dazu schreiben. Hab mich da auch mit anderen beraten über die Verwendung des Code (osdev.org...). Außerdem hab ich den Code von einem "how to make your own OS" Tutorial, der ist weit verbreitet. Bei mir korrigiert emu trotzdem diese kleine Fehler...
Naja, um des Guten Willen willen schreib ich mal die Herkunft mit rein. -
Und weil der Code schon so fertig war, hab ich mal nach vielem Lesen usw. einen komplett eigenen (naja bis auf die get_string-methode) Code geschrieben, der Bootloader funktioniert (endlich), hat die Bootsignatur und gibt ohne Text direkt an den Kernel weiter. Bei dem gibt s allerdings gerade Probleme mit dem Textanzeigen und dem Befehl erkennen.
Das hat aber wirklich was, so ein noch unkonfortableres Betriebssystem als DOS mit assembler zu programmieren. Ich werde, wenn die Konsole funktioniert, mal versuchen Zahlen in Strings umzuwandeln um die Zeit anzeigen zu können -
- Offizieller Beitrag
Naja, um des Guten Willen willen schreib ich mal die Herkunft mit rein.
Das sollte man auch erwarten können. Ich habe auch nichts dagegen, wenn Code von mir anderswo Verwendung findet, schließlich befürworte ich den Open-Source Gedanken. Aber es ist ein Mindestmaß an Anstand, dass man Quellen angibt (auch wenn man keine Doktorarbeit schreibt).
Es ist der einzige Dank, den ein Open-Source Programmierer erhält, dass sein Name in den Credits auftaucht. Das sollte man immer berücksichtigen. -
Zitat
Ich werde, wenn die Konsole funktioniert, mal verushcen Zahlen in Strings umzuwandeln um die Zeit anzeigen zu können
Dem Manne kann geholfen werden....
Die Funktion int2ascii (in C gibts das als "itoa" ) hatte ich im Primzahlenprogramm verwendet, um die Integer als "Zahl" darstellen zu können.Spoiler anzeigen
[autoit]#include <AssembleIt.au3>
[/autoit] [autoit][/autoit] [autoit]$int = 123456;2 ^ 32 - 1 ;maximal 2^32-1
[/autoit] [autoit][/autoit] [autoit]
$string = " " ;Platz reservieren, max 10 ziffern bei 2^32-1;wandelt eine integer-"Zahl" in einen ascii-"String"
[/autoit] [autoit][/autoit] [autoit]
$ret = _assembleit("str", "int2string", "int", $int, "str*", $string)MsgBox(0, $string, $ret)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
;wie man sieht, übergibt AutoIt im Speicher nur eine KOPIE des Strings an den DLL-Call!
;Der ursprüngliche String bleibt erhalten!
;in $ret wird nur diese KOPIE überschrieben bzw zurückgegebenFunc int2string()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_("use32")
_("mov ebx,dword[esp+4]") ;erster Parameter ist die Zahl
_("mov edi,dword[esp+8]") ;zweiter Parameter ist der Pointer auf den Pointer des strings
_("mov edi,[edi]") ;ESI=Pointer auf den String
_("mov esi,edi") ;adresse sichern_("call _int2ascii") ;integer in string umwandeln
[/autoit] [autoit][/autoit] [autoit]_("mov eax,esi") ;in EAX den Pointer auf den Stringanfang, damit $ret den string enthält
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_("ret");EDI = Anfangsadresse String
[/autoit] [autoit][/autoit] [autoit]
;EBX = Integer
_("_int2ascii:")
_("pusha ");alle benötigten Register sichern
_("mov eax, ebx "); Zahl laden
_("mov ebx, 10 "); Divisor
_("xor ecx, ecx "); ECX=0 (Anzahl der Ziffern)
_("Schleife_1: ")
_("xor edx, edx "); EDX=0
_("div ebx "); EDX:EAX / EBX = EAX Rest EDX
_("add cl,1 "); ADD soll schneller sein als INC
_("push dx "); LIFO
_("or eax, eax "); AX = 0?
_("jnz Schleife_1 "); nein: nochmal
_("Schleife_2: ")
_("pop ax "); gepushte Ziffern zurückholen
_("or al, 00110000b "); Umwandlung in ASCII
_("stosb "); Nur AL nach [EDI] (EDI ist ein Zeiger auf den String)
_("loop Schleife_2 "); bis keine Ziffern mehr da sind_("mov byte [edi],0 "); Nullbyte als stringende (für AutoIt), man könnte auch ein Komma (ascii=2C) oder sonstwas einsetzen
[/autoit] [autoit][/autoit] [autoit]_("popa");Register wiederherstellen
[/autoit] [autoit][/autoit] [autoit]
_("ret");zurück zum callEndFunc ;==>int2string
[/autoit] [autoit][/autoit] [autoit][/autoit] -
Hey
Also wenn ich auch nur irgendetwas von Assembler verstehen würde, dann würd ich ja gerne helfen, aber das hab ich ja nunmal leider nicht und irgendwie find ich Assembler auch doof, weil es so viele verschiedene Arten gibt, die alle etwas anders sind (FASM, NASM,....).
Aber die Idee find ich auf jeden Fall super
Eine Frage hab ich noch: Mich stört bei Mac/Linux und Co. sehr dass keine Windows Programme ausgeführt werden können (ausser mit WINE, aber das find ich auch kacke) wäre das denn hier realisierbar?
DFPWare
-
Super, wenn ich es nicht selber schaff, dann hab ich was zum nachgucken
Ich hab mal probiert mit emu in den protected mode zu gehen, aber emu unterstützt das nicht und bei virtual box gabs dann auch einen Prozessorabsturz, deswegen musste ich das erstmal aufgeben. Vielleicht besrog ich mir mal einen neuen Emulator der auch die CMOVxx Befehle und den PM (protected mode) unterstützt. Meine Fehler im System sind übrigens weg, ich ärger mich nur um das automatische Scrollen des Textes nach oben, welches manchmal irgendwie passiert.EDIT:
DFPWare
Du kannst den Kernel auch in C/C++ mit den richtigen Tools erstellen. Wenn du nicht alle DLLs von WIndows kopieren willst, dann ist es nicht möglich exen auszuführen, wenn du keinen Emulator mit den selben Funktionen erstellst, jedenfalls wüsste ich das nur so. Allerdings enthält jede Datei einen ByteCode, solange keine externen, betriebsystemspezifische Dateien/Funktionen aufgerufen werden, kann man das auch portieren. ".com" und ".bin" müsste man leicht ausführen lassen können.
(.bin: Bytecode in Speicher laden, Adresse pushen, wohin der Code zurückspringen soll (das macht call, soweit ich weiß), und mit einem ret oder jmp [esp/sp] springt er zurück.) Wenn meine Konsole fertig ist, versuche ich mal irgendwie (vielleicht auch in der Virtual Box o.ä.) ein paar Dateien zu lesen und schreiben zu können, um Anwenderspezifische Dateien zu erlauben^^ -
So, ich hab jetzt mein eigenes Betriebssystem fertig. Alles außer die Funktion Input (aka load_string) hab ich selber geschrieben, die Hilfe von dir brauchte ich schönerweise gar nicht
Die Benutzung ist genauso wie mit dem anderen OS hier, boot.bin in Sector 1, os.bin in Sector 2. Von Floppy booten, Run.
Bis jetzt kann es nur (Hilfe wird am Anfang angezeigt) die Zeit anzeigen (das dauert seine Zeit, emu ist ziemlich langsam), Hilfe anzeigen und rebooten. Die Konsole ist leicht erweiterbar. Wenn ich rausfinde, wie ich das auf der VirtualBox gestartet krieg, oder es einen Emulator gibt, bei dem Man Dateien schreiben kann, wird das noch eingeführt. Im Real-Mode werd ich denk ich mal ersteinmal bleiben, damit ich ausführbare .bin-Dateien machen kann. Vielleicht kann man auch .com ausführen. Irgendwann werd ich damit aber auch aufhören. Wenn ich im Protected Mode bin, kann ich mal versuchen etwas Grafik reinzubringen und dann ein paar schöne Funktionen reinbringen.
Letzendlich wird das erstmal zum Spaß bleiben und nicht mit Windows usw. konkurrieren.Code und Binary im Anhang
@campweb Sorry das ich hier den Thread missbrauche
-
Is egal, bin inzwischen ein Stück weiter las du. Der Kerneldebugger funzt auf jeden Fall schonmal, und ist nicht mehr nur ein Text. Eines kleines "Tron" Progrämmchen ist auch schon drin, genauso wie ein Klavierpsielapp ;-). Ich arbeite gerade an der Implementierung des Tastaturtreibers und des Netzwerktreibers. Ich bin übrigens von emu auf NASM als Compile und quemu als Emulator umgestigen, das OS läuft jetzt aus einen Image heraus...
-
Ich versuch grade in VBoc zu portieren, aber da bleibt der immer bei einem blinkenden Cursor stehen (er bootet also schon vom Image, aber sieht aus, als würde er driekt stehen bleiben
-
Eigentlich bin ich ja gar nicht da, aber ...
Um das in VB zu booten musst du mit VFD ein A: erstellen und dann mit PARTCOPY (saugen von Google) oder Writebin draufschreiben. Wenn du nach diesem Prozess im Arbeitsplatz A: siehst, aber es nicht öffnen kannst (Dateisystem nicht kompatibel) dann kannst du es als Hostlaufwerk in VB einbinden.
Andere viel einfachere Möglichkeit: Lad dir PowerISO, pack Kernel und Loader in ein .img und lad dir quemu (Die kleine und einfache Alternative von VB ;)) und lass quemu das Image booten.
PS: Endlich funktioniert der Tastatur, Sound und Netztreiber. Die Anzahl der CPU-Kerne wird jetzt auch ermittelt und die Arbeitsspeicherauslatung wird auch angezeigt. Packete senden per Ethernet, einfaches T&R ohne Iformationen funktioniert auch schon.
-
ich hab sowohl img als auch iso ausprobiert (Programm für Bootable ISO gefunden ^^)
-
Hallo.
Wenn ich mit EMU Compiliere, dann bekomme ich keine .bin file
Wäre schön wenn einer mir sagen könntes, was ich dagegen machen kann...
MfG. PrideRageEdit: Hab die .bin files jetzt, wäre schön wenn du einen funktionierenden Source-Code providen würdest
Edit2:
Du meintest, dass das mit dem "RUN" nur kurz dauert. Nach 10 Minuten sagt mir das programm dann "The program is haltet", und somit läuft das Proggi nicht, Zeitverschwendung für mich imo.!!Edit3: Läuft! -
Wenn du meinst...
Naja, bin inziwschen fast fertig, jetzt muss ich mir irgendwoher ein USB-Floppydrive besorgen...
-
Ich habe mir die Scource und emu8086 mal runtergeladen.
Ich habe mit Emu8086 die File erstellt, aber beim compillieren kommen immer errors.
ist die Source in post 1 aktuell, oder muss ich noch irgenwas bei EMU8086 einstellen?Noch zu meien Vorgehen ich habe mit emu 2 neue Files erstellt(BIN format) und den Codereinkopiert dann kommen flogende Fehlermeldungen:
LoaderSpoiler anzeigen
kernelSpoiler anzeigen
So long Storyteller
-