Hex Artifact Content
Not logged in

Artifact bd25c7b7dac6331f7dc938e15300b47d9b50bd4c:


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 ).