Thank you. By some strange reason this fix does not work for me -
nothing has changed. Plus I cannot access your web site (which is
unrelated :)

--
Sergey

On Wed, Oct 05, 2005 at 09:28:22PM +0200, Bernd Paysan wrote:
> On Wednesday 05 October 2005 00:40, Sergey Plis wrote:
> > It does seem like a bug to me. Please, help!
> 
> Yes, it is. Thanks for creating an example that's easy to reproduce.
> 
> That's how to fix it: Go to screen 211 of forth.fb. Change it to the 
> following code:
> 
> \ fp save and restore                                  05oct05py
> Code fpush ( f.. -- )
>      fxam  ( fwait )  AX fstsw  $FD # AH and  $41 # AH cmp
>      0= IF  0 # -4 BP D) mov  -4 # BP add  Next  THEN
>      $B # AX shr  7 # AX and  7 # AX xor   1 AX D) CX lea
>      BEGIN  .fx -$C BP D) fstp  $C # BP sub  AX dec  0< UNTIL
>      CX -4 BP D) mov  -4 # BP add  Next  end-code
> Code fppll ( -- f.. )  R: BP SP mov  S: AX push DX AX mov  R:
>      AHEAD  end-code
> Code fppi ( -- f.. )  R:  BP SP mov  AHEAD  end-code
> Code fppv ( -- f.. )  R:  BP SP mov  lods  THEN  THEN
>      CX pop  ?DO  .fx SP ) fld  $C # SP add
>                   CX dec  0= UNTIL THEN  BP pop  Next end-code
> Code fppf ( -- f.. )  R:  BP SP mov  lods
>      CX pop  ?DO  .fx SP ) fld  $C # SP add   1 ST fxch
>                   CX dec  0= UNTIL THEN  BP pop  Next end-code
> 
> There are only three changes: AX CX mov becomes 1 AX D) CX lea, and the 
> two 0< UNTIL become 0= UNTIL. That's it. The reason for the failure is 
> that a stack with just one entry wasn't correctly handled (it had the 
> same "count" on the return stack as an empty stack).
> 
> -- 
> Bernd Paysan
> "If you want it done right, you have to do it yourself"
> http://www.jwdt.com/~paysan/



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to