by [ name | topic | voc ] [ glos | files | xref ] [ notation | dpans94 | syscalls ] [ bot | top ]

lib4th 1-1-4+18 short reference, sorted by topic (preliminary)

Latest library source -re- lib4th homepage.

Text formatted for the lynx html-browser and for plain text printing, 132 chars/line
|                                                                                                                118>|

    
NameAsm-LabelWordlistComment
 (imed)
 
  
    

  arithmetic, sing numeric (cons, vari)

-ssubforth( n1 n2 -- n3 ) subtract sings
/byforth( n1 n2 -- n3q ) div sings, leave quot
*smulforth( n1 n2 -- n3 ) mul sings
*/mulbyforth( n1 n2 n3 -- n5q ) n1 / n2 * n3, qot n4
+plusforth( n1 n2 -- n3 ) add sings
+-spmforth( n1 n2 -- n3 ) apply sign of sing @tos to sing
0maxzmaxforth0 max ; not less than 0
1-sub1forthdec sing by one
1+add1forthinc sing by one
10*mul10forthmul sing by ten
16*mul16forthmul sing by sixteen
16/moddiv16mforthdiv/mod sing by sixteen
1absabs1forthone-s complement if sing -ve
2-sub2forthdec sing by two
2/div2forthdiv sing by two
2*mul2forthmul sing by two
2+add2forthinc sing by two
3*mul3forthmul sing by three
4-sub4forthdec sing by four
4/div4forthdiv sing by four
4*mul4forthmul sing by four
4+add4forthinc sing by four
5*mul5forthmul sing by five
6*mul6forthmul sing by six
7*mul7forthmul sing by seven
8-sub8forthdec sing by eight
8/div8forthdiv sing by eight
8*mul8forthmul sing by eight
8+add8forthinc sing by eight
9*mul9forthmul sing by nine
abitsmul8ansmul by no. of bits per address unit
ABSaabsanstwo-s cpl if sing -ve, '-0' unchanged
abscabsforthtwo-s cpl if sing -ve, '-0' -> 0
basebaseforthnumber conversion radix
base!basesforthsto to {base}
base@basefforthfetch {base} base value
binarybinaryforthstore 2 to base
cell-sub4forthdec sing by no. of bytes per cell (4)
CELL/cellbyansfloored div sing by bytes per cell (4)
cell+add4forthinc sing by no. of bytes per cell (4)
CELLSmul4ansmul sing by bytes per cell (4)
char-sub1forthdec sing by bytes per char (1)
char+add1forthinc sing by bytes per char (1)
charsnoopforthmul sing by bytes per char (1)
decimaldecimalforthsto 10 to base
dpldplforthdecimal point location of just converted number
dpl@dplfetchforthfetch dpl
edpl@edplfetchforthfetch optional num. input exponent value
gcdgcdforth( n1 n2 -- n3 ) greatest common denominator
hexhexforthsto 16 to base
lg2lg2forthnumerus of log at base 2 of item @tos
lg(base)lgbaseforthnumerus of log at @base of item @nos
loglogforthnumerus of log at base @tos of item @nos
maxmaxforth( n1 n2 -- f ) leave the greater of top two sings
minminforth( n1 n2 -- f ) leave the smaller of top two sings
minusnegatefig( n1 -- n2 ) negate sing
modmodforth( n1 n2 -- n3r ) div sings, leave rmd
/modbymodforth( n1 n2 -- n3r n4q ) div sings, leave quot & rmd
*/modmulbymforth( n1 n2 n3 -- n4r n5q ) n1 / n2 * n3, rmd n4 & qot n5
negatenegateforth( n1 -- n2 ) negate sing
?NEGATEspmans( n1 n2 -- n3 ) apply sign of sing n2 to sing n1
octaloctalforthsto 8 to base
over-overmforthover -
over+overpforthover +
sgnsgnforth( n1 -- n2 ) sign of sing
umaxumaxforth( n1 n2 -- n3 ) leave unsigned greater of top two sings
uminuminforth( n1 n2 -- n3 ) leave unsigned smaller of top two sings
uwithin?uwithinqforthunsigned test & adjust 3rd w/ range of 2nd..1st
within?withinqforthsigned test & adjust 3rd w/ range of 2nd..1st
    

  arithmetic, mixed sing w/ double or quad

^powforth( n1 n2 -- d ) double, sing to the power of sing
2^pow2forth( n1 -- d1 ) 2^n sing -> double
d+-dpmforth( d1 n -- d2 ) apply sign of sing to double @nos
dm*dmmulforth( d1 d2 -- d3 n ) mul doubles, leave 3-cells prod.
factorialfactorialforth( u1 -- ud2 ) double factorial of u1, -1 < u1 < 21
fm/modfmbymodforth( d1 n2 -- n3r n4q ) floored double by sing
m/mbyforth( d1 n2 -- n3r d4q )
m*mmulforth( n1 n2 -- d3 ) mul sings, leave double prod
m*/mmulbyforth( d1 n2 n3 -- d4q ) d1 * n2 / n3
m+mplusforth( d1 n2 -- d3 ) signed add sing to double @nos
md*mdmulforth( d1 d2 -- q ) mul doubles, leave quad prod.
m/modmbymforth( d1 n2 -- n3r n4q ) vectored sm/rem(dft) or fm/mod
q+-qpmforth( q1 n2 -- q3 ) apply sign of sing n1 to quad
sm/remsmbyremforth( d1 n2 -- n3r n4q ) div round near zero
u^upowforth( u1 u2 -- ud3 ) unsigned double, n1 to the power of n2
u*umulforth( u1 u2 -- ud3 )
u+uplusforth( ud1 u2 -- ud3 ) unsigned add sing to double
u16/modubym16forth( u1 -- u2r u3q ) udiv by 16, rmd = u2r
u4/modubym4forth( u1 -- u2r u3q ) udiv by 4, rmd = u2r
u8/modubym8forth( u1 -- u2r u3q ) udiv by 8, rmd = u2r
udm*udmmulforth( ud1 u2 -- ud3 n4 ) treble prod, n4 = ovf
udm*/modudmmulbymforth( d1 n2 n3 -- u5r ud4q ) d1 u* n2 u/ n3
um/umbyforth( ud1 n2 -- u3r ud4q )
um*umulforth( u1 u2 -- ud3 )
um*/ummulbyforth( n1 n2 n3 -- ud4q ) n1 u* n2 u/ n3
um/modumbymodforth( ud1 u2 -- u2r u3q )
u/modubymforth( u1 u2 -- u2r u3q )
umq^umqpowforth( n1 n2 -- uq3 ) unsigned quad n1^n2
uqsm/uqsmbyforth( q1 n2 -- n3 q4 ) q by sing, ret quad quot, sing rmd
uqsm*uqsmmulforth( q1 n2 -- q3 n4 ) mul quad by sing to 5 cells prod
    

  arithmetic, double and mixed w/quad

d-dsubforth( d1 d2 -- d3 ) subtract doubles
d/dbyforth( d1 d2 -- d3 ) d3=quot of div
d*dmulforth( d1 d2 -- d3 ) d3=prod of mul
d+dplusforth( d1 d2 -- d3 ) add doubles
d1-donemforth( d1 -- d2 ) dec double by one
d1+donepforth( d1 -- d2 ) inc double by one
d1absd1absforth( d1 -- d2 ) bitwise one-s cpl doubles if -ve
d2-dtwomforth( d1 -- d2 ) dec double by two
d2/dtwobyforth( d1 -- d2 ) div double by two
d2*dmul2forth( d1 -- d2 ) mul double by two
d2+dtwopforth( d1 -- d2 ) inc double by two
d4-dfourmforth( d1 -- d2 ) dec double by four
d4/dfourbyforth( d1 -- d2 ) div double by four
d4*dmul4forth( d1 -- d2 ) mul double by four
d4+dfourpforth( d1 -- d2 ) inc double by four
d8-deightmforth( d1 -- d2 ) dec double by eight
d8/deightbyforth( d1 -- d2 ) div double by eight
d8*dmul8forth( d1 -- d2 ) mul double by eight
d8+deightpforth( d1 -- d2 ) inc double by eight
dabsdabsforth( d1 -- d2 ) two-s cpl doubles if -ve
df/moddfbymforthfloored div doubles w/ remainder
dgcddgcdforth( d1 d2 -- d3 ) greatest common denominator, doubles
dmaxdmaxforth( d1 d2 -- d3 ) leave the greater of two doubles on tos
dmindminforth( d1 d2 -- d3 ) leave the smaller of two doubles on tos
dminusdnegatefig( d1 -- d2 ) negate a double
dmoddmodforthdiv doubles, leave double rmd
d/moddbymforth( d1 d2 -- d3 ) d3=rmd of div
dnegatednegateforth( d1 -- d2 ) two-s complement of a double
dsgndsgnforth( dn -- f ) f=signum(dn)
dslbitsdslbitsforth( d1 -- d1 n ) no. of top zero-bits less 2
qdfm/modqdfmbymforth( q1 d2 -- d3r d4q ) floored q by d, ret doubles
ud/udbyforthdiv doubles, leave double quot
ud*udmulforthmul doubles, leave double prod
ud/modudbymforthdiv doubles, leave double quot & rmd
udsqrtudsqrtforth( d1 -- d2 n ) +ve double square root, sing 'j'-flag
udsqrtfudsqrtnonmmx+ve double square root of double, sing 'j'-flag
umd*umdmulforth( ud1 d2 -- uq3 )
uqd*uqdmulforth( q1 d2 -- q3 d4 ) mul quad by duble to 6 cells prod
uqd/moduqdbymforth( q1 d2 -- d3r d4q ) q by d, double quot & rmd
uqm/moduqmbymforth( q1 d2 -- d3r q4q ) q by d, quad quot, double rmd
    

  arithmetic, quad and 8-cells integers

3rd-q1+q1pthidden( q1 qx qy -- q2 qx qy ) inc quad q1 by one
3rd-q2*qmul2thidden( q1 qx qy -- q2 qx qy ) mul quad q1 by two
3rd-uq2/uqdiv2thidden( q1 qx qy -- q2 qx qy ) unsigned div quad q1 by two
nos-q1-q1mnhidden( q1 qx -- q2 qx ) dec quad @nos by one
nos-q1+q1pnhidden( q1 qx -- q2 qx ) inc quad @nos by one
nos-q2/qdiv2nhidden( q1 qx -- q2 qx ) div quad @nos by two
nos-q2*qmul2nhidden( q1 qx -- q2 qx ) mul quad @nos by two
nos-qnegateqnegatenhidden( q1 qx -- q2 qx ) negate quad @nos
nos-uq2/uqdiv2nhidden( q1 qx -- q2 qx ) unsigned div quad @nos by two
o-osubhidden( o1 o2 -- o3 ) subtract 8-cells numbers
o+oplushidden( o1 o2 -- o3 ) add 8-cells numbers
o1+o1phidden( o1 -- o2 ) inc eight-cells integer by one
onegateonegatehidden( o1 -- o2 ) negate eight-cells integer
q-qsubforth( q1 q2 -- q3 ) subtract quad numbers
q/qbyforth( q1 q2 -- q3q ) quot of quad div
q*qmulforth( q1 q2 -- o3 ) signed mul quad by quad to 8 cells prod
q+qplusforth( q1 q2 -- q3 ) add quad numbers
q1-qonemforth( q1 -- q2 ) decrement quad by one
q1+qonepforth( q1 -- q2 ) increment quad by one
q1absq1absforth( q1 -- q2 ) one-s complement if quad -ve
q2/qdiv2forth( q1 -- q2 ) signed 'round near zero' div quad by 2
q2*qmul2forth( q1 -- q2 ) mul quad by 2
qabsqabsforth( q1 -- q2 ) two-s complement if quad -ve
qfm/modqfmbymforth( q1 d2 -- d3r q4q ) floored q by d, ret quad,double
qf/modqfbymforth( q1 q2 -- q3r q4q ) floored div q/q, ret q,q
qgcdqgcdforth( q1 q2 -- q3 ) greatest common denominator
qlshiftqlshiftforth( q1 n2 -- q3 ) shift quad left
qmodqmodforth( q1 q2 -- q3r ) rmd of quad div
q/modqbymforth( q1 q2 -- q3r q4q ) quot, rmd of quad div
qnegateqnegateforth( q1 -- q2 ) negate quad
qrshiftqrshiftforth( q1 n2 -- q3 ) unsigned shift quad right
qsgnqsgnforth( q1 -- n2 ) sing sign value of a quad
qslbitsqslbitsforth( q1 -- q1 n ) no. of top zero-bits less 2
qsm+qsmplusforth( q1 n2 -- n3 ) signed add sing to quad
qsqrtqsqrtforth( q1 -- q2 n3 ) quad square root of quad, sing 'j'-flag
uq*uqmulforth( q1 q2 -- o3 ) unsigned mul q by q to 8 cells prod
uq2/uqdiv2forth( q1 -- q2 ) unsigned div quad by 2
uqmaxuqmaxforth( q1 q2 -- q3 ) unsigned greater of two quads
uqminuqminforth( q1 q2 -- q3 ) unsigned smaller of two quads
uq/moduqbymforth( q1 q2 -- q3r q4q )
    

  bignum opr

n^npowbignum( n.N m -- p.P ) n.N to the power of m
n-nsubbignumnormalize & subtract two bignums
n->ntoqbignumsigned reduce bignum to minimal cell size
n/nbybignumsigned divide two counted ints
n*nmulbignummultiply two counted ints
n+naddbignumnormalize & add two bignums
n+-npmbignumapply sign of sing to bignum
n1-nonembignumdec counted int by 1
n1+nonepbignuminc counted int by 1
n2/nn2divbignumdivide counted int by 2
n2*nn2mulbignummultiply counted int by 2
n/2^32nd32bignumdivide counted int by 2^32
n*2^32nm32bignummultiply counted int by 2^32
nabsnabsbignumabs value of counted int
ncmpncmpbignumret sign of subtraction of two bignums
ngcdngcdbignumret greatest common divisor of two bignums
nminusnminusbignum2's cpl of counted int
n/modnbymbignumsigned divide two counted ints w/ remainder
n->nntonbignumsign extend bignum
nnegatenminusbignumnegate counted int
nnormnnormbignumnormalize top two bignums to equal size
nsgnnsgnbignum( n1.N -- n2 ) signum of a counted int
nsqrtnsqrtbignum( n1 -- n2.N ) square root of a counted int
n->unn2unbignummodify bignum to unsigned
un->ununtounbignum( n1.N M -- n2.M ) unsigned extend counted int
    

  bignum mixed praecision

2n->2qn22qbignumbignum pair to quad
2n->2uqn22uqbignumbignum pair unsigned to quad
2q->2nq22nbignumquad pair to bignum
2q->2unq22unbignumquad pair unsigned to bignum
lg(nn)lgnnbignumsing numerus of log(bignum)(sing)
nn->ddn22dbignumbignum pair to data
n->qn2qbignumbignum to quad
q->nq2nbignum( q1 -- n1.N ) quad to bignum
s>nfactorials2nfacbignum( n1 -- n2.N ) counted int factorial of a sing
uns*unsmulbignum( n1.N n2 -- n3.(N+1) ) unsgd mul counted int by sing
uns/modunsbymbignum( n1.N n2 -- q3.Q n4r ) unsgd div counted int by sing
    

  bignum data-/return-stack opr

n2dupnn2dupbignumdup double counted int
ndropndropbignumdrop counted int
nndropnndropbignumdrop a number of counted ints
nndupnndupbignumdup counted int
nnovernnoverbignumover counted int
nnpicknnpickbignumpick counted int
nn>rnntorbignumcounted int from data-stack to return-stack
nnr>nnrfrombignumbignum from return-stack to data-stack
nnrollnnrollbignum+/- roll counted ints
nnrotnnrotbignum( n1.N m2.M o3.O -- m2.M o3.O n1.N ) rot counted ints
nn-rotnnmrotbignumrot back counted ints
nnsdropnnsdropbignum( n.N m.M -- m.M ) , -1 nnpick
nnswapnnswapbignum( n1.N m2.M -- m2.M n1.N ) swap counted ints
n@spnnposnhiddencells disp to indexed 'bignum'
    

  rational sing, if L4 cpl'd w/ '-d__SRANUM'

1/vvreciprational( v1 -- v2 ) abs(1 div by v1)
>chgtchrahidden( p u c -- n ) find 1st occurrence of char c
#digitspdovalrationalmax displayed no. of ranum fractional digits
>doubletodoublerationalconvert stg to double number
#dppdovalforthfloating pt. fraction marker char, dft=","
dv>udv?dv2udvqrahidden( dv -- udv flg ) |dv| and sign flag
dv>uqv?dv2uqvqrahidden( dv -- +qv f ) |dv| to quad and sign flag
dv>vdv2vrational( dv -- v ) convert double to sing ranum
e^vepowvrational( v1 -- v2 ) v2 <- e^v1
#fdpdovalrahiddenranum integral part delimiter, dft=<bl>
#fplacespdovalforthmax no. of {f.} fraction digits, dft=14
#froundpdovalrational-ve(dft) or no. of f.p. fractional digits
#n!vpdovalrahiddenmax+1 for sing factorial calculations, dft=13
s>dvfactorials2dvfacrational( +n -- dv ) factorial of n
s>vs2vrational( n -- v ) signed sing to vulgar
s>vfactorials2vfacrational( +n -- v ) factorial of n
truncationpdovalrationalsuppress trailing zeroes if non-zero(dft)
ud>n?ud2nqrahidden( ud -- +n f ) tf if ud not in range of +ve sing
<#v#>ltvgtrahidden( v -- p u ) convert v to rational num stg
#vsharpvrational( +v -- 0 0 ) app stg to num output buf, for v.
v-vsubrational( v1 v2 -- v3 ) v1 minus v2.
v!vstorerational( v p -- ) store ranum v to memory at p
v/vbyrational( v1 v2 -- v3 ) quot of v1 divided by v2.
v.vdotrational( v -- ) display rational number
v@vfetchrational( p -- v ) fetch ranum v from memory at p
v*vmulrational( v1 v2 -- v3 ) product of v1 and v2.
v+vplusrational( v1 v2 -- v3 ) sum of v1 and v2.
v+-vpmrational( v1 n -- v2 ) negate if -ve n
v1-vonemrational( v1 -- v2 ) v2 <- v1 - 1
v1+voneprational( v1 -- v2 ) v2 <- v1 + 1
v2/v2divrational( v1 -- v2 ) v2 <- v1/2
v2*v2mulrational( v1 -- v2 ) v2 <- v1*2
vabsvabsrational( v1 -- v2 ) negate if v1 -ve
vconstantvconstantrational( -- v ) non-alterable constant
vdigits>vdigitsgtrahidden( -- un ) largest num w/ no. {digits} digits
vdropvdroprational( v1 -- v1 v1 )
vdupvduprational( v1 -- v1 v1 )
v>dvv2dvrational( v1 -- dv2 ) expand sing v1 to double dv2
<#vf#>ltvfgtrahidden( v -- p u ) convert v to floating pt num stg
#vfsharpvfrational( +v -- 0 0 ) app stg to num output buf, for f.
vfracvfracrational( v1 -- +v2 ) fractional component of v1
vintegervintegerrational( -- v ) constant, alterable before being cpl'd
v.jvdotjrational( left right v -- ) justified disp. ranum
vliteralvliteralrational( v -- | v ) compile/interpret ranum as a dliteral
vm*vmmulrational( v1 v2 -- dv ) double product of v1 and v2.
vmaxvmaxrational( v1 v2 -- v3 ) the larger of v1 and v2.
vminvminrational( v1 v2 -- v3 ) the smaller of v1 and v2.
v^nvpownrational( v n -- ) raise ranum to the power of sing
vnegatevnegaterational( v1 -- v2 ) v2 = -v1
vnormalvnormalrational( dv -- v ) approximate double to sing ranum
vovervoverrational( v1 v2 -- v1 v2 v1 )
voverflowvoverflowrational( v -- f ) tf if v was overflow indicator value
vpickvpickrational( ... n -- ... vn )
vreducevreducerational( v1 -- v2 ) normalize to prime components
vrollvrollrational( ... n -- ... vn )
vrotvrotrational( v1 v2 v3 -- v2 v3 v1 )
v-rotvmrotrational( v1 v2 v3 -- v3 v1 v2 )
vroundvroundrational( v1 +n -- v2 ) v2 is an approximation to v1
v>sv2srational( v -- n ) floored, integral component of v.
vsgnvsgnrational( v1 -- -1|0|1 ) unit of v1
vsimplifyvsimplifyrational( v1 +n -- v2 ) v2 is an approximation to v1
vsplitvsplitrational( v1 -- v2 v3 ) {v>s} & {vfrac}
vsqrtvsqrtrational( v1 -- v2 ) square root of a ranum
vswapvswaprational( v1 v2 -- v2 v1 )
v>uv?v2uvqrahidden( v -- +v f ) |v| and sign flag
vvariablevvariablerational( -- p ) 'ranum' (i.e. double) variable
    

  rational logic, all sizes

