But you'll need to rethink some concepts there! The segment register from stack (SS) is defined by the operating system/dos extender as a segment *selector*, and this is *not* a memory reference. You can alloc some memory to place the task's stack and only redefine the esp. But do this with *caution*! this can have nasty effects if you don't know exactly what you're doing...
Just an example: if you switch the stack pointer, the next "return" doesn't returns to the caller, but to anywhere that is pointed by the new stack top!
Good luck!
Best regards, Nelson
Thanks for you reply full of wisdom. Truth is, I *have* *to* make a program
that emulates multitasking that way.
I adapted the code (after several trials since I have no assembler experience)
and it seems to work fine now :-)
Here is the tip : asm movl bp_load, %ebp movl ss_load, %esp end; => loads the stack segment and base pointer
asm movl %ebp, bp_save movl %esp, ss_save end; => saves the stack segment and base pointer
I enclosed the revised TASKER.PAS as zip document, in case it could help someone else (thanks to Mr Warot).
En réponse à "Nelson M. Sicuro" <[EMAIL PROTECTED]>:
In my humble experience with FreePascal, I know that you cannot mess with segment registers as you do in 16 bits mode. This code of yours need to be rewrited from scratch to be in 32 bits mode, without using the segment
registers and the inline functions (replaced with asm statements). Anyway, this code seems unsafe to run in 32 bits anyway. Most 32 bits environments are indeed capable of multitask programming,
take a look at the DOS 32 bit extenders that FreePascal uses.
Best regards, Nelson
> Anybody capable of providing me an answer on how to get this working
> with Free > Pascal (under DOS) ? > > The trick is that the Base Pointer and Segment Stack are saved and > restored. > That is what I am trying to do . Note FreePascal only accepts ASM blocks. > > And also I do not know what instruction $89/$2e $8c/$16 $8b/$2e $8e/$16 > $90/$90/ > $90 refer to. > Regards. > >__________________ Jérémie Lefrançois 06 73 27 35 97 Consultant Altran Technologies
_______________________________________________ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal