\ run-time routine headers

\ Authors: Anton Ertl, Bernd Paysan, David Kühling
\ Copyright (C) 1997,1998,2002,2003,2006,2007,2010,2013,2015,2016,2019,2021,2023 Free Software Foundation, Inc.

\ This file is part of Gforth.

\ Gforth is free software; you can redistribute it and/or
\ modify it under the terms of the GNU General Public License
\ as published by the Free Software Foundation, either version 3
\ of the License, or (at your option) any later version.

\ This program is distributed in the hope that it will be useful,
\ but WITHOUT ANY WARRANTY; without even the implied warranty of
\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
\ GNU General Public License for more details.

\ You should have received a copy of the GNU General Public License
\ along with this program. If not, see http://www.gnu.org/licenses/.

-2 Doer: :docol
-3 Doer: :docon
-3 Doer: :doacon
-4 Doer: :dovar
-5 Doer: :douser
-6 Doer: :dodefer
-7 Doer: :dofield
-8 Doer: :dovalue
-9 Doer: :dodoes
-9 Doer: :dodoes1
-9 Doer: :dodoes2
-9 Doer: :dodoes3
-9 Doer: :dodoes4
-9 Doer: :dodoes5
-9 Doer: :dodoes6
-9 Doer: :dodoes7
-9 Doer: :dodoes8
-9 Doer: :dodoes9
-&10 Doer: :doabicode
-&11 Doer: :do;abicode
-&2 first-primitive
\ this does not work for (at least) (DODOES),
\ so the following routines are commented out
 0 [if]
159 0 #loc prim Primitive (docol)
174 0 #loc prim Primitive (docon)
178 0 #loc prim Primitive (dovar)
182 0 #loc prim Primitive (douser)
186 0 #loc prim Primitive (dodefer)
192 0 #loc prim Primitive (dofield)
196 0 #loc prim Primitive (dovalue)
200 0 #loc prim Primitive (dodoes)
206 0 #loc prim Primitive (doabicode)
213 0 #loc prim Primitive (do;abicode)
 [endif]