dv~dvaeqrational( dv1 dv2 -- f ) tf if dv1, dv2 approximately equal
dv<dvltrational( dv1 dv2 -- f ) tf if dv1 < dv2
dv=dveqrational( dv1 dv2 -- f ) tf if dv1, dv2 exactly equal
dv>dvgtrational( dv1 dv2 -- f ) tf if dv1 > dv2
dv0<dvzltrational( dv -- f ) tf if dv is -ve.
dv0=dvzeqrational( dv -- f ) tf if dv zero.
flt?fltqforth( -- n ) cells count if last num was a float
qv=qveqrahidden( qv1 qv2 -- f ) tf if q1 equal to q2
?qv0=qqvzeqrahidden( qv -- qv f ) tf if qv is zero.
small?smallqrahidden( dv -- f ) tf if "normal"izeable
v~vaeqrational( v1 v2 -- f ) tf if v1 approximately equal to v2.
v<vltrational( v1 v2 -- f ) tf if v1 less than v2.
v=veqrational( v1 v2 -- f ) tf if v1 exactly equal to v2.
v>vgtrational( v1 v2 -- f ) tf if v1 greater than v2.
v0<vzltrational( v -- f ) tf if v negative.
v0=vzeqrational( v -- f ) tf if v zero.
    

  rational double, for {ans} "FLOAT" words

10^dvpowdv10rational( dv1 -- dv2 ) dv1 to the power of ten
1/dvdvreciprational( dv1 -- dv2 ) abs(1 div by dv1)
acos(dv)acosdvrational( dv1 -- dv2 ) arcus cosinus
asin(dv)asindvrational( dv1 -- dv2 ) arcus sinus
atg(dv)atgdvrational( dv1 -- dv2 ) arcus tg
cos(dv)cosdvrational( dv1 -- dv2 ) cosinus
d>dvd2dvrational( dn -- dv ) double int signed to double ranum
df#.dfdecdotrational( dv -- ) display ranum in floating pt format, decimal
<#dv#>ltdvgtrahidden( dv -- p u ) convert dv to rational num stg
#dvsharpdvrational( +dv -- 0 0 ) app stg to ranum output buf
dv^dvpowdvrational( dv1 dv2 -- dv3 ) double dv1 to the power of dv2
dv-dvsubrational( dv1 dv2 -- dv3 ) diff.
dv!dvstorerational( dv p -- ) store ranum dv to memory at p
dv/dvbyrational( dv1 dv2 -- dv3 ) div doubles
dv@dvfetchrational( p -- dv ) fetch ranum dv from memory at p
dv*dvmulrational( dv1 dv2 -- dv3 ) double ranum product
dv*/dvmulbyrational( dv1 dv2 dv3 -- dv4 ) mul dv1 by dv2 div by dv3
dv%dvvhrational( dv1 dv2 -- dv3 ) per 100
dv+dvplusrational( dv1 dv2 -- dv3 ) sum
dv+-dvpmrational( dv1 n -- dv2 ) negate if -ve n
dv1-dvonemrational( dv1 -- dv2 ) subtract 1 from dv1
dv1+dvoneprational( dv1 -- dv2 ) add 1 to dv1
dv2/dv2divrational( dv1 -- dv2 ) dv2 <- dv1/2
dv2*dv2mulrational( dv1 -- dv2 ) dv2 <- dv1*2
dv2dupdv2duprational( dv1 dv2 -- dv1 dv2 dv1 dv2 )
dvabsdvabsrational( dv -- |dv| ) negate dv if -ve
dvcmpdvcmprational( dv1 dv2 -- dv1 dv2 n ) signum(dv1-dv2)
dvconstantdvconstantrational( -- dv ) non-alterable constant
dv>ddv2drational( dv -- dn ) dv to floored double int
dvdepthdvdepthrationalnumber of double ranum sized items on data-stack
dv>dndv2dnrational( dv1 -- dn ) dv to signed double int
dvdropdvdroprational( dv1 -- dv1 dv1 )
dvdupdvduprational( dv1 -- dv1 dv1 )
<#dvf#>ltdvfgtrahidden( dv -- p u ) convert dv to floating pt num stg
#dvfsharpdvfrational( +dv -- 0 0 ) app stg to float output buf
dv>floordv2floorrational( dv1 -- dv2 ) floored integral value
dvfracdvfracrational( dv -- dv ) fractional component of dv
dvfrounddvfroundrational( dv1 -- dv2 ) round for floating point stg
dv>intdv2intrational( dv1 -- dv2 ) signed integral value
dvintegerdvintegerrational( -- dv ) constant, alterable before being cpl'd
dvliteraldvliteralrational( dv -- | dv ) compile/interpret ranum as a dliteral
dvm/dvmbyrational( dv1 v2 -- dv3 ) div double by sing
dvm*dvmmulrational( dv1 dv2 -- qv3 ) quad ranum product
dvmaxdvmaxrational( dv1 dv2 -- dv3 ) the larger of dv1 and dv2.
dvmindvminrational( dv1 dv2 -- dv3 ) the smaller of dv1 and dv2.
dvnegatedvnegaterational( dv1 -- dv2 ) negate dv1
dvoverdvoverrational( dv1 dv2 -- dv1 dv2 dv1 )
dvoverflowdvoverflowrational( dv -- f ) tf if dv was overflow indicator value
dvpickdvpickrational( ... n -- ... dvn )
dv>qvdv2qvrational( dv1 -- qv2 ) expand double dv1 to quad qv2
dvrandomdvrandomrational( dv1 -- dv2 ) random number in range [0,dv1)
dvreducedvreducerational( dv1 -- dv2 ) reduce by greatest common divisor
dvrolldvrollrational( ... n -- ... dvn )
dvrotdvrotrational( dv1 dv2 dv3 -- dv2 dv3 dv1 )
dv-rotdvmrotrational( dv1 dv2 dv3 -- dv3 dv1 dv2 )
dvrounddvroundrational( dv1 +dn -- dv2 ) approximation to dv1
dv^sdvpowsrational( dv1 n -- dv2 ) dv1 to the power of a sing
dv>sdv2nrational( dv -- dn ) dv to signed sing
dvsgndvsgnrational( dv -- n ) signum
dvsimplifydvsimplifyrational( dv1 +dn -- dv2 ) approximation
dvsplitdvsplitrational( dv1 -- dv2 dv3 ) integral dv2 and fractional dv3
dvsqrtdvsqrtrational( dv1 -- dv2 ) square root of a double ranum
dvswapdvswaprational( dv1 dv2 -- dv2 dv1 )
dvvariabledvvariablerational( -- p ) 'ranum' (i.e. double) variable
e^dvepowdvrational( dv1 -- dv2 ) double e to the power of dv1
lg(dv)lgdvrational( dv1 -- dv2 ) double ranum log dec.
ln(dv)lndvrational( dv1 -- dv2 ) double ranum log naturalis
s>dvs2dvrational( n -- dv ) sing int signed to double ranum
sincos(dv)sincosdvrational( dv1 -- dv2 dv3 ) sinus dv2, cosinus dv3
sin(dv)sindvrational( dv1 -- dv2 ) sinus
tg(dv)tgdvrational( dv1 -- dv2 ) tangens
v2dupv2duprational( v1 v2 -- v1 v2 v1 v2 )
v>qvv2qvrational( v1 -- qv2 ) expand sing v1 to quad qv2
    

  rational quad, for {ans} double "FLOAT"s

1/qvqvreciprahidden( dv1 -- dv2 ) abs(1 div by dv1)
atg(qv)atgqvrahidden( qv1 -- qv2 ) arcus tg
cos(qv)cosqvrahidden( qv1 -- qv2 ) cosinus
d>qvd2qvrahidden( dn -- qv ) double int signed to quad ranum
dv>uqvdv2uqvrahidden( dv1 -- qv2 ) unsigned expand double to quad qv2
e^qvepowqvrahidden( qv1 -- qv2 ) quad e to the power of qv1
ln(qv)lnqvrational( qv1 -- qv2 ) log naturalis
n>qvn2qvrahidden( n.N -- qv ) counted int trunc/signed to quad ranum
q>qvq2qvrahidden( qn -- qv ) quad int signed to quad ranum
>quadtoquadrahiddenccc( -- q d f ) convert stg to quad number
qv^qvpowqvrahidden( qv1 qv2 -- qv3 ) qv1 to the power of qv2
qv~qvaeqrahidden( qv1 qv2 -- f ) tf if q1 approx. equal to q2
qv-qvsubrahidden( qv1 qv2 -- qv3 ) subtract quad ranums
qv!qvstorerahidden( qv p -- ) store ranum qv to memory at p
qv/qvdivrahidden( qv1 qv2 -- qv3 ) divide quad ranums
qv.qvdotrahidden( qv -- ) display quad ranum
qv@qvfetchrahidden( p -- qv ) fetch ranum qv from memory at p
qv*qvmulrahidden( qv1 qv2 -- qv3 ) multiply quad ranums
qv+qvplusrahidden( qv1 qv2 -- qv3 ) add quad ranums
qv1-qvonemrahidden( qv1 -- qv2 ) subtract 1 from qv1
qv1+qvoneprahidden( qv1 -- qv2 ) add 1 to qv1
qv2/qv2divrahidden( qv1 -- qv2 ) signed divide by 2
qv2*qv2mulrahidden( qv1 -- qv2 ) multiply by 2
qv2dupqv2duprahidden( qv1 qv2 -- qv1 qv2 qv1 qv2 )
qvabsqvabsrahidden( qv1 -- qv2 ) negate if qv1 -ve
qvcmpqvcmprahidden( qv1 qv2 -- qv1 qv2 n ) signum of diff. qv1-qv2
qv>dqv2dnrahidden( qv -- dn ) quad ranum signed to double int
qvdroundqvdroundrahidden( qv1 +qn -- qv2 ) approx. qv1 to doubles' range
qvdupqvduprahidden( qv -- qv qv ) duplicate quad ranum
qv>dvqv2dvrational( qv -- dv ) reduce quad, truncate, ret double ranum
qv>fqqv2qrahidden( qv -- qn ) quad ranum floored to quad int
qvfracqvfracrahidden( qv1 -- qv2 ) fractional component of qv1
qvintegerqvintegerrahiddenccc(C qv1 -- )(X -- qv ) quad ranum integer
qvliteralqvliteralrahidden( qv -- | qv ) quad ranum literal
qvm/qvmbyrahidden( qv1 dv2 -- qv3 ) quad ranum by double
qvnegateqvnegaterahidden( qv1 -- qv2 ) negate quad ranum qv1
qvoverqvoverrahidden( qv1 qv2 -- qv1 qv2 qv1 )
qvpickqvpickrahidden+/- pick quad ranum, re {8pick}
qv>qqv2qnrahidden( qv -- qn ) quad ranum signed to quad int
qvreduceqvreducerahidden( qv1 -- qv2 ) reduce quad ranum by g.c.d.
qvrollqvrollrahidden+/- roll quad ranum, re {8roll}
qvrotqvrotrahidden( qv1 qv2 qv3 -- qv2 qv3 qv1 ) 2 qvroll
qv-rotqvmrotrahidden( qv1 qv2 qv3 -- qv3 qv1 qv2 ) -2 qvroll
qvroundqvroundrahidden( qv1 +qn -- qv2 ) approximation to qv1
-qvroundmqvroundrahidden( qv1 +qn -- qv2 ) approx. qv1 to range of a double
qv^sqvpowsrahidden( qv1 n -- qv2 ) qv1 to the power of a sing
qv>sqv2nrahidden( qv -- n ) quad ranum signed to single int
qvsgnqvsgnrahidden( qv1 -- n ) signum of a quad
qvsoverqvsoverrahidden( qv1 qv2 -- qv2 qv1 qv2 ) swap and over
qvsplitqvsplitrahidden( qv1 -- qv2 qv3 ) integral qv2 and fractional qv3
qvsqrtqvsqrtrahidden( qv1 -- qv2 ) square root of a quad
qvswapqvswaprahidden( qv1 qv2 -- qv2 qv1 )
qv>uqv?qv2uqvqrahidden( qv -- uqv f ) |qv| and sign flag
qv>vqv2vrational( qv -- v ) reduce quad, truncate, ret sing ranum
sincos(qv)sincosqvrahidden( qv1 -- qv2 qv3 ) sinus qv2, cosinus qv3
sin(qv)sinqvrahidden( qv1 -- qv2 ) sinus
s>qvs2qvrational( n -- qv ) sing int signed to quad ranum
stg>qvtodfloatrationalconvert stg to quad ranum, i.e. double "float"
tg(qv)tgqvrahidden( qv1 -- qv2 ) tangens
    

  rational cons, all sizes

0dvv0dvracons( -- dv ) 0
0qvv0qvracons( -- qv ) 0
0vv0vracons( -- v ) 0
100dvv100dvracons( -- dv ) 100
10^(1/2)casqr2n10racons( -- v )
1dvv1dvracons( -- dv ) 1
-1dvvm1dvracons( -- dv ) -1
1qvv1qvracons( -- qv ) 1
-1qvvm1qvracons( -- qv ) -1
1vv1vracons( -- v ) 1
-1vvm1vracons( -- v ) -1
2^(1/12)casqr12n2racons( -- v )
2^(1/2)casqr2n2racons( -- v )
3^(1/2)casqr2n3racons( -- v )
bernulli(v)bernullivracons( n -- v ) sing, bernulli'sche zahlen
ccacracons( -- v ) speed of light
dv.ecaedracons( -- dv ) the natural constant
dv.e^10cae10dracons( -- dv ) 10 * lim (1+1/n)^n
dv.e^6cae6dracons( -- dv ) 6 * lim (1+1/n)^n
dv.ln(10)cdvln10racons( -- dv ) double, log 10 base e
dv.ln(2)cdvln2racons( -- dv ) double, log 2 base e
dvovfdvovfracons( -- dv ) double overflow indicator
ecaeracons( -- v ) natuerliche zahl
e^10cae10racons( -- v ) 10 * lim (1+1/n)^n
e^6cae6racons( -- v ) 6 * lim (1+1/n)^n
euler-ccaecracons( -- v ) euler'sche zahl
euler(v)eulervracons( n -- v ) sing, euler'sche zahlen
k(h)cakphpracons( -- v ) CORDIC hyperbolic correction
k(t)cakptpracons( -- v ) CORDIC trigonometric correction
lg(2)calg2racons( -- v ) log 2 base 10
lg(e)calgeracons( -- v ) log e base 10
ln(10)caln10racons( -- v ) log 10 base e
ln(2)caln2racons( -- v ) log 2 base e
picapiracons( -- v ) pi, kreiszahl
qv.2/3picqv23piracons( -- qv ) quad pi*2/3
qv.2picqv2piracons( -- qv ) quad pi*2
qvovfqvovfracons( -- qv ) quad overflow indicator
qv.pi/180cqvpi180racons( -- qv ) quad pi/180, for rad<->deg conversion
qv.pi/2cqvpi2racons( -- qv ) quad pi/2
qv.pi/4cqvpi4racons( -- qv ) quad pi/4
qvrdvqvmdvracons( -- qn ) quad int limit for qvround to range of double
vovfvovfracons( -- v ) sing overflow indicator
    

  numeric data, words

-0mzeroforthcons $80000000
-0.dmzeroforthdcons "-ve zero", only sign-bit set
0.dzeroforthdcons zero
-1.dmoneforthdcons -1
blbblforthcons 32
blblblblhiddencons 8224 (double bl)
blkhead-sizepdovalblkfilesize of a per screenfile block header
bufhead-sizepdovalblkfilesize of a (kernel-)block buffer header
casehead-sizecaseheadszhidden( -- n ) size in bytes of {case:}-list header
cdt-sizecdtsizelinuxsize of channel defn storage
falsezeroforthcons 0
heaphead-sizehpheadslinuxsize of a heap/device description header
n#maxnhmaxbignummax size for counted int to stg
n#sizenhsizebignummemory requirement for num to stg conversion
pad-sizepadsizeforthsize of tmp. buffers in data-space
page-sizepagesizelinuxLinux kernel constant
place-sizeplacesizeforth( -- n ) max. stg size for -re- {place}, {+place}
sighnd-sizesighszlinuxsize of a signal hnd definition block
stat-sizestatsizelinuxsize in bytes of file-status required buffer
tib-dfttibdfthiddendefault t.i.b. location
tib-maxtibmaxhiddenstorage size of t.i.b.
trueponefigcons 1
truetrueforthcons -1
    

  local memory, data opr

