maybe I totally misinterpreted the stuff, but Init_DosExec() from within kernel() loads process0, right?? Init_DosExec eventually ends up in DosExec() -- or at least in a function identical to it?? DosExec() spawns for example DosComLoader(), which does:
/* point to the PSP so we can build it */ setvec(0x22, MK_FP(user_r->CS, user_r->IP)); new_psp(mem, mem + asize);
So, within kernel() when Init_DosExec() is called, will the function know where the persistent "shutdown()" is located? If so, fake up an user_r structure before calling Init_DosExec and place the address therein. <basta>
Just managed to build a kernel by specifying one more FAR to the user_r declaration in main and loading CS with the Int 21 (resident part) segment and IP with "newShell" (as that function is now called because it can now retry loading). Guess what - the same old crash from the init segment!
I know you've been one of the kernel maintainers. I can't understand why vector 22 doesn't work here. Not you, maybe _I_ totally misinterpret the stuff! :-(
Lucho
------------------------------------------------------- SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps & Web services for Linux with a free DVD software kit from IBM. Click Now! http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click _______________________________________________ Freedos-kernel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/freedos-kernel