OK. First are some LTR checks:
1. Loading task 0058 results in base 044C, selector 0058.
2. Loading task 0048 results in base 0420, selector 0048.
3. Loading task 0068 results in base 0478, selector 0068.
Looking at the TSS sizes, there should be no overlap between the three of them.
Then, it executes the first task switch(task 0068 still loaded in TR as the current task).
So, the first task switch(CALL 0078:0000) saves the task at 000478(When at task 0068). Then it loads task 0048, which has a base of 000420, loads said TSS registers and continues with being a nested task nested within task 0068. Data required is written back to the TSS and execution continues within the new, nested, task.
Then it eventually jumps to 0080:0000. Said descriptor is a gate descriptor to task 0058. A task switch to task 0058 is started. The descriptor points to a base of 44C. State is stored at a base of 000420. Task 0048 is marked idle and it's state is stored at location 000420. The new task(task 0058) is loaded as the new current task(state being stored at a base of 00044C. Since no backlink occurs, the task cannot return to task 0048 and 0068 properly.
So the task 0058 is executing as a standalone task, being unable to return to ít's parent task in any normal way(by using normal IRET without stack being manipulated).
The next task switch by the same jump to segment 0080:0000 saves state and restores the state from it's own task, thus continuing the same task after the jump.
Then another one with the very same effect(nothing changes other than the value at DS:[BX]).
And another one x21. So 22 times the very same jump to it's own task.
Then it tries to execute an IRET to return to it's caller, but since the Nested Task has been left at the very beginning(which shouldn't be a problem on it's own), no backlink is stored for said task(to actually return to said task), nor is anything pushed on the stack to do anything valid with the IRET. So this just results in the stack popping NULL(0000h) values(since the SS limit is FFFFh with a base of 1000h).
The IRET pops a IP value of 55AA, CS value of 55AAh and a FLAGS value of 55AAh. It then throws a #GP for CS selector 55AA, external bit set, table being the GDT.
The BIOS doesn't like this, so it terminates the testing?
Anything else happening on other emulators?