{loccbforthcpl locals list, un-/initiated & comment
l!!dolxstonovocxchg 2 locals
la:dolocanovocallocate local values' memory
l-allotlallotforthlocal data-space
>loctolocforthde-/allocation
loc!!locxstolocalexchange two local values
loc'locticklocalfind a local values xt by supplied name
loc2!loc2slocalsto double local; sing -re- {to}
loc2@loc2flocalfetch double local; sing by name
(LOCAL)plocalpanslocal wordheader by supplied stg
local:locolhiddendef. a local alterable constant
localslocalsforth( -- n ) available cells for local data
locals|locbarforthcpl initiated locals list
locals?localsqforthtf if suffient no. of local cells available
loc-bodylocbodylocal>body wrt local value, ptr to disp wrt @s0 field
loc-ptrlocptrforthptr to local data-space { s0 @ loc-body @ - }
locref{locrefforthdefine locals referring list
locrmvlocrmvcompilerintermediate local values de-allocation
;lvdolocrnovocfree local space
lv>doloccnovoccpl ref to local value
lv:dolocinovocinit a local value
lv@dolocvnovocfetch interpreting defined locv.
lz:dolocznovoczero-init a local value
    

  bit-opr, sing

andaandforth( n1 n2 -- n3 ) bitwise AND sings
andxandxforth( n1 n2 n3 -- n4 ) n1 n2 AND n3 XOR
bsfbsffforthbit scan forward
bsrbsrfforthbit scan reverse
cplbcplbforthcomplement bit
invertinvertforth( n1 -- n2 ) 1-s complement
lshiftlshiftforth( n1 n2 -- n3 ) shift left
notinvertforth( n1 -- n2 ) flag inversion, bitwise invert, cpu opr
oroorforth( n1 n2 -- n3 ) bitwise OR sings
parityparityforthff if odd no of set bits in a sing
resbresb4forthreset (clear) bit
rot-lrotlforthbitwise rotate cell left
rot-rrotrforthbitwise rotate cell right
rshiftrshiftforth( n1 n2 -- n3 ) right shift
rshiftarshiftaforth( n1 n2 -- n3 ) arithmetic shift
setbsetb4forthset bit
shiftshiftforth( n1 n2 -- n3 ) shift left
tstbtstbforthtest bit
xorxxorforth( n1 n2 -- n3 ) bitwise XOR sings
    

  bit-opr, double

2andand2forth( d1 d2 -- d3 ) bitwise AND doubles
2invertdnotforth( d1 -- d2 ) bitwise complement a double
2lshiftdlshiftforth( d1 n -- d2 ) shift left a double
2notdnotfig( d1 -- d2 ) one-s complement a double
2oror2forth( d1 d2 -- d3 ) bitwise OR doubles
2rshiftdrshiftforth( d1 n -- d2 ) shift right a double
2rshiftadrshiftaforth( d1 n -- d2 ) sign preserving shift right a double
2xorxor2forth( d1 d2 -- d3 ) bitwise XOR doubles
dparitydparityforthff if odd no of set bits in a double
    

  bit-opr, quad & bignum

4notnot4forth( q1 -- q2 ) bitwise complement top 4 cells
8notnot8hidden( o1 -- o2 ) bitwise complement top 8-cells item
nandnandforthbinary AND 2 groups of cells
ninvertninvertbignum1's cpl counted int
nlshiftnlshiftbignumshift left counted int
nornorforthbinary OR 2 groups of cells
nos-4notnot4nhidden( q1 qx -- q2 qx ) bitwise complement quad @nos
nrshiftnrshiftbignum( n1.N n2 -- n2.M ) shift right counted int
nshiftnshiftbignum( n1.N n2 -- n3.N ) shift bignum +n2 left, -n2 right
nxornxorforthbinary XOR 2 groups of cells
true=ftequfig( n -- f ) tf if cell is f.i.g.-mode 'true' value
true=tequforth( n -- f ) tf if cell is ANS-mode 'true' value
    

  cpu-opr, all sizes

bsfmbsfmforth{bsf} memory
bsfrbsfrforth{bsf} register
bsrmbsrmforth{bsr} memory
bsrrbsrrforth{bsr} register
bswapbbswapforthswap bytes of a dword
cpuidcpuidfsystmcpu queries
emmsemmsfforthclr cpu mmx/fp state
femmsfemmsfnonmmxclr fp & mmx state, sync cpu
flgflgtools( -- n ) eflags, display w/ -re- {flg>smb}
?msqmsanstime in milli-seconds since host startup
rdpmcrdpmcfsystm( -- d ) read perfromance monitoring counters
tickticrootget current cpu clock count
    

  data conversion, misc.

4th>absfth2absforthptr to address
abs>4thabs2fthforthaddress to ptr
cc4thcc4thforthxec vectored control character 4th actions
c->sc2snforthl.s.byte to sing (cell)
datedate4forthsystem time in seconds
dayday4forthday of system time
d->bd2bnforthextract 8 bytes from double
defer-lkpdovarhiddenbase link of deferred words
deg>raddeg2radrational( dv1 -- dv2 ) convert degrees to radians
d->qd2qnforthdouble to quad
d>sd2snforthdouble to sing
d->sd2snforthdouble to sing
dv>ieeef2ieeerational( f1 -- d2 ) ranum to ieee format
errnoernoforthcnv error name to number
errstgerrsforthcnv err number to name
forget-lkpdovarhiddenbase link of specific forget actions
hash11hash11linuxELF standard hash figure
ieee>dvieee2frational( f1 -- d2 ) ieee to ranum format
is-caseiscaseforthccc( n1 n2 -- ) re-define item #n2 to n1
rad>degrad2degrational( dv1 -- dv2 ) convert radians to sexagesimal degrees
s->cs2cnforthsigned sing to byte
S>Ds2dnanssigned sing to double
s->ds2dnforthsigned sing to double
s->ws2wnforthsigned sing to word
tick>stic2sforthconvert cpu clock count to seconds
>time&datetotidaforthcnv dn date to time&date format
time&datetimedateforthtime & date in standard format
U>Du2dnanssing to unsigned double
u->du2dnforthsing to unsigned double
w->sw2snforthl.s.word to sing
    

  data conversion, to display

?quesforth( p - ) display numeric content of cell at ptr
.fdotfloatop( f1 -- ) 12.6.2.1427 12.6.2.1427
.dotforth( n -- ) display signed sing
$.hexdotforth( u -- ) sedecimal display unsigned sing
&.octdotforth( u -- ) octal display unsigned sing
#.decdotforth( u -- ) decimal display unsigned sing
%.bindotforth( u -- ) binary display unsigned sing
b.bdotforth( n1 n2 -- ) display n1 at radix n2
d.ddotforthdisplay signed double
df.dvdotfrational( dv -- ) display ranum in floating pt format
df.jdvdotfjrational( dv left right -- ) justified disp. fp-ranum
d.rddotrforthright aligned display signed double
dv.dvdotrational( dv -- ) display rational number
dv.jdvdotjrational( left right dv -- ) justified disp. ranum
F.fdotfloat( f1 -- ) 12.6.2.1427 12.6.2.1427
f.vdotfrational( v -- ) display ranum in floating pt format
FE.fedotfloatn.i. - 12.6.2.1513 12.6.2.1513
f.jvdotfjrational( left right v -- ) justified disp. fp-ranum
FS.fsdotfloatn.i. - 12.6.2.1613 12.6.2.1613
n.ndotbignumsend numeric bignum stg to stdout
q.qdotforthsigned display a quad
qf.qfdotrahidden( qv -- ) display quad ranum in f.p. format
qf#.qfdecdotrahidden( qv -- ) decimal display quad ranum in f.p. format
qf.jqfdotjrahidden( qv n1 n2 -- ) l/r justified display quad f.p.
q.rqdotrforth( q1 n2 -- ) signed display a quad right aligned
.rdotrforth( n1 n2 -- ) right aligned display signed sing n1
(r)prphiddenformatted output fill char(s)
s#.sdecdotforthsigned #.
.time&datedotimedateforthdisplay full size system date
u?uquesforthunsigned display numeric content of cell at ptr
u.udotforthunsigned display a sing
ud.uddotforthunsigned display a double
ud.ruddotrforthunsigned right aligned display a double
un.undotbignum( .n1.N -- ) send unsigned numeric bignum stg to stdout
uq.uqdotforthunsigned display a quad
uq.ruqdotrforth( q1 n2 -- ) unsigned right aligned display a quad
u.rudotrforthunsigned right aligned display a sing
    

  data conversion, to text

<#ltsharpforthbegin number to stg conversion
#sharpforthextract l.s. digit char from a double
#>sharpgtforthterminate number to stg conversion
c>lowerc2lowerforthconvert char to lower-case
c>upperc2upperforthconvert char to upper-case
"datesdate4forthstg w. system date
"daysday4forthstg w. day of system time
daystgdaystgforthconvert day no. to text
digitdigitforthconvert char to digit + flag
ekey>asciekey2asciforthtf & char if code in 8bit ascii+ctrls range
ekey>charekey2charforthtf & char if code in range of printing chars
flg>smbflg2smbtools( n -- p u )convert eflags bits to symbolic chars
hldhldforthptr to bot. of used number conversion buffer
hld0hld0hiddeninitial hld after <#
(n.)pndotpbignumconvert signed counted int to stg
n<#nlthbignumprepare counted int stg conversion
n#nhbignumextract l.s. digit of bignum to stg
n#>nhgtbignumfinish counted int to stg conversion
n#?nhqbignumptr and flg whether stg conversion possible
n#snhsbignumconvert bignum to numeric chars
>numbertonumberforthconvert stg to number till non-valid char
q#qsharpforthextract l.s. digit from a quad
q#>qsharpgtforthterminate quad to stg conversion
q#sqsharpsforthconvert quad to chars in {hld} buffer
representfrepresentrational( dv p u -- n flg1 flg2 ) ranum normalized text repr.
#ssharpsforthconvert a double to numeric chars
signsignfigfig-variant, sign cell 3rd from tos
SIGNasignforthsign cell on tos
s>lowers2lowerforthconvert stg to lower-case
s>uppers2upperforthconvert stg to upper-case
"timestime4forthstg w. time
"time&datestimedateforthstg w. full size system date
"timezonestz4linuxstg w. numeric 'timezone'
(un.)pundotpbignumconvert unsigned counted int to stg
    

  data conversion, to numeric

a-baseabaseforthdetermine stg to number conversion radix
a-numberanumberansconvert stg to number - ANS-mode
cc4cc!cc4thsforthsto ctrl char xec vector
cc4cc@cc4thfforthfetch ctrl char xec vector
CONVERTconvertaansconvert stg to number - ANS-mode
convertconvertfigconvert stg to number - f.i.g.-mode
convertconvertaforthconvert stg to number - ANS-mode
f-numberfnumberfigconvert stg to double - f.i.g-mode
h>ah2aforthconvert char to numeric value
holdholdforthstore char to number conversion stg buffer
nnumbernnumberbignumconvert stg to counted int
n>numberntonumberbignumconvert stg to bignum until invalid char
NUMBERanumberansconvert stg to double - ANS-mode
numberfnumberfigconvert stg to double - f.i.g-mode
numbernumberforthvectored stg to double conversion
[number]bnumberbfigf.i.g. mode stg to number conversion
[number]abnumberbforthANS mode stg to number conversion
    

  data structures disp's conversion

>bodytobodyrootptr to datafield by ix, for CREATEd words
body>lfabody2lfahiddenptr to lfa from data-"body"
cdt-flagscdtflagslinuxdisp of channel flags to channel defn ptr
cdt-fptrcdtfptrlinuxdisp of file ptr double cell to cdt ptr
cdt-xptrcdtxptrlinuxdisp of channel extn ptr to channel defn ptr
>datatodatarootptr to datafield by ix, wrt kernel-vari.
dsp>xecdsp2xechiddenxec ptr from pc-rel ref at ptr
idx>doidx2dohiddendoes>-entry per ix
idx>lfaidx2lfarootlfa from uot index
idx>pfaidx2pfahiddenpfa from uot index
idx>udsidx2udshiddendisp to base of uot
idx>uotidx2uothiddenptr to uot entry from index
idx>wididx2widhiddenindex to wordlist id
idx>xecidx2xechiddenexecution ptr from index
ifa>lfaifa2lfahiddenptr to uot index from lfa
lfa>bodylfa2bodyhiddenptr to data-"body" from lfa
lfa>ffalfa2ffahiddenptr to compileflags from lfa
lfa>headlfa2headhiddenbeginning of word-header
lfa>idxlfa2idxforthuot index from lfa
lfa>ifalfa2ifahiddenptr to uot index from lfa
lfa>mfalfa2mfahiddenmacro field from lfa
lfa>nfalfa2nfaforthptr to name from lfa
lfa>pfalfa2pfaforthptr to execution ptr from lfa
lfa>widlfa2widhiddenvocabulary linkfield
lfa>xeclfa2xechiddenexecution ptr from lfa
nfa>lfanfa2lfaforthptr to linkfield from nfa
pfa>lfapfa2lfahiddenlfa from pfa
uds>idxuds2idxhiddenindex from compiled disp to uot-ptr
uot>idxuot2idxhiddenindex from uot-ptr
wid>idxwid2idxhiddenwordlist id to index
wid>lfawid2lfahiddenword-lfa from voc-link posn
wid>topwid2tophiddenptr to top header in voc from voc-link posn
xec>idxxec2idxhiddenindex from execution ptr
xec>lfaxec2lfahiddenptr to linkfield from execution ptr
xec>uotxec2uothiddenptr to execution ptr in uot from execution ptr
    

  specific to ans-voc and environmental queries

2/shr2anssigned shift sing right by one
ADDRESS-UNIT-BITSaubenvironmentconsecutive bits per address unit
BLOCKbcoreenvironmentwordset availabilty flag
BLOCK-EXTbcorexenvironmentwordset availabilty flag
caps?capsqforthtf if text interpreting letter-case dependently
COREacoreenvironmentwordset availabilty flag
CORE-EXTacorexenvironmentwordset availabilty flag
/COUNTED-STRINGscstgenvironmentmax. length of a counted string
DATASTACK-SIZEdssenvironmentcells available for data-stack
DOUBLEdcoreenvironmentwordset availabilty flag
DOUBLE-EXTdcorexenvironmentwordset availabilty flag
ENVIRONMENT?envirqroot( p u -- .xx. f ) ans-4th environment query
errno?ernoqforthdisplay known error names
EXCEPTIONxcoreenvironment(untested, hi-level substitutes available)
EXCEPTION-EXTxcorexenvironmentwordset availabilty flag
FACILITYccoreenvironmentwordset availabilty flag
FACILITY-EXTccorexenvironmentwordset availabilty flag
FILEfcoreenvironmentwordset availabilty flag
FILE-EXTfcorexenvironmentwordset availabilty flag
FLOATINGfltingenvironmentwordset availabilty flag
FLOATING-EXTfltingxenvironmentwordset availabilty flag
FLOOREDflooredenvironmentflag whether defaul div is 'floored'
/HOLDsholdenvironmentsize of numeric stg conversion buffer
LIB4THl4eenvironmentflag, "lib4th" present
LOCALSlcoreenvironmentwordset availabilty flag
#LOCALSnlocalsenvironmentcells available for local data
LOCALS-EXTlcorexenvironmentwordset availabilty flag
MAX-CHARmxcenvironmenthighest character code
MAX-Dmxdenvironmentgreatest signed double integer value
MAX-FLOATmxfltenvironmentgreatest floating pt. integral value
MAX-Nmxnenvironmentgreatest signed single integer value
MAX-Umxuenvironmentgreatest unsigned single integer value
MAX-UDmxudenvironmentgreatest unsigned double integer value
MEMORY-ALLOCmcoreenvironmentRESIZE restricted to top alloc. block
/PADspadenvironmentsize of {pad} buffer
RETURNSTACK-CELLSrscenvironmentcells available for return-stack
SEARCH-ORDERscoreenvironmentwordset availabilty flag
SEARCH-ORDER-EXTscorexenvironmentwordset availabilty flag
signo?signoqlinuxdisplay known signal names
STACK-CELLSsssenvironmentcells available for data-stack
STRINGgcoreenvironmentwordset availabilty flag
TOOLStcoreenvironmentwordset availabilty flag
TOOLS-EXTtcorexenvironmentwordset availabilty flag
    

  editor, screen-/block-file access

1linee1lineeditorfind in curs-line
BeBeditorbackup by text len in pad
b/bbbybsystmbits per byte (8)
b/cbbyceditorbytes per character (8)
blk@blkfetchforthfetch {blk}
b/scrbbyscrfigbuffer blocks per screen(1)
CeCeditorindsert text
c/lcbylfigchars per line (64)
CLEARcleareditorfill screen w/ blanks
colcolvtget cursor column
COPYcopyeditorcopy 1st to 2nd screen
c/scrpdovaleditorchars per editor screen (1024)
DeDeditorpush line to pad
DELETEdeleteeditordel chars backward
EeEeditorblank line
edittingedingblkfilemodify screenfile access to r/w
FeFeditorfind text
FINDefindeditorfind stg at pad in screen
HeHeditorcopy line to pad
(hichar)phicharphiddenupper case char codes
IeIeditorins line from pad
Lrelisteditorre-list @{scr}
L-relimeditorlist previous @{scr}
L+relipeditorlist next @{scr}
#laghlageditorptr & count after curs
#leadhleadeditorptr & count till curs
LINElineeditorptr to line or abort-16
.LINEdotlineeditordisplay line/screen
(line)plinepeditorfetch line/screen
#lmgpdovaleditoreditor screen & printing, left margin
#locatehlocateeditorline no, curpos
(lochar)plocharphiddenlower case char codes
MeMeditormove curs
matchmatcheditorsearch mem for stg
max-lwmaxlweditormax stdout line width
-movemmoveeditorcopy from ptr to line
NeNeditornext find
outnoutforthcount of bytes sent after latest <eol>
PePeditorput text to line
#pcolpdovaleditortext to file, chars/line
#prowpdovaleditortext to file, rows/page
ReReditorreplace line from pad
r#unreditoruvari, chars count till cursor
readingrdingblkfilemodify screenfile access to r/o
#rmgpdovaleditoreditor screen & printing, right margin
rowrowvtget cursor row
rowsrowsforthcount of lines sent after latest {open}
SeSeeditorins empty line
scrscrforth'screen' no. of current screenfile
TeTeditortype and copy line to pad
tab-totabtoforthset cursor column, not less current posn
texttexteditorfetch by char delimited text to pad
-textmtexteditorfind text in stg
TILLtilleditorerase till text end
to-coltocolvtset cursor column
TOPetopeditorcursor to top left
to-rowtorowvtset cursor row
TRUNCATEtruncateeditorset size of screenfile
XeXeditordelete text
YeYeditorinsert stg
    

  sequential file access

a-closeacloseutilityclose channels 5 till end of table
appappflinuxfile open modifier, "append"
binbinfforthuseless, but ANS required file open modifier
block-lkpdovarblkfilebase link of screenfile storage blocks
cdcdfrootchange cwd
channelchannelforthid and i/o-flags
ch-cons?chconsqlinuxtf if echoing console flag set
chdirchdirflinuxchange cwd to supplied
ch-eofcheoflinuxtf if channel at eof
ch-flagschflagsflinuxchannel flags dword
ch-idchidlinuxchannel identifier
ch-namechnamefortha channel's file name
chn-numchnnumlinuxtop chan a copy of which is in supplied ch-id
ch-omodechomodeflinuxchannel open mode
chpchplinuxptr to channel definition table
chp>chanchp2chlinuxget channel no. by chp
ch-permchpermflinuxchannel permission bits
ch-pipe?chpipeqlinuxtf if pipe flag set
ch-pty?chptyqlinuxtf if pty-device flag set
ch-rnumchrnumlinuxlatest err code
ch-statchstatlinuxfetch channel state into cdt
ch-tagchtaglinuxchannel's tag no.
close-dirclosefansclose a directory-file
close-fileclosefforthclose a file
copy-filecopyfforthdirectly copy by names one file to another
crecreflinuxfile open modifier, "create"
create-dircreadlinuxcreate directory by supplied name
create-filecreafforthoverwriting open a file
ctag+ctagpsysteminc channel tag kernel vari, ret old.
cwd@cwdflinuxget current working directory path-name
delete-filedeletfforthdelete (not erase) a file
dirdirflinuxfile open modifier, "type directory"
err-chanpdovalrootchannel number of error channel
f"fqteforthfname" w/ buffer at pad
f8dirf8dirforthpath to installed suppl. lib4th library files
f8docf8docutilitypath to installed documentation files
(f8doc)pdovalutilityptr to default documentation dir
f8glof8gloutilityname of l4 glossary file
f8glsf8glsutility( -- p u ) path+name of l4 glossary file
(f8gls)pdovalutilityptr to default filename for {help}
(f8lib)pdovalutilityptr to default support library dir
faccessfaccessfdlinuxby channel test file access permissions
fd>chanfd2chlinuxsto file descriptor to channel
file-accessfaccessfforthby name test file access permissions
file>filef2fileforthdirectly copy between two files
file-positionfposfforth( n1 -- d2 er ) file-pointer by channel no.
file-sizefsizefforth( n1 -- n2 ) size of file by channel no.
FILE-STATUSafstatfansfile state by name -re- linux {file-status}
file-statusfstatflinuxfile state by name -re- ans {FILE-STATUS}
[first]pdovalblkfilebot. of 1st block buffer, 0 if unassigned
flush-fileflushfforthstore cached buffers back to file by channel no.
[fname]bfnamebforthfind file in F8DIR & PATH, ret path+file-name
fname"fnmqteforthfind file in F8DIR & PATH, ret path+file-name
f-okfokforthfile access query modifier
fopenfopenfforthopen file by fetched name
fposrefposrelinuxadjust file-ptr relative to current posn
fstatffstatflinuxfile status by channel no.
get-changetchanlinuxfetch channel description data
in-chanpdovalrootchannel number of input channel
?inputqinputforth( ch -- c f ) key/char input query by channel
is-chanischanforthcopy {work}-channel description to supplied
[limit]pdovalblkfiletop+1 of last block buffer, 0 if unassigned
llseekllseekflinuxabs/rel set posn of file-ptr (syscall)
lock-filelockflinuxlock file, prevent write access
lxfileslxfileslinuxhost definitions source-files
lxpathlxpathlinuxpath to host definitions source
max-chanmaxchanlinuxmax no. of supplied channel description tables
mcreate-dirmcreadlinuxcreate directory w/ supplied access mode
mcreate-filemcreaflinuxcreate file w/ supplied access mode
mfopenmfopenlinuxopen file w/ supplied access mode by fetched stg
mopen-filemopenflinuxopen file w/ supplied access mode by supplied stg
nblnblflinuxfile access modifier to non-blocking
new-channewchanforthget next free channel no.
nofnofflinuxfile access modifier to not following links
open-diropendirflinuxopen directory-file by supplied name
open-fileopenfforthopen a file by supplied name
open-pipeopipelinuxopen a pipe, ret i/o channels
out-chanpdovalrootchannel number of output channel
pathepathforthPATH env. vari at prog startup time
path+filepthfilelinuxfind file in PATH, ret fully qualified path
path-maxpathmaxlinuxmax len of path string
preadpreadflinuxread text at given fileptr
[prev]pdovalblkfileptr to most recently used block buffer
prt-chanpdovallinuxno. of printer channel
pwdpwdlinux( -- ) print working directory
pwritepwriteflinuxwrite text to given fileptr
read-charreadcharforthread a char from channel
read-filereadfforthread file until buffer full or <eof>
read-linereadlforthread file until <nl> or buffer full or <eof>
readlinkreadlklinuxread a linked files' source name
rename-filerenamfforthassign new name to a file by names
reposition-filereposnfforthset file ptr to supplied posn
resize-fileresizefforthtruncate file at supplied posn
r/orbyofforth( -- n ) file open mode modifier
r-okrokforth( -- n ) file access query modifier
r/wrbywfforth( -- n ) file open mode modifier
rw?rwqforth( c -- er ) whether a file is open in r/w mode
search-filesearchfforthsearch file for a string
set-chansetchanlinuxstore channel description from data-stack
source-chansourcechanforthchannel of current input source
synsynflinuxfile access modifier to blocking mode
to-chantochanforthcopy a channel description
trntrnflinuxfile access modifier to truncate after open
unlock-fileunlockflinuxunlock file from preventing write access
[use]pdovalblkfileptr to block buffer to use next
wait4'wait4tlinuxxec by name w/ temp. timeout
wait4chwait4chlinuxsys_select for any channel's input timeout
wait4fdwait4fdlinuxsys_select for any fd input timeout
wait4inwait4inlinuxsys_select for console stdin timeout
wait4tiwait4tilinuxsys_select for any channel's timeout
wait4xwait4xlinuxxec by xt w/ temp. timeout
w-closewcloseforthclose the work-channel
w/owbyofforthfile open mode modifier
w-okwokforthfile access query modifier
work-chanpdovallinuxdefault {work} channel no.
work-numworknumlinuxactual {work} no.
write-charwritecharforthwrite (multi-byte) char to channel
WRITE-FILEawritefileanswrite no. of bytes from buffer to file, ans-mode
write-filewritefileforthwrite no. of bytes from buffer to file
write-linewritelineforthwrite send string to file & append <lf> code
xg-chanxgchanforthexchange two channel descriptions
xg-ioxgiolinuxexchange stdin and stdout channel descriptions
x-ioxiorootexchange stdin,stdout,stderr w. in-chan &c.
x-okxokforthfile access query modifier
    

  block-file access

-->pdodeferroot-re- {load} next screen
[-->]bnxldbforthdft for {load} or, for immediate xec
b/bufbbybufforthbytes per buffer-block (1K)
blk>bufblk2bufblkfileptr to screenfile buffer by blk#
blk>headblk2headblkfileptr to header of screenfile block by blk#
blk>lnkblk2lnkblkfileptr to buffer-block by block-no.
blockblockforthxec.vec
(boot)pdovarblkfiledft -re- {l-load} library file
+bufplusbuffignext buffer
buf>blkbuf2blkblkfileblock no. assigned to a screenfile buffer
bufferbufferforthxec.vec
buf>headbuf2headblkfileptr to header of screenfile block by ptr
buf>lnkbuf2lnkblkfileptr to buffer-block by block-buffer ptr.
del-bufferfgbblokblkfileremove {latest} buffer block, if possible
dr?schqblkfilewhether {scr-chan} is dr0, dr1 or neither one
dr0dr0cforthactivate 1st screenfile channel
dr1dr1cforthactivate 2nd screenfile channel
empty-blkemblkblkfileinvalidate a single blockfile buffer
empty-buffersembufsforthclose scr-chan, make buffers available
firstfirstfigbot. of 1st block buffer, 0 if unassigned
flushflushforthsave updated blocks
head>blkhead2blkblkfileptr to buffer by ptr to header
head>bufhead2bufblkfileblock no. by ptr to header
ibbufibbufblkfileinitiate/install a buffer w/ 4 blocks
limitlimitfigtop+1 of last block buffer, 0 if unassigned
listelistforthlist screen
lnk>chnlnk2chnblkfilebuffer block owner channel
lnk>numlnk2numblkfilebuffer block count of buffers
lnk>taglnk2tagblkfilebuffer block owner channel's tag no.
loadpdodeferforthinput from current screenfile, -re- {using}
[load]bloadbhiddendft for deferred -re- {load}
nextbufnextbufblkfile{+buf} wrt by -re- {source-id} used blocks
offsetpdovalfigblock disp by multiple of -re- {b/scr} (1)
prevprevfigscreenfile blockbuffer currently in use
r#@rnfeditor{ r# @ } get cursor count
ro?roqblkfilequery write protection mode
rw!rwsblkfileaequivalent to f.i.g. { 0 r/w }
rw@rwfblkfileaequivalent to f.i.g. { 1 r/w }
save-bufferssbufsforthsave updated blocks, "unassign" last buffer block
scr!scrseditor{ scr ! } sto screen no.
scr@scrfeditor{ scr @ } fetch screen no.
scr-chanpdovalforthno. of screenfile channel
scrfposscrfposblkfilescr-chan file-ptr at scr@+r#@
thruthruforth{load} a range of screens, xec only
[upd]bupdbhiddendft opr for {update}
updatepdodeferforthmark buffer to save before re-useage
update?updateqblkfileflag whether blk -re- {update}d
update-offupdateoffblkfileclear screenfile buffer update flag
useusefigleast recently used screenfile blockbuffer
usingusingforthscreenfile for {load} opr.
wherewhererootshow error source, afte cpl error
    

  file or termial i/o, device independent

0mpdodeferhiddenre-display screenfile listing
acceptvacceptforth( p u -- u' ) input from stdin, edittable if terminal
crcrforthsend <lf> to stdout
-crdcrforth( f -- ) if tf send <lf> to stdout
?crqcrforth<nl> if no space left in display line
EDITpdodeferrootthe screenfile editor, dft {[edit]}
edlinedlinforth{accept}, after 1st <tab> edit text at buffer
ekeyekeyforthget input byte
ekey?ekeyqforthtest and get input byte and flag
emitemitforthsend a char to stdout
emit?emitqforthtf if stdout can emit
emit-memitmforthmultiply send a char to stdout
esc?escqforthtf if key <esc>, wait after <bl> until next
(escc)uescchiddenescape symbol for {etype}
expectexpectforthaccept max buffer size input, then terminate
(ierr)ierrhiddeninput opr. error code
(inchp)pinchpphiddenchp of latest used input channel
(ioacc)uioacchiddenreceived vt.. control chars -n.i.-
(iolink)iolinkhiddeni/o redirection linkage
keykeyforthwait until character input
key!keystoforthstore last input char back (if char-buf empty)
key?keyqforthtf if input char available
o-crodcrforth<lf> if stdout is console
(oerr)oerrhiddenoutput opr. error code
(outchp)poutchpphiddenchp of latest used output channel
(pchr)pchrhidden4 bytes ranges of printing chars
printprintforthdisplay stg, whether counted or <nul> terminated
source-idsourceidforthinput source flags
stderrstderrcforthstderr channel no.
stdinstdincforthstdin channel no.
stdin?stdinqforthtf if input from console
stdoutstdoutcforthstdout channel no.
(stimo)ustimohiddenwait4.. timeout value
(tattr)utattrhiddenmodified console attributes
(tattr-s)ustattrhiddensaved console attributes
(tib)ptibphiddenptr to terminal input buffer (t.i.b.)
typetypeforthsend a string
(vtim)uiovtimhiddenkeyboard input timeout, "VTIME" & "VMAX" values
workworkcforthwork-channel no. (for file opr's)
zprintzprintforthdisplay <nul> terminated stg
    

  terminal i/o

at-xyatxyforthhor and vert. cursor posn by chars
belbelforthnoise..
<bel>lbelgvtascii ctrl code
bsbsforthbackspace, backup cursor by one column
<bs>lbsgvtascii ctrl code
<can>lcangvtascii ctrl code
clsclsforthclear console screen & home
clscclscforthclear console screen
cons?consqforthtf if channel is console
<cr>lcrgvtascii ctrl code
<csi>lcsigvtascii ctrl code
deldelvt<bs> and delete chr at cursor posn
<del>ldelgvtascii ctrl code
echo-offechofforthsuppress kbd input echo
echo-onechonforthenable kbd input echo
?ekeyqekeyforth( -- c f ) tf if input byte available
?eolqeolforthtf if display posn grater than window width
<esc>lescgvtascii ctrl code
ffffvtform feed, <nl> for console
<ff>lffgvtascii ctrl code
g0g0vtcharacter set
[g0]pdovalvtlatest g0 character set selection
g1g1vtcharacter set
[g1]pdovalvtlatest g1 character set selection
homehomevtcursor to top left
<ht>lhtgvtascii ctrl code
in-cons?inconsqforthtf if stdin is console
inkvtinkvtset foreground colour/vt-mode
io-conssioconsforthdetermine i/o mode
io-cons?ioconsqforthquery i/o mode
kbdkbdcforthkeyboard input channel no.
kbd!kbdstoforthstore last kbd char back (if char-buf empty)
kbd'kbdtforthxec fetched name w. stdin from console
kbd-chankbdchanlinuxkeyboard channel constant
kbd-emitkbdemitforthsend a char to keyboard
kbd-idkbdidlinuxidentifier of keyboard channel
kbd-keykbdkeyforthwait until char from keyboard
kbd?keykbdqkeyforthw/ zero timeout get a char from keyboard
kbd-typekbdtypeforthsend a string to keyboard channel
?keyqkeyforth( -- c f ) tf if char available
<lf>llfgvtascii ctrl code
max-xmaxxvtmax console window width
max-xymaxxyvtconsole window size by count of chars
max-ymaxyvtmax console window height
ottyottylinuxopen stdin at tty
out-cons?outconsqforthtf if stdout is console
out-pty?outptyqlinuxtf if stdout is a pty device
pageffforthff
pty?ptyqlinuxtf if channel is a pty device
[r]pdovalvtlatest reverse video state
rsttyrsttylinuxreset stdin-console to initial state
settysettylinuxprepare stdin console to single-key input
<si>lsigvtascii ctrl code
<so>lsogvtascii ctrl code
stty-ssttyslinuxsimulates Linux cmd 'stty sane'
<sub>lsubgvtascii ctrl code
tabtabforthemit a <tab> char, adjust @out
?terminalqterminalforth( -- n ) basic keyboard input query from stdin
<vt>lvtgvtascii ctrl code
?vtqvtforthquery terminal type
vt0pdo2valvttop of console co-ordinates (-1 unset)
wait4kbdwait4kbdlinuxsys_select for keyboard stdin timeout
xyxyforthfetch cursor posn
    

  vt control

abscurabscurvtcurs addr wrt top left of screen
bgpdovalvtbackground assignation
blackpdovalvtcolour value
bluepdovalvtcolour value
cdncdnvtcursor one row down
colourvtcolourvtconsole display colour, attr, etc. (ECMA-48)
csrcsrvtset scrolling region
cupcupvtcursor one row up
cur-clftvtcursor one posn to the left
cur!cursvtsave cursor posn
cur@curfvtrestore cursor posn
cur+crgtvtcursor one posn to the right
curdcurdvtdisable cursor
curecurevtenable cursor
cyanpdovalvtcolour value
fgpdovalvtforeground assignation
greenpdovalvtcolour value
[i]pdovalvtlatest {ink} colour
magentapdovalvtcolour value
mbpdo2valvtblink
mdpdo2valvtbold
mepdo2valvtreset all vt attributes
mrpdo2valvtreverse video
nonepdovalvtnoop argument
[p]pdovalvtlatest {paper} colour
papervtpapervtset background colour/vt-mode
redpdovalvtcolour value
relcurrelcurvtcurs addr wrt top left of scrolling region
reset-paletterstpalettevtrst console colours assignations from dft
revrevvtby flag set display to non-/reversed
rev-offrevoffvtstandard mode display
rev-onrevonvtdisplay at inverse video
rsrsrootreset console to 'sane' state
sepdo2valvtnormal intensity
set-palettesetpalettevtassign a colour value
sopdo2valvthalf-bright
uepdo2valvtunderline off
uspdo2valvtunderscore
(vpal)uvpalettehiddeninitial console colours storage
vt?csiwcsivtwait for <esc>[ or <csi> vt response
vt?escwescvtwait for <esc> response to vt query
!vtpvtspvtsend a vt... decimal parameter
@vtpvtfpvtfetch a vt... decimal parameter
vtstatepdovalvtcolour, fg/bg state of main window
vt!statevtsvtsave console state
vt@statevtfvtfetch latest saved console state
whitepdovalvtcolour value
yellowpdovalvtcolour value
    

  hidden words, not for regular use

0branchzbrahiddenruntime branch if flg = 0
?0branchzdupbrahiddenruntime branch if flg = 0, else dup
0<branchmibrahiddenruntime branch if flg < 0
0>branchgtbrahiddenruntime branch if flg > 0
0-branchlebrahiddenruntime branch if flg not > 0
?1branchnzdbhiddenruntime branch and dup if flg =/= 0
a-heapaheaphiddenallocated heap memory linkage base -n.i.-
branchbranchhiddenruntime branch unconditionally
-branchnzbrahiddenruntime branch if flg =/= 0
?=branchneqbrahiddenruntime branch if @nos =/= @tos
+branchplbrahiddenruntime branch if flg not < 0
cbytescbytes4hiddencount of l.s. significant chars/cell
(d.r)pddotrphiddenstg to right aligned display a signed double
drop;sdropshiddencombined drop and ;s
r+rplushiddenfetch next cell from 2ndary subroutne level
(ud.r)puddotrphiddenstg to right aligned display an unsigned double
    

  compiler runtimes & vari

(.")pdotqtephiddenruntime display stg
(")pqtephiddenruntime ptr to stg
(-0exit)pdzexitphiddenruntime if ff leave current word
(cdpcdpnovoc{cd} runtime
(;code)pscodepassemblerruntime for 'does>'
(;code@)pscodefpassemblerruntime for '@does>'
dlitdlithiddenruntime dliteral
(?do)pqdophiddenruntime ?do
(do)pdophiddenruntime {do}
(-exit)pdexitphiddenruntime if tf leave current word
fglfglnovocforget> runtime code
(find)pfindphiddenruntime find in specified vocabulary
flitflithiddenruntime ANS dliteral
[fnpfnamephidden[fname] runtime code
(for)pforpnovocruntime ranum {FOR}
(+from)ppfrompnovocruntime ranum {+FROM}
(from)pfrompnovocruntime ranum {FROM}
(i1dointegernovoc{integer} runtime
(i2dointeger2novoc{2integer} runtime
(i4dointeger4novoc{4integer} runtime
(-leave)pmleavephiddenruntime -leave
(leave)pleavephiddenruntime leave
litlithiddenruntime literal
(+loop)pploopphiddenruntime +loop
(loop)ploopphiddenruntime loop
(next)pnextpnovocruntime ranum {NEXT}
nlitnlithiddenruntime bliteral
qlitqlithiddenruntime qliteral
(s")psqtephiddenruntime sliteral
srdpsortedpnovocby {sorted} compiled runtime
(step)psteppnovocruntime ranum {STEP}
(unloop)rdrop2hiddenruntime unloop
    

  vectored data, ptr's, words

[abort]babortbhiddendeferred {abort} dft
(accept)uaccepthiddenxec. vec
(bits)bbitsbhiddensystem flags
(block)ublockhiddenxec. vec
(bootp)ubootphiddenptr to xec's data area
(buffer)ubufferhiddenxec. vec
(can)ucanhidden<can> code
(cc4th)icc4thhiddenxec. vec
(chans)pchansphiddenptr to base of channel description tables
(cmc)ucmchiddencompiler control counter for back-patching bound
(compile)ucompilehiddenxec. vec
(dpl)pdplphiddeni/o flags
(eax)ueaxhiddeninitial reg storage
(ebp)uebphiddeninitial reg storage
(ebx)uebxhiddeninitial reg storage
(ecx)uecxhiddeninitial reg storage
(edi)uedihiddeninitial reg storage
(edx)uedxhiddeninitial reg storage
(ekey?)uekeyqhiddenxec. vec
(emit)uemithiddenxec. vec
(eof)peofphiddenreceived chars count, zero at eof
(eol)ueolhidden<eol> code
(?error)uqerrorhiddenxec. vec ?error
(error)uerrorhiddenxec. vec
(esi)uesihiddeninitial reg storage
(esp)uesphiddeninitial reg storage
(eval)uevalhiddenxec. vec
(fperm)ufpermlinuxdefault new file access permissions
(head)pheadphiddencpl head-ptr
(hi>lo)uhi2lohiddenptr to table of lower case characters
]interpretbintercompilerxec (]interpret)
interpret[interbcompilerxec (interpret[)
(locb)locbhiddenuvari, bytecount
(locn)locnhiddenuvari, items per defn count
(lo>hi)ulo2hihiddenptr to table of upper case characters
(m/mod)upmbymphiddenxec. vec
(>number)utonumhiddenxec. vec >number
(number)unumberhiddenxec. vec
(ok)upokphiddenxec. vec
(padsz)padszhiddenpads' and max+4 input stgs' sizes
(path)upathhiddenptr to PATH env. vari
(pause)upausehiddenxec vec after {wait4..} timeout
(quit)uquithiddenxec. vec
(scanwl)uscanwlhiddenxec. vec
(sighnd)sighlinuxbase of signal handlers def.blocks
(source)usourcehiddenxec.vec of {source}, dft [source]
(source-id)psourceidphiddensaved source-id
(sp!)ustosphiddenxec. vec
(#tab)pntabphiddentab spacing
(tail)ptailphiddencpl tail-ptr
(?terminal)uqterminalhiddenxec. vec ?terminal
(#tib)pntibphidden#tib storage
(tib-max)ptibmaxphiddenspace of tib
(type)utypehiddenxec. vec
#vocsnvocsforthmax no. of items in voc-stack
    

  vectored words' defaults

[0m]bm0bhiddenscr re-listing after {m} dft opr.
[accept]osaccepthiddendft accept
[block]bblockbhidden{block} default opr.
[buffer]bbufbhidden{buffer} default opr.
(code)pcodepforthterminate colon defn, continue lo-level
[ctype]bctypebhiddendft non-escaping type
[debug]bdebugbcompilerdefault (debug) opr
[edit]beditbeditor{edit} default opr.
[emit]bemitbhiddendft emit
[?error]bqerrbhiddendft ?error
[error]berrbhiddendft error
[etype]betypebhiddendft escaping type
[eval]bevalbhiddendft evaluate
[f]bfbeditor-find w/ forth voc preferrence
[interpret]binterpretbcompilerdefault (interpret) opr
[>number]btonumbhiddendft >number
[ok]bokbhiddendft ok
(q.)pqdotphidden( q sgn fmt -- ) quad to string
[quit]bquitbhiddendft quit
[scanvocs]bscanvbhiddenexecute vector by xec ptr on all wordlists
[source]bsourcebhiddendft xec vec for {source}
[squit]bsquitbhiddendft quit entry after segfault
[type]pdodeferhiddendeferred, string to stdout
    

  conditional interpreting

[0=]izeqansimmediate flag inversion, {0=}
defineddefinedforthimmediate tf if name found
[DEFINED]definedansre {defined}
[ELSE]belsebrootread input until [then] if flag to [if] was false
[FALSE]zeroansimmediate cons 0
[IF]bifbrootread input until [else], discard till [then]
if-foundiffoundrootdiscard till eol if name not found
if-nfoundifnfoundrootdiscard till eol if name found
if-trueiftruerootdiscard till eol if false flag
[THEN]bthenbrootterminate conditional input sequence [if]...
[TRUE]trueansimmediate cons -1
    

  interpreter

;semiforthterminate colon defn, clr locals, check
.(commentprootprinting comment until next ")"
'atickansfetch xec token ix by name
(parenrootin-active comment until next ")"
(*parenrootsynonym "(", comment until next ")"
.\dotbslashrootprinting comment until <eol>
\bslashrootignore input until <eol>
\\quitrootignore input until <eof>
asciicharforthfetch character value literal
bigbigrootfetch next numeric input as a bignum
?compqcompforthabort if not in permanently compiling state
cpl?cplqroottf if permanently compiling
?cspqcspforthabort if data-stack out of balance
([debug])updebugphiddenxec. vec, initially zero i.e. a noop
?deferredqdferdforthabort if xt is not of a deferred word
deferred?dferdqforthtf if xt is of a deferred word
?depthqdepthforthabort if unsufficient data on stack
dfranumrootnext numeric input is double rational num, single float
dpdpforthptr to available data-space
?errorqerrorforthabort if flag indicates an error
evaluateevaluateforthinterpret supplied string
?execqexecforthabort if not in execution of a word
executeexecuteforthexecute from uot index
-executedexecuteforthexecute from uot index if flg =/= 0
findfindforthfind by supplied ptr to name, 6.1.1550 6.1.1550
-finddfindforthfind a word's lfa by fetched name
[find]bfindbforthfind a word's lfa by stg(p,u)
fltfltfrootset numeric input mode to double ranum
-fltmfltrootfalse(!) flag if double ranum input mode
inxinfigparsed terminal input count
>inxinforthparsed terminal input count
in@infetchforthfetch {in}
includeincludeforthinput from file by <bl>-enclosed name
include?includeqforth{include} if specified word not found
include"includeqteforthinput from file by <">-terminated name
includedincludedforthinput from file by supplied name
include-fileifileforth(re dpans94) input from file by channel no.
intintfrootreset from {flt} to integer numeric input mode
interpretinterpretforthevaluate input stream
(]interpret)ubinterprethiddenxec. vec, initially zero i.e. a noop
(interpret)uinterprethiddenxec. vec
(interpret[)uinterpretbhiddenxec. vec, initially zero i.e. a noop
is?isqforthdisplay xec word of a deferred word
lcase@lcasefforthstg comparison letter case dependency flg
LCASE@lcasefforthstg comparison letter case dependency flg
lplplocallocal memory running ptr
?nullqnullforthabort-14 if 4th ptr is zero true address
o(ocommentprootcomment until next ")" if stdout is console
?pairsqpairsforthabort if stacked compile-flags dont match
performperformforthexecute from lfa
?progqprogforthabort if ptr not in program or kernel space
qfdoublerootnext numeric input is quad rational num, double float
quadquadrootfetch next numeric input as a quad integer
queryqueryforth{accept} until <lf>
;rsemirforth-re- {;} with return address adjustmt
:rcolonrforth-re- codespace adjustmt for safe return
refillrefillforthfill tib from input stream until <eof>
restore-inputrestoreinputforthrestore saved input
;ssemisforthterminate an execution sequence
save-inputsaveinputforthsave input descriptors
sfsingrootnext numeric input is single rational num
spanspanforth#tib
span@spanfforthno. of last input chars
?stackqstackforthabort if data-stack out of bounds
statestateforthcompiler/interpreter flags
state@statefforthwhether interpreting(0) or compiling(=/= 0)
#tibntibforth( -- n ) no. of chars fetched to tib
upupforthptr to next available user vari
up+upplusforthadd disp to ptr to uservari-space
    

  uninitiated, independent of L4 kernel set-up

--env-ininooproota noop dummy, initially in search order
euderudotnovocunsigned error no., message
euserustgnovocsend a text
get-cpgetcpsystmget ptr into code space, where this word returns.
getgotgetgotlinuxptr to lib's ELF global offset table
getrefgetrefbsystmrestore kernel reference
--helpihelprootminimalistic help
kmessagekmessagehiddensend message txt to STDOUT, uninitated
sigmsgsigmsglinuxsend messgae, leave msg-no. at nos
versionversionrootdisplay l4-version
--versionsversionrootlibrary version
wzowritezonovocsend asciz-string
    

  logic, all integer sizes

<lessforth( n1 n2 -- f ) tf if @tos smaller than @nos
<>nequalans( n1 n2 -- f ) ff if @tos = @nos
=equalforth( n1 n2 -- f ) tf if @tos = @nos
=/=nequalforth( n1 n2 -- f ) ff if @tos = @nos
>greaterforth( n1 n2 -- f ) tf if @tos greater than @nos
>/nltforth( n1 n2 -- f ) tf if @tos greater than @nos
-0=mzeqforthtf if only sign-bit set
?0=zeqqforth( n -- n f ) tf if n = 0
@0=zeqfforth@ 0= ; tf if cell @ptr = zero
0<zlessforth( n -- f ) tf if -ve sing
0<>zneqans( n -- f ) tf if non-zero sing
0=zeqforth( n -- f ) tf if zero item, flag inversion
0=/=zneqforth( n -- f ) tf if non-zero sing
0>zgreatforth( n -- f ) tf if @tos > 0
\<ngtforth( n1 n2 -- f ) tf if @tos smaller than @nos
0anddnghidden( n -- 0 ) replace @tos w/ 0
1ordgthidden( n -- 0 ) replace @tos w/ 0
d<dlessforthtf if double @tos smaller than @nos
D<>dneqanstf if doubles not equal
d=deqforthtf if double @tos and @nos equal
d=/=dneqforthtf if doubles not equal
d>dgreatforthtf if double @tos smaller than @nos
?d0=qdzeqforth( dn -- dn f ) tf if double @tos is zero
d0<dzlessforthtf if double @tos -ve
D0<>dzneqansff if double @tos is zero
d0=dzeqforthtf if double @tos is zero
d0=/=dzneqforthff if double @tos is zero
d0>dzgtforthtf if double @tos -ve
du<dulessforthtd if double @tos unsigned smaller than @nos
du>dugreatforthtd if double @tos unsigned smaller than @nos
l-andlandforth( n1 n2 -- f ) ; logic AND
l-orlorforth( n1 n2 -- f ) ; logic OR
n=neqbignumsigned compare two bignums
?n0=qnzeqbignumnon-destructively test counted int for zero
n0<nzltbignumtest counted int for < zero
n0=nzeqbignumtest counted int for zero
n0>nzgtbignumtest counted int for > zero
?ncmpqncmpbignumnon-destr. ret sgn(diff of two counted ints)
o0=ozeqhidden( o1 -- flg ) test eight-cells for zero
pow2?pow2qforthtf if item is a power of 2
q<qlessforth( q1 -- f ) tf if quad @tos less than @nos
q=qeqforth( q1 q2 -- f ) tf if top two quads equal
?q0=qqzeqforth( q1 -- q1 f ) non-destructive test, tf if quad = zero
q0<qzlessforth( q1 -- f ) tf if quad -ve
q0=qzeqforth( q1 -- f ) tf if quad is zero
q0>qzgreatforth( q1 -- f ) tf if quad greater than zero
qu<qulessforth( q1 -- f ) tf if unsigned quad @tos smaller than @nos
qu>qugreatforth( q1 -- f ) tf if unsigned quad @tos greater than @nos
u<ulessforth( n1 n2 -- f ) tf if unsigned @tos smaller than @nos
u>ugreaterforth( n1 n2 -- f ) tf if unsigned @tos greater than @nos
uc<uclessforth( c1 c2 -- f ) tf if unsigned byte @tos < byte @nos
?udcmpqudcmpforth( d1 d2 -- d1 d2 f ) f=(d1 u< d2)-(d2 u< d1)
?uqcmpquqcmpforth( q1 q2 -- q1 q2 f ) unsgnd compare, f=1 if q2 u< q1
withinwithinforthun/signed test 3rd w/ range of 2nd..1st
    

  memory arithmetic and logic opr

(1-)b1mbforth( p -- ) sub 1 from cell at ptr
(1+)b1pbforth( p -- ) add 1 to cell at ptr
and!andsforth( n p -- ) and to cell in memory
(d1-)bd1mbforth( p -- ) sub 1 from double cell at ptr
(d1+)bd1pbforth( p -- ) add 1 to double cell at ptr
@lshiftmlshiftforth( p n -- ) left shift cell in memory
n!+nstorepbignumstore counted int, leave advanced ptr
n@+nfetchpbignumfetch counted int, leave advanced ptr
or!orsforth( n p -- ) or to cell in memory
@rshiftmrshiftforth( p n -- ) right shift cell in memory
@rshiftamrshiftaforth( p n -- ) arithmetic shift cell in memory
xor!xorsforth( n p -- ) xor to cell in memory
    

  memory, sing

->tovans-re- {to} for "pforth" (etc)
!storeforth( n p -- ) sto sing to memory
!-storemforth( p1 -- p2 n ) pre-decrement & store dword
!!xstoforth( p1 p2 -- ) xchange cells in memory
!+storepforth( n p1 -- p2 ) store dword & post-increment
@fetchforth( p -- n ) fetch cell ("dword") from memory
@-fetchmforth( p1 -- p2 n ) nos=tos-4,tos=@kref(nos)
@!fstoforth( p1 p2 -- ) copy cell from/to memory
@+fetchpforth( p1 -- p2 n ) nos=tos+4,tos=@kref(tos)
+!plstoforth( n p -- ) add sing to cell in memory
2toto2forthstore to alterable double cons
a!astoreforth( n a -- ) sto cell to true addr
a@afetchforth( a -- n ) fetch cell from true addr
b!bstoreforth( c p -- ) sto l.s.byte of sing to memory
b!-bstoremforth( p1 -- p2 c ) pre-decrement & store byte
b!+bstorepforth( c p1 -- p2 ) store byte & post-increment
b@bfetchforth( p -- c ) fetch byte from memory
b@+bfetchpforth( p1 -- p2 c ) nos=tos+1,tos=c@kref(tos)
c!cstoreforth( c p -- ) sto char to memory
c!!cxstoforth( p1 p2 -- ) xchange bytes in memory
c!+cstorepforth( c p -- ) store char & post-increment
c@cfetchforth( p -- c ) fetch char from memory
c@!cfstoforth( p1 p2 -- ) copy byte from/to memory
c@+cfetchpforth( p1 -- p2 c ) nos=tos+1,tos=c@kref(tos)
c+!cplstoforth( c p -- ) add byte to byte in memory
m+!mplstoforth( n p -- ) sign extended add sing to double in memory
n!nstorebignumstore counted integer
n@nfetchbignumfetch counted integer
offoffforthsto 0 to ptr
ononforthsto -1 to ptr
totovforthstore sing to alterable cons
w!wstoreforth( n p -- ) sto l.s. half cell of sing to memory
w!-wstoremforth( p1 -- p2 n ) pre-decrement & store word
w!!wxstoforth( p1 p2 -- ) xchange half cells in memory
w!+wstorepforth( n p1 -- p2 ) store word & post-increment
w@wfetchforth( p -- n ) fetch half cell ("word") from memory
w@!wfstoforth( p1 p2 -- ) copy half cell from/to memory
w@+wfetchpforth( p1 -- p2 n ) nos=tos+2,tos=w@kref(tos)
    

  memory, multiple cells, strings

add-linkaddlinksystm( p1 p2 -- ) link p1 into list p2
allocateallocatemforthallocate data-space, extends into .bss section
cmovexcmoveforth( p1 p2 +u ) copy memory contents w/ ascending ptrs
cmove>cmovegtforth( p1 p2 +u ) copy memory contents w/ descending ptrs
c-xchgcxchgforth( p1 p2 +u -- ) xchange memory content
eraseeraseforth( p +u -- ) fill memory range w/ <nul> bytes
fillfillforth( p +u n -- ) fill memory range w/ supplied byte
freefreemforthlink mem back to .bss section
movemoveforth( p1 p2 +u ) copy non-overwriting
>move<movexforth( p1 p2 +u -- ) copy reversed bytes order
m>rmtorforthmem bytes to return-stack
m>smtosforthmem bytes to data-stack
readmcreadmcforth( p u u2 -- p' u' p1 u1 ) u2 chars(=bytes) from mem
readm-c/lreadmcleditor( p u -- p' u' p1 u1 ) c/l chars(=bytes) from mem
readmlreadmlforth( p u -- p' u' p1 u1 ) next line from mem
resizeresizemforthalloc/link back, w/o loss of data (as possible)
?resizeqresizemforthallocate if required for -re- {allot}
r>mrtomforthreturn-stack bytes to mem
rmv-linkrmvlinksystm( p1 p2 -- ) unlink p1 from list p2
s>mstomforthstack bytes to mem
top-mblocktopmblockforthallocate data-space, extends into .bss section
unusedunusedforth( -- n ) free space in data-memory
    

  memory, quad

4!store4forth( q1 p -- ) sto quad to memory
4!!qxstoforth( p1 p2 -- ) xchange quads in memory
4!!qxstofnonmmxxchg quad
4@fetch4forth( p -- q1 ) fetch quad from memory
    

  memory, doubles

2!twostoaans( d p -- ) sto double to mem, BIG ENDIAN (ANS!)
2!twostofig( d p -- ) sto double to mem
2!twostoforth( d p -- ) sto double to mem
2!!twoxstoforth( p1 p2 -- ) xchange doubles in memory
2!!twoxstofnonmmxxchg doubles
2@twofetchaans( p -- d ) fetch double, BIG ENDIAN (ANS!)
2@twofetchfig( p -- d ) fetch double
2@twofetchforth( p -- d ) fetch double
2@!twofstoforth( p1 p2 -- ) copy double from/to memory
2@!twofstofnonmmxcopy double
2+!twoplstoforth( d p -- ) add double to double in memory
    

  memory, vectored & miscellaneous

(bot)mbothiddenbase job true addr of .bss bottom
d!pdodeferutility( n p -- ) deferred {!}
d!!pdodeferutility( p1 p2 -- ) deferred {!!}
d@pdodeferutility( p -- n ) deferred {@}
default-isdefaultisforthre-define a deferred word's default action
d-topdtopforthptr to top of available data-space
f-heapfheaphiddenfree heap memory linkage base -n.i.-
herehereforthfetch dp, ptr to data-space
isisforthre-define a deferred word
is@isfforthdft and xec ix's by ix of a deferred word
mmapmmaplinuxmap a file into memory
mmap-chanmmapclinuxsimplified, map a file by chan into memory.
mmap-filemmapflinuxsimplified, map a file by name into memory.
mremapmremaplinux( p1 u1 u2 flg -- p3 ) change memory mapping
msyncmsynclinuxsync. memory data w/ mapped file
munmapmunmaplinuxdetach {mmap}ped file from memory
n-toppdovarbignummemtop for bignum to stg conversion
padpadforthptr to tmp. buffer in data-space
pad2pad2forthptr to tmp. string-buffer in data-space
(sstop)sstophiddenbase job true addr of .bss top
<top>utophiddentop address of user-vari space - don't read,store!
(top)mtophiddenglobal true addr of .bss top
uv@uvfetchforthfetch uvari by disp
(vbot)vbothiddenend of user area
    

  floating pt. sing numbers (per double ranum)

^fpowfloatop( f1 f2 -- f3 ) f1 to the power of f2
~faeqfloatop( f1 f2 f3 -- flg ) 12.6.2.1640 12.6.2.1640 (-?-)
<fltfloatop( f1 f2 -- flg ) 12.6.1.1460 12.6.1.1460
-fsubffloatop( f1 f2 -- f3 ) 12.6.1.1425 12.6.1.1425
!fstorefloatop( f1 p -- ) 12.6.1.1400 12.6.1.1400
/fbyfloatop( f1 f2 -- f3 ) 12.6.1.1430 12.6.1.1430
@ffetchfloatop( p -- f1 ) 12.6.1.1472 12.6.1.1472
*fmulffloatop( f1 f2 -- f3 ) 12.6.1.1410 12.6.1.1410
*/dvmulbyfloatop( f1 f2 f3 -- f4 ) mul f1 by f2 div by f3
**fpowfloatop( f1 f2 -- f3 ) 12.6.2.1415 12.6.2.1415
%dvvhfloatop( f1 f2 -- f3 ) per 100
+fplusfloatop( f1 f2 -- f3 ) 12.6.1.1420 12.6.1.1420
0<fzltfloatop( f1 -- flg ) 12.6.1.1440 12.6.1.1440
0=fzeqfloatop( f1 -- flg ) 12.6.1.1450 12.6.1.1450
1-fonemfloatop( f1 -- f2 ) subtract one
1+fonepfloatop( f1 -- f2 ) add one
2/f2byfloatop( f1 f2 -- f3 ) div by two
2*f2mulfloatop( f1 f2 -- f3 ) mul by two
ABSfabsffloatop( f1 -- f2 ) 12.6.2.1474 12.6.2.1474
ACOSfacosfloatop( f1 -- f2 ) 12.6.2.1476 12.6.2.1476
ACOSHfacoshfloatop( f1 -- f2 ) area cosh, 12.6.2.1477 12.6.2.1477
ALOGfalogffloatop( f1 -- f2 ) 12.6.2.1484 12.6.2.1484
ASINfasinfloatop( f1 -- f2 ) 12.6.2.1486 12.6.2.1486
ASINHfasinhfloatop( f1 -- f2 ) area sinh, 12.6.2.1487 12.6.2.1487
ATANfatanfloatop( f1 -- f2 ) 12.6.2.1488 12.6.2.1488
ATAN2fatan2floatop( f1 f2 -- f3 ) 12.6.2.1489 12.6.2.1489
ATANHfatanhfloatop( f1 -- f2 ) area tanh, 12.6.2.1491 12.6.2.1491
CONSTANTfconsfloatopccc( f1 -- ) 12.6.1.1492 12.6.1.1492
COSfcosffloatop( f1 -- f2 ) 12.6.2.1493 12.6.2.1493
COSHfcoshfloatop( f1 -- f2 ) area tanh, 12.6.2.1494 12.6.2.1494
DEG>RADdeg2radfloat( f1 -- f2 ) convert degrees to radians
DEPTHfdepthfloatop( -- n ) 12.6.1.1497 12.6.1.1497
D>Fdtoffloat( d1 -- f2 ) 12.6.1.1130 12.6.1.1130
DROPfdropfloatop( f1 -- ) 12.6.1.1500 12.6.1.1500
DUPfdupfloatop( f1 -- f1 f1 ) 12.6.1.1510 12.6.1.1510
ENDfendrational( -- ) terminate FOR-loop at next NEXT
EXPfexpfloatop( f1 -- f2 ) 12.6.2.1515 12.6.2.1515
EXPM1fexpm1floatop( f1 -- f2 ) 12.6.2.1516 12.6.2.1516
F^fpowfloat( f1 f2 -- f3 ) f1 to the power of f2
F~faeqfloat( f1 f2 f3 -- flg ) 12.6.2.1640 12.6.2.1640 (-?-)
F<fltfloat( f1 -- flg ) 12.6.1.1460 12.6.1.1460
F-fsubffloat( f1 f2 -- f3 ) 12.6.1.1425 12.6.1.1425
F!fstorefloat( f1 p -- ) 12.6.1.1400 12.6.1.1400
F/fbyfloat( f1 f2 -- f3 ) 12.6.1.1430 12.6.1.1430
F@ffetchfloat( p -- f1 ) 12.6.1.1472 12.6.1.1472
F*fmulffloat( f1 f2 -- f3 ) 12.6.1.1410 12.6.1.1410
F**fpowfloat( f1 f2 -- f3 ) 12.6.2.1415 12.6.2.1415
F+fplusfloat( f1 f2 -- f3 ) 12.6.1.1420 12.6.1.1420
F0<fzltfloat( f1 -- flg ) 12.6.1.1440 12.6.1.1440
F0=fzeqfloat( f1 -- flg ) 12.6.1.1450 12.6.1.1450
F1-fonemfloat( f1 -- f2 ) subtract one
F1+fonepfloat( f1 -- f2 ) add one
F2/f2byfloat( f1 f2 -- f3 ) div by two
F2*f2mulfloat( f1 f2 -- f3 ) mul by two
F2DUPf2dupfloat( f1 f2 -- f1 f2 f1 f2 )
FABSfabsffloat( f1 -- f2 ) 12.6.2.1474 12.6.2.1474
FACOSfacosfloat( f1 -- f2 ) 12.6.2.1476 12.6.2.1476
FACOSHfacoshfloat( f1 -- f2 ) area cosh, 12.6.2.1477 12.6.2.1477
FALIGNfalignans( -- ) 12.6.1.1479 12.6.1.1479
FALIGNEDfalignedans( p1 -- p2 ) 12.6.1.1483 12.6.1.1483
FALOGfalogffloat( f1 -- f2 ) 12.6.2.1484 12.6.2.1484
FASINfasinfloat( f1 -- f2 ) 12.6.2.1486 12.6.2.1486
FASINHfasinhfloat( f1 -- f2 ) area sinh, 12.6.2.1487 12.6.2.1487
FATANfatanfloat( f1 -- f2 ) 12.6.2.1488 12.6.2.1488
FATAN2fatan2float( f1 f2 -- f3 ) 12.6.2.1489 12.6.2.1489
FATANHfatanhfloat( f1 -- f2 ) area tanh, 12.6.2.1491 12.6.2.1491
FCONSTANTfconsfloatccc( f1 -- ) 12.6.1.1492 12.6.1.1492
FCOSfcosffloat( f1 -- f2 ) 12.6.2.1493 12.6.2.1493
FCOSHfcoshfloat( f1 -- f2 ) area tanh, 12.6.2.1494 12.6.2.1494
F>Dftodfloat( f1 -- d2 ) 12.6.1.1470 12.6.1.1470
FDEPTHfdepthfloat( -- n ) 12.6.1.1497 12.6.1.1497
F>DFftodffloat( f1 -- df2 ) convert float to double size
FDROPfdropfloat( f1 -- ) 12.6.1.1500 12.6.1.1500
FDUPfdupfloat( f1 -- f1 f1 ) 12.6.1.1510 12.6.1.1510
FEXPfexpfloat( f1 -- f2 ) 12.6.2.1515 12.6.2.1515
FEXPM1fexpm1float( f1 -- f2 ) 12.6.2.1516 12.6.2.1516
F>IEEEf2ieeefloat( f1 -- d2 ) ranum to ieee-754, 12.6.1.1470 12.6.1.1470
FLITERALfliteralfloat( f1 -- ) 12.6.1.1552 12.6.1.1552
FLNflnfloat( f1 -- f2 ) 12.6.2.1553 12.6.2.1553
FLNP1flnp1float( f1 -- f2 ) 12.6.2.1554 12.6.2.1554
>FLOATtofloatfloat( p u -- f1 ) 12.6.1.0558 12.6.1.0558
FLOAT+floatpans( p1 -- p2 ) 12.6.1.1555 12.6.1.1555
FLOATSfloatsans( n1 -- n2 ) mul-8 12.6.1.1556 12.6.1.1556
FLOGflogfloat( f1 -- f2 ) 12.6.2.1557 12.6.2.1557
FLOORfloorfloat( f1 -- dn ) 12.6.1.1558 12.6.1.1558
FMAXfmaxfloat( f1 f2 -- f3 ) 12.6.1.1562 12.6.1.1562
FMINfminfloat( f1 f2 -- f3 ) 12.6.1.1565 12.6.1.1565
FNEGATEfnegatefloat( f1 -- f2 ) 12.6.1.1567 12.6.1.1567
FORforrational( f1 -- ) begin a FOR .. NEXT loop
FOVERfoverfloat( f1 f2 -- f1 f2 f1 ) 12.6.1.1600 12.6.1.1600
FPICKfpickfloat( f1... n1 -- f1 ) +/- pick float
FRANDOMfrandomfloat( f1 -- f2 ) random number in range [0,f1)
FROMfromrational( f1 -- ) modify FOT-loop start
+FROMpfromrational( f1 -- ) modify FOR-loop start and limit by disp
FROTfrotfloat( f1 f2 f3 -- f2 f3 f1 ) 12.6.1.1610 12.6.1.1610
FROUNDfroundfloat( f1 -- f2 ) nearest int, 12.6.1.1612 12.6.1.1612
FSINfsinffloat( f1 -- f2 ) 12.6.2.1614 12.6.2.1614
FSINCOSfscfloat( f1 -- f2 f3 ) 12.6.2.1616 12.6.2.1616
FSINHfsinhfloat( f1 -- f2 ) hyperbelsinus, 12.6.2.1617 12.6.2.1617
FSQRTfsqrtffloat( f1 -- f2 ) 12.6.2.1618 12.6.2.1618
FSWAPfswapfloat( f1 f2 -- f2 f1 ) 12.6.1.1620 12.6.1.1620
FTANftanfloat( f1 -- f2 ) 12.6.2.1625 12.6.2.1625
FTANHftanhfloat( f1 -- f2 ) hyperbeltangens, 12.6.2.1626 12.6.2.1626
FVARIABLEfvarifloatccc( -- p ) 12.6.1.1630 12.6.1.1630
IDXfidxrational( -- f1 ) innermost level FOR-loop index
!IDXsidxrational( f1 -- ) store FOR-loop index
IEEE>Fieee2ffloat( f1 -- d2 ) ieee-754 to ranum, 12.6.1.1470 12.6.1.1470
INCfsteprational( -- f1 ) FOR-loop increment
!INCsincrational( f1 -- ) store FOR-loop increment
LIMflimrational( -- f1 ) FOR-loop limit
LITERALfliteralfloatop( f1 -- ) 12.6.1.1552 12.6.1.1552
LNflnfloatop( f1 -- f2 ) 12.6.2.1553 12.6.2.1553
LNP1flnp1floatop( f1 -- f2 ) 12.6.2.1554 12.6.2.1554
LOGflogfloatop( f1 -- f2 ) 115 115 |12.6.2.1557
MAXfmaxfloatop( f1 f2 -- f3 ) 12.6.1.1562 12.6.1.1562
MINfminfloatop( f1 f2 -- f3 ) 12.6.1.1565 12.6.1.1565
NEGATEfnegatefloatop( f1 -- f2 ) 12.6.1.1567 12.6.1.1567
NEXTnextrational( -- ) terminate a FOR .. NEXT loop
NXnxrational( n -- f1 ) n-th level FOR-loop index
@NXfnxrational( n -- p ) indext level ptr to FOR-loop ctrl. data
OVERfoverfloatop( f1 f2 -- f1 f2 f1 ) 12.6.1.1600 12.6.1.1600
PICKfpickfloatop( f1... n1 -- f1 ) +/- pick float
PRECISIONfprecfloat( -- n ) -re- {fplaces} 12.6.2.2035 12.6.2.2035
RAD>DEGrad2degfloat( f1 -- f2 ) convert radians to sexagesimal degrees
RANDOMfrandomfloatop( f1 -- f2 ) random number in range [0,f1)
REPRESENTfrepresentfloat( f1 p u -- n1 flg1 flg2 ) 12.6.1.2143 12.6.1.2143
ROTfrotfloatop( f1 f2 f3 -- f2 f3 f1 ) 12.6.1.1610 12.6.1.1610
ROUNDdvfroundfloatop( f1 -- f2 ) round to #fround digits after dp
SET-PRECISIONsprecfloat( n -- ) 12.6.2.2200 12.6.2.2200 - { to #fplaces }
SF!sfstorefloat( f1 p -- ) 12.6.2.2202 12.6.2.2202
SF@sffetchfloat( p -- f1 ) 12.6.2.2203 12.6.2.2203
SFALIGNsfalignans( -- ) 12.6.2.2204 12.6.2.2204
SFALIGNEDsfalignedans( p1 -- p2 ) 12.6.2.2206 12.6.2.2206
SFLOAT+sfloatpans( n1 -- n2 ) 12.6.2.2207 12.6.2.2207
SFLOATSsfloatsans( n1 -- n2 ) mul8 12.6.2.2208 12.6.2.2208
SINfsinffloatop( f1 -- f2 ) 12.6.2.1614 12.6.2.1614
SINCOSfscfloatop( f1 -- f2 f3 ) 12.6.2.1616 12.6.2.1616
SINHfsinhfloatop( f1 -- f2 ) hyperbelsinus, 12.6.2.1617 12.6.2.1617
SQRTfsqrtffloatop( f1 -- f2 ) 12.6.2.1618 12.6.2.1618
STEPsteprational( f1 -- ) modify FOR-loop increment
SWAPfswapfloatop( f1 f2 -- f2 f1 ) 12.6.1.1620 12.6.1.1620
TANftanfloatop( f1 -- f2 ) 12.6.2.1625 12.6.2.1625
TANHftanhfloatop( f1 -- f2 ) hyperbeltangens, 12.6.2.1626 12.6.2.1626
VARIABLEfvarifloatopccc( -- p ) 12.6.1.1630 12.6.1.1630
    

  floating pt. double numbers (per quad ranum)

2!dfstorefloatop( f1 p -- ) 12.6.2.1203 12.6.2.1203
2@dffetchfloatop( p -- df1 ) 12.6.2.1204 12.6.2.1204
2OVERdfoverfloatop( df1 df2 -- df1 df2 df1 )
2PICKdfpickfloatop( df1... n1 -- df1 ) pick double float
2ROTdfrotfloatop( df1 df2 df3 -- df2 df3 df1 )
2SWAPdfswapfloatop( df1 df2 -- df2 df1 )
D.dfdotffloatop( df1 -- ) print double float (quad ranum)
D2/qv2divfloatop( df1 df2 -- df3 ) div by two
D2*qv2mulfloatop( df1 -- df2 ) multiply by 2
DF!dfstorefloat( f1 p -- ) 12.6.2.1203 12.6.2.1203
DF.dfdotffloat( df1 -- ) print double float (quad ranum)
DF@dffetchfloat( p -- df1 ) 12.6.2.1204 12.6.2.1204
DFALIGNdfalignans( -- ) 12.6.2.1205 12.6.2.1205
DFALIGNEDdfalignedans( p1 -- p2 ) 12.6.2.1207 12.6.2.1207
DFATANHdfatanhfloat( df1 -- df2 ) area tanh double float
DF>Fdftoffloat( df1 -- f2 ) 12.6.1.1130 12.6.1.1130
>DFLOATtodfloatfloat( p u -- df2 ) convert stg to quad ranum, d"float"
DFLOAT+dfloatpans( n1 -- n2 ) 12.6.2.1208 12.6.2.1208
DFLOATSdfloatsans( n1 -- n2 ) mul-16, 12.6.2.1209 12.6.2.1209
DFOVERdfoverfloat( df1 df2 -- df1 df2 df1 )
DFPICKdfpickfloat( df1... n1 -- df1 ) pick double float
DFROTdfrotfloat( df1 df2 df3 -- df2 df3 df1 )
DFSWAPdfswapfloat( df1 df2 -- df2 df1 )
D>Sdftoffloatop( df1 -- f2 ) 12.6.1.1130 12.6.1.1130
S>Dftodffloatop( f1 -- df2 ) convert float to double size
    

  defining words

=:valdefforthstore integer to known or create new {value}
:colonforthbegin a 'colon definition'
+>pltovans-re- {to} for "pforth" (etc)
2constanttwoconsforthdefine non-alterable double constant
2integerinteger2forthimmediately compiled double cons
2valuevalue2forthdouble alterable 'constant'
2variabletwovariforth(un)initiated double variable
4constantqconstantforthdefine non-alterable quad constant
4integerinteger4forthimmediately compiled quad cons
4variableqvariforth(un)initiated quad variable
aliasaliastoolsdefining a synonymous word
associative:assoccforthcpl an {associative:} list
buildbuildhiddencpl a linked header name
case:casecoforthcpl a {case:} list
codecodeforthbegin lo-level word -useless w/ lib4th-
cons+conspforthdefine constant increment
constantconstantforthdefine non-alterable constant
createcreateforthbuild a 'variable'-type header
cstgcstg4forthdefines a counted string value
c+stgcstgpsforthappend char to stg value
deferdeferforthstored true address or ix executing vari
:forgetcolforgetforthdefine a word-specific forget-action
forget>forgetgtforthlink a word to {forket-lk} chain
headheadhiddenbuild a word header
integerintegerforthimmediately compiled cons
is-defaultisdefaultforthreset deferred word to default action
nintegernintegerbignumcounted int alterable constant
:nonamenonameforthbegin a header-less hi-level word
range:rangecforthcpl a {range:} list
:slistcolslistforthinit ref/subst-list for {substitute}
stgstg4forthdefines a string value
+topltovforthadd @tos to a value
+to-stgstgpsforthappend stg to stg value
to-stgstgsforthsto new stg value
val+valpforthalterable increment by a.u.
valuevalueforthalterable 'constant'
variablevariableforthuninitiated (set to 0) variable
vcells+cellsvpforthalterable increment by cells
vocabularyvocabularyforthdefine a vocabulary by name
wordlistwordlistforthdefine a 'wordlist'
    

  code compiler

'tickforthfetch xec token ix by name as a literal
[lbracrootdec cpl nesting level by one, interpret if < 1
[_]bcbrootsynonym [compile]/compile/POSTPONE
[,]bcompilecbrootimmediately compile from index
[;]bsemibcompilerreturn address adjustmt, -re- {;r} runtime
[:]bcolonbcompilercode-space adjustmt for safe return, by {:r}
[']tickanscpl xec token ix fetched by name
[[llbraccompilerdec cpl nesting level by two, interpret if < 1
]rbracforthenter cpl state, inc nesting level by one
]]rrbraccompilerenter structure compiling state
-0exitdzexitforthif ff leave current word
1,cpl1forthcompile byte to c-here
2,cpl2forthcompile l.s. half sing (2 bytes) to c-here
2literaladliteralanscpl ANS mode (big endian) double literal
2literaldliteralforthcpl double literal
4,cpl4forthcompile sing (4 bytes) to c-here
4literalqliteralforthcpl quad literal
ascizhascizcompilercpl next stg in asciz-mode
c[clbracrootdec cpl nesting level by one, interpret if < 1
caligncalignforthalign code-ptr up to next multiple of 4
call,c_callcompiler( -- ) call dword disp
call-by-dispcbdispcompilercpl relative calls by disp
call-by-disp?cbdispqforthquery cpl mode
call-by-uotcbuotcompilercpl indirect call by address in uot
c-allotcallotforthcode-space & module non-modifyable data
cdepthcdepthcompilerdepth of compile-stack doubles
cfaligncfalignforthalign code-ptr up to next multiple of 8
CHARcharanscpl character value literal
[CHAR]charanscompile character value literal
cmachcmaccompilerh-flg, enable macroes cpl
cmc?cmcqcompilerstate of optimizing token counter
cmc-offcmcoffrootdisable <call> to <jmp> conversion
cnaligncnalignforthalign code-ptr up to next multiple supplied sing
compilecompileforthcompile next word
-compilemcompileforthfetch name, xec if interpreting, else compile
-compile,mcompilecforthxec by index else compile
[compile]bcbforthsynonym {postpone}
compile,compilecforthcompile by supplied ix
(cp)uprevcpcompilerby {compile,} previously used code-ptr
cplcplhiddenmake compiled code permanent
cpl;csemishiddenterminate permanent code compilation
cs-depthcsdepthforth( -- n ) cpl-stack depth, less count from <colon>
cs-dropcsdropforthdrop (double) item from compile-stack
cspcspforthcompiling state saved data-stack ptr
!cspscspforthstore sp to csp
@cspfcsphiddenrestore sp from @csp
csp@cspfhiddenfetch stored sp from csp to tos
cs-pickcspickforthpick (double) item from compile-stack
cs-rollcsrollforthroll double on compile-stack
dlit,c_dlitcompiler( d -- ) cpl double literal
dliteraldliteralforthcpl double literal
dodoes,c_ddscompiler( -- ) cpl dodoes, pfa to be patched to start+2
does>doesgtforthbegin runtime part of defining word
does@>fdoesgtforthbegin runtime part of defining word
ds-pickdspickforthpick sing wrt saved data-stack
end-macrocendmacrocompilerterminate macro code-expansion cpl
exitexitfforthleave hi-level word, resolve locals
-exitdexitforthif tf leave current word
flg>headflg2headcompiler( n ix -- n ) set/clr header flag
flit,c_flitcompiler( f -- ) cpl double precision f.p. literal (n.i.)
forget,fgcommaforthlink a word to {forket-lk} chain
imedhimedcompilerh-flg, xec immediately
imed?imedqcompilertf if word (by lfa) is immediate
immediateimmediaterootset latest word to immediately executing
inifhinifcompilerh-flg, init from header fields at system startup
itld,c_itldcompiler( n -- ) load T register, mov edx,imed
itos,c_itoscompiler( -- ) mov eax,imed
itos1,c_itos1compiler( n -- ) mov TOS(1),imed
iwld,c_iwldcompiler( n -- ) load W register, mov ecx,imed
(ix)uprevixcompilerpreviously cpl'd ix
ixechixeccompilerh-flg, xec always
jccn,c_jccncompiler( -- ) jcc near disp
jccs,c_jccscompiler( -- ) jcc short disp
jmpn,c_jmpncompiler( -- ) jmp near disp
jmps,c_jmpscompiler( -- ) jmp short disp
kcall,c_kcallcompiler( disp -- ) call [dword kref (disp)]
ktos,c_ktoscompiler( disp -- ) mov eax,[kref (disp)]
ktos1,c_ktos1compiler( disp -- ) mov ecx,[kref (disp)]
ktosm,c_ktosmcompiler( -- ) mov TOS(1),ecx
lit,c_litcompiler( n -- ) cpl single literal; spush, mov eax,dword n
literalliteralforthcpl single literal
litp,c_litpcompiler( n -- ) cpl single literal, add eax,dword n
(lkindex)plkindexphiddencpl next u.o.t. index
locp,c_locpcompiler( n -- ) cpl ptr to a local "value",
locto,c_loctocompiler( -n -- ) cpl local "to",
locv,c_locvcompiler( n -- ) cpl single local "value",
mac-dispmacdispcompiler( ix -- n ) +n disp xec to start of macro code
macrocmacrocompilerbegin macro code-expansion cpl
mac-sizemacsizecompiler( ix -- n ) no. of bytes cpl'd in macro mode
nlit,c_nlitcompiler( .x. N -- ) cpl counted integer
nliteralnliteralbignumcpl multi-cell literal
no-optnooptrootmodify latest to not substituting end-ret w/ jump
nopthnoptcompilerh-flg, non-optimizing
pfaxhpfaxcompilerh-flg, pc-rel xec vector @pfa, data-field(s) follow
plocto,c_ploctocompiler( -n -- ) cpl local "+to",
plsto,c_plstocompiler( n -- n ) prep add & drop @tos to "value"
pop-iopopioforthrestore i/o from tor
POSTPONEbcbansdelay execution
push-iopushioforthsave i/o to tor, assign local tib
qlit,c_qlitcompiler( q -- ) cpl quad literal
qvlit,c_qvlitcompiler( qv -- ) cpl quad ranum literal
ret,c_retcompiler( disp -- ) return from suroutine call
sliteralsliteralforthcpl supplied stg
smudhsmudcompilerh-flg, sumudged ("find" disabled)
smudgesmudgefigtoggle find-ability of latest word
spop,c_spopcompiler( -- ) drop @nos into @tos
spush,c_spushcompiler( -- ) push @tos, free @tos for data item
spush2,c_spush2compiler( -- ) push souble @tos for double data item
sto,c_stocompiler( n -- n ) prep sto & drop @tos to "value"
szliteralszliteralforthcpl supplied <nul>-terminated stg
toggletogglefig( p c -- ) xor byte in memory - fig, reversed opr
tospull,c_tospullcompiler( -- ) TOSPULL(1), dec PS by one cell
tospush,c_tospushcompiler( -- ) TOSPUSH(1), inc PS by one cell
unsmudgeunsmudgerootenable finding of latest word
utod,c_utodcompiler( disp -- ) mov eax,[uref (disp)]
utosa,c_utosacompiler( disp -- ) add eax,[uref (disp)], add uvari
valu,c_valucompiler( n -- ) cpl "value"; spush, mov eax,[kref dword n]
varfhvarfcompilerh-flg, vari, 2nd header-field disp to dataspace
vocfhvocfcompilerh-flg, word is a vocabulary
wcashwcascompilerh-flg, search letter-case dependently, only
xcall,c_xcallcompiler( disp -- ) call [uref uv.ultab+(disp)]
xcalla,c_xcallacompiler( -- ) call [uref 4*reg+uv.ultab]
xjmp,c_xjmpcompiler( disp -- ) jmp [uref uv.ultab+(disp)]
xtos,c_xtoscompiler( disp -- ) mov eax,[uref uv.ultab+(disp)
xwflhxwflcompilerh-flg, count of parameter fields, no-exec flag
    

  program flow control

0ifnifhiddenopt, subst. { ... if else }
againagainforthterminate endless loop after BEGIN
aheadaheadforthprepare forward branch disp
backbackforthcpl backward disp to {here}
beginbeginforthbegin a repeat/until/again structure
CASEcaseansbegin a CASE decision sequence
?caseqcaseforthenter true part if @tos = @nos
DEFAULTnoopanslast alternative in CASE sequence - a noop
dodoforthbegin counted loop
?doqdoforthenter DO-loop if start =/= limit
elseelseforthenter IF "false" alternative
else;elsesforthopt, subst. { .. exit else }
ENDfendfloat( -- ) terminate FOR-loop at next NEXT
ENDCASEendcaseansterminate CASE sequence
endifendifforthterminate IF/ELSE sequence
endif;endifsforthopt, subst. { ... exit endif }
ENDOFendofansterminate OF-part in CASE sequence
enternterforthjump to after ENTRY in a BEGIN structure
-entermnterforthconditonally enter BEGIN structure at ENTRY
entryntryforthdestination after BEGIN from ENTER
FORforfloat( f1 -- ) begin FOR .. NEXT loop, set range
FROMfromfloat( f1 -- ) set FOR-loop start
+FROMpfromfloat( f1 -- ) modify FOR-loop start & limit by disp f1
iiforth( -- n ) copy loop index to tos
IDXfidxfloat( -- f1 ) innermost FOR-loop index
!IDXsidxfloat( f1 -- ) store FOR-loop index
ififforthbegin an IF/ELSE sequence
INCfstepfloat( -- f1 ) FOR-loop increment
!INCsincfloat( f1 -- ) store FOR-loop increment
jjforth( -- n ) copy 2nd order loop index to tos
leavexleavefigunconditionally leave DO-loop at next LOOP
leavexleaveforthunconditionally leave DO-loop at next LOOP
-leavedleavefigLEAVE if @tos =/= 0
liliforth( n1 -- n2 ) n1-st order loop limit to tos
LIMflimfloat( -- f1 ) FOR-loop limit
loopxloopforthterminate a DO-loop sequence
+loopploopforthLOOP by explicit increment
markmarkforthprepare back reference
NEXTnextfloat( -- ) terminate a FOR-loop
niniforth( n1 -- n2 ) n1-st order loop index to tos
NXnxfloat( n -- f1 ) n-th level FOR-loop index
@NXfnxfloat( -- p ) ptr to n-th level FOR-loop ctrl data
OFofansbegin true decision part in a CASE sequence
recurserecurseforthcall the caller
repeatrepeatforthterminate BEGIN/WHILE, loop back to BEGIN
>resolvetoresolveforthresolve forward branch
STEPstepfloat( f1 -- ) set FOR-loop increment
THENendifansterminate IF/ELSE sequence
UNLOOPunloopansat runtime discard loop control data
untiluntilforthREPEAT if @tos = 0 else leave BEGIN structure
WHILEwhileaansif @tos = 0 leave BEGIN structure
whilewhileforthif @tos = 0 leave BEGIN structure
    

  data compiler

,commaforthcompile sing (4 bytes) to data-space
"qteforthcpl stg, ret ptr to stg
alignxalignforthalign data-ptr up to next multiple of 4
allotallotforthreserve space in data-memory
b,bcommaforthcompile l.s. byte of sing to data-space
c,ccommaforthcompile char (1 byte) to data-space
c"cqteforthptr to stg
cases,caseschidden( -- ) {case:} &c, cpl ix or sing until {;}
s"sqteforthptr to 1st cahr of stg and count
slistslistsforthcpl by suppl. char dlm. ref/subst stg
slist,slistcforthcpl ref/subst stg to data-space
slist;slistsemiforthterminate list of ref/subst stg-s
slist"slistqteforthcpl by {"} delimted ref/subst stg
slit,slitcforthstore & allot string to data-space
stringstngforthcpl by supplied char delimited stg
szlit,szlitcforthallot & store <nul>-terminated stg in data-space
w,wcommaforthcompile l.s. half sing (2 bytes) to data-space
z"zqteforth<nul>-terminated stg literal
    

  assembler

16*+mp16assembler( n -- n ) { 16 * + }
8*+mp8asmhidden( n -- n ) { 8 * + }
c0-c0masmhidden( n -- n ) { $c0 - }
c0+c0pasmhidden( n -- n ) { $c0 + }
c0-8*c0m8masmhidden( n -- n ) { $c0 - 8 * }
<call>lcallgassemblerx86 op-code, call pc-rel
;CODEscodeansterminate colon defn, continue 'lo level'
end-codeendcodeassemblerterminate -re- {code} defn
<jmp>ljmpgassemblerx86 op-code, jmp near pc-rel
<jr>ljrgassemblerx86 op-code, jmp short pc-rel
<nop>lnopgassemblerx86 op-code, nop
<ret>lretgassemblerx86 op-code, ret
    

  i/o port access

iopermsysiopermlinuxsyscall, i/o permissions, interrupts
ioplsysiopllinuxset i/o priority (root user, only)
p!pslinuxstore 32bit item to port
p@pflinuxfetch 32bit item from port
pc!pcslinuxstore 8bit item to port
pc@pcflinuxfetch 8bit item from port
pc!spcsslinuxstore multiple 8bit items to port
pc@spcfslinuxfetch multiple 8bit items from port
p!spsslinuxstore multiple 32bit items to port
p@spfslinuxfetch multiple 32bit items from port
pw!pwslinuxstore 16bit item to port
pw@pwflinuxfetch 16bit item from port
pw!spwsslinuxstore multiple 16bit items to port
pw@spwfslinuxfetch multiple 16bit items from port
    

  return-stack sing, doubles, quad

2rr2forth(R d -- d )( -- d ) double from return-stack
2>Rator2ans( n1 n2 -- )(R -- n1 n2 ) push to r-stack, BIG ENDIAN
2>rtor2forth( n1 n2 -- )(R -- n2 n1 ) push double to return-stack
2R>arfrom2ans(R d -- )( -- d ) pop double from rstack,BIG ENDIAN
2r>rfrom2forth(R d -- )( -- d ) pop double from return-stack
2R@ar2fans(R d -- d )( -- d ) copy double from rstack, BIG ENDIAN
2r>>2rr2xchgforth( d1 -- d2 )(R d2 -- d1 ) ; 2r> 2swap 2>r
2rdroprdrop2forth(R dn -- ) ; 2r> 2drop
2>rrtorr2forth( d -- )(R -- d ) copy double to return-stack
2rswaprswap2forth(R d1 d2 -- d2 d1 ) ; 2r> 2r> 2swap 2>r 2>r
4rr4forth( -- q1 )(R q1 -- q1 ) copy quad from RS to DS
4>rtor4forth( -- q1 )(R q1 -- ) quad from return-stack
4r>rfrom4forth( q1 -- )(R -- q1 ) quad to RS
4rdroprdrop4forth(R q1 -- ) ; drop four cells from RS
n>rntorforthpush data-stack cells to return-stack
nr>nrfromforthpop return-stack cells to data-stack
nr@nrfetchforthcopy return-stack cells to data-stack
rrforth( -- n )(R n -- n ) push @tor to @tos
>rtorforth( n -- ) push sing to return-stack
!rstorerhidden( p -- )(R n -- ) ; r> swap !
r>rfromforth( -- n )(R n -- ) pop from ret-stack to tos
r@rforth( -- n )(R n -- n ) push @tor to @tos (ans word)
r+!rpsforth( n -- )(R n2 -- n3 ) add to @RS
rdroprdropforth(R n -- ) ; r> drop
RP!arpstoreans( p -- )(R -- ) rst returnstack-ptr to ptr
rp!rpstoreforth( -- .xx. ) restore returnstack-ptr from uvari {r0}
rp@rpfetchforthfetch returnstack-ptr
>rrtorrforth( n -- n ) copy sing to return-stack
r>>rrxchgforth( n1 -- n2 )(R n2 -- n1 ) ; r> swap >r
rswaprswapforth(R n1 n2 -- n2 n1 ) swap on returnstack
    

  data-stack doubles

2dropdrop2forth( d -- ) drop two cells
2dropddropd2forth( d1 d2 -- d1 d1 ) ; 2drop 2dup
2dupdup2forth( d -- d d ) duplicate double
2lshiftdlshiftfnonmmx2lshift
2oswaposwap2forth( d1 d2 -- d1 d1 d2 ) ; 2over 2swap
2overover2forth( d1 d2 -- d1 d2 d1 ) copy double @nos to tos
2pickpick2forth( .dd. n -- .dd. dn ) pick double
2-pickmpick2forth( dn ... d2 d1 m -- dn..d1..d2 ) ; 2store into stack
2rollroll2forth( .dd. n -- .. dn ) roll doubles
2rotrot2forth( d1 d2 d3 -- d2 d3 d1 ) roll by 2
2rotrot2fnonmmx2rot
2-rotmrot2forth( d1 d2 d3 -- d3 d1 d2 ) ; 2rot 2rot
2rotdrotd2fnonmmx2rot 2drop, duplicate 3rd on tos
2rotsrots2forth( d1 d2 d3 -- d3 d2 d1 ) ; 2rot 2swap
2rshiftdrshiftfnonmmx2rshift
2rshiftadrshiftafnonmmx2rshifta
2sdropsdrop2forth( d1 d2 -- d2 ) ; 2swap 2drop
2sdupsdup2forth( d1 d2 -- d2 d1 d1 ) ; 2swap 2dup
2sduptwosdupfnonmmx2swap 2dup
2soversover2forth( d1 d2 -- d2 d1 d2 ) ; 2swap 2over
2sovertwosoverfnonmmx2swap 2over
2srotsrot2forth( d1 d2 d3 -- d3 d2 d1 ) ; 2swap 2rot
2srotsrot2fnonmmx2swap 2rot
2swapswap2forth( d1 d2 -- d2 d1 ) exchange double @tos w/ @nos
2thirdthird2forth( d1 d2 d3 -- d1 d2 d3 d1 ) ; 2 2pick
d2dupd2dupforth( d -- d d d ) ; 2dup 2dup
    

  data-stack multiple cells

3dropdrop3forth( n1 n2 n3 -- ) ; 2drop drop
3dupdup3forth( d1 n1 -- d1 n1 d1 n1 ) ; dup 2over rot
3dupdup3fnonmmxdup 2over rot
8dropdrop8forth( o1 -- ) drop top 8 cells, quad ranum
8dupdup8forth( o1 -- o1 o1 ) dup top 8 cells item, quad ranum
8dupdup8fnonmmx4over 4over = 8 ndup
8overover8forth( o1 o2 -- o1 o2 o1 ) over 8 cells item, quad ranum
8overover8fnonmmx( o1 o2 -- o1 o2 o1 )
8pickpick8forth( .. o1 n -- .. o1 on | .. ) +/- pick 8 cells items
8rollroll8forth( on .. o1 n -- .. o1 on | o1 on .. ) roll by 8cells
8sdropsdrop8forth( o1 o2 -- o2 ) drop @nos 8-cells item
8sdropsdrop8fnonmmx( o1 o2 -- o2 )
8soversover8forth( o1 o2 -- o1 o2 o1 ) swap over quad ranums
8soversover8fnonmmx( o1 o2 -- o2 o1 o2 )
8swapswap8forth( o1 o2 -- o2 o1 ) swap 8-cells items
b->db2dnforthcombine 8 cells ls.bytes to a double
ndropndropforthdrop n cells
ndupndupforthdup n cells
nswapnswapforthswap blocks of n cells
rotd2srotd2sforth( n1 n2 n3 -- n1 n1 n2 n3 ) ; rot dup 2swap
rotd2srotd2sfnonmmx2 pick -rot, duplicate 3rd on tos
s->bs2bnforthextract 4 bytes from sing
swap2sswap2sforth( n1 n2 n3 n4 -- n4 n3 n2 n1 ) revert cells order
    

  data-stack quad

4dropdrop4forth( q1 -- ) drop 4 cells
4dupdup4forth( q1 -- q1 q1 ) duplicate quad @tos
4dupdup4fnonmmx4dup
-4dupqdup4forth( q1 -- q1 q1 | q0 ) 4dup @tos if non-zero
4overover4forth( q1 q2 -- q1 q2 q1 ) push quad @nos to tos
4overover4fnonmmx4over
4pickpick4forth( qx..qn..q0 n -- qx..qn..q0 qn) +/- pick quad
4rollroll4forth( qn .. q1 n -- .. q1 qn | q1 qn .. ) +/- roll quads
4rotrot4forth( q1 q2 q3 -- q2 q3 q1 ) rot quads
4rotrot4fnonmmx2 4roll
4-rotmrot4forth( q1 q2 q3 -- q3 q1 q2 ) reverse rot quad
4-rotmrot4fnonmmx-2 4roll
4rotdrot4dforth( q1 q2 q3 -- q2 q3 ) rot drop quads
4rotdrot4dfnonmmx2 4roll 4drop
4sdropsdrop4forth( q1 q2 -- q2 ) ; 4swap 4drop
4sdropsdrop4fnonmmx4swap 4drop
4soversover4forth( q1 q2 -- q2 q1 q2 ) ; 4swap 4over
4soversover4fnonmmx4swap 4over
4swapswap4forth( q1 q2 -- q2 q1 ) exchange top two quads
4swapswap4fnonmmx4swap
    

  data-stack sing

><xgbforth( n1 -- n2 ) swap l.s. two bytes of a sing
>|<w2bforth( n1 -- n2 ) extract l.s. two bytes of a sing
>||<d2wforth( n1 -- n2 n3 ) extract the two halves of a sing
0dropzdropforth-dup drop ; discard zero cell @tos
2rotdrotd2forth( d1 d2 d3 -- d2 d3 ) ; 2rot 2drop
alignedalignedforthalign sing up to next multiple of 4
boundsboundsforth( n1 n2 -- n1+n2 n1 ) ; over + swap
b->sb2snforthcombine 4 cells ls.bytes to a sing
ddupddupforth( n -- n n n ) ; dup dup
depthdepthforth( -- n ) count of cells on data-stack
-depthmdepthforth( -- n ) cells free in data-stack
dropdropforth( n -- ) discard cell @tos
-dropmdropforthdup 0= -dup 2drop ; discard non-zero @tos
dropddropdforth( n1 n2 -- n1 n1 ) ; drop dup
dupcdupforth( n -- n n ) duplicate @tos, { 0 pick }
-dupqdupforth( n | 0 -- n n | 0 ) dup @tos if non-zero
?DUPqdupans( n -- n n | 0 ) dup if dup endif ; {-dup}
nalignednalignedforthalign sing up to next multiple of supplied sing
NIPsdropans( n1 n2 -- n2 ) ; swap drop
oswaposwapforth( n1 n2 -- n1 n1 n2 ) ; over swap
overoverforth( n1 n2 -- n1 n2 n1 ) copy @nos to tos
packpackforthbyte to packed nib
palignedpalignplinuxpage align to next multiple of page size
paligned-palignmlinuxpage align (truncate)
pickpickforth( .xx. n -- .xx. xn ) fetch cell wrt tos
-pickmpickforth( nn ... n2 n1 m -- nn..n1..n2 ) ; store into stack
rollrollforth( .xx. n -- .. xn ) roll cells
rotrotforth( n1 n2 n3 -- n2 n3 n1 ) 2 roll
-rotmrotforth( n1 n2 n3 -- n3 n2 n1 ) reverse rot, { -2 roll }
rotdrotdforth( n1 n2 n3 -- n2 n3 ) ; rot drop
rotsrotsforth( n1 n2 n3 -- n2 n1 n3 ) ; rot swap
sdropsdropforth( n1 n2 -- n2 ) ; swap drop (a 'nip')
sdupsdupforth( n1 n2 -- n2 n1 n1 ) ; swap dup
soversoverforth( n1 n2 -- n2 n1 n2 ) ; swap over (a 'tuck')
sp>fspstoreforth( .xx. -- ) clr data-stack
SP!aspstoreans( p -- ) set datastack-ptr to kref'd supplied value
sp!fspstorefig( -- .xx. ) rst datastack-ptr from uvari {r0}
sp!spstoreforth( .. -- .. ) vectored to fig or ans mode, dft fig
sp@spfetchforthfetch datastack-ptr
srotsrotforth( n1 n2 n3 -- n3 n2 n1 ) ; swap rot
swapswapforth( n1 n2 -- n2 n1 ) exchange sings @tos w/ @nos
swap-swsubforth{ swap - } ; reversed cells subtract
swapnswapnforthswap tos w. n-th cell
thirdthirdforth( n1 n2 n3 -- n1 n2 n3 n1 ) ; 2 pick
TUCKsoverans( n1 n2 -- n2 n1 n2 ) ; swap over
unpackunpackforthpacked nib to byte
wswapwswapforth( n1 -- n2 ) swap hi & lo half of cell @tos
    

  text, chars data, words

."dotquoteforthdisplay string
1/strings1stringforthadjust stg parameters by 1
blankblanksforth( p +u -- ) fill memory w. blanks
blanksblanksfig( p +u -- ) fill memory w. blanks
+blankspblanksforthright align a string by blanks
bl.rbldotrforth( p n1 n2 -- p n1 ) right algn'd fill w/ leading <bl>s
bslicebsliceforthstring slice by byte positions
can?canqforthtest input for <can> sequence
comparecompareforthcompare two stgs
COUNTcountans( p1 -- p2 u ) chars(bytes?) count of a counted string
countccountforth( p1 -- p2 u ) ptr to 1st char and count
csearchcsearchforthsearch by supplied char delimited stg
cslicecsliceforthstring slice by chars
e\stgestgforthconvert escaped chars in stg
encloseenclosefigisolate a word from tib -?-
encloseenclose4forthisolate a word from tib -?-
#enumnenumforthcount of asciz stg in a slist
enum?enumqforthlist asciz stgs of enum-list
enum@enumfforthfind stg by item no. in list
enum#enumnforthfind no. of asciz stg in list
lc-dependlcdependforthstg comparison in letter case dependent mode
lc-ignorelcignorerootstg comparison in letter case independent mode
LC-IGNORElcignorerootstg comparison in letter case independent mode
parseparseforthisolate input field by (trailing) delimiter
parsecparsecforthparse from supplied string
placeplaceforth( p1 +u1 p2 -- ) store stg to supplied buffer
+placepplaceforth( p1 n p2 -- ) pre-/append stg in memory
printing?printingqforthtf if entire stg is printing chars
replacereplaceforthreplace text section in a string
rscanrscanforthreverse scan stg for character
rskiprskipforthreverse skip characters from stg
s=compareforthcompare always case dependently
s=seqforth-re- {compare}, always case dependently
scanscanforthscan stg for character
searchsearchforthsearch for a string in memory
skipskipforthskip characters from stg
spacespaceforthsend a blank space
spacesspacesforthmultiply send a blank space
sslicessliceforthstring slice by enclosing strings
/stringsstringforthadjust stg parameters
substitutesubstituteforthsubstitute text from -re- {:slist}s
-trailingmtrailingforthtruncate stg from trailing blanks
wordxwordfigfetch text enclosed by supplied char to {here}
wordXWORDforthfetch text enclosed by supplied char, ret ptr
zcountzcountforth( p1 -- p2 u ) {count} wrt <nul>-terminated stg
-zeroesmzeroesrational( p u -- p u' ) trucate trailing zeroes
    

  utilitiy words

adumpadumptoolsdump from true address
[all-find]ballfindbutility{find} by counted stg trough all vocabularies
all-findallfindutility{find} trough all vocabularies
all-wordsallwordsutility{vlist} all vocabularies
bdumpbdumptoolsdump next, towards preceding addresses
#dcmhdcmtoolsdecompile at given ptr
dumpdumpforthdump memory at ptr
dumpadumpatoolsdump at ptr, display true addr.
favpdodeferhidden{find}-mode, internal to {help}
helphelproothelp-text from glossary
hvhvstackroot{help} mode modifier
id.iddotforthdisplay a word's name by lfa or ix
[locdef]blocdefbhidden[_] also [_] local definitions
namenamehiddenfetch a <bl>-enclosed filename, { bl word count }
ndumpndumptoolsdump next, towards ascending addr.
precedespdodeferutility{ x1 x2 -- f ) {sort} relation
quickquickutilitysort datafield
randomrandomutility;uu crea 0, {'random'}, random, utility ;
randomizerandomizeutility;uu crea 0, {'randomize'}, randomize, utility ;
rdumprdumptoolsdump again, same range
.rsdotrstoolsdisplay returnstack content
[rs]dotrsitoolsimmediate {.rs}, displaying returnstack
snseetools8 times {#see}
.sdotsforthdispay datastack content
[s]dotsitoolsimmediate {.s}, displaying datastack
seeseeforthde-compiler
#seehseetoolscontinue decompiling at @fld
seedpdovarutilityrandom, quad vari 'seed'
selectedselectedforthccc{ -- ) activate {words} selection
(selected)pdodeferutility{ .xx. -- .xx. ) {words} selection
[selected]pdodeferutility{ .xx. n lfa -- .xx. n lfa ) {words}
shshrootxec a shell command
sh|shprootxec shell cmd, pipe output to buf
sh-argppdovarsystmshell command arguments ptr's
sortsortutilitytag sort array
sortedsortedutilitytag sort array by relation name
tdumptdumptoolsdump, don't store ptrs
vvaurootdisplay which wordlist a word is in
vlistvlistforthsequentially list context vocabulary
voc.vocdotutilityby lfa display which wordlist a word is in
vocsvocsrootdisplay all def'd voc-names
whichwhichtoolsdisplay path+file if in L4 path
wordswordsforthsorted list context vocabulary
    

  vocabularies, relating opr

alsoalsorootpush vocs in search order one posn up
ansansforthforth-voc, words specific to ANS-4th
asm-hiddenasmhiddenassemblerroot-voc, native code cpl. words
assemblerassemblerrootroot-voc, native code cpl. words
bignumbignumforthforth-voc, unlimited praecision integers
blkfileblkfileforthforth-voc, block-file special words
compilercompilerrootroot-voc, cpl control
consraconsrationalrational-voc, all sizes' constants
contextcontextforth1st wordlist in search order
currentcurrentforthcurrent defining vocabulary
definitionsdefinitionsroot@current to ocurrent, @context to current
editoreditorfigfig-forth-voc, editting
environmentenvironmenthiddenhidden-voc, ansi-ish environment queries
figfigforthforth-voc, words specific f.i.g.-style 4th
FLOATfloatansans-voc, real numbers
float-opfloatopfloat{FLOAT}-subvoc w. un-praefixed names
forthforthrootroot-voc, main
forth-wordlistforthwlrootwid of {forth}
get-currentgcurrentroot@current
GET-ORDERgorderanscontent + count of voc-stack
get-vocflagsgvocflagshiddenfetch vocabulary-specific flags at voc-stack
get-vocsgetvocsrootfetch all wid-s + count from voc-stack
hiddenrahiddenrationalrational-voc, support and quad ranum
hiddenhiddenrootroot-voc, used within other words
lastlastuforthglobal last words nfa in dictionary
latestlatestforthlast words nfa in {current} voc.
linuxlinuxrootroot-voc, host access
locallocalhiddenhidden-voc, local memory control & names
non-mmxnonmmxforthforth-voc, non-mmx substitutes
novocnovocsystmsystem-voc, non-executeable, dummy names
ocontextocontexthiddenprevious {context}, 2nd in search order
ocurrentocurrenthiddenprevious {current}
onlyonlyrootminimal wordset
orderorderrootdisplay vocabulary names as in search order
order?orderqrootitem no of stacked voc by ix, or -1
prevdefprevdefrootrestore previous {current}
previouspreviousrootpop and discard context voc fron voc-stack
rationalrationalrootroot-voc, real numbers
rootrootrootbasic voc, essential words, linkage base
root-wordlistrootwlhiddenwid of {root}
rvocrvocrootrestore previous {context}
SEARCH-WORDLISTswlistansfind a name in given wordlist
set-currentscurrentrootstore wid to {current}
set-ordersorderrootstore entire search order
set-vocflagssvocflagshidden(re)store vocabulary-specific flags at voc-stack
set-vocssetvocsroot(re)store vocabulary ptrs at voc-stack
systemsystmrootroot-voc, hardware specific
testvoctestvochiddenhidden-voc, (praeliminary tests)
toolstoolsforthforth-voc, debugging
utilutilityforthforth-voc, forth utiliy words
voc-linkvoclinkforthwordlists and vocabularies link-ptr
vtvtforthforth-voc, vt..-control
widthwidthforthmax count of a 4th name -n.i.-
WORDLIST?wordlqansitem no of stacked wordlist by wid, or -1
wvocwvocutilityvocabulary link by lfa of a word
wvoc-rwvocrutility2ndary vocabulary link by lfa of a word
    

  forth, other words...

abortpdodeferrootdeferred {abort}
beepbeepforthcontrollable noise..
#casencaseforthcase-list index by which a word was called
#casesncasesforthitems in a {case:}, {range:}, {associative:} list
cellpfourforthcount of bytes per cell
--env-inif8inisystmevluate F8INI env vari
errorerrorvrootvectored {error}, dft deferred {<error>}
<error>pdodeferrootdeferred, dft {[error]}
fldufldforthuser vari in dump, else free
noopnooprootno action, just <ret>
quitquitrootouter interpreter, exit from loadfiles
scanvocsscanvocshiddenexecute a vector by ix on all wordlists
scanwlistscanwlisthiddenexecute a vector on stacked wordlists
sourcesourceforthcurrent input source descriptor
tasktaskforthtraditionally the forth kernel top word...
    

  linux specific, system

alarmcalarmforthsend alarm signal after given time in seconds
(alarm)pdodeferlinuxSIGALRM redirection, dft { .s }
(argc)argchiddenprogram's arguments count
(argn)argnhiddeninternal, 2nd-ary args count
argpargpphiddenptr to args to program
(argp)argphiddenptr to args to program
(args)argshidden1st in-active arg#
argstgargstglinuxprog args by no.
(aux)pauxphiddeni/o flags
envpenvpphiddenptr to program's environmental vari
envstgenvstglinuxenv vari by no.
fcntlcfcntllinuxsyscall, files acces &c
getenvgtenvlinuxenv vari by strg
gid!gidslinuxset process group id
gid@gidflinuxfetch process group id
int-ptraceintptracesystmbreakpoint for lo-level debugging
ioctlcioctllinuxsyscall, limited i/o ports range
iomodeiomodelinuxcheck and (re)set i/o-channel flags
mm-ammalinuxMAP_ANONYMOUS 0x20, don't use a file
mm-dmmdlinuxMAP_DENYWRITE 0x0800, ETXTBSY
mm-emmelinuxMAP_EXECUTABLE 0x1000, mark it as an executable
mm-fmmflinuxMAP_FIXED 0x10 Interpret addr exactly, fail otherwise
mm-gmmglinuxMAP_GROWSDOWN 0x0100, stack-like segment
mm-lmmllinuxMAP_LOCKED 0x2000, pages are locked
mm-nmmnlinuxMAP_NORESERVE 0x4000, don't check for reservations
mm-pmmplinuxMAP_PRIVATE 0x02, Changes are private
mm-smmslinuxMAP_SHARED 0x01, Share changes
mprotectmprotlinuxmemory access permissions
mr-fmrflinuxMREMAP_FIXED 2
mr-mmrmlinuxMREMAP_MAYMOVE 1
ms-amsalinuxMS_ASYNC 1, sync memory asynchronously
ms-imsilinuxMS_INVALIDATE 2, invalidate the caches
ms-smsslinuxMS_SYNC 4, synchronous memory sync
pid@pidflinuxfetch own process id
prot-rprotrlinuxbitmask to disabling read-protection
prot-wprotwlinuxbitmask to disabling write-protection
prot-xprotxlinuxbitmask to disabling xec-protection
sleepsleepslinuxhalt caller for given time in seconds
sleep-msleepmlinuxhalt caller for given time in microseconds
sleep-nnsleeplinuxhalt caller for given time in nano- and seconds
(sys)psysplinuxfind syscall-no. by name
[sys]bsysblinuxexecute syscall by namestring
syscallscalllinuxsystem call by number
syskillsyskilllinuxsend signal
uid!uidslinuxset process user id
uid@uidflinuxfetch process user id
umaskumaskflinuxglobally set new files default access mode
umask?umaskqlinuxread file creation permissions mask
wdw-lkpdovarhiddendouble linkage of window defn's
    

  system related words

--slslrootactive initial args terminator, no-op
#!hbrootbegin scripting marker, synonym {include}
4th-idfthidrootinitial job-id
abort"abtqteforthif tf abort and prnt message
anewmarkerans{marker}, for 'common useage' compatibility...
byebyerootxit program w. 0 err code
bye-rbyerlinuxxit program with code n
c0c0forthptr to base of code-space
casedepcasedepcompilerset latest word to case-dependent find mode
c-fencecfenceforthptr to fenced code-space
c-herechereforthptr to available code-space
cpcpforthstorage of ptr into code-space
.cpudotcpuforthdisplay cpu type
ctagpdovarlinuxglobal channel open tag
c-topctopforthptr to top of available code-space
d0d0forthptr to base of data-space
data?dataqhiddentf if ptr points to data space
depth?depthqforthtf if sufficient data on stack
emptyemptyforthforget all above fence
err-iderridlinuxchannel-id of error channel
f8inif8inisystmevluate F8INI env vari
fencefence4forthptr to fenced data-space
!fencestofenceforthstore current dictionary-ptrs to fence
fence!fencesforthstore @tos to fence-ptrs
fence@fencefforthset fence-values from supplied data
forgetforgetforthforget name and all newer words
i-fenceifenceforthfenced no. next to rsp u.o.t. index
iforgetiforgethiddenforget by ix
in-idinidlinuxchannel-id of input channel
kernel?kernelqhiddentf if ptr points to kernel space
kprog?kprogqhiddentf if ptr points to kernel or program space
lib4thlib4throotdisplay l4 cpl date
lxstglxstglinuxcontrol strings by indices
markermarkerforthsave/restore current dictionary ptrs
messagemessageforthdisplay system message
message?messageqforthdisplay system message if arg =/= 0
msmsforthhalt caller for given time in milliseconds
msgstgmsgstgforthfetch system message stg
mtlockmtlocksystmlock int's for block opr, enable ports access
mtunlockmtunlocksystmun-lock int's, disable ports access
null?nullqhiddentf if 4th ptr is zero true address
out-idoutidlinuxchannel-id of output channel
pausecpausesystemenable re-scheduling of jobs from @(pause)
[pause]bpausebsystmdft {pause}
pop4thpop4thsystm(R regs -- ) rst saved cpu-regs -re- {push4th}
prog?progqhiddentf if ptr points to program space
push4thpush4thsystm(R -- regs ) save cpu regs used by L4 kernel
r0r0forthptr to return-stack bottom
real-userruserrootset process effective to real user id
s0s0forthptr to data-stack bottom
set-calsetcalhiddencalibrate timer, find cpu clock rate
sforgetsforgethiddenforget by supplied string and top ix
signosignolinuxconvert signal name to number
sigstgsigslinuxconvert signal number to name
ssss4rootfor #!-execution after exec. name
static?staticqsystmtf if prog statically linked
syssyslinuxexecute syscall by name
termetermlinuxTERM env vari
tibtibforthptr to terminal input buffer
tib>dfttib2dftrootreset t.i.b. to default location
ti-calticalforthmeasured cpu clock rate
(tick)ptickphiddencpu-clocks per second
timetime4forthsyscall gettimeofday
timezonetz4linux'timezone' figure from <gettimeofday>
uc-mapuclmlinuxmap keyboard input to lower chars
uc-unmapuclulinuxdo not map keyboard input to lower chars
udisp?udispqforth( n -- n f ) uot disp range check
(ulink)plinkphiddenuvari link
(uot)ultabhidden"user offset table" 4th words' true xec addr.
versversroot4 bytes numeric library version
waitsleepsforthwait given no. of seconds
work-idworkidlinuxwork-channel identifier
xec?xecqforth( n -- a f ) xec-addr from ix/ptr
xlockxlocksystmexec word w. int's locked
    

  novoc, header-less or not implemented/not complete

alcjoballocjoblinux-/-
blkblkforthscreenfile block number -n.i.-
blwBLWORDnovoc{ bl word find }, kernel only
bwfblwfnovoc{ bl word find }, kernel only
(chccasecnovoc( -- p ) build named list
c+sctpsnovoc{c+stg} runtime
(dadoassocnovoc( n1 p -- n2 ) {associative:} runtime
(dcdocasecnovoc( ix p -- xx ) {case:} runtime
(ddddinovoc( n1 p -- n2 ) {is-default} runtime
ddfdodfernovocxec a deferred word
ddkpdodefernovocxec a kernel-deferred word
ddododoesnovocxec <pfax>-words
df?dfdernovocundef'd deferred word error if ff
dfgdfdfgnovocdft forget action for deferred word
(didfinovoc( n1 p -- n2 ) {default-is} runtime
(drdorangecnovoc( n1 p -- n2 ) {range:} runtime
dvapdovarnovocpfax'ed value
dvodovocnovocvocabulary
ekmerkmsgnovocuninitiated error message
esmersmsgnovocsigned error no., message
eumerumsgnovoc4th message
fgafganovoc{alias} forget-handler
fgbfgbnovocscreenfile buffer blocks forget handler
(icdoiscnovoc( n1 n2 ix -- ) {iscase} runtime
(isdoisnovoc( n1 p -- n2 ) {is} runtime
[kbbkbdtnovoc{ kbd' name } xec name w. stdin from console
kb]kbdtbnovoc{ kbd' name } xec name w. stdin from console
(kcpdocasecnovoc( ix p -- xx ) kernel-{case:} runtime
ndfndferdnovocundef'd deferred word error
n.inimpnovoc'not implemented' in kernel
sgbrsigbnovocexitting signals hnd
sgtrsigtnovocmessaging/lib4th active signal hnd
tstsnovoc{to-stg} runtime
t+stpsnovoc{+to-stg} runtime
ucopyusercopyhiddencopy user-vari from owner to cloned job
(vlpdovalnovocfetch a kernel-def'd value
(vrpdovarnovocfetch a kernel-def'd vari
<withltwithforthn.i. (defn rules inheritage, re idx>do)

by [ name | topic | voc ] [ glos | files | xref ] [ notation | dpans94 | syscalls ] [ bot | top ]