Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - stafe

Seiten: [1] 2
1
Lowlevel-Coding / Re: V86 Modus
« am: 04. September 2007, 21:32 »
Vielen Dank für deine Hilfe bluecode
2
Lowlevel-Coding / Re: V86 Modus
« am: 04. September 2007, 15:54 »
Nur leider löst der V86 Task bei einem Interrupt keinen GPF aus sondern bringt unzähligemal den selben Fehler, und Bochs beendet anschließend die Simulation mit einem Page Fault ...
3
Lowlevel-Coding / Re: V86 Modus
« am: 03. September 2007, 15:59 »
Erstmals danke für deine Antworten ...

Naja ich nehme zum testen des V86 mode folgenden code her:

Dieser Code ist das V86 programm (int 10 aufrufen):

unsigned char opcode[2];
opcode[0] = 0xCD;
opcode[1] = 0x10;
mem_set(0x500, 0, 0xffff);
mem_cpy(0x500, opcode, 0x02);

und anschließend erstelle ich einen V86 Task:

Neuer_Task_vm86( 0x500, "v86task", KERNEL_TASK, NORMAL_PRIORITY );
Zitat
Bei welcher Instruktion tritt denn der Fehler auf?

Ich weiß jetzt nicht genau wie du das meinst?! Der Fehler tritt auf sobald der v86 task ausgeführt wird ...
4
Lowlevel-Coding / Re: V86 Modus
« am: 03. September 2007, 10:59 »
Ich habe das Programm jetzt auf die Adresse 0x500 geladen.
Der Fehler:

00084951475-i-@00102142-[CPU  ] IRET to V86-mode: ignoring upper 16-bits
scheint nun nicht mehr aufzutreten.

Doch es wird trotzdem noch unzählige mal folgender Fehler angezeigt:

00084951522-e-@00101852-[CPU  ] seg = DS
00084951522-e-@00101852-[CPU  ] seg->selector.value = 0000
5
Lowlevel-Coding / V86 Modus
« am: 02. September 2007, 21:08 »
Hallo,

da ich in meinem OS während der Laufzeit den Grafikmodus ändern möchte, habe ich mir gedacht das mit dem Virtual 8086 Mode zu realisieren.
Doch leider sind einige Probleme aufgetreten.

Mein OS kann ring0 und ring3 tasks ausführen ...
Ich habe mal in einem Beitrag gelesen, dass man für einen V86 Task lediglich die EFLAGS ändern muss (0x20002). Dies mache ich wie folgt (Hier der V86 Task Stack):

stackptr=kernstack;
*--stackptr=0x20|3;
*--stackptr=0x20|3;
*--stackptr=0x20|3;
*--stackptr=0x20|3;
*--stackptr=0x20|3;
*--stackptr=(unsigned long)userstack;
*--stackptr=0x20002L;
*--stackptr=0x18|3;
*--stackptr=(unsigned long)startpunkt;
*--stackptr=0x0;    //EAX
*--stackptr=0x0;    //ECX
*--stackptr=0x0;    //EDX
*--stackptr=0x0;    //EBX
*--stackptr=0x0;    //-->ESP kann Null sein
*--stackptr=0x0;    //EBP
*--stackptr=0x0;    //ESI
*--stackptr=0x0; //EDI
*--stackptr=0x10; //ds
*--stackptr=0x10; //es
*--stackptr=0x10; //fs
*--stackptr=0x10; //gs

Ich weiß nicht ob dass so richtig ist ?!

Bochs meldet mir jedoch folgende Fehlermeldungen:

00084951475-i-@00102142-[CPU  ] IRET to V86-mode: ignoring upper 16-bits
00084951478-i-@00000003-[CPU  ] LOCK prefix unallowed (op1=0x53, attr=0x0, mod=0x0, nnn=0)

Es wird unzähligemal folgener Fehler im bochsout.txt angezeigt:

00084951522-e-@00101852-[CPU  ] seg = DS
00084951522-e-@00101852-[CPU  ] seg->selector.value = 0000

Läuft der Task jetzt schon im V86 mode oder kommt beim Versuch in den V86 mode zu schalten der Fehler ??

Ich hoffe jemand hat bereits Erfahrung mit dem V86 mode und kann mir weiterhelfen.

Danke im Voraus

6
Offtopic / Re: GRUB und VBE
« am: 22. July 2007, 14:01 »
Vielen Dank bluecode ...
7
Offtopic / Re: GRUB und VBE
« am: 22. July 2007, 11:03 »
Sorry dass ich diesen alten Thread wieder zum Leben erweckt habe ... aber könnte mir bitte jemand das fertig compilierte GRUB Image schicken das mit dem VBE-Patch versehen ist?

Meine E-Mail adresse: stafe@gmx.at

Danke schon mal im voraus ...

