Commit b966b024 authored by pazsan's avatar pazsan

float.fs: Added f~ (f-proximate)

wordsets.fs: Added missing float words
Added 16 bit and 64 bit support in cross.fs
Fixed some bugs which asume sizeof(int)=sizeof(Cell)
parent a713facd
......@@ -49,13 +49,14 @@ FORTH_SRC = add.fs assert.fs ansi.fs blocks.fs bufio.fs checkans.fs \
colorize.fs cross.fs debug.fs debugging.fs doskey.fs ds2texi.fs \
dumpimage.fs environ.fs errore.fs etags.fs extend.fs filedump.fs \
float.fs glocals.fs glosgen.fs gray.fs hash.fs history.fs \
kernal.fs locals-test.fs look.fs mach32b.fs mach32l.fs main.fs \
kernal.fs locals-test.fs look.fs main.fs \
mach16b.fs mach16l.fs mach32b.fs mach32l.fs mach64b.fs mach64l.fs \
other.fs prims2x.fs random.fs search-order.fs see.fs sieve.fs \
startup.fs struct.fs tools.fs toolsext.fs tt.fs vars.fs vt100.fs \
vt100key.fs wordinfo.fs wordsets.fs
SOURCES = Makefile.in configure.in configure config.sub config.guess \
INSTALL README ToDo BUGS model gforth.ds \
INSTALL README ToDo BUGS model gforth.ds install-sh \
primitives engine.c main.c io.c \
m68k.h mips.h 386.h hppa.h cache.c sparc.h 32bit.h \
getopt.c getopt1.c getopt.h \
......@@ -136,6 +137,20 @@ gforth: $(OBJECTS)
$(GCC) $(LDFLAGS) $(OBJECTS) $(LDLIBS) -o $@
@MAKE_EXE@
kernl16l.fi: main.fs search-order.fs cross.fs aliases.fs vars.fs add.fs \
errore.fs kernal.fs extend.fs tools.fs toolsext.fs \
mach16l.fs $(FORTH_GEN)
-$(CP) kernl16l.fi kernl16l.fi~
$(FORTH) -e 's" mach16l.fs"' main.fs
@LINK_KERNL16L@
kernl16b.fi: main.fs search-order.fs cross.fs aliases.fs vars.fs add.fs \
errore.fs kernal.fs extend.fs tools.fs toolsext.fs \
mach16b.fs $(FORTH_GEN)
-$(CP) kernl16b.fi kernl16b.fi~
$(FORTH) -e 's" mach16b.fs"' main.fs
@LINK_KERNL16B@
kernl32l.fi: main.fs search-order.fs cross.fs aliases.fs vars.fs add.fs \
errore.fs kernal.fs extend.fs tools.fs toolsext.fs \
mach32l.fs $(FORTH_GEN)
......@@ -150,6 +165,20 @@ kernl32b.fi: main.fs search-order.fs cross.fs aliases.fs vars.fs add.fs \
$(FORTH) -e 's" mach32b.fs"' main.fs
@LINK_KERNL32B@
kernl64l.fi: main.fs search-order.fs cross.fs aliases.fs vars.fs add.fs \
errore.fs kernal.fs extend.fs tools.fs toolsext.fs \
mach64l.fs $(FORTH_GEN)
-$(CP) kernl64l.fi kernl64l.fi~
$(FORTH) -e 's" mach64l.fs"' main.fs
@LINK_KERNL64L@
kernl64b.fi: main.fs search-order.fs cross.fs aliases.fs vars.fs add.fs \
errore.fs kernal.fs extend.fs tools.fs toolsext.fs \
mach64b.fs $(FORTH_GEN)
-$(CP) kernl64b.fi kernl64b.fi~
$(FORTH) -e 's" mach64b.fs"' main.fs
@LINK_KERNL64B@
engine.s: engine.c primitives.i prim_labels.i machine.h $(INCLUDES)
$(GCC) $(CFLAGS) $(ENGINE_FLAGS) -S engine.c
......
......@@ -490,6 +490,8 @@ case "$host_cpu" in
hppa*)
mach_h=hppa
LIBOBJS="cache.o"
LDFLAGS="-Xlinker -N"
LIBS="-L/lib/pa1.1/ $LIBS"
;;
sparc*)
mach_h=sparc
......@@ -504,6 +506,7 @@ case "$host_cpu" in
;;
mips*)
mach_h=mips
LDFLAGS="-Xlinker -N"
#!! link text and data segment into the same 256M region!
#!! does cacheflush work on OSs other than Ultrix?
;;
......@@ -520,10 +523,18 @@ esac
MAKE_EXE=""
LINK_KERNL16L=""
LINK_KERNL16B=""
LINK_KERNL32L=""
LINK_KERNL32B=""
LINK_KERNL64L=""
LINK_KERNL64B=""
#if test $host_os=dos
#then
# echo Configuring for DOS!!!
......@@ -540,7 +551,7 @@ else
ac_cv_cross=yes
else
cat > conftest.$ac_ext <<EOF
#line 544 "configure"
#line 555 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
......@@ -564,7 +575,7 @@ else
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
#line 568 "configure"
#line 579 "configure"
#include "confdefs.h"
main () {
/* Are we little or big endian? From Harbison&Steele. */
......@@ -597,10 +608,10 @@ fi
if test $ac_cv_c_bigendian = yes; then
bytesex=b
KERNAL="kernl32b.fi kernl32l.fi"
KERNAL="kernl16b.fi kernl16l.fi kernl32b.fi kernl32l.fi kernl64b.fi kernl64l.fi"
else
bytesex=l
KERNAL="kernl32l.fi kernl32b.fi"
KERNAL="kernl16l.fi kernl16b.fi kernl32l.fi kernl32b.fi kernl64l.fi kernl64b.fi"
fi
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&4
......@@ -682,7 +693,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="$LIBS -lm "
cat > conftest.$ac_ext <<EOF
#line 686 "configure"
#line 697 "configure"
#include "confdefs.h"
int main() { return 0; }
......@@ -722,7 +733,7 @@ else
ac_cv_func_memcmp=no
else
cat > conftest.$ac_ext <<EOF
#line 726 "configure"
#line 737 "configure"
#include "confdefs.h"
main()
......@@ -751,7 +762,7 @@ if eval "test \"`echo '${'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&4
else
cat > conftest.$ac_ext <<EOF
#line 755 "configure"
#line 766 "configure"
#include "confdefs.h"
#include <ctype.h> /* Arbitrary system header to define __stub macros. */
/* Override any gcc2 internal prototype to avoid an error. */
......@@ -796,7 +807,7 @@ if eval "test \"`echo '${'ac_cv_func_getopt_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&4
else
cat > conftest.$ac_ext <<EOF
#line 800 "configure"
#line 811 "configure"
#include "confdefs.h"
#include <ctype.h> /* Arbitrary system header to define __stub macros. */
/* Override any gcc2 internal prototype to avoid an error. */
......@@ -842,7 +853,7 @@ if eval "test \"`echo '${'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&4
else
cat > conftest.$ac_ext <<EOF
#line 846 "configure"
#line 857 "configure"
#include "confdefs.h"
#include <ctype.h> /* Arbitrary system header to define __stub macros. */
/* Override any gcc2 internal prototype to avoid an error. */
......@@ -891,7 +902,7 @@ if eval "test \"`echo '${'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&4
else
cat > conftest.$ac_ext <<EOF
#line 895 "configure"
#line 906 "configure"
#include "confdefs.h"
#include <ctype.h> /* Arbitrary system header to define __stub macros. */
/* Override any gcc2 internal prototype to avoid an error. */
......@@ -1047,8 +1058,12 @@ s%@host_cpu@%$host_cpu%g
s%@host_vendor@%$host_vendor%g
s%@host_os@%$host_os%g
s%@MAKE_EXE@%$MAKE_EXE%g
s%@LINK_KERNL16L@%$LINK_KERNL16L%g
s%@LINK_KERNL16B@%$LINK_KERNL16B%g
s%@LINK_KERNL32L@%$LINK_KERNL32L%g
s%@LINK_KERNL32B@%$LINK_KERNL32B%g
s%@LINK_KERNL64L@%$LINK_KERNL64L%g
s%@LINK_KERNL64B@%$LINK_KERNL64B%g
s%@KERNAL@%$KERNAL%g
s%@LN_S@%$LN_S%g
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
......
......@@ -27,6 +27,8 @@ case "$host_cpu" in
hppa*)
mach_h=hppa
LIBOBJS="cache.o"
LDFLAGS="-Xlinker -N"
LIBS="-L/lib/pa1.1/"
;;
sparc*)
mach_h=sparc
......@@ -41,6 +43,7 @@ case "$host_cpu" in
;;
mips*)
mach_h=mips
LDFLAGS="-Xlinker -N"
#!! link text and data segment into the same 256M region!
#!! does cacheflush work on OSs other than Ultrix?
;;
......@@ -58,10 +61,18 @@ AC_SUBST(MAKE_EXE)
MAKE_EXE=""
dnl copy commands for systems that don't have links
AC_SUBST(LINK_KERNL16L)
LINK_KERNL16L=""
AC_SUBST(LINK_KERNL16B)
LINK_KERNL16B=""
AC_SUBST(LINK_KERNL32L)
LINK_KERNL32L=""
AC_SUBST(LINK_KERNL32B)
LINK_KERNL32B=""
AC_SUBST(LINK_KERNL64L)
LINK_KERNL64L=""
AC_SUBST(LINK_KERNL64B)
LINK_KERNL64B=""
#if test $host_os=dos
#then
......@@ -76,10 +87,10 @@ AC_SUBST(KERNAL)
dnl ac_cv_c_bigendian is an undocumented variable of autoconf-2.1
if test $ac_cv_c_bigendian = yes; then
bytesex=b
KERNAL="kernl32b.fi kernl32l.fi"
KERNAL="kernl16b.fi kernl16l.fi kernl32b.fi kernl32l.fi kernl64b.fi kernl64l.fi"
else
bytesex=l
KERNAL="kernl32l.fi kernl32b.fi"
KERNAL="kernl16l.fi kernl16b.fi kernl32l.fi kernl32b.fi kernl64l.fi kernl64b.fi"
fi
dnl Checks for programs.
......
\ CROSS.FS The Cross-Compiler 06oct92py
\ $Id: cross.fs,v 1.18 1994-12-15 12:35:12 pazsan Exp $
\ $Id: cross.fs,v 1.19 1995-01-19 17:47:59 pazsan Exp $
\ Idea and implementation: Bernd Paysan (py)
\ Copyright 1992-94 by the GNU Forth Development Group
......@@ -86,17 +86,28 @@ Variable tdp
included
\ Create additional parameters 19jan95py
T
cell Constant tcell
cell<< Constant tcell<<
cell>bit Constant tcell>bit
bits/byte Constant tbits/byte
float Constant tfloat
1 bits/byte lshift Constant maxbyte
H
>TARGET
\ Byte ordering and cell size 06oct92py
: cell+ cell + ;
: cells cell<< lshift ;
: cell+ tcell + ;
: cells tcell<< lshift ;
: chars ;
: floats float * ;
: floats tfloat * ;
>CROSS
: cell/ cell<< rshift ;
: cell/ tcell<< rshift ;
>TARGET
20 CONSTANT bl
-1 Constant NIL
......@@ -111,11 +122,23 @@ included
>CROSS
bigendian 0 pad ! -1 pad c! pad @ 0<
= [IF] : bswap ; immediate
[ELSE] : bswap ( big / little -- little / big ) 0
cell 1- FOR bits/byte lshift over
[ 1 bits/byte lshift 1- ] Literal and or
swap bits/byte rshift swap NEXT nip ;
= [IF]
\ : bswap ; immediate
: T! ( n addr -- ) >r s>d r> tcell bounds swap 1-
DO maxbyte ud/mod rot I c! -1 +LOOP 2drop ;
: T@ ( addr -- n ) >r 0 0 r> tcell bounds
DO maxbyte * swap maxbyte um* rot + swap I c@ + swap LOOP d>s ;
[ELSE]
: T! ( n addr -- ) >r s>d r> tcell bounds
DO maxbyte ud/mod rot I c! LOOP 2drop ;
: T@ ( addr -- n ) >r 0 0 r> tcell bounds swap 1-
DO maxbyte * swap maxbyte um* rot + swap I c@ + swap -1 +LOOP d>s ;
\ : bswap ( big / little -- little / big ) 0
\ cell 1- FOR bits/byte lshift over
\ [ 1 bits/byte lshift 1- ] Literal and or
\ swap bits/byte rshift swap NEXT nip ;
[THEN]
\ Memory initialisation 05dec92py
......@@ -164,8 +187,8 @@ CREATE Bittable 80 c, 40 c, 20 c, 10 c, 8 c, 4 c, 2 c, 1 c,
>CROSS
: >image ( taddr -- absaddr ) image @ + ;
>TARGET
: @ ( taddr -- w ) >image @ bswap ;
: ! ( w taddr -- ) >r bswap r> >image ! ;
: @ ( taddr -- w ) >image t@ ;
: ! ( w taddr -- ) >image t! ;
: c@ ( taddr -- char ) >image c@ ;
: c! ( char taddr -- ) >image c! ;
: 2@ ( taddr -- x1 x2 ) T dup cell+ @ swap @ H ;
......@@ -547,10 +570,10 @@ Variable tup 0 tup !
Variable tudp 0 tudp !
: u, ( n -- udp )
tup @ tudp @ + T ! H
tudp @ dup cell+ tudp ! ;
tudp @ dup T cell+ H tudp ! ;
: au, ( n -- udp )
tup @ tudp @ + T A! H
tudp @ dup cell+ tudp ! ;
tudp @ dup T cell+ H tudp ! ;
>TARGET
Build: T 0 u, , H ;
......@@ -751,8 +774,9 @@ bigendian Constant bigendian
: * * ; : / / ;
: dup dup ; : over over ;
: swap swap ; : rot rot ;
: drop drop ;
: drop drop ; : = = ;
: lshift lshift ; : 2/ 2/ ;
: . . ;
cell constant cell
\ include bug5.fs
......
......@@ -103,5 +103,10 @@
\ : facosh fdup fdup f* 1e0 f- fsqrt f+ fln ;
\ : fasinh fdup fdup f* 1e0 f+ fsqrt f/ fatanh ;
: f~ ( f1 f2 f3 -- flag ) fdup f0= IF fdrop f= EXIT THEN
fdup f0> IF frot frot f- fabs fswap
ELSE fnegate frot frot fover fabs fover fabs f+ frot frot
f- fabs frot frot f* THEN f< ;
: f.s ." <" fdepth 0 .r ." > " fdepth 0 max maxdepth-.s @ min dup 0
?DO dup i - 1- floats fp@ + f@ f. LOOP drop ;
......@@ -59,12 +59,12 @@ Label *engine(Xt *ip, Cell *sp, Cell *rp, Float *fp, Address lp);
#define MAKE_DOES_CF(cfa,does_code) ({MAKE_CF(cfa,symbols[DODOES]); \
((Cell *)cfa)[1] = (Cell)does_code;})
/* the does handler resides between DOES> and the following Forth code */
#define DOES_HANDLER_SIZE 8
#define DOES_HANDLER_SIZE (2*sizeof(Cell))
#define MAKE_DOES_HANDLER(addr) 0 /* do nothing */
#endif
#ifdef DEBUG
# define NAME(string) fprintf(stderr,"%08x: "string"\n",(int)ip);
# define NAME(string) fprintf(stderr,"%08x: "string"\n",(Cell)ip);
#else
# define NAME(string)
#endif
......
\ Parameter for target systems 06oct92py
2 Constant cell
1 Constant cell<<
4 Constant cell>bit
8 Constant bits/byte
8 Constant float
true Constant bigendian
( true=big, false=little )
\ Parameter for target systems 06oct92py
2 Constant cell
1 Constant cell<<
4 Constant cell>bit
8 Constant bits/byte
8 Constant float
false Constant bigendian
( true=big, false=little )
\ Parameter for target systems 06oct92py
8 Constant cell
3 Constant cell<<
6 Constant cell>bit
8 Constant bits/byte
8 Constant float
true Constant bigendian
( true=big, false=little )
\ Parameter for target systems 06oct92py
8 Constant cell
3 Constant cell<<
6 Constant cell>bit
8 Constant bits/byte
8 Constant float
false Constant bigendian
( true=big, false=little )
/*
$Id: main.c,v 1.20 1994-12-12 17:10:42 anton Exp $
$Id: main.c,v 1.21 1995-01-19 17:48:08 pazsan Exp $
Copyright 1993 by the ANSI figForth Development Group
*/
......@@ -23,16 +23,16 @@
#ifdef DIRECT_THREADED
# define CA(n) (symbols[(n)])
#else
# define CA(n) ((int)(symbols+(n)))
# define CA(n) ((Cell)(symbols+(n)))
#endif
#define maxaligned(n) ((((Cell)n)+sizeof(Float)-1)&-sizeof(Float))
static int dictsize=0;
static int dsize=0;
static int rsize=0;
static int fsize=0;
static int lsize=0;
static Cell dictsize=0;
static Cell dsize=0;
static Cell rsize=0;
static Cell fsize=0;
static Cell lsize=0;
char *progname;
......@@ -76,7 +76,7 @@ void relocate(Cell *image, char *bitstring, int size, Label symbols[])
case CF(DOCON) :
case CF(DOUSER) :
case CF(DODEFER) : MAKE_CF(image+i,symbols[CF(image[i])]); break;
case CF(DODOES) : MAKE_DOES_CF(image+i,image[i+1]+((int)image));
case CF(DODOES) : MAKE_DOES_CF(image+i,image[i+1]+((Cell)image));
break;
case CF(DOESJUMP): MAKE_DOES_HANDLER(image+i); break;
default : image[i]=(Cell)CA(CF(image[i]));
......@@ -96,7 +96,7 @@ Cell *loader(FILE *imagefile)
do
{
if(fread(magic,sizeof(Char),8,imagefile) < 8) {
fprintf(stderr,"This file doesn't seam to be a gforth image\n");
fprintf(stderr,"This file doesn't seem to be a gforth image\n");
exit(1);
}
#ifdef DEBUG
......@@ -154,7 +154,7 @@ int go_forth(Cell *image, int stack, Cell *entries)
Address lp=(Address)((void *)sp+lsize);
Float *fp=(Float *)((void *)lp+fsize);
Cell *rp=(Cell*)((void *)fp+rsize);
Xt *ip=(Xt *)(image[3]);
Xt *ip=(Xt *)((Cell)image[3]);
int throw_code;
for(;stack>0;stack--)
......
......@@ -42,9 +42,9 @@ here normal-dp !
tudp H @ minimal udp !
decimal
\ 64 KB 0 cells ! \ total Space... defined above!
here 1 cells ! \ Size of the system
16 KB 2 cells ! \ Return and fp stack size
\ 64 KB 0 cells ! \ total Space... defined above!
here 1 cells ! \ Size of the system
16 KB 2 cells ! \ Return and fp stack size
' boot >body 3 cells ! \ Entry point
UNLOCK Tlast @
......@@ -52,11 +52,16 @@ LOCK
1 cells - dup forth-wordlist ! Last !
.unresolved
cr cr
bigendian [IF]
save-cross kernl32b.fi
cr cr
cell bigendian
[IF]
dup 2 = [IF] save-cross kernl16b.fi [THEN]
dup 4 = [IF] save-cross kernl32b.fi [THEN]
dup 8 = [IF] save-cross kernl64b.fi [THEN]
[ELSE]
save-cross kernl32l.fi
[THEN] cr
dup 2 = [IF] save-cross kernl16l.fi [THEN]
dup 4 = [IF] save-cross kernl32l.fi [THEN]
dup 8 = [IF] save-cross kernl64l.fi [THEN]
[THEN] drop cr
bye
......@@ -96,12 +96,12 @@ NEXT1;
branch-lp+!# -- new branch_lp_plus_store_number
/* this will probably not be used */
branch_adjust_lp:
lp += (int)(ip[1]);
lp += (Cell)(ip[1]);
goto branch;
branch -- fig
branch:
ip = (Xt *)(((int)ip)+(int)*ip);
ip = (Xt *)(((Cell)ip)+(Cell)*ip);
:
r> dup @ + >r ;
......@@ -149,7 +149,7 @@ if ((olddiff^(olddiff+n))>=0 /* the limit is not crossed */
|| (olddiff^n)>=0 /* it is a wrap-around effect */) {
#else
#ifndef MAXINT
#define MAXINT ((1<<(8*sizeof(Cell)-1))-1)
#define MAXINT ((((Cell)1)<<(8*sizeof(Cell)-1))-1)
#endif
if(((olddiff^MAXINT) >= n) ^ ((olddiff+n) < 0)) {
#endif
......@@ -852,7 +852,7 @@ while(a_addr != NULL)
(hashkey) c_addr u1 -- u2 new paren_hashkey
u2=0;
while(u1--)
u2+=(int)toupper(*c_addr++);
u2+=(Cell)toupper(*c_addr++);
:
0 -rot bounds ?DO I c@ toupper + LOOP ;
......@@ -944,7 +944,7 @@ wior = FILEEXIST(fstat(fileno((FILE *)wfileid), &buf));
ud = buf.st_size;
resize-file ud wfileid -- wior file resize_file
wior = FILEIO(ftruncate(fileno((FILE *)wfileid), (int)ud));
wior = FILEIO(ftruncate(fileno((FILE *)wfileid), (Cell)ud));
read-file c_addr u1 wfileid -- u2 wior file read_file
/* !! fread does not guarantee enough */
......@@ -1121,7 +1121,7 @@ switch(number[u-1])
}
number[u]='\0';
r=strtod(number,&endconv);
if((flag=FLAG(!(int)*endconv)))
if((flag=FLAG(!(Cell)*endconv)))
{
IF_FTOS(fp[0] = FTOS);
fp += -1;
......@@ -1131,7 +1131,7 @@ else if(*endconv=='d' || *endconv=='D')
{
*endconv='E';
r=strtod(number,&endconv);
if((flag=FLAG(!(int)*endconv)))
if((flag=FLAG(!(Cell)*endconv)))
{
IF_FTOS(fp[0] = FTOS);
fp += -1;
......@@ -1279,7 +1279,7 @@ c2 = toupper(c1);
\ local variable implementation primitives
@local# -- w new fetch_local_number
w = *(Cell *)(lp+(int)(*ip++));
w = *(Cell *)(lp+(Cell)(*ip++));
@local0 -- w new fetch_local_zero
w = *(Cell *)(lp+0*sizeof(Cell));
......@@ -1294,7 +1294,7 @@ w = *(Cell *)(lp+2*sizeof(Cell));
w = *(Cell *)(lp+3*sizeof(Cell));
f@local# -- r new f_fetch_local_number
r = *(Float *)(lp+(int)(*ip++));
r = *(Float *)(lp+(Cell)(*ip++));
f@local0 -- r new f_fetch_local_zero
r = *(Float *)(lp+0*sizeof(Float));
......@@ -1304,13 +1304,13 @@ r = *(Float *)(lp+1*sizeof(Float));
laddr# -- c_addr new laddr_number
/* this can also be used to implement lp@ */
c_addr = (Char *)(lp+(int)(*ip++));
c_addr = (Char *)(lp+(Cell)(*ip++));
lp+!# -- new lp_plus_store_number
""used with negative immediate values it allocates memory on the
local stack, a positive immediate argument drops memory from the local
stack""
lp += (int)(*ip++);
lp += (Cell)(*ip++);
lp- -- new minus_four_lp_plus_store
lp += -sizeof(Cell);
......
......@@ -79,11 +79,11 @@ WS FLOAT
WS FLOAT-EXT
^ DF! ^ DF@ ^ DFALIGN ^ DFALIGNED ^ DFLOAT+ ^ DFLOATS ^ F**
^ F. ^ FABS ^ FACOS ^ FACOSH ^ FALOG ^ FASINH ^ FATAN
^ F. ^ FABS ^ FACOS ^ FACOSH ^ FALOG ^ FASIN ^ FASINH ^ FATAN
^ FATAN2 ^ FATANH ^ FCOS ^ FCOSH ^ FE. ^ FEXP ^ FEXPM1
^ FLN ^ FLNP1 ^ FLOG ^ FS. ^ FSIN ^ FSINCOS ^ FSINH
^ FSQRT ^ FTAN ^ FTANH ^ F- ^ PRECISION ^ SF! ^ SF@
^ SFALIGN ^ SFALIGNED ^ SFLOAT+ ^ SFLOATS
^ FSQRT ^ FTAN ^ FTANH ^ F~ ^ PRECISION ^ SET-PRECISION
^ SF! ^ SF@ ^ SFALIGN ^ SFALIGNED ^ SFLOAT+ ^ SFLOATS
WS LOCAL
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment