Update..
1.0e FVARIABLE R .. (outside of a word) was putting 1.0e into the float stack
Solution (proposal)
: TEST ( -- r1 r2 r3 r4 )
CLEARSTACKS
etc.
.. CLEARSTACKS is so far the best solution to clear the 1.0e (FNIP is not good,
it clear only the postion 2 of the tops .. because issue if more than 2
positions in the stack)
I can live with this for now. However its a bit weird a variable initialization
is putting a value into the stack.
Am Samstag, 20. Mai 2023 um 12:55:39 MESZ hat Pascal Dag
<[email protected]> Folgendes geschrieben:
With the code...
FVARIABLE XFVARIABLE Y
FVARIABLE Z
FVARIABLE T
FVARIABLE L
: D_RPNS ( -- ) \ print out Stack ONLY for debugging purpose
CR
." X " X F@ F. CR
." Y " Y F@ F. CR
." Z " Z F@ F. CR
." T " T F@ F. CR
." L " L F@ F. CR
CR
F.S
CR
: TEST ( -- ) CLEARSTACK
2.0e FDUP Y F!
CR D_RPNS
5.0e FDUP X F!
CR ." Test function prior start PERE12" D_RPNS
;
The Terminal output is..
test
X 0.
Y 2.
Z 0.
T 0.
L 0.
<2> 1.000000000000E0 2.000000000000E0
Test function prior start PERE12
X 5.
Y 2.
Z 0.
T 0.
L 0.
<3> 1.000000000000E0 2.000000000000E0 5.000000000000E0
Where is the 1.000000000000E0 coming from? Is it a bug? It can be deleted from
the stack with FNIP. But for me this is weird FNIP must be used to delete a
number which appeared in the stack.
Then it turns to be ok
: TEST ( -- )
CLEARSTACK
2.0e FDUP Y F!
FNIP
CR D_RPNS
5.0e FDUP X F!
CR ." Test function prior start PERE12" D_RPNS
;
then the output is fine,,,
test
X 0.
Y 2.
Z 0.
T 0.
L 0.
<1> 2.000000000000E0
Test function prior start PERE12
X 5.
Y 2.
Z 0.
T 0.
L 0.
<2> 2.000000000000E0 5.000000000000E0
gforth 0.7.3 fromDebian 11.
uname -a
Linux ProDesk 5.10.0-23-amd64 #1 SMP Debian 5.10.179-1 (2023-05-12) x86_64
GNU/Linux
apt list gforth
Listing... Done
gforth/stable,now 0.7.3+dfsg-9+b1 amd64 [installed]
gforth/stable 0.7.3+dfsg-9+b1 i386
Any remark / comment is welcome.