Artifact
bd25c7b7dac6331f7dc938e15300b47d9b50bd4c:
- File
64bit.fs
— part of check-in
[740b68635e]
at
2019-05-04 12:06:11
on branch trunk
— Use synonym instead of alias
(user:
bernd
size: 6342)
0000: 5c 20 70 6f 72 74 61 62 6c 65 20 66 75 6e 63 74 \ portable funct
0010: 69 6f 6e 73 20 66 6f 72 20 36 34 20 62 69 74 20 ions for 64 bit
0020: 6e 75 6d 62 65 72 73 0a 0a 3a 20 6d 69 6e 21 20 numbers..: min!
0030: 20 28 20 6e 20 61 64 64 72 20 2d 2d 20 29 20 20 ( n addr -- )
0040: 20 3e 72 20 72 40 20 40 20 6d 69 6e 20 20 72 3e >r r@ @ min r>
0050: 20 21 20 3b 0a 3a 20 6d 61 78 21 20 20 28 20 6e ! ;.: max! ( n
0060: 20 61 64 64 72 20 2d 2d 20 29 20 20 20 3e 72 20 addr -- ) >r
0070: 72 40 20 40 20 6d 61 78 20 20 72 3e 20 21 20 3b r@ @ max r> ! ;
0080: 0a 3a 20 75 6d 69 6e 21 20 28 20 6e 20 61 64 64 .: umin! ( n add
0090: 72 20 2d 2d 20 29 20 20 20 3e 72 20 72 40 20 40 r -- ) >r r@ @
00a0: 20 75 6d 69 6e 20 72 3e 20 21 20 3b 0a 3a 20 75 umin r> ! ;.: u
00b0: 6d 61 78 21 20 28 20 6e 20 61 64 64 72 20 2d 2d max! ( n addr --
00c0: 20 29 20 20 20 3e 72 20 72 40 20 40 20 75 6d 61 ) >r r@ @ uma
00d0: 78 20 72 3e 20 21 20 3b 0a 0a 31 20 70 61 64 20 x r> ! ;..1 pad
00e0: 21 20 70 61 64 20 63 40 20 6e 65 67 61 74 65 20 ! pad c@ negate
00f0: 63 6f 6e 73 74 61 6e 74 20 6c 65 3f 0a 0a 63 65 constant le?..ce
0100: 6c 6c 20 38 20 3d 20 5b 49 46 5d 0a 20 20 20 20 ll 8 = [IF].
0110: 3a 20 36 34 62 69 74 20 3b 0a 20 20 20 20 73 79 : 64bit ;. sy
0120: 6e 6f 6e 79 6d 20 36 34 40 20 40 0a 20 20 20 20 nonym 64@ @.
0130: 73 79 6e 6f 6e 79 6d 20 36 34 21 20 21 0a 20 20 synonym 64! !.
0140: 20 20 73 79 6e 6f 6e 79 6d 20 6c 65 2d 36 34 40 synonym le-64@
0150: 20 6c 65 2d 75 78 40 0a 20 20 20 20 73 79 6e 6f le-ux@. syno
0160: 6e 79 6d 20 6c 65 2d 36 34 21 20 6c 65 2d 78 21 nym le-64! le-x!
0170: 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 62 65 2d . synonym be-
0180: 36 34 40 20 62 65 2d 75 78 40 0a 20 20 20 20 73 64@ be-ux@. s
0190: 79 6e 6f 6e 79 6d 20 62 65 2d 36 34 21 20 62 65 ynonym be-64! be
01a0: 2d 78 21 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 -x!. synonym
01b0: 36 34 3e 3c 20 6e 6f 6f 70 0a 20 20 20 20 73 79 64>< noop. sy
01c0: 6e 6f 6e 79 6d 20 6e 36 34 2d 73 77 61 70 20 73 nonym n64-swap s
01d0: 77 61 70 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 wap. synonym
01e0: 36 34 6e 2d 73 77 61 70 20 73 77 61 70 0a 20 20 64n-swap swap.
01f0: 20 20 73 79 6e 6f 6e 79 6d 20 36 34 64 75 70 20 synonym 64dup
0200: 64 75 70 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 dup. synonym
0210: 36 34 6f 76 65 72 20 6f 76 65 72 0a 20 20 20 20 64over over.
0220: 73 79 6e 6f 6e 79 6d 20 36 34 64 72 6f 70 20 64 synonym 64drop d
0230: 72 6f 70 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 rop. synonym
0240: 36 34 6e 69 70 20 6e 69 70 0a 20 20 20 20 73 79 64nip nip. sy
0250: 6e 6f 6e 79 6d 20 36 34 73 77 61 70 20 73 77 61 nonym 64swap swa
0260: 70 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 p. synonym 64
0270: 74 75 63 6b 20 74 75 63 6b 0a 20 20 20 20 73 79 tuck tuck. sy
0280: 6e 6f 6e 79 6d 20 36 34 2b 20 2b 0a 20 20 20 20 nonym 64+ +.
0290: 73 79 6e 6f 6e 79 6d 20 36 34 2d 20 2d 0a 20 20 synonym 64- -.
02a0: 20 20 73 79 6e 6f 6e 79 6d 20 36 34 6f 72 20 6f synonym 64or o
02b0: 72 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 r. synonym 64
02c0: 61 6e 64 20 61 6e 64 0a 20 20 20 20 73 79 6e 6f and and. syno
02d0: 6e 79 6d 20 36 34 78 6f 72 20 78 6f 72 0a 20 20 nym 64xor xor.
02e0: 20 20 73 79 6e 6f 6e 79 6d 20 36 34 56 61 72 69 synonym 64Vari
02f0: 61 62 6c 65 20 56 61 72 69 61 62 6c 65 0a 20 20 able Variable.
0300: 20 20 73 79 6e 6f 6e 79 6d 20 36 34 55 73 65 72 synonym 64User
0310: 20 55 73 65 72 0a 20 20 20 20 73 79 6e 6f 6e 79 User. synony
0320: 6d 20 36 34 43 6f 6e 73 74 61 6e 74 20 43 6f 6e m 64Constant Con
0330: 73 74 61 6e 74 0a 20 20 20 20 73 79 6e 6f 6e 79 stant. synony
0340: 6d 20 36 34 56 61 6c 75 65 20 56 61 6c 75 65 0a m 64Value Value.
0350: 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 2d 32 synonym 64-2
0360: 2f 20 32 2f 0a 20 20 20 20 73 79 6e 6f 6e 79 6d / 2/. synonym
0370: 20 36 34 2d 32 2a 20 32 2a 0a 20 20 20 20 73 79 64-2* 2*. sy
0380: 6e 6f 6e 79 6d 20 36 34 6e 65 67 61 74 65 20 6e nonym 64negate n
0390: 65 67 61 74 65 0a 20 20 20 20 73 79 6e 6f 6e 79 egate. synony
03a0: 6d 20 36 34 69 6e 76 65 72 74 20 69 6e 76 65 72 m 64invert inver
03b0: 74 0a 20 20 20 20 30 20 43 6f 6e 73 74 61 6e 74 t. 0 Constant
03c0: 20 36 34 23 30 0a 20 20 20 20 31 20 43 6f 6e 73 64#0. 1 Cons
03d0: 74 61 6e 74 20 36 34 23 31 0a 20 20 20 20 2d 31 tant 64#1. -1
03e0: 20 43 6f 6e 73 74 61 6e 74 20 36 34 23 2d 31 0a Constant 64#-1.
03f0: 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 6c 69 synonym 64li
0400: 74 65 72 61 6c 20 6c 69 74 65 72 61 6c 0a 20 20 teral literal.
0410: 20 20 73 79 6e 6f 6e 79 6d 20 36 34 72 73 68 69 synonym 64rshi
0420: 66 74 20 72 73 68 69 66 74 0a 20 20 20 20 73 79 ft rshift. sy
0430: 6e 6f 6e 79 6d 20 36 34 6c 73 68 69 66 74 20 6c nonym 64lshift l
0440: 73 68 69 66 74 0a 20 20 20 20 73 79 6e 6f 6e 79 shift. synony
0450: 6d 20 36 34 72 6f 6c 20 72 6f 6c 0a 20 20 20 20 m 64rol rol.
0460: 73 79 6e 6f 6e 79 6d 20 36 34 72 6f 72 20 72 6f synonym 64ror ro
0470: 72 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 r. synonym 64
0480: 3e 66 20 73 3e 66 0a 20 20 20 20 73 79 6e 6f 6e >f s>f. synon
0490: 79 6d 20 66 3e 36 34 20 66 3e 73 0a 20 20 20 20 ym f>64 f>s.
04a0: 73 79 6e 6f 6e 79 6d 20 36 34 3d 20 3d 0a 20 20 synonym 64= =.
04b0: 20 20 73 79 6e 6f 6e 79 6d 20 36 34 3c 3e 20 3c synonym 64<> <
04c0: 3e 0a 20 20 20 20 2d 31 20 31 20 36 34 72 73 68 >. -1 1 64rsh
04d0: 69 66 74 20 43 6f 6e 73 74 61 6e 74 20 6d 61 78 ift Constant max
04e0: 2d 69 6e 74 36 34 0a 20 20 20 20 73 79 6e 6f 6e -int64. synon
04f0: 79 6d 20 75 36 34 2e 20 75 2e 0a 20 20 20 20 73 ym u64. u.. s
0500: 79 6e 6f 6e 79 6d 20 73 36 34 2e 20 2e 0a 20 20 ynonym s64. ..
0510: 20 20 73 79 6e 6f 6e 79 6d 20 36 34 3e 6e 20 6e synonym 64>n n
0520: 6f 6f 70 20 69 6d 6d 65 64 69 61 74 65 0a 20 20 oop immediate.
0530: 20 20 73 79 6e 6f 6e 79 6d 20 6e 3e 36 34 20 6e synonym n>64 n
0540: 6f 6f 70 20 69 6d 6d 65 64 69 61 74 65 0a 20 20 oop immediate.
0550: 20 20 73 79 6e 6f 6e 79 6d 20 75 3e 36 34 20 6e synonym u>64 n
0560: 6f 6f 70 20 69 6d 6d 65 64 69 61 74 65 0a 20 20 oop immediate.
0570: 20 20 73 79 6e 6f 6e 79 6d 20 36 34 3e 64 20 73 synonym 64>d s
0580: 3e 64 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 64 >d. synonym d
0590: 3e 36 34 20 64 72 6f 70 0a 20 20 20 20 73 79 6e >64 drop. syn
05a0: 6f 6e 79 6d 20 36 34 3e 72 20 3e 72 0a 20 20 20 onym 64>r >r.
05b0: 20 73 79 6e 6f 6e 79 6d 20 36 34 72 3e 20 72 3e synonym 64r> r>
05c0: 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 2d . synonym 64-
05d0: 30 3d 20 30 3d 0a 20 20 20 20 73 79 6e 6f 6e 79 0= 0=. synony
05e0: 6d 20 36 34 2d 30 3c 3e 20 30 3c 3e 0a 20 20 20 m 64-0<> 0<>.
05f0: 20 73 79 6e 6f 6e 79 6d 20 36 34 2d 30 3e 3d 20 synonym 64-0>=
0600: 30 3e 3d 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 0>=. synonym
0610: 36 34 2d 30 3c 3d 20 30 3c 3d 0a 20 20 20 20 73 64-0<= 0<=. s
0620: 79 6e 6f 6e 79 6d 20 36 34 2d 30 3c 20 30 3c 0a ynonym 64-0< 0<.
0630: 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 3c 20 synonym 64<
0640: 3c 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 <. synonym 64
0650: 3e 20 3e 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 > >. synonym
0660: 36 34 75 3c 20 75 3c 0a 20 20 20 20 73 79 6e 6f 64u< u<. syno
0670: 6e 79 6d 20 36 34 75 3e 20 75 3e 0a 20 20 20 20 nym 64u> u>.
0680: 73 79 6e 6f 6e 79 6d 20 36 34 75 3c 3d 20 75 3c synonym 64u<= u<
0690: 3d 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 =. synonym 64
06a0: 75 3e 3d 20 75 3e 3d 0a 20 20 20 20 73 79 6e 6f u>= u>=. syno
06b0: 6e 79 6d 20 36 34 6f 6e 20 6f 6e 0a 20 20 20 20 nym 64on on.
06c0: 73 79 6e 6f 6e 79 6d 20 36 34 2b 21 20 2b 21 0a synonym 64+! +!.
06d0: 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 6d 69 synonym 64mi
06e0: 6e 20 6d 69 6e 0a 20 20 20 20 73 79 6e 6f 6e 79 n min. synony
06f0: 6d 20 36 34 6d 61 78 20 6d 61 78 0a 20 20 20 20 m 64max max.
0700: 73 79 6e 6f 6e 79 6d 20 36 34 75 6d 69 6e 20 75 synonym 64umin u
0710: 6d 69 6e 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 min. synonym
0720: 36 34 75 6d 61 78 20 75 6d 61 78 0a 20 20 20 20 64umax umax.
0730: 73 79 6e 6f 6e 79 6d 20 36 34 61 62 73 20 61 62 synonym 64abs ab
0740: 73 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 s. synonym 64
0750: 6f 66 66 20 6f 66 66 0a 20 20 20 20 73 79 6e 6f off off. syno
0760: 6e 79 6d 20 36 34 2a 2f 20 2a 2f 0a 20 20 20 20 nym 64*/ */.
0770: 73 79 6e 6f 6e 79 6d 20 36 34 2a 20 2a 0a 20 20 synonym 64* *.
0780: 20 20 3a 20 31 32 38 40 20 28 20 61 64 64 72 20 : 128@ ( addr
0790: 2d 2d 20 64 20 29 20 32 40 20 73 77 61 70 20 3b -- d ) 2@ swap ;
07a0: 0a 20 20 20 20 3a 20 31 32 38 21 20 28 20 64 20 . : 128! ( d
07b0: 61 64 64 72 20 2d 2d 20 29 20 3e 72 20 73 77 61 addr -- ) >r swa
07c0: 70 20 72 3e 20 32 21 20 3b 0a 20 20 20 20 73 79 p r> 2! ;. sy
07d0: 6e 6f 6e 79 6d 20 31 32 38 2b 20 64 2b 20 5c 20 nonym 128+ d+ \
07e0: 31 32 38 20 62 69 74 20 61 64 64 69 74 69 6f 6e 128 bit addition
07f0: 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 31 32 38 . synonym 128
0800: 2d 20 64 2d 20 5c 20 31 32 38 20 62 69 74 20 61 - d- \ 128 bit a
0810: 64 64 69 74 69 6f 6e 0a 20 20 20 20 73 79 6e 6f ddition. syno
0820: 6e 79 6d 20 73 74 6f 70 2d 36 34 6e 73 20 73 74 nym stop-64ns st
0830: 6f 70 2d 6e 73 0a 20 20 20 20 61 6c 73 6f 20 6c op-ns. also l
0840: 6f 63 61 6c 73 2d 74 79 70 65 73 20 64 65 66 69 ocals-types defi
0850: 6e 69 74 69 6f 6e 73 0a 20 20 20 20 73 79 6e 6f nitions. syno
0860: 6e 79 6d 20 36 34 3a 20 77 3a 0a 20 20 20 20 73 nym 64: w:. s
0870: 79 6e 6f 6e 79 6d 20 36 34 5e 20 77 5e 0a 20 20 ynonym 64^ w^.
0880: 20 20 70 72 65 76 69 6f 75 73 20 64 65 66 69 6e previous defin
0890: 69 74 69 6f 6e 73 0a 20 20 20 20 73 79 6e 6f 6e itions. synon
08a0: 79 6d 20 36 34 6d 69 6e 21 20 6d 69 6e 21 0a 20 ym 64min! min!.
08b0: 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 6d 61 78 synonym 64max
08c0: 21 20 6d 61 78 21 0a 20 20 20 20 73 79 6e 6f 6e ! max!. synon
08d0: 79 6d 20 36 34 75 6d 69 6e 21 20 75 6d 69 6e 21 ym 64umin! umin!
08e0: 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 75 . synonym 64u
08f0: 6d 61 78 21 20 75 6d 61 78 21 0a 20 20 20 20 73 max! umax!. s
0900: 79 6e 6f 6e 79 6d 20 36 34 21 40 20 21 40 0a 20 ynonym 64!@ !@.
0910: 20 20 20 73 79 6e 6f 6e 79 6d 20 62 65 40 20 62 synonym be@ b
0920: 65 2d 75 78 40 0a 20 20 20 20 73 79 6e 6f 6e 79 e-ux@. synony
0930: 6d 20 62 65 21 20 62 65 2d 78 21 0a 5b 45 4c 53 m be! be-x!.[ELS
0940: 45 5d 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 6e E]. synonym n
0950: 36 34 2d 73 77 61 70 20 72 6f 74 0a 20 20 20 20 64-swap rot.
0960: 73 79 6e 6f 6e 79 6d 20 36 34 6e 2d 73 77 61 70 synonym 64n-swap
0970: 20 2d 72 6f 74 0a 20 20 20 20 73 79 6e 6f 6e 79 -rot. synony
0980: 6d 20 36 34 64 72 6f 70 20 32 64 72 6f 70 0a 20 m 64drop 2drop.
0990: 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 6e 69 70 synonym 64nip
09a0: 20 32 6e 69 70 0a 20 20 20 20 73 79 6e 6f 6e 79 2nip. synony
09b0: 6d 20 36 34 64 75 70 20 32 64 75 70 0a 20 20 20 m 64dup 2dup.
09c0: 20 73 79 6e 6f 6e 79 6d 20 36 34 6f 76 65 72 20 synonym 64over
09d0: 32 6f 76 65 72 0a 20 20 20 20 73 79 6e 6f 6e 79 2over. synony
09e0: 6d 20 36 34 73 77 61 70 20 32 73 77 61 70 0a 20 m 64swap 2swap.
09f0: 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 74 75 63 synonym 64tuc
0a00: 6b 20 32 74 75 63 6b 0a 20 20 20 20 73 79 6e 6f k 2tuck. syno
0a10: 6e 79 6d 20 36 34 3e 3c 20 73 77 61 70 0a 20 20 nym 64>< swap.
0a20: 20 20 3a 20 36 34 40 20 20 32 40 20 36 34 3e 3c : 64@ 2@ 64><
0a30: 20 3b 20 5b 49 46 44 45 46 5d 20 6d 61 63 72 6f ; [IFDEF] macro
0a40: 20 6d 61 63 72 6f 20 5b 54 48 45 4e 5d 0a 20 20 macro [THEN].
0a50: 20 20 3a 20 36 34 21 20 20 3e 72 20 36 34 3e 3c : 64! >r 64><
0a60: 20 72 3e 20 32 21 20 3b 20 5b 49 46 44 45 46 5d r> 2! ; [IFDEF]
0a70: 20 6d 61 63 72 6f 20 6d 61 63 72 6f 20 5b 54 48 macro macro [TH
0a80: 45 4e 5d 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 EN]. synonym
0a90: 6c 65 2d 36 34 40 20 6c 65 2d 75 78 64 40 0a 20 le-64@ le-uxd@.
0aa0: 20 20 20 73 79 6e 6f 6e 79 6d 20 6c 65 2d 36 34 synonym le-64
0ab0: 21 20 6c 65 2d 78 64 21 0a 20 20 20 20 73 79 6e ! le-xd!. syn
0ac0: 6f 6e 79 6d 20 62 65 2d 36 34 40 20 62 65 2d 75 onym be-64@ be-u
0ad0: 78 64 40 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 xd@. synonym
0ae0: 62 65 2d 36 34 21 20 62 65 2d 78 64 21 0a 20 20 be-64! be-xd!.
0af0: 20 20 73 79 6e 6f 6e 79 6d 20 36 34 2b 20 64 2b synonym 64+ d+
0b00: 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 2d . synonym 64-
0b10: 20 64 2d 0a 20 20 20 20 3a 20 36 34 6f 72 20 72 d-. : 64or r
0b20: 6f 74 20 6f 72 20 3e 72 20 6f 72 20 72 3e 20 3b ot or >r or r> ;
0b30: 0a 20 20 20 20 3a 20 36 34 61 6e 64 20 72 6f 74 . : 64and rot
0b40: 20 61 6e 64 20 3e 72 20 61 6e 64 20 72 3e 20 3b and >r and r> ;
0b50: 0a 20 20 20 20 3a 20 36 34 78 6f 72 20 72 6f 74 . : 64xor rot
0b60: 20 78 6f 72 20 3e 72 20 78 6f 72 20 72 3e 20 3b xor >r xor r> ;
0b70: 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 56 . synonym 64V
0b80: 61 72 69 61 62 6c 65 20 32 56 61 72 69 61 62 6c ariable 2Variabl
0b90: 65 0a 20 20 20 20 3a 20 36 34 55 73 65 72 20 20 e. : 64User
0ba0: 55 73 65 72 20 63 65 6c 6c 20 75 61 6c 6c 6f 74 User cell uallot
0bb0: 20 64 72 6f 70 20 3b 0a 20 20 20 20 73 79 6e 6f drop ;. syno
0bc0: 6e 79 6d 20 36 34 43 6f 6e 73 74 61 6e 74 20 32 nym 64Constant 2
0bd0: 43 6f 6e 73 74 61 6e 74 0a 20 20 20 20 73 79 6e Constant. syn
0be0: 6f 6e 79 6d 20 36 34 56 61 6c 75 65 20 32 56 61 onym 64Value 2Va
0bf0: 6c 75 65 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 lue. synonym
0c00: 36 34 2d 32 2f 20 64 32 2f 0a 20 20 20 20 73 79 64-2/ d2/. sy
0c10: 6e 6f 6e 79 6d 20 36 34 2d 32 2a 20 64 32 2a 0a nonym 64-2* d2*.
0c20: 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 6e 65 synonym 64ne
0c30: 67 61 74 65 20 64 6e 65 67 61 74 65 0a 20 20 20 gate dnegate.
0c40: 20 3a 20 36 34 69 6e 76 65 72 74 20 69 6e 76 65 : 64invert inve
0c50: 72 74 20 73 77 61 70 20 69 6e 76 65 72 74 20 73 rt swap invert s
0c60: 77 61 70 20 3b 0a 20 20 20 20 23 30 2e 20 32 43 wap ;. #0. 2C
0c70: 6f 6e 73 74 61 6e 74 20 36 34 23 30 0a 20 20 20 onstant 64#0.
0c80: 20 23 31 2e 20 32 43 6f 6e 73 74 61 6e 74 20 36 #1. 2Constant 6
0c90: 34 23 31 0a 20 20 20 20 23 2d 31 2e 20 32 43 6f 4#1. #-1. 2Co
0ca0: 6e 73 74 61 6e 74 20 36 34 23 2d 31 0a 20 20 20 nstant 64#-1.
0cb0: 20 73 79 6e 6f 6e 79 6d 20 36 34 6c 69 74 65 72 synonym 64liter
0cc0: 61 6c 20 32 6c 69 74 65 72 61 6c 0a 20 20 20 20 al 2literal.
0cd0: 73 79 6e 6f 6e 79 6d 20 36 34 6c 73 68 69 66 74 synonym 64lshift
0ce0: 20 64 6c 73 68 69 66 74 0a 20 20 20 20 73 79 6e dlshift. syn
0cf0: 6f 6e 79 6d 20 36 34 72 73 68 69 66 74 20 64 72 onym 64rshift dr
0d00: 73 68 69 66 74 0a 20 20 20 20 73 79 6e 6f 6e 79 shift. synony
0d10: 6d 20 36 34 72 6f 6c 20 64 72 6f 6c 0a 20 20 20 m 64rol drol.
0d20: 20 73 79 6e 6f 6e 79 6d 20 36 34 72 6f 72 20 64 synonym 64ror d
0d30: 72 6f 72 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 ror. synonym
0d40: 36 34 3e 66 20 64 3e 66 0a 20 20 20 20 73 79 6e 64>f d>f. syn
0d50: 6f 6e 79 6d 20 66 3e 36 34 20 66 3e 64 0a 20 20 onym f>64 f>d.
0d60: 20 20 73 79 6e 6f 6e 79 6d 20 36 34 3d 20 64 3d synonym 64= d=
0d70: 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 3c . synonym 64<
0d80: 3e 20 64 3c 3e 0a 20 20 20 20 23 2d 31 2e 20 31 > d<>. #-1. 1
0d90: 20 36 34 72 73 68 69 66 74 20 36 34 43 6f 6e 73 64rshift 64Cons
0da0: 74 61 6e 74 20 6d 61 78 2d 69 6e 74 36 34 0a 20 tant max-int64.
0db0: 20 20 20 73 79 6e 6f 6e 79 6d 20 75 36 34 2e 20 synonym u64.
0dc0: 75 64 2e 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 ud.. synonym
0dd0: 73 36 34 2e 20 64 2e 0a 20 20 20 20 73 79 6e 6f s64. d.. syno
0de0: 6e 79 6d 20 36 34 3e 6e 20 64 72 6f 70 0a 20 20 nym 64>n drop.
0df0: 20 20 73 79 6e 6f 6e 79 6d 20 36 34 3e 64 20 6e synonym 64>d n
0e00: 6f 6f 70 20 69 6d 6d 65 64 69 61 74 65 0a 20 20 oop immediate.
0e10: 20 20 73 79 6e 6f 6e 79 6d 20 64 3e 36 34 20 6e synonym d>64 n
0e20: 6f 6f 70 20 69 6d 6d 65 64 69 61 74 65 0a 20 20 oop immediate.
0e30: 20 20 73 79 6e 6f 6e 79 6d 20 6e 3e 36 34 20 73 synonym n>64 s
0e40: 3e 64 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 75 >d. synonym u
0e50: 3e 36 34 20 66 61 6c 73 65 0a 20 20 20 20 73 79 >64 false. sy
0e60: 6e 6f 6e 79 6d 20 36 34 3e 72 20 32 3e 72 0a 20 nonym 64>r 2>r.
0e70: 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 72 3e 20 synonym 64r>
0e80: 32 72 3e 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 2r>. synonym
0e90: 36 34 2d 30 3d 20 64 30 3d 0a 20 20 20 20 73 79 64-0= d0=. sy
0ea0: 6e 6f 6e 79 6d 20 36 34 2d 30 3c 3e 20 64 30 3c nonym 64-0<> d0<
0eb0: 3e 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 >. synonym 64
0ec0: 2d 30 3e 3d 20 64 30 3e 3d 0a 20 20 20 20 73 79 -0>= d0>=. sy
0ed0: 6e 6f 6e 79 6d 20 36 34 2d 30 3c 3d 20 64 30 3c nonym 64-0<= d0<
0ee0: 3d 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 =. synonym 64
0ef0: 2d 30 3c 20 64 30 3c 0a 20 20 20 20 73 79 6e 6f -0< d0<. syno
0f00: 6e 79 6d 20 36 34 3c 20 64 3c 0a 20 20 20 20 73 nym 64< d<. s
0f10: 79 6e 6f 6e 79 6d 20 36 34 3e 20 64 3e 0a 20 20 ynonym 64> d>.
0f20: 20 20 73 79 6e 6f 6e 79 6d 20 36 34 75 3c 20 64 synonym 64u< d
0f30: 75 3c 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 u<. synonym 6
0f40: 34 75 3e 20 64 75 3e 0a 20 20 20 20 73 79 6e 6f 4u> du>. syno
0f50: 6e 79 6d 20 36 34 75 3c 3d 20 64 75 3c 3d 0a 20 nym 64u<= du<=.
0f60: 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 75 3e 3d synonym 64u>=
0f70: 20 64 75 3e 3d 0a 20 20 20 20 3a 20 36 34 6f 6e du>=. : 64on
0f80: 20 28 20 61 64 64 72 20 2d 2d 20 29 20 20 3e 72 ( addr -- ) >r
0f90: 20 36 34 23 2d 31 20 72 3e 20 36 34 21 20 3b 0a 64#-1 r> 64! ;.
0fa0: 20 20 20 20 3a 20 36 34 2b 21 20 20 28 20 36 34 : 64+! ( 64
0fb0: 6e 20 61 64 64 72 20 2d 2d 20 29 20 20 64 75 70 n addr -- ) dup
0fc0: 20 3e 72 20 36 34 40 20 36 34 2b 20 72 3e 20 36 >r 64@ 64+ r> 6
0fd0: 34 21 20 3b 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 4! ;. synonym
0fe0: 20 36 34 6d 69 6e 20 64 6d 69 6e 0a 20 20 20 20 64min dmin.
0ff0: 73 79 6e 6f 6e 79 6d 20 36 34 6d 61 78 20 64 6d synonym 64max dm
1000: 61 78 0a 20 20 20 20 3a 20 36 34 75 6d 69 6e 20 ax. : 64umin
1010: 20 32 6f 76 65 72 20 32 6f 76 65 72 20 64 75 3e 2over 2over du>
1020: 20 49 46 20 20 32 73 77 61 70 20 20 54 48 45 4e IF 2swap THEN
1030: 20 20 32 64 72 6f 70 20 3b 0a 20 20 20 20 3a 20 2drop ;. :
1040: 36 34 75 6d 61 78 20 20 32 6f 76 65 72 20 32 6f 64umax 2over 2o
1050: 76 65 72 20 64 75 3c 20 49 46 20 20 32 73 77 61 ver du< IF 2swa
1060: 70 20 20 54 48 45 4e 20 20 32 64 72 6f 70 20 3b p THEN 2drop ;
1070: 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 61 . synonym 64a
1080: 62 73 20 64 61 62 73 0a 20 20 20 20 3a 20 36 34 bs dabs. : 64
1090: 6f 66 66 20 23 30 2e 20 72 6f 74 20 36 34 21 20 off #0. rot 64!
10a0: 3b 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 34 ;. synonym 64
10b0: 2a 2f 20 6d 2a 2f 0a 20 20 20 20 3a 20 36 34 2a */ m*/. : 64*
10c0: 20 28 20 64 31 20 64 32 20 2d 2d 20 64 33 20 29 ( d1 d2 -- d3 )
10d0: 20 7b 20 6c 31 20 68 31 20 6c 32 20 68 32 20 7d { l1 h1 l2 h2 }
10e0: 0a 09 6c 31 20 6c 32 20 75 6d 2a 20 6c 31 20 68 ..l1 l2 um* l1 h
10f0: 32 20 75 6d 2a 20 6c 32 20 68 31 20 75 6d 2a 20 2 um* l2 h1 um*
1100: 64 2b 20 64 72 6f 70 20 2b 20 3b 0a 20 20 20 20 d+ drop + ;.
1110: 3a 20 31 32 38 40 20 28 20 61 64 64 72 20 2d 2d : 128@ ( addr --
1120: 20 78 31 2e 2e 78 34 20 29 0a 09 3e 72 0a 09 72 x1..x4 )..>r..r
1130: 40 20 40 0a 09 72 40 20 63 65 6c 6c 2b 20 40 0a @ @..r@ cell+ @.
1140: 09 72 40 20 32 20 63 65 6c 6c 73 20 2b 20 40 0a .r@ 2 cells + @.
1150: 09 72 3e 20 33 20 63 65 6c 6c 73 20 2b 20 40 20 .r> 3 cells + @
1160: 3b 0a 20 20 20 20 3a 20 31 32 38 21 20 28 20 78 ;. : 128! ( x
1170: 31 2e 2e 78 34 20 61 64 64 72 20 2d 2d 20 29 0a 1..x4 addr -- ).
1180: 09 3e 72 0a 09 72 40 20 33 20 63 65 6c 6c 73 20 .>r..r@ 3 cells
1190: 2b 20 21 0a 09 72 40 20 32 20 63 65 6c 6c 73 20 + !..r@ 2 cells
11a0: 2b 20 21 0a 09 72 40 20 63 65 6c 6c 2b 20 21 0a + !..r@ cell+ !.
11b0: 09 72 3e 20 21 20 3b 0a 20 20 20 20 73 79 6e 6f .r> ! ;. syno
11c0: 6e 79 6d 20 73 74 6f 70 2d 36 34 6e 73 20 73 74 nym stop-64ns st
11d0: 6f 70 2d 64 6e 73 0a 20 20 20 20 3a 20 63 6f 6d op-dns. : com
11e0: 70 69 6c 65 2d 70 75 73 68 6c 6f 63 61 6c 2d 36 pile-pushlocal-6
11f0: 34 20 28 20 61 2d 61 64 64 72 20 2d 2d 20 29 20 4 ( a-addr -- )
1200: 28 20 72 75 6e 2d 74 69 6d 65 3a 20 77 31 20 77 ( run-time: w1 w
1210: 32 20 2d 2d 20 29 0a 09 6c 6f 63 61 6c 73 2d 73 2 -- )..locals-s
1220: 69 7a 65 20 40 20 61 6c 69 67 6e 6c 70 2d 77 20 ize @ alignlp-w
1230: 63 65 6c 6c 2b 20 63 65 6c 6c 2b 20 64 75 70 20 cell+ cell+ dup
1240: 6c 6f 63 61 6c 73 2d 73 69 7a 65 20 21 0a 09 73 locals-size !..s
1250: 77 61 70 20 21 0a 09 70 6f 73 74 70 6f 6e 65 20 wap !..postpone
1260: 3e 6c 20 70 6f 73 74 70 6f 6e 65 20 3e 6c 20 3b >l postpone >l ;
1270: 0a 20 20 20 20 61 6c 73 6f 20 6c 6f 63 61 6c 73 . also locals
1280: 2d 74 79 70 65 73 20 64 65 66 69 6e 69 74 69 6f -types definitio
1290: 6e 73 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 36 ns. synonym 6
12a0: 34 3a 20 64 3a 0a 20 20 20 20 3a 20 36 34 5e 20 4: d:. : 64^
12b0: 28 20 22 6e 61 6d 65 22 20 2d 2d 20 61 2d 61 64 ( "name" -- a-ad
12c0: 64 72 20 78 74 20 29 20 5c 20 6e 65 74 32 6f 20 dr xt ) \ net2o
12d0: 36 34 2d 63 61 72 65 74 0a 09 63 72 65 61 74 65 64-caret..create
12e0: 2d 6c 6f 63 61 6c 0a 09 5b 27 5d 20 63 6f 6d 70 -local..['] comp
12f0: 69 6c 65 2d 70 75 73 68 6c 6f 63 61 6c 2d 36 34 ile-pushlocal-64
1300: 0a 20 20 20 20 20 20 64 6f 65 73 3e 20 28 20 43 . does> ( C
1310: 6f 6d 70 69 6c 61 74 69 6f 6e 3a 20 2d 2d 20 29 ompilation: -- )
1320: 20 28 20 52 75 6e 2d 74 69 6d 65 3a 20 2d 2d 20 ( Run-time: --
1330: 77 20 29 0a 09 70 6f 73 74 70 6f 6e 65 20 6c 61 w )..postpone la
1340: 64 64 72 23 20 40 20 6c 70 2d 6f 66 66 73 65 74 ddr# @ lp-offset
1350: 2c 20 3b 0a 20 20 20 20 70 72 65 76 69 6f 75 73 , ;. previous
1360: 20 64 65 66 69 6e 69 74 69 6f 6e 73 0a 20 20 20 definitions.
1370: 20 27 20 64 75 6d 6d 79 2d 64 69 63 74 20 27 20 ' dummy-dict '
1380: 64 69 63 74 2d 65 78 65 63 75 74 65 20 27 20 6c dict-execute ' l
1390: 6f 63 61 6c 73 2d 74 79 70 65 73 3a 36 34 5e 20 ocals-types:64^
13a0: 77 72 61 70 2d 78 74 20 64 75 6d 6d 79 2d 36 34 wrap-xt dummy-64
13b0: 5e 20 32 64 72 6f 70 0a 20 20 20 20 3a 20 64 75 ^ 2drop. : du
13c0: 6d 69 6e 20 28 20 75 64 31 20 75 64 32 20 2d 2d min ( ud1 ud2 --
13d0: 20 75 64 33 20 29 20 20 32 6f 76 65 72 20 32 6f ud3 ) 2over 2o
13e0: 76 65 72 20 64 75 3e 20 49 46 20 20 32 73 77 61 ver du> IF 2swa
13f0: 70 20 20 54 48 45 4e 20 20 32 64 72 6f 70 20 3b p THEN 2drop ;
1400: 0a 20 20 20 20 3a 20 64 75 6d 61 78 20 28 20 75 . : dumax ( u
1410: 64 31 20 75 64 32 20 2d 2d 20 75 64 33 20 29 20 d1 ud2 -- ud3 )
1420: 20 32 6f 76 65 72 20 32 6f 76 65 72 20 64 75 3c 2over 2over du<
1430: 20 49 46 20 20 32 73 77 61 70 20 20 54 48 45 4e IF 2swap THEN
1440: 20 20 32 64 72 6f 70 20 3b 0a 20 20 20 20 3a 20 2drop ;. :
1450: 36 34 21 40 20 28 20 76 61 6c 75 65 20 61 64 64 64!@ ( value add
1460: 72 20 2d 2d 20 6f 6c 64 2d 76 61 6c 75 65 20 29 r -- old-value )
1470: 20 20 20 3e 72 20 72 40 20 36 34 40 20 36 34 73 >r r@ 64@ 64s
1480: 77 61 70 20 72 3e 20 36 34 21 20 3b 0a 20 20 20 wap r> 64! ;.
1490: 20 3a 20 36 34 6d 69 6e 21 20 28 20 64 20 61 64 : 64min! ( d ad
14a0: 64 72 20 2d 2d 20 29 20 20 3e 72 20 72 40 20 36 dr -- ) >r r@ 6
14b0: 34 40 20 64 6d 69 6e 20 72 3e 20 36 34 21 20 3b 4@ dmin r> 64! ;
14c0: 0a 20 20 20 20 3a 20 36 34 6d 61 78 21 20 28 20 . : 64max! (
14d0: 64 20 61 64 64 72 20 2d 2d 20 29 20 20 3e 72 20 d addr -- ) >r
14e0: 72 40 20 36 34 40 20 64 6d 61 78 20 72 3e 20 36 r@ 64@ dmax r> 6
14f0: 34 21 20 3b 0a 20 20 20 20 3a 20 36 34 75 6d 69 4! ;. : 64umi
1500: 6e 21 20 28 20 6e 20 61 64 64 72 20 2d 2d 20 29 n! ( n addr -- )
1510: 20 20 20 3e 72 20 72 40 20 36 34 40 20 64 75 6d >r r@ 64@ dum
1520: 69 6e 20 72 3e 20 36 34 21 20 3b 0a 20 20 20 20 in r> 64! ;.
1530: 3a 20 36 34 75 6d 61 78 21 20 28 20 6e 20 61 64 : 64umax! ( n ad
1540: 64 72 20 2d 2d 20 29 20 20 20 3e 72 20 72 40 20 dr -- ) >r r@
1550: 36 34 40 20 64 75 6d 69 6e 20 72 3e 20 36 34 21 64@ dumin r> 64!
1560: 20 3b 0a 20 20 20 20 73 79 6e 6f 6e 79 6d 20 62 ;. synonym b
1570: 65 40 20 62 65 2d 75 6c 40 0a 20 20 20 20 73 79 e@ be-ul@. sy
1580: 6e 6f 6e 79 6d 20 62 65 21 20 62 65 2d 6c 21 0a nonym be! be-l!.
1590: 20 20 20 20 3a 20 31 32 38 2b 20 28 20 31 32 38 : 128+ ( 128
15a0: 61 20 31 32 38 62 20 2d 2d 20 31 32 38 63 20 29 a 128b -- 128c )
15b0: 20 5c 20 31 32 38 20 62 69 74 20 61 64 64 69 74 \ 128 bit addit
15c0: 69 6f 6e 0a 09 7b 20 64 3a 20 61 31 20 64 3a 20 ion..{ d: a1 d:
15d0: 61 32 20 64 3a 20 62 31 20 64 3a 20 62 32 20 7d a2 d: b1 d: b2 }
15e0: 0a 09 61 31 20 62 31 20 64 2b 20 61 32 20 62 32 ..a1 b1 d+ a2 b2
15f0: 20 64 2b 20 32 6f 76 65 72 20 61 31 20 64 75 3c d+ 2over a1 du<
1600: 20 73 3e 64 20 64 2d 20 3b 0a 20 20 20 20 3a 20 s>d d- ;. :
1610: 31 32 38 2d 20 28 20 31 32 38 61 20 31 32 38 62 128- ( 128a 128b
1620: 20 2d 2d 20 31 32 38 63 20 29 20 5c 20 31 32 38 -- 128c ) \ 128
1630: 20 62 69 74 20 61 64 64 69 74 69 6f 6e 0a 09 7b bit addition..{
1640: 20 64 3a 20 61 31 20 64 3a 20 61 32 20 64 3a 20 d: a1 d: a2 d:
1650: 62 31 20 64 3a 20 62 32 20 7d 0a 09 61 31 20 62 b1 d: b2 }..a1 b
1660: 31 20 64 2d 20 61 32 20 62 32 20 64 2d 20 32 6f 1 d- a2 b2 d- 2o
1670: 76 65 72 20 61 31 20 64 75 3e 20 73 3e 64 20 64 ver a1 du> s>d d
1680: 2b 20 3b 0a 5b 54 48 45 4e 5d 0a 5c 20 69 6e 64 + ;.[THEN].\ ind
1690: 65 70 65 6e 64 65 6e 74 20 6f 66 20 63 65 6c 6c ependent of cell
16a0: 20 73 69 7a 65 2c 20 75 73 69 6e 67 20 64 66 6c size, using dfl
16b0: 6f 61 74 73 3a 0a 73 79 6e 6f 6e 79 6d 20 36 34 oats:.synonym 64
16c0: 73 20 64 66 6c 6f 61 74 73 0a 73 79 6e 6f 6e 79 s dfloats.synony
16d0: 6d 20 36 34 27 2b 20 64 66 6c 6f 61 74 2b 0a 73 m 64'+ dfloat+.s
16e0: 79 6e 6f 6e 79 6d 20 36 34 61 6c 69 67 6e 65 64 ynonym 64aligned
16f0: 20 64 66 61 6c 69 67 6e 65 64 0a 73 79 6e 6f 6e dfaligned.synon
1700: 79 6d 20 36 34 66 69 65 6c 64 3a 20 64 66 66 69 ym 64field: dffi
1710: 65 6c 64 3a 0a 3a 20 78 36 34 2e 20 28 20 36 34 eld:.: x64. ( 64
1720: 6e 20 2d 2d 20 29 20 5b 27 5d 20 75 36 34 2e 20 n -- ) ['] u64.
1730: 24 31 30 20 62 61 73 65 2d 65 78 65 63 75 74 65 $10 base-execute
1740: 20 3b 0a 3a 20 6c 65 2d 31 32 38 40 20 28 20 61 ;.: le-128@ ( a
1750: 64 64 72 20 2d 2d 20 64 20 29 0a 20 20 20 20 64 ddr -- d ). d
1760: 75 70 20 3e 72 20 6c 65 2d 36 34 40 20 72 3e 20 up >r le-64@ r>
1770: 36 34 27 2b 20 6c 65 2d 36 34 40 20 3b 0a 3a 20 64'+ le-64@ ;.:
1780: 6c 65 2d 31 32 38 21 20 28 20 64 20 61 64 64 72 le-128! ( d addr
1790: 20 2d 2d 20 29 0a 20 20 20 20 64 75 70 20 3e 72 -- ). dup >r
17a0: 20 36 34 27 2b 20 6c 65 2d 36 34 21 20 72 3e 20 64'+ le-64! r>
17b0: 6c 65 2d 36 34 21 20 3b 0a 3a 20 62 65 2d 31 32 le-64! ;.: be-12
17c0: 38 40 20 28 20 61 64 64 72 20 2d 2d 20 64 20 29 8@ ( addr -- d )
17d0: 0a 20 20 20 20 64 75 70 20 3e 72 20 36 34 27 2b . dup >r 64'+
17e0: 20 62 65 2d 36 34 40 20 72 3e 20 62 65 2d 36 34 be-64@ r> be-64
17f0: 40 20 3b 0a 3a 20 62 65 2d 31 32 38 21 20 28 20 @ ;.: be-128! (
1800: 64 20 61 64 64 72 20 2d 2d 20 29 0a 20 20 20 20 d addr -- ).
1810: 64 75 70 20 3e 72 20 62 65 2d 36 34 21 20 72 3e dup >r be-64! r>
1820: 20 36 34 27 2b 20 62 65 2d 36 34 21 20 3b 0a 3a 64'+ be-64! ;.:
1830: 20 36 34 3e 31 32 38 20 28 20 36 34 20 2d 2d 20 64>128 ( 64 --
1840: 31 32 38 20 29 20 36 34 64 75 70 20 36 34 2d 30 128 ) 64dup 64-0
1850: 3c 20 6e 3e 36 34 20 3b 0a 43 72 65 61 74 65 20 < n>64 ;.Create
1860: 36 34 21 2d 74 61 62 6c 65 20 27 20 36 34 21 20 64!-table ' 64!
1870: 2c 20 27 20 36 34 2b 21 20 2c 0a 31 20 36 34 73 , ' 64+! ,.1 64s
1880: 20 27 20 36 34 61 6c 69 67 6e 65 64 20 27 20 36 ' 64aligned ' 6
1890: 34 40 20 36 34 21 2d 74 61 62 6c 65 20 77 72 61 4@ 64!-table wra
18a0: 70 2b 76 61 6c 75 65 3a 20 36 34 76 61 6c 75 65 p+value: 64value
18b0: 3a 20 28 20 75 31 20 22 6e 61 6d 65 22 20 2d 2d : ( u1 "name" --
18c0: 20 75 32 20 29 0a u2 ).