mfg Stafe
8
Lowlevel-Coding / Kommunikation zwischen Kernel und Programm
« am: 10. July 2006, 12:33 »
Jetzt hätte ich noch ne frage ... es gibt ja einen Kernel Stack und einen User Stack oder ?? Wenn ich im Userprogramm etwas auf den Stack pushe wird das dann automatisch in den User Stack geschrieben ? Oder muss ich da zuerst einen eigenen Userstack definieren ??

Ich habe vorher nocheinmal versucht Parameter zu übergeben und dabei bemerkt, dass in dem Register (in dem ich die Adresse meines Strings geschrieben habe) der aktuelle Stackpointer steht ... Das versteh ich nicht wieso steht in EBX plötzlich der aktuelle wert von ESP ??
9
Lowlevel-Coding / Kommunikation zwischen Kernel und Programm
« am: 06. July 2006, 16:25 »
Es wird die falsche Adresse übergeben ... ja hab immer mit unsigned gearbeitet ...  Nein die Adresse ist im KernelSpace und UserSpace unterschiedlich ...
10
Lowlevel-Coding / Kommunikation zwischen Kernel und Programm
« am: 06. July 2006, 11:14 »
Hallo,

ich habe da folgendes Problem bei der Parameterübergabe vom Programm zum Kernel ...

Ich habe die Parameterübergabe in meinem OS über Interrupts realisiert ... das funzte bisher ganz gut wenn ich Zahlenwerte übergab

Bsp.: Programm
int main( void )
{
unsigned int zahl1 = 100;
unsigned int zahl2 = 200;

asm("movl %0, %%ebx" :: "r" (zahl1)); // Übergabeparameter
asm("movl %0, %%ecx" :: "r" (zahl2)); // Übergabeparameter
asm("movl $0x0001, %eax"); // Funktionsnummer
asm("int $0x30"); // Systeminterrupt

return 0;
}


Hier wurden die Werte fehlerfrei übergeben und ich konnte diese im Kernel weiterverarbeiten ...

Wenn ich aber jetzt beispielsweise einen String übergeben möchte funktioniert das nicht ... hier wieder ein Beispiel wie ich es realisiert hätte:


int main( void )
{
unsigned char text[] = "Test Test Test";

asm("movl %0, %%ebx" :: "r" (text)); // Übergabeparameter
asm("movl $0x0002, %eax"); // Funktionsnummer ( 2 - Textausgabe )
asm("int $0x30"); // Systeminterrupt

return 0;
}


Wenn ich hier im Kernel das EBX - Register prüfe steht dort "nichts" ...

Ich habe schon alles versucht, über den Stack,... doch nichts hat bisher funktioniert ... kann mir vieleicht jemand von euch weiterhelfen
11
Offtopic / Static Operating System
« am: 21. May 2006, 18:21 »
Naja das Problem mit der Grafik habe ich jetzt gelöst ... hab den neuen Grafiktreiber jetzt auf mehreren PCs probiert und jetzt hat er überall funktioniert ... doch wie schon erwähnt taucht schon das nächste Problem auf ... den Mauscursor kann man nicht sehen weil der erst gar nicht  geladen werden kann ... leider funzt der FDC am real-PC nicht richtig ...

Hier könnt ihr euch die neue Version downloaden: (Grafiktreiber sollte jetzt eigentlich funktionieren)

Static Operating System Version 1.7

Static Operating System Version 1.7 - Installer
12
Offtopic / Static Operating System
« am: 20. May 2006, 15:07 »
Oh ... leider kann ich zur Zeit keine eigenen Tests an einem real-PC durführen da mein PC den Geist aufgegeben hat und mein Laptop kein Floppylaufwerk besitzt ... Ich hatte das OS mal an einem PC getestet der eine ATI Grafikkarte hatte und da funzte es ... Auf meinem alten PC (G-Force II pro MX ) funzte es auch ...
13
Offtopic / Static Operating System
« am: 20. May 2006, 14:56 »
@PorkChicken:

Wo hast du das OS getestet ?? Am real-PC oder mit einem Emulator ??
14
Offtopic / Static Operating System
« am: 20. May 2006, 09:55 »
Bei der Maus mach ichs so, dass ich die Pixel in einen Puffer_Speicher zwischenspeichere bevor die Maus gezeichnet wird. Bewegt man jetzt die Maus an eine andere Stelle am Bildschirm so wird der alte Puffer_speicher Inhalt auf die alte Position der Maus geladen und der neue Mausbereich wieder zwischengespeichert. Funzt eigentlich ganz gut so ... Bei den Fenstern funktioniert das ähnlich ...

Bezüglich der GUI:
Sorry dass noch manche Fehler auftauchen ... Versuche z.z. diese zu beheben ... aber im großen und ganzen funktionierts ja ;-) ...
15
Offtopic / Static Operating System
« am: 19. May 2006, 21:26 »
Hallo,

