Code: Select all
kernelstate: tss_t := tss_t:[IDX_TASK2TSS*@size(segdesc),0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$ffff];
task1state: tss_t := tss_t:[
IDX_TASK2TSS*@size(segdesc),
0,
$fffffffc,
IDX_TASK1STACK*@size(segdesc),
0,
0,
0,
0,
0,
0,
0,
0,
&task1,
$4000,
0,
0,
0,
0,
0,
0,
0,
0,
IDX_KERNELDATA*@size(segdesc),
0,
IDX_KERNELCODE*@size(segdesc),
0,
0,
0,
IDX_KERNELDATA*@size(segdesc),
0,
IDX_MEMORY*@size(segdesc),
0,
IDX_VIDEO*@size(segdesc),
0,
0,
0,
0,
0,
$ffff
];
task2state: tss_t := tss_t:[
IDX_TASK1TSS*@size(segdesc),
0,
$fffffffc,
IDX_TASK2STACK*@size(segdesc),
0,
0,
0,
0,
0,
0,
0,
0,
&task2,
$4000,
0,
0,
0,
0,
0,
0,
0,
0,
IDX_KERNELDATA*@size(segdesc),
0,
IDX_KERNELCODE*@size(segdesc),
0,
0,
0,
IDX_KERNELDATA*@size(segdesc),
0,
IDX_MEMORY*@size(segdesc),
0,
IDX_VIDEO*@size(segdesc),
0,
0,
0,
0,
0,
$ffff
];
this way, a clock interrupt while the kernel task is executing should cause task2 to execute, a clock interrupt while task2 is executing should cause task1 to execute, and a clock interrupt while task 1 is executing should cause task2 to execute and so on...
i dont get a bochs error any more, but nothing happens either..id have expected to see many "task1"s and "task2"s printed to the screen!