> 1. Bug: wrong handling for clc/stc in some places (they ignored, because
>    popf follows, thus caller receives "always success"):
> 
> ______________O\_/_________________________________\_/O______________
> @@loc2:
> [...]
>         clc                                     ; flag success
> @@locret:
> [...]
>         popf
>         ret
> [...]
> @@locfail:
>         stc
>         jmp     @@locret
> ExpandCurrentPoolBlock  ENDP
> _____________________________________________________________________
>               O/~\                                 /~\O
> ______________O\_/_________________________________\_/O______________
> @@allocsuccess:
> [...]
>         clc
> @@allocret:
> [...]
>         popf
>         ret
> @@allocfail:
>         stc
>         jmp     @@allocret
> AllocateXMSForPool      ENDP
> _____________________________________________________________________
>               O/~\                                 /~\O
> 

Interesting! Have you examined what implications this bug may have to an 
application?


> 2. Probably, bug: CF not initialized, although comments say so ("probably"
>    because I not found in RBIL spec for INT 67/87):
> 
> ______________O\_/_________________________________\_/O______________
>                                           ; hack: handle undocumented
>                                           ; int67/87 function = simulated
> int15/87
> [...]
>                 CALL    SIMULATE_INT1587
> [...]
> ; simulate INT15/87
> ;INT 15 - SYSTEM - COPY EXTENDED MEMORY (by RBIL)
> ;Return: CF set on error
> ;        CF clear if successful
> SIMULATE_INT1587 proc near
> [...]
> @@ok:
>         mov   AH,0                    ; everything OK and finished
>         RET
> @@abort:
>         mov   AH,1                    ; everything OK and finished
>         RET
> @@invalid_command:
>         mov ah,80h
>         ret

I also once noted some "RETF 2" instead of "IRET". Doesnt this mean the Trace 
flag is lost, which could cause troubles for not so smart-written debuggers?

> 3. Bug: missing popf after @@NO_386:
> 
> ______________O\_/_________________________________\_/O______________
> _IS386 PROC NEAR
>         PUSHF                        ; save Flags
> [...]
>         POPF
>         mov ax,1                                        ; OK
>         RET
> @@NO_386:
>         xor ax,ax
>         ret

I'm afraid noone has a 80286 anymore to test the bugfix.


> Also, in next private email I send diff file with some code
> optimizations.

Very good! Thanks! Is among the optimizations one for "rep movsd" on P4s? I 
remember I once saw a test with various memory move optimizations and the 
winner was almost 3 times as fast as "rep movsd". May be the "XMS block move" 
function can benefit?




-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to