Question if I may?
All to do with my learning and not a complaint, criticism or a request for anything to be changed. (preamble done)
It involves the definition of SIGN that you are using for FIF79 which seems to be more of a Fig Forth definition than a Forth79 one and is acting as a double precision operator.
Example.
: .$ SWAP OVER DABS <# # # 46 HOLD # S 36 HOLD SIGN #> TYPE SPACE ;
-12345. .$ -123.45 ok
This works as shown above in FIF79 but not in Toddy Forth79 and according to the Forth79 standards blurb it is a single precision operator not a double.
Forth-79:
SIGN n -- C,140
Insert the ASCII "-" (minus sign) into the pictured numeric
output string, if n is negative.
: SIGN ( n -- )
0< IF 45 HOLD THEN
FigForth:
SIGN n d --- d L0
Stores an ascii "-" sign just before a converted numeric output
string in the text output buffer when n is negative. n is discarded
but double number d is maintained. Must be used between <# and #>.
: SIGN ( n d -- d )
ROT 0< IF 45 HOLD THEN ;
Note the added ROT in FigForth.
This looks like SIGN in FIF79 has been defined as per Fig Forth.
If I insert ROT into the .$ definition then TF79 works..
: .$ SWAP OVER DABS <# # # 46 HOLD #S 36 HOLD ROT SIGN #> TYPE SPACE ;
But the ROT addition is just allowing a single operator to be used in a double scenario.
If Forth79's definition of SIGN is as a single operator then how can it be used in FIF79 as a single if it's defined as a double operator that can only be used in a number formatted colon definition .
You have to allow for the fact I'm a bear of little brain on a very very steep learning curve and this is very hard for me honestly.
