VM86 without TSS?
VM86 without TSS?
Is is possible to use the real mode bios interrupts, in V86 mode without a TSS. Is it even possible to enter V86 Mode without a TSS?
Man I got VM86 under software taskswitching.
you can do almost all bios ints (Real Mode I mean), you can setup a vm86 task as a common PM32bits tasks, you just add the RM_DS, RM_ES, RM_FS, RM_GS to your stack layout.
if you want some example. email me.
[email protected]
you can do almost all bios ints (Real Mode I mean), you can setup a vm86 task as a common PM32bits tasks, you just add the RM_DS, RM_ES, RM_FS, RM_GS to your stack layout.
if you want some example. email me.
[email protected]
Hi,
Not the example mentioned above, but if you look at my SVN repository for Caracal and CBoot, there is a working example of using v86 to establish available VESA information and to switch video modes. The code you want is in trunk/cboot/source/scheduler. In this path, the scheduler preamble is in cschedule.cpp (with necessary support code in cscheduler.asm) and v86 tasks are run from cv86.cpp.
Because this code is for a bootloader (which appears single-tasking!), cv86.asm contains code which 'fools' the calling function (CV86::RunV86() - look at the end of cv86.cpp) in to thinking that the V86 code is just any other function call, with some stack modification.
Using this system, all I have to do is write some 16 bit code and call it using RunV86 in order to execute BIOS functions - the scheduler takes care of the rest. You will notice that the v86 monitor is somewhat incomplete as the code relies pretty much on Virtual Mode Extensions at the moment - this dependency will be removed in the final version.
Any questions, please ask - note that the code is very much 'pre-production' at the moment.
Cheers,
Adam
[/url]
Not the example mentioned above, but if you look at my SVN repository for Caracal and CBoot, there is a working example of using v86 to establish available VESA information and to switch video modes. The code you want is in trunk/cboot/source/scheduler. In this path, the scheduler preamble is in cschedule.cpp (with necessary support code in cscheduler.asm) and v86 tasks are run from cv86.cpp.
Because this code is for a bootloader (which appears single-tasking!), cv86.asm contains code which 'fools' the calling function (CV86::RunV86() - look at the end of cv86.cpp) in to thinking that the V86 code is just any other function call, with some stack modification.
Using this system, all I have to do is write some 16 bit code and call it using RunV86 in order to execute BIOS functions - the scheduler takes care of the rest. You will notice that the v86 monitor is somewhat incomplete as the code relies pretty much on Virtual Mode Extensions at the moment - this dependency will be removed in the final version.
Any questions, please ask - note that the code is very much 'pre-production' at the moment.
Cheers,
Adam
[/url]
For all my ramblings, if you want to see what I'm actually trying to achieve, see this screenshots and explanation link.
Cheers,
Adam
Cheers,
Adam