1. dos_interrupt() question.
- Posted by Hayden McKay <hmck1 at dodo.com.au> Feb 19, 2005
- 471 views
Q1. I've noticed that the sequence return by dos_interrupt() sometimes contains elements greater than 16 bits. I dont know why, maybee 'cause eu's 31-bit integer sceeme. The user has to and_bits() the values with FFFFh to ensure that all values are 16-bits in respect of AX CX DX BX etc... Should'nt the values return already be scaled to 16-bit integers? Q2. Since we are useing eu in 32-bit protected mode with the causway extender from macheal divore, should'nt dos_interrupt() pass a 32-bit protected mode stack to the causway extender instead of a 16-bit stack? Just courious...
2. Re: dos_interrupt() question.
- Posted by Robert Craig <rds at RapidEuphoria.com> Feb 19, 2005
- 430 views
- Last edited Feb 20, 2005
Hayden McKay wrote: > Q1. > I've noticed that the sequence return by dos_interrupt() sometimes > contains elements greater than 16 bits. I dont know why, maybee 'cause > eu's 31-bit integer sceeme. > > The user has to and_bits() the values with FFFFh to ensure that all values > are 16-bits in respect of AX CX DX BX etc... > > Should'nt the values return already be scaled to 16-bit integers? I think they are. Maybe you printed some of these values in hex, and the negative ones were displayed with a bunch of leading F's. e.g. -1 might look like FFFFFFFF > Q2. > Since we are useing eu in 32-bit protected mode with the causway extender > from macheal divore, should'nt dos_interrupt() pass a 32-bit protected mode > stack to the causway extender instead of a 16-bit stack? Euphoria for DOS operates mainly with the CPU in 32-bit mode. But whenever you call a DOS system routine, you have to switch the CPU into 16-bit mode, and use the 16-bit registers. DOS is a 16-bit operating system. This switching back and forth is handled by the Causeway extender. Regards, Rob Craig Rapid Deployment Software http://www.RapidEuphoria.com