Hi!
30-Май-2004 20:56 [EMAIL PROTECTED] (Bart Oldeman) wrote to
[EMAIL PROTECTED]:
> +++ history.txt 30 May 2004 20:56:29 -0000 1.78
> + * inithma.c: moved fmemcmp's into a checkHMA function.
"... into EnabledA20() function."
> + * inithma.c: HMAFree == 0xfff0 - bytesToAllocate
> + is valid and may happen if the buffers occupy exactly all HMA
> + space up to and including the last byte at ffff:ffff. Failing
> + caused all buffers to go low ...
" * inithma.c: condition HMAFree>=0xfff0-bytesToAllocate was wrong and
prevents to allocate HMA space up to and including byte at ffff:ffef.
May cause to move all buffers low. Fixed."
Note: because 0xfff0 here is not a _size_, but a pointer (also as HMAFree is
a _pointer_), you _can't_ allocate "all HMA space up to and including the
last byte at ffff:ffff", only "up to, but not including ffff:fff0".
> + * inthndlr.c: cleanups (merge common code into long_check and
> + short_check). Made int21/3301,2e,54 consistent with MSDOS
> + behaviour.
Hm. I check MS-DOS 6.22. For INT21/3301/DL=2 I receive DL=0 (FreeDOS
incosistent), then INT21/3300 returns DL=0 (consistent). Same for DL=3. I
think, for full consistency DL change should be added into INT/3301:
/* DosVars - get/set dos variables */
case 0x33:
switch (irp->AL)
{
/* Set Ctrl-C flag */
case 0x01:
break_ena = irp->DL & 1;
+ /* fall through */
/* Get Ctrl-C flag */
case 0x00:
irp->DL = break_ena;
break;
(Here 0x00 and 0x01 swapped and `break' removed).
-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g.
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id149&alloc_id│66&op=click
_______________________________________________
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel