currentTask = (currentTask + 1) % taskCount; stack[10] = taskData[currentTask].eip;
で、毎回元の位置に戻ってしまうタスク切り替えができるようになった。しかし、
taskData[currentTask].eip = stack[10]; currentTask = (currentTask + 1) % taskCount; stack[10] = taskData[currentTask].eip;
のように割り込み時のEIPを保存しておくと何故かアボートしてしまう。stack[10]の値が怪しいのか?