da ich schon von mehreren Usern gebeten wurde eine built von meinem OS online zu stellen, ist es nun so weit. Ihr könnt euch das OS von meiner HP http://www.staticos.at.tf oder direkt hier downloaden.

Hier könnt ihr euch ein Disketten Image downloaden:
Static Operating System - Image

und hier die installer Version:
Static Operating System - Install

Ich habe die Version bei mir unter Bochs,Quem,VM-Ware und Virtual PC getestet und auf allen Emulatoren funzte es ;-)...

Hier nochn paar Screenshots:




[/img]
16
Lowlevel-Coding / binarys laden...
« am: 08. May 2006, 14:30 »
Hallo,

Du musst eingach einen freien Interrupt verwenden um dem Kernel Informationen zu übergeben. Bsp.: int 0x33

Du müsstest bei deinen ISRs einen ISR für deinen Systemintrrupt einbauen von dem aus du eine funktion aufrufst mit der du die übergebenen Infos verarbeiten kannst:

Bsp.:

[ASM]
...


extern _system_int
global _dein_int
_dein_int:
cli
call _system_int
sti
iretd



In der Funktion system_int() kannst du dann die von deinem Programm veränderten Register (eax,ebx,ecx,edx) auslesen (mit inline ASM) und die Informationen verarbeiten. In meinem OS habe ich es so gemacht dass ich in eax die INT_Funktion (also was das OS tun soll) schreibe und (ebx,ecx,edx) als Parameter verwende.

[C]
...

void system_int()
{
unsigned long EAX,EBX,ECX,EDX;

// Infos aus Registern holen, und in EAX,EBX,... speichern

if( EAX == 0x01 )
Textausgabe( "Hallo Welt" );
}


So jetzt müsstest du noch ein kleines Programm schreiben das den Systeminterupt aufruft und eax auf 1 setzt ... Dann müsste am Bildschirm der Text "Hallo Welt" zu sehen sein. Hier nochn kleines bsp. wie das Programm aussehen könnte:

[C]

int main()
{
asm( "movl $0x1,%eax" );
asm( "int $0x33" ); // Statt int 33h musst du deinen SYSINTERRUPT angeben

while( 1 );
return;
}


Wenn du das hast erstellst du eine Binary und lädst diese an eine geeignete Speicherstelle in deinmem OS ... anschließend musst du nur noch zu dieser Speicherstelle springen und dein Programm wird ausgeführt ... Hoffe ich konnte dir weiterhelfen ...
17
Offtopic / Hosen runter! Zeigt eure OS ;)
« am: 15. April 2006, 18:27 »
Da arbeite ich schon ne ganze weile dran ... jetzt sinds ca. 3 Jahre ... ich arbeite eigentlich alleine dran ... natürlich musste ich mit tutorials arbeiten und bei unklarheiten andere OS entwickler fragen ...

Zur Zeit investiere ich ja nicht mehr ganz so viel Zeit in mein OS ... aber wenn ich Zeit finde code ich ganz gern mal wieder weiter ;-) ...
18
Offtopic / Hosen runter! Zeigt eure OS ;)
« am: 14. April 2006, 16:07 »
Naja ursprünglich funktionierte das OS ja nur mit VirtualPC und am real PC funktionierte es auch nur wenn man eine Nvidia Grafikkarte hatte ... Die website zum OS habe ich schon lange nicht mehr aktualisiert ... ich muss sagen seit der Version 1.6.2 hat sich eine menge geändert ... ich habe den Grafikkartentreibe neu überarbeitet (der funzt jetzt auch unter Bochs, Quem, ... ), Floppytreiber, FAT12 Datensystem wird jetzt unterstützt (also ich kann daten ganz bequem in den Speicher laden ... ), multitasking, den memory manager habe ich auch verbessert ,... also wie ihr sehen könnt hat sich eine menge getan ... leider haben sich dadurch auch wieder neue Probleme eingschlichen ...
19
Offtopic / Hosen runter! Zeigt eure OS ;)
« am: 12. April 2006, 10:16 »
So hab mich jetzt auch dazu entschlossen mal nen Screenshot meines OSs online zu stellen ...



Hier könnt ihr den Screenshot in Originalgröße sehen ...

Static Operating System
20
Lowlevel-Coding / Return bei Interrupts
« am: 23. August 2005, 14:15 »
Über eax habe ich es schon versucht doch ich bokomme einfach irgend einen wert zurückgegeben ...

Mit eax übergebe ich am anfang die Funktionsnummer (bsp.: 0x01 ist Textausgabe,... ) ... also währe es kein problem eax zu überschreiben um darin den Funktionsrückgabewert zurückzugeben ... doch irgendwie bekomme ich das nicht zum laufen  :roll:  ...
Seiten: [1] 2

Einloggen