10 groupadd
group  control
225 0 #loc prim Primitive noop
229 0 #loc prim Primitive call
244 0 #loc prim Primitive execute
253 0 #loc prim Primitive perform
262 0 #loc prim Primitive ;s
266 0 #loc prim Primitive execute-;s
275 0 #loc prim Primitive unloop
280 0 #loc prim Primitive lit-perform
285 0 #loc prim Primitive does-xt
9 groupadd
has? glocals [IF]
299 0 #loc prim Primitive branch-lp+!#
1 groupadd
[THEN]
307 0 #loc prim Primitive branch
335 0 #loc prim Primitive ?branch
2 groupadd
has? glocals [IF]
335 0 #loc prim Primitive ?branch-lp+!#
1 groupadd
[THEN]
0 groupadd
has? xconds [IF]
348 0 #loc prim Primitive ?dup-?branch
357 0 #loc prim Primitive ?dup-0=-?branch
2 groupadd
[THEN]
has? skiploopprims 0= [IF]
368 0 #loc prim Primitive (next)
1 groupadd
has? glocals [IF]
368 0 #loc prim Primitive (next)-lp+!#
1 groupadd
[THEN]
375 0 #loc prim Primitive (loop)
1 groupadd
has? glocals [IF]
375 0 #loc prim Primitive (loop)-lp+!#
1 groupadd
[THEN]
383 0 #loc prim Primitive (+loop)
1 groupadd
has? glocals [IF]
383 0 #loc prim Primitive (+loop)-lp+!#
1 groupadd
[THEN]
0 groupadd
has? xconds [IF]
411 0 #loc prim Primitive (-loop)
1 groupadd
has? glocals [IF]
411 0 #loc prim Primitive (-loop)-lp+!#
1 groupadd
[THEN]
416 0 #loc prim Primitive (/loop)
1 groupadd
has? glocals [IF]
416 0 #loc prim Primitive (/loop)-lp+!#
1 groupadd
[THEN]
421 0 #loc prim Primitive (s+loop)
1 groupadd
has? glocals [IF]
421 0 #loc prim Primitive (s+loop)-lp+!#
1 groupadd
[THEN]
0 groupadd
[THEN]
438 0 #loc prim Primitive (for)
444 0 #loc prim Primitive (do)
448 0 #loc prim Primitive (?do)
3 groupadd
has? xconds [IF]
462 0 #loc prim Primitive (+do)
476 0 #loc prim Primitive (u+do)
490 0 #loc prim Primitive (-do)
504 0 #loc prim Primitive (u-do)
518 0 #loc prim Primitive (-[do)
532 0 #loc prim Primitive (u-[do)
547 0 #loc prim Primitive (try)
556 0 #loc prim Primitive uncatch
559 0 #loc prim Primitive fast-throw
9 groupadd
[THEN]
574 0 #loc prim Primitive i
580 0 #loc prim Primitive i'
587 0 #loc prim Primitive j
594 0 #loc prim Primitive k
601 0 #loc prim Primitive bounds
607 0 #loc prim Primitive delta-i
613 0 #loc prim Primitive r'@
619 0 #loc prim Primitive rpick#
[THEN]
8 groupadd
group  strings
628 0 #loc prim Primitive move
637 0 #loc prim Primitive cmove
646 0 #loc prim Primitive cmove>
657 0 #loc prim Primitive fill
664 0 #loc prim Primitive compare
695 0 #loc prim Primitive toupper
702 0 #loc prim Primitive capscompare
712 0 #loc prim Primitive /string
720 0 #loc prim Primitive safe/string
9 groupadd
group  arith
737 0 #loc prim Primitive lit
741 0 #loc prim Primitive +
746 0 #loc prim Primitive lit+
753 0 #loc prim Primitive under+
759 0 #loc prim Primitive -
764 0 #loc prim Primitive negate
770 0 #loc prim Primitive 1+
775 0 #loc prim Primitive 1-
780 0 #loc prim Primitive max
788 0 #loc prim Primitive min
796 0 #loc prim Primitive abs
804 0 #loc prim Primitive *
809 0 #loc prim Primitive /f
821 0 #loc prim Primitive modf
833 0 #loc prim Primitive /modf
849 0 #loc prim Primitive */modf
874 0 #loc prim Primitive */f
897 0 #loc prim Primitive /s
907 0 #loc prim Primitive mods
917 0 #loc prim Primitive /mods
929 0 #loc prim Primitive */mods
948 0 #loc prim Primitive */s
966 0 #loc prim Primitive 2*
972 0 #loc prim Primitive 2/
983 0 #loc prim Primitive fm/mod
1004 0 #loc prim Primitive sm/rem
1020 0 #loc prim Primitive m*
1027 0 #loc prim Primitive um*
1039 0 #loc prim Primitive um/mod
1059 0 #loc prim Primitive u/-stage2m
1065 0 #loc prim Primitive umod-stage2m
1072 0 #loc prim Primitive u/mod-stage2m
1080 0 #loc prim Primitive /f-stage2m
1085 0 #loc prim Primitive modf-stage2m
1092 0 #loc prim Primitive /modf-stage2m
1100 0 #loc prim Primitive m+
1110 0 #loc prim Primitive d+
1115 0 #loc prim Primitive d-
1125 0 #loc prim Primitive dnegate
1135 0 #loc prim Primitive d2*
1141 0 #loc prim Primitive d2/
1154 0 #loc prim Primitive and
1157 0 #loc prim Primitive or
1162 0 #loc prim Primitive xor
1165 0 #loc prim Primitive invert
1170 0 #loc prim Primitive rshift
1181 0 #loc prim Primitive lshift
1191 0 #loc prim Primitive umax
1199 0 #loc prim Primitive umin
1207 0 #loc prim Primitive mux
1215 0 #loc prim Primitive select
1221 0 #loc prim Primitive dlshift
1236 0 #loc prim Primitive drshift
1252 0 #loc prim Primitive rol
1256 0 #loc prim Primitive ror
1260 0 #loc prim Primitive wrol
1265 0 #loc prim Primitive wror
1270 0 #loc prim Primitive lrol
1275 0 #loc prim Primitive lror
1280 0 #loc prim Primitive drol
1299 0 #loc prim Primitive dror
1318 0 #loc prim Primitive du/mod
1337 0 #loc prim Primitive u/
1345 0 #loc prim Primitive umod
1353 0 #loc prim Primitive u/mod
1363 0 #loc prim Primitive u*/mod
1381 0 #loc prim Primitive u*/
1399 0 #loc prim Primitive arshift
1406 0 #loc prim Primitive darshift
69 groupadd
group  compare
1475 0 #loc prim Primitive 0=
1475 0 #loc prim Primitive 0<>
1475 0 #loc prim Primitive 0<
1475 0 #loc prim Primitive 0>
1475 0 #loc prim Primitive 0<=
1475 0 #loc prim Primitive 0>=
1476 0 #loc prim Primitive =
1476 0 #loc prim Primitive <>
1476 0 #loc prim Primitive <
1476 0 #loc prim Primitive >
1476 0 #loc prim Primitive <=
1476 0 #loc prim Primitive >=
1477 0 #loc prim Primitive u=
1477 0 #loc prim Primitive u<>
1477 0 #loc prim Primitive u<
1477 0 #loc prim Primitive u>
1477 0 #loc prim Primitive u<=
1477 0 #loc prim Primitive u>=
18 groupadd
has? dcomps [IF]
1527 0 #loc prim Primitive d=
1527 0 #loc prim Primitive d<>
1527 0 #loc prim Primitive d<
1527 0 #loc prim Primitive d>
1527 0 #loc prim Primitive d<=
1527 0 #loc prim Primitive d>=
1528 0 #loc prim Primitive d0=
1528 0 #loc prim Primitive d0<>
1528 0 #loc prim Primitive d0<
1528 0 #loc prim Primitive d0>
1528 0 #loc prim Primitive d0<=
1528 0 #loc prim Primitive d0>=
1529 0 #loc prim Primitive du=
1529 0 #loc prim Primitive du<>
1529 0 #loc prim Primitive du<
1529 0 #loc prim Primitive du>
1529 0 #loc prim Primitive du<=
1529 0 #loc prim Primitive du>=
18 groupadd
[THEN]
1533 0 #loc prim Primitive within
1 groupadd
group  stack
1547 0 #loc prim Primitive up!
1553 0 #loc prim Primitive sp@
1556 0 #loc prim Primitive sp!
1559 0 #loc prim Primitive rp@
1562 0 #loc prim Primitive rp!
5 groupadd
has? floating [IF]
1567 0 #loc prim Primitive fp@
1570 0 #loc prim Primitive fp!
2 groupadd
[THEN]
1575 0 #loc prim Primitive >r
1580 0 #loc prim Primitive r>
1585 0 #loc prim Primitive rdrop
1590 0 #loc prim Primitive 2>r
1594 0 #loc prim Primitive 2r>
1598 0 #loc prim Primitive 2r@
1602 0 #loc prim Primitive 2rdrop
1607 0 #loc prim Primitive over
1611 0 #loc prim Primitive drop
1616 0 #loc prim Primitive swap
1621 0 #loc prim Primitive dup
1625 0 #loc prim Primitive rot
1634 0 #loc prim Primitive -rot
1638 0 #loc prim Primitive nip
1642 0 #loc prim Primitive tuck
1646 0 #loc prim Primitive ?dup
1655 0 #loc prim Primitive pick
1661 0 #loc prim Primitive third
1663 0 #loc prim Primitive fourth
1665 0 #loc prim Primitive 2drop
1670 0 #loc prim Primitive 2dup
1674 0 #loc prim Primitive 2over
1678 0 #loc prim Primitive 2swap
1682 0 #loc prim Primitive 2rot
1686 0 #loc prim Primitive 2nip
1690 0 #loc prim Primitive 2tuck
1694 0 #loc prim Primitive sps@
27 groupadd
group  memory
1701 0 #loc prim Primitive @
1707 0 #loc prim Primitive lit@
1710 0 #loc prim Primitive !
1714 0 #loc prim Primitive +!
1720 0 #loc prim Primitive c@
1746 0 #loc prim Primitive c!
1776 0 #loc prim Primitive 2!
1783 0 #loc prim Primitive 2@
1791 0 #loc prim Primitive cell+
1797 0 #loc prim Primitive cells
1808 0 #loc prim Primitive char+
1814 0 #loc prim Primitive count
1822 0 #loc prim Primitive cell/
1833 0 #loc prim Primitive cell-
1839 0 #loc prim Primitive inc#
15 groupadd
group  compiler
0 groupadd
has? f83headerstring [IF]
1848 0 #loc prim Primitive (f83find)
1 groupadd
[ELSE]
1878 0 #loc prim Primitive (listlfind)
1 groupadd
has? hash [IF]
1899 0 #loc prim Primitive (hashlfind)
1909 0 #loc prim Primitive (tablelfind)
1926 0 #loc prim Primitive (hashkey1)
1942 0 #loc prim Primitive (hashkey2)
1946 0 #loc prim Primitive hashkey2
5 groupadd
[THEN]
0 groupadd
[THEN]
1955 0 #loc prim Primitive (parse-white)
1965 0 #loc prim Primitive scan
1988 0 #loc prim Primitive skip
2006 0 #loc prim Primitive aligned
2012 0 #loc prim Primitive faligned
has? standardthreading has? compiler and [IF]
2020 0 #loc prim Primitive threading-method
2035 0 #loc prim Primitive debugging-method
[THEN]
7 groupadd
group  hostos
2049 0 #loc prim Primitive (key-file)
2063 0 #loc prim Primitive key?-file
2075 0 #loc prim Primitive stdin
2079 0 #loc prim Primitive stdout
2083 0 #loc prim Primitive stderr
2087 0 #loc prim Primitive term-prep?
6 groupadd
has? os [IF]
2092 0 #loc prim Primitive (form)
2105 0 #loc prim Primitive isatty
2109 0 #loc prim Primitive isfg
2117 0 #loc prim Primitive wcwidth
2121 0 #loc prim Primitive flush-icache
2133 0 #loc prim Primitive (bye)
2141 0 #loc prim Primitive (system)
2145 0 #loc prim Primitive getenv
2156 0 #loc prim Primitive open-pipe
2163 0 #loc prim Primitive close-pipe
2167 0 #loc prim Primitive >time&date&tz
2194 0 #loc prim Primitive (ms)
2198 0 #loc prim Primitive heap-allocate
2207 0 #loc prim Primitive heap-free
2215 0 #loc prim Primitive heap-resize
2234 0 #loc prim Primitive strerror
2238 0 #loc prim Primitive strsignal
2242 0 #loc prim Primitive call-c
2250 0 #loc prim Primitive call-c#
2258 0 #loc prim Primitive call-c@
2266 0 #loc prim Primitive gforth-pointers
2269 0 #loc prim Primitive winch?
22 groupadd
[THEN]
0 groupadd
has? file [IF]
2279 0 #loc prim Primitive close-file
2282 0 #loc prim Primitive open-file
2287 0 #loc prim Primitive create-file
2292 0 #loc prim Primitive delete-file
2297 0 #loc prim Primitive rename-file
2301 0 #loc prim Primitive file-position
2306 0 #loc prim Primitive reposition-file
2309 0 #loc prim Primitive file-size
2319 0 #loc prim Primitive resize-file
2322 0 #loc prim Primitive read-file
2337 0 #loc prim Primitive (read-line)
11 groupadd
[THEN]
2346 0 #loc prim Primitive write-file
2359 0 #loc prim Primitive emit-file
2 groupadd
has? file [IF]
2372 0 #loc prim Primitive flush-file
2375 0 #loc prim Primitive file-status
2380 0 #loc prim Primitive file-eof?
2384 0 #loc prim Primitive open-dir
2392 0 #loc prim Primitive read-dir
2420 0 #loc prim Primitive close-dir
2424 0 #loc prim Primitive filename-match
2434 0 #loc prim Primitive set-dir
2441 0 #loc prim Primitive get-dir
2451 0 #loc prim Primitive =mkdir
10 groupadd
[THEN]
2459 0 #loc prim Primitive newline
1 groupadd
has? os [IF]
2478 0 #loc prim Primitive utime
2484 0 #loc prim Primitive cputime
2502 0 #loc prim Primitive ntime
2515 0 #loc prim Primitive (ns)
4 groupadd
[THEN]
0 groupadd
has? floating [IF]
0 groupadd
group  floating
2535 0 #loc prim Primitive f=
2535 0 #loc prim Primitive f<>
2535 0 #loc prim Primitive f<
2535 0 #loc prim Primitive f>
2535 0 #loc prim Primitive f<=
2535 0 #loc prim Primitive f>=
2536 0 #loc prim Primitive f0=
2536 0 #loc prim Primitive f0<>
2536 0 #loc prim Primitive f0<
2536 0 #loc prim Primitive f0>
2536 0 #loc prim Primitive f0<=
2536 0 #loc prim Primitive f0>=
2538 0 #loc prim Primitive s>f
2541 0 #loc prim Primitive d>f
2557 0 #loc prim Primitive f>d
2561 0 #loc prim Primitive f>s
2564 0 #loc prim Primitive f!
2568 0 #loc prim Primitive f@
2572 0 #loc prim Primitive df@
2580 0 #loc prim Primitive df!
2589 0 #loc prim Primitive sf@
2597 0 #loc prim Primitive sf!
2606 0 #loc prim Primitive f+
2609 0 #loc prim Primitive f-
2612 0 #loc prim Primitive f*
2615 0 #loc prim Primitive f/
2618 0 #loc prim Primitive f**
2624 0 #loc prim Primitive fm*
2627 0 #loc prim Primitive fm/
2630 0 #loc prim Primitive fm*/
2633 0 #loc prim Primitive f**2
2636 0 #loc prim Primitive fnegate
2639 0 #loc prim Primitive fdrop
2642 0 #loc prim Primitive fdup
2644 0 #loc prim Primitive fswap
2646 0 #loc prim Primitive fover
2648 0 #loc prim Primitive frot
2650 0 #loc prim Primitive fnip
2652 0 #loc prim Primitive ftuck
2654 0 #loc prim Primitive float+
2658 0 #loc prim Primitive floats
2662 0 #loc prim Primitive floor
2669 0 #loc prim Primitive fround
2675 0 #loc prim Primitive fmax
2681 0 #loc prim Primitive fmin
2687 0 #loc prim Primitive represent
2723 0 #loc prim Primitive >float
2737 0 #loc prim Primitive fabs
2740 0 #loc prim Primitive facos
2745 0 #loc prim Primitive fasin
2750 0 #loc prim Primitive fatan
2755 0 #loc prim Primitive fatan2
2762 0 #loc prim Primitive fcos
2767 0 #loc prim Primitive fexp
2772 0 #loc prim Primitive fexpm1
2787 0 #loc prim Primitive fln
2792 0 #loc prim Primitive flnp1
2807 0 #loc prim Primitive flog
2813 0 #loc prim Primitive falog
2820 0 #loc prim Primitive fsin
2825 0 #loc prim Primitive fsincos
2831 0 #loc prim Primitive fsqrt
2836 0 #loc prim Primitive ftan
2843 0 #loc prim Primitive fsinh
2850 0 #loc prim Primitive fcosh
2857 0 #loc prim Primitive ftanh
2864 0 #loc prim Primitive fasinh
2871 0 #loc prim Primitive facosh
2878 0 #loc prim Primitive fatanh
2886 0 #loc prim Primitive sfloats
2891 0 #loc prim Primitive dfloats
2896 0 #loc prim Primitive sfaligned
2903 0 #loc prim Primitive dfaligned
2910 0 #loc prim Primitive v*
2920 0 #loc prim Primitive faxpy
2928 0 #loc prim Primitive >float1
2943 0 #loc prim Primitive float/
2946 0 #loc prim Primitive dfloat/
2949 0 #loc prim Primitive sfloat/
2952 0 #loc prim Primitive f-rot
2954 0 #loc prim Primitive flit
2960 0 #loc prim Primitive flit0
2967 0 #loc prim Primitive flit1
83 groupadd
[THEN]
0 groupadd
has? glocals [IF]
0 groupadd
group  locals
2987 0 #loc prim Primitive @localn
2990 0 #loc prim Primitive @local0
2993 0 #loc prim Primitive @local1
2996 0 #loc prim Primitive @local2
2999 0 #loc prim Primitive @local3
5 groupadd
has? floating [IF]
3004 0 #loc prim Primitive f@localn
1 groupadd
[THEN]
3009 0 #loc prim Primitive lp@
3013 0 #loc prim Primitive lp+!
3020 0 #loc prim Primitive lp-
3023 0 #loc prim Primitive lp+
3027 0 #loc prim Primitive lp+2
3031 0 #loc prim Primitive lp!
3034 0 #loc prim Primitive >l
7 groupadd
has? floating [IF]
3040 0 #loc prim Primitive f>l
3044 0 #loc prim Primitive fpick
3050 0 #loc prim Primitive fthird
3052 0 #loc prim Primitive ffourth
4 groupadd
[THEN]
0 groupadd
[THEN]
0 groupadd
has? OS [IF]
0 groupadd
group  syslib
3061 0 #loc prim Primitive open-lib
3064 0 #loc prim Primitive open-lib2
3067 0 #loc prim Primitive lib-sym
3083 0 #loc prim Primitive lib-sym2
3086 0 #loc prim Primitive wcall
3091 0 #loc prim Primitive w@
3101 0 #loc prim Primitive w!
3110 0 #loc prim Primitive l@
3120 0 #loc prim Primitive l!
3129 0 #loc prim Primitive lib-error
3142 0 #loc prim Primitive close-lib
3145 0 #loc prim Primitive close-lib2
12 groupadd
[THEN]
0 groupadd
group  64bit
0 groupadd
has? 64bit [IF]
3154 0 #loc prim Primitive x!
3163 0 #loc prim Primitive x@
2 groupadd
[THEN]
0 groupadd
group  memory
3177 0 #loc prim Primitive xd!
3215 0 #loc prim Primitive xd@
3252 0 #loc prim Primitive w><
3255 0 #loc prim Primitive l><
3258 0 #loc prim Primitive x><
3261 0 #loc prim Primitive xd><
3272 0 #loc prim Primitive c>s
3276 0 #loc prim Primitive w>s
3280 0 #loc prim Primitive l>s
3284 0 #loc prim Primitive >pow2
3302 0 #loc prim Primitive log2
3323 0 #loc prim Primitive u8@+?
12 groupadd
group  atomic
3333 0 #loc prim Primitive !@
3344 0 #loc prim Primitive +!@
3355 0 #loc prim Primitive ?!@
3368 0 #loc prim Primitive barrier
4 groupadd
group  peephole
0 groupadd
has? peephole [IF]
3381 0 #loc prim Primitive forget-dyncode3
3384 0 #loc prim Primitive decompile-prim3
3400 0 #loc prim Primitive @decompile-prim
3407 0 #loc prim Primitive tag-offsets
3411 0 #loc prim Primitive compile-prims
5 groupadd
[THEN]
0 groupadd
group  primitive_centric
3421 0 #loc prim Primitive abi-call
3428 0 #loc prim Primitive ;abi-code-exec
3436 0 #loc prim Primitive lit-execute
3 groupadd
group  object_pointer
0 groupadd
has? objects [IF]
3447 0 #loc prim Primitive >o
3452 0 #loc prim Primitive o>
3456 0 #loc prim Primitive o#exec
3462 0 #loc prim Primitive x#exec
3471 0 #loc prim Primitive u#exec
3477 0 #loc prim Primitive u#+
3481 0 #loc prim Primitive o
3484 0 #loc prim Primitive up@
8 groupadd
[THEN]
0 groupadd
group  static_super
0 groupadd
group  end
