Hi @all,
hab wieder ein Problem
Also hätte gerne Untersützung für V86 Tasks in meinem Kernel, damit ich z.b. im PMode den Videomodus ändern kann!
Mein Multitasking funktioniert "inzwischen" ja einwandfrei
Wenn ich die ganze Sache mit dem Virtual 8086 Mode richtig verstanden habe, dann muss ich beim erstellen des Tasks das VM-Bit(17) in EFLAGS setzen...
Mache ich hier:
*stacksetup--;
*stacksetup--=0x246 | 0x10000;
*stacksetup--=0x08;
*stacksetup--=(uint_t)entry;
...
und hier erstelle ich den Task: (funktioniert auch soweit)
extern "C" void test86();
kernel->multitasking->create_process_v86(test86);
Jetzt zum eigentlichen Teil... also der Task müsste dann eigentlich aus 16Bit code bestehen:
[BITS 16]
[GLOBAL _test86]
_test86:
hlt
schleife:
loop schleife
Das Problem besteht nun darin dass die Anweisungen nicht ausgeführt werden wenn ich [BITS 16] schreibe, bei [BITS 32] schon!
Wobei ich eigentlich der Meinung bin dass der 32Bit-Code nicht funktionieren dürfte, befinde ich mich vllt gar nicht im V86-Modus???
Gruß
Adrian