afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ From: John Hayes S1I
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ Subject: core.fr
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ Date: Mon, 27 Nov 95 13:10
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ (C) 1995 JOHNS HOPKINS UNIVERSITY / APPLIED PHYSICS LABORATORY
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ MAY BE DISTRIBUTED FREELY AS LONG AS THIS COPYRIGHT NOTICE REMAINS.
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ VERSION 1.2
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ THIS PROGRAM TESTS THE CORE WORDS OF AN ANS FORTH SYSTEM.
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ THE PROGRAM ASSUMES A TWO'S COMPLEMENT IMPLEMENTATION WHERE
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ THE RANGE OF SIGNED NUMBERS IS -2^(N-1) ... 2^(N-1)-1 AND
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ THE RANGE OF UNSIGNED NUMBERS IS 0 ... 2^(N)-1.
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ I HAVEN'T FIGURED OUT HOW TO TEST KEY, QUIT, ABORT, OR ABORT"...
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ I ALSO HAVEN'T THOUGHT OF A WAY TO TEST ENVIRONMENT?...
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING CORE WORDS
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeHEX
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING BASIC ASSUMPTIONS
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -> } \ START WITH CLEAN SLATE
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome( TEST IF ANY BITS ARE SET; ANSWER IN BASE 1 )
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : BITSSET? IF 0 0 ELSE 0 THEN ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 BITSSET? -> 0 } ( ZERO IS ALL BITS CLEAR )
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 BITSSET? -> 0 0 } ( OTHER NUMBER HAVE AT LEAST ONE BIT )
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 BITSSET? -> 0 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING BOOLEANS: INVERT AND OR XOR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 AND -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 1 AND -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 0 AND -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 1 AND -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 INVERT 1 AND -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 INVERT 1 AND -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome0 CONSTANT 0S
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome0 INVERT CONSTANT 1S
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0S INVERT -> 1S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1S INVERT -> 0S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0S 0S AND -> 0S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0S 1S AND -> 0S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1S 0S AND -> 0S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1S 1S AND -> 1S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0S 0S OR -> 0S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0S 1S OR -> 1S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1S 0S OR -> 1S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1S 1S OR -> 1S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0S 0S XOR -> 0S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0S 1S XOR -> 1S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1S 0S XOR -> 1S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1S 1S XOR -> 0S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING 2* 2/ LSHIFT RSHIFT
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome( WE TRUST 1S, INVERT, AND BITSSET?; WE WILL CONFIRM RSHIFT LATER )
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome1S 1 RSHIFT INVERT CONSTANT MSB
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MSB BITSSET? -> 0 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0S 2* -> 0S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2* -> 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 4000 2* -> 8000 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1S 2* 1 XOR -> 1S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MSB 2* -> 0S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0S 2/ -> 0S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2/ -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 4000 2/ -> 2000 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1S 2/ -> 1S } \ MSB PROPOGATED
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1S 1 XOR 2/ -> 1S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MSB 2/ MSB AND -> MSB }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 0 LSHIFT -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 1 LSHIFT -> 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 LSHIFT -> 4 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 F LSHIFT -> 8000 } \ BIGGEST GUARANTEED SHIFT
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1S 1 LSHIFT 1 XOR -> 1S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MSB 1 LSHIFT -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 0 RSHIFT -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 1 RSHIFT -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 1 RSHIFT -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 4 2 RSHIFT -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 8000 F RSHIFT -> 1 } \ BIGGEST
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MSB 1 RSHIFT MSB AND -> 0 } \ RSHIFT ZERO FILLS MSBS
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MSB 1 RSHIFT 2* -> MSB }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING COMPARISONS: 0= = 0< < > U< MIN MAX
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome0 INVERT CONSTANT MAX-UINT
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome0 INVERT 1 RSHIFT CONSTANT MAX-INT
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome0 INVERT 1 RSHIFT INVERT CONSTANT MIN-INT
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome0 INVERT 1 RSHIFT CONSTANT MID-UINT
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome0 INVERT 1 RSHIFT INVERT CONSTANT MID-UINT+1
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome0S CONSTANT <FALSE>
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome1S CONSTANT <TRUE>
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0= -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 0= -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 0= -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 0= -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-UINT 0= -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT 0= -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT 0= -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 = -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 1 = -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 -1 = -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 0 = -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 0 = -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 1 = -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 -1 = -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0< -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 0< -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT 0< -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 0< -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT 0< -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 1 < -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 < -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 0 < -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 1 < -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT 0 < -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT MAX-INT < -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 MAX-INT < -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 < -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 1 < -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 0 < -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 1 < -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 -1 < -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 -1 < -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 MIN-INT < -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT MIN-INT < -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT 0 < -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 1 > -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 > -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 0 > -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 1 > -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT 0 > -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT MAX-INT > -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 MAX-INT > -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 > -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 1 > -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 0 > -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 1 > -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 -1 > -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 -1 > -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 MIN-INT > -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT MIN-INT > -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT 0 > -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 1 U< -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 U< -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 MID-UINT U< -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 MAX-UINT U< -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MID-UINT MAX-UINT U< -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 U< -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 1 U< -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 0 U< -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 1 U< -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MID-UINT 0 U< -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-UINT 0 U< -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-UINT MID-UINT U< -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 1 MIN -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 MIN -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 0 MIN -> -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 1 MIN -> -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT 0 MIN -> MIN-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT MAX-INT MIN -> MIN-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 MAX-INT MIN -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 MIN -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 1 MIN -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 0 MIN -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 1 MIN -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 -1 MIN -> -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 -1 MIN -> -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 MIN-INT MIN -> MIN-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT MIN-INT MIN -> MIN-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT 0 MIN -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 1 MAX -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 MAX -> 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 0 MAX -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 1 MAX -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT 0 MAX -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT MAX-INT MAX -> MAX-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 MAX-INT MAX -> MAX-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 MAX -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 1 MAX -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 0 MAX -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 1 MAX -> 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 -1 MAX -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 -1 MAX -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 MIN-INT MAX -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT MIN-INT MAX -> MAX-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT 0 MAX -> MAX-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING STACK OPS: 2DROP 2DUP 2OVER 2SWAP ?DUP DEPTH DROP DUP OVER ROT SWAP
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 2DROP -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 2DUP -> 1 2 1 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 3 4 2OVER -> 1 2 3 4 1 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 3 4 2SWAP -> 3 4 1 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 ?DUP -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 ?DUP -> 1 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 ?DUP -> -1 -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ DEPTH -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 DEPTH -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 1 DEPTH -> 0 1 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 DROP -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 DROP -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 DUP -> 1 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 OVER -> 1 2 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 3 ROT -> 2 3 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 SWAP -> 2 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING >R R> R@
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GR1 >R R> ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GR2 >R R@ R> DROP ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 123 GR1 -> 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 123 GR2 -> 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1S GR1 -> 1S } ( RETURN STACK HOLDS CELLS )
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING ADD/SUBTRACT: + - 1+ 1- ABS NEGATE
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 5 + -> 5 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 5 0 + -> 5 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 -5 + -> -5 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -5 0 + -> -5 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 + -> 3 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 -2 + -> -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 2 + -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 -2 + -> -3 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 1 + -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MID-UINT 1 + -> MID-UINT+1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 5 - -> -5 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 5 0 - -> 5 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 -5 - -> 5 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -5 0 - -> -5 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 - -> -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 -2 - -> 3 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 2 - -> -3 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 -2 - -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 1 - -> -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MID-UINT+1 1 - -> MID-UINT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 1+ -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 1+ -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 1+ -> 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MID-UINT 1+ -> MID-UINT+1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 1- -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 1- -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 1- -> -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MID-UINT+1 1- -> MID-UINT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 NEGATE -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 NEGATE -> -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 NEGATE -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 NEGATE -> -2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 NEGATE -> 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 ABS -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 ABS -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 ABS -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT ABS -> MID-UINT+1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING MULTIPLY: S>D * M* UM*
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 S>D -> 0 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 S>D -> 1 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 S>D -> 2 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 S>D -> -1 -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 S>D -> -2 -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT S>D -> MIN-INT -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT S>D -> MAX-INT 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 M* -> 0 S>D }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 1 M* -> 0 S>D }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 0 M* -> 0 S>D }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 M* -> 2 S>D }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 1 M* -> 2 S>D }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 3 3 M* -> 9 S>D }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -3 3 M* -> -9 S>D }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 3 -3 M* -> -9 S>D }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -3 -3 M* -> 9 S>D }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 MIN-INT M* -> 0 S>D }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 MIN-INT M* -> MIN-INT S>D }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 MIN-INT M* -> 0 1S }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 MAX-INT M* -> 0 S>D }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 MAX-INT M* -> MAX-INT S>D }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 MAX-INT M* -> MAX-INT 1 LSHIFT 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT MIN-INT M* -> 0 MSB 1 RSHIFT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT MIN-INT M* -> MSB MSB 2/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT MAX-INT M* -> 1 MSB 2/ INVERT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 * -> 0 } \ TEST IDENTITIES
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 1 * -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 0 * -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 * -> 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 1 * -> 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 3 3 * -> 9 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -3 3 * -> -9 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 3 -3 * -> -9 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -3 -3 * -> 9 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MID-UINT+1 1 RSHIFT 2 * -> MID-UINT+1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MID-UINT+1 2 RSHIFT 4 * -> MID-UINT+1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MID-UINT+1 1 RSHIFT MID-UINT+1 OR 2 * -> MID-UINT+1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 UM* -> 0 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 1 UM* -> 0 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 0 UM* -> 0 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 UM* -> 2 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 1 UM* -> 2 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 3 3 UM* -> 9 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MID-UINT+1 1 RSHIFT 2 UM* -> MID-UINT+1 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MID-UINT+1 2 UM* -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MID-UINT+1 4 UM* -> 0 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1S 2 UM* -> 1S 1 LSHIFT 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-UINT MAX-UINT UM* -> 1 1 INVERT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING DIVIDE: FM/MOD SM/REM UM/MOD */ */MOD / /MOD MOD
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 S>D 1 FM/MOD -> 0 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 S>D 1 FM/MOD -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 S>D 1 FM/MOD -> 0 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 S>D 1 FM/MOD -> 0 -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 S>D 1 FM/MOD -> 0 -2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 S>D -1 FM/MOD -> 0 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 S>D -1 FM/MOD -> 0 -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 S>D -1 FM/MOD -> 0 -2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 S>D -1 FM/MOD -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 S>D -1 FM/MOD -> 0 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 S>D 2 FM/MOD -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 S>D -1 FM/MOD -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 S>D -2 FM/MOD -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 7 S>D 3 FM/MOD -> 1 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 7 S>D -3 FM/MOD -> -2 -3 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -7 S>D 3 FM/MOD -> 2 -3 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -7 S>D -3 FM/MOD -> -1 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT S>D 1 FM/MOD -> 0 MAX-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT S>D 1 FM/MOD -> 0 MIN-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT S>D MAX-INT FM/MOD -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT S>D MIN-INT FM/MOD -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1S 1 4 FM/MOD -> 3 MAX-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 MIN-INT M* 1 FM/MOD -> 0 MIN-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 MIN-INT M* MIN-INT FM/MOD -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 MIN-INT M* 2 FM/MOD -> 0 MIN-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 MIN-INT M* MIN-INT FM/MOD -> 0 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 MAX-INT M* 1 FM/MOD -> 0 MAX-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 MAX-INT M* MAX-INT FM/MOD -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 MAX-INT M* 2 FM/MOD -> 0 MAX-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 MAX-INT M* MAX-INT FM/MOD -> 0 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT MIN-INT M* MIN-INT FM/MOD -> 0 MIN-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT MAX-INT M* MIN-INT FM/MOD -> 0 MAX-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT MAX-INT M* MAX-INT FM/MOD -> 0 MIN-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT MAX-INT M* MAX-INT FM/MOD -> 0 MAX-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 S>D 1 SM/REM -> 0 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 S>D 1 SM/REM -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 S>D 1 SM/REM -> 0 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 S>D 1 SM/REM -> 0 -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 S>D 1 SM/REM -> 0 -2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 S>D -1 SM/REM -> 0 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 S>D -1 SM/REM -> 0 -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 S>D -1 SM/REM -> 0 -2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 S>D -1 SM/REM -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 S>D -1 SM/REM -> 0 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 S>D 2 SM/REM -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 S>D -1 SM/REM -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 S>D -2 SM/REM -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 7 S>D 3 SM/REM -> 1 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 7 S>D -3 SM/REM -> 1 -2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -7 S>D 3 SM/REM -> -1 -2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -7 S>D -3 SM/REM -> -1 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT S>D 1 SM/REM -> 0 MAX-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT S>D 1 SM/REM -> 0 MIN-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT S>D MAX-INT SM/REM -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT S>D MIN-INT SM/REM -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1S 1 4 SM/REM -> 3 MAX-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 MIN-INT M* 2 SM/REM -> 0 MIN-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 MIN-INT M* MIN-INT SM/REM -> 0 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 MAX-INT M* 2 SM/REM -> 0 MAX-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 MAX-INT M* MAX-INT SM/REM -> 0 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT MIN-INT M* MIN-INT SM/REM -> 0 MIN-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT MAX-INT M* MIN-INT SM/REM -> 0 MAX-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT MAX-INT M* MAX-INT SM/REM -> 0 MIN-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT MAX-INT M* MAX-INT SM/REM -> 0 MAX-INT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 1 UM/MOD -> 0 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 0 1 UM/MOD -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 0 2 UM/MOD -> 1 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 3 0 2 UM/MOD -> 1 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-UINT 2 UM* 2 UM/MOD -> 0 MAX-UINT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-UINT 2 UM* MAX-UINT UM/MOD -> 0 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-UINT MAX-UINT UM* MAX-UINT UM/MOD -> 0 MAX-UINT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: IFFLOORED
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome [ -3 2 / -2 = INVERT ] LITERAL IF POSTPONE \ THEN ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: IFSYM
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome [ -3 2 / -1 = INVERT ] LITERAL IF POSTPONE \ THEN ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ THE SYSTEM MIGHT DO EITHER FLOORED OR SYMMETRIC DIVISION.
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ SINCE WE HAVE ALREADY TESTED M*, FM/MOD, AND SM/REM WE CAN USE THEM IN TEST.
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeIFFLOORED : T/MOD >R S>D R> FM/MOD ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeIFFLOORED : T/ T/MOD SWAP DROP ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeIFFLOORED : TMOD T/MOD DROP ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeIFFLOORED : T*/MOD >R M* R> FM/MOD ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeIFFLOORED : T*/ T*/MOD SWAP DROP ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeIFSYM : T/MOD >R S>D R> SM/REM ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeIFSYM : T/ T/MOD SWAP DROP ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeIFSYM : TMOD T/MOD DROP ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeIFSYM : T*/MOD >R M* R> SM/REM ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeIFSYM : T*/ T*/MOD SWAP DROP ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 1 /MOD -> 0 1 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 1 /MOD -> 1 1 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 1 /MOD -> 2 1 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 1 /MOD -> -1 1 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 1 /MOD -> -2 1 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 -1 /MOD -> 0 -1 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 -1 /MOD -> 1 -1 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 -1 /MOD -> 2 -1 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 -1 /MOD -> -1 -1 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 -1 /MOD -> -2 -1 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 2 /MOD -> 2 2 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 -1 /MOD -> -1 -1 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 -2 /MOD -> -2 -2 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 7 3 /MOD -> 7 3 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 7 -3 /MOD -> 7 -3 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -7 3 /MOD -> -7 3 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -7 -3 /MOD -> -7 -3 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT 1 /MOD -> MAX-INT 1 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT 1 /MOD -> MIN-INT 1 T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT MAX-INT /MOD -> MAX-INT MAX-INT T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT MIN-INT /MOD -> MIN-INT MIN-INT T/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 1 / -> 0 1 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 1 / -> 1 1 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 1 / -> 2 1 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 1 / -> -1 1 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 1 / -> -2 1 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 -1 / -> 0 -1 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 -1 / -> 1 -1 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 -1 / -> 2 -1 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 -1 / -> -1 -1 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 -1 / -> -2 -1 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 2 / -> 2 2 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 -1 / -> -1 -1 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 -2 / -> -2 -2 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 7 3 / -> 7 3 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 7 -3 / -> 7 -3 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -7 3 / -> -7 3 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -7 -3 / -> -7 -3 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT 1 / -> MAX-INT 1 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT 1 / -> MIN-INT 1 T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT MAX-INT / -> MAX-INT MAX-INT T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT MIN-INT / -> MIN-INT MIN-INT T/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 1 MOD -> 0 1 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 1 MOD -> 1 1 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 1 MOD -> 2 1 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 1 MOD -> -1 1 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 1 MOD -> -2 1 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 -1 MOD -> 0 -1 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 -1 MOD -> 1 -1 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 -1 MOD -> 2 -1 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 -1 MOD -> -1 -1 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 -1 MOD -> -2 -1 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 2 MOD -> 2 2 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 -1 MOD -> -1 -1 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 -2 MOD -> -2 -2 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 7 3 MOD -> 7 3 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 7 -3 MOD -> 7 -3 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -7 3 MOD -> -7 3 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -7 -3 MOD -> -7 -3 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT 1 MOD -> MAX-INT 1 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT 1 MOD -> MIN-INT 1 TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT MAX-INT MOD -> MAX-INT MAX-INT TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT MIN-INT MOD -> MIN-INT MIN-INT TMOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 2 1 */ -> 0 2 1 T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 1 */ -> 1 2 1 T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 2 1 */ -> 2 2 1 T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 2 1 */ -> -1 2 1 T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 2 1 */ -> -2 2 1 T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 2 -1 */ -> 0 2 -1 T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 -1 */ -> 1 2 -1 T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 2 -1 */ -> 2 2 -1 T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 2 -1 */ -> -1 2 -1 T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 2 -1 */ -> -2 2 -1 T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 2 2 */ -> 2 2 2 T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 2 -1 */ -> -1 2 -1 T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 2 -2 */ -> -2 2 -2 T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 7 2 3 */ -> 7 2 3 T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 7 2 -3 */ -> 7 2 -3 T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -7 2 3 */ -> -7 2 3 T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -7 2 -3 */ -> -7 2 -3 T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT 2 MAX-INT */ -> MAX-INT 2 MAX-INT T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT 2 MIN-INT */ -> MIN-INT 2 MIN-INT T*/ }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 2 1 */MOD -> 0 2 1 T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 1 */MOD -> 1 2 1 T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 2 1 */MOD -> 2 2 1 T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 2 1 */MOD -> -1 2 1 T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 2 1 */MOD -> -2 2 1 T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 2 -1 */MOD -> 0 2 -1 T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 2 -1 */MOD -> 1 2 -1 T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 2 -1 */MOD -> 2 2 -1 T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 2 -1 */MOD -> -1 2 -1 T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 2 -1 */MOD -> -2 2 -1 T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 2 2 */MOD -> 2 2 2 T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 2 -1 */MOD -> -1 2 -1 T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -2 2 -2 */MOD -> -2 2 -2 T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 7 2 3 */MOD -> 7 2 3 T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 7 2 -3 */MOD -> 7 2 -3 T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -7 2 3 */MOD -> -7 2 3 T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -7 2 -3 */MOD -> -7 2 -3 T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-INT 2 MAX-INT */MOD -> MAX-INT 2 MAX-INT T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MIN-INT 2 MIN-INT */MOD -> MIN-INT 2 MIN-INT T*/MOD }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING HERE , @ ! CELL+ CELLS C, C@ C! CHARS 2@ 2! ALIGN ALIGNED +! ALLOT
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeHERE 1 ALLOT
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeHERE
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeCONSTANT 2NDA
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeCONSTANT 1STA
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1STA 2NDA U< -> <TRUE> } \ HERE MUST GROW WITH ALLOT
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1STA 1+ -> 2NDA } \ ... BY ONE ADDRESS UNIT
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome( MISSING TEST: NEGATIVE ALLOT )
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeHERE 1 ,
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeHERE 2 ,
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeCONSTANT 2ND
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeCONSTANT 1ST
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1ST 2ND U< -> <TRUE> } \ HERE MUST GROW WITH ALLOT
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1ST CELL+ -> 2ND } \ ... BY ONE CELL
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1ST 1 CELLS + -> 2ND }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1ST @ 2ND @ -> 1 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 5 1ST ! -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1ST @ 2ND @ -> 5 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 6 2ND ! -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1ST @ 2ND @ -> 5 6 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1ST 2@ -> 6 5 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 1 1ST 2! -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1ST 2@ -> 2 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1S 1ST ! 1ST @ -> 1S } \ CAN STORE CELL-WIDE VALUE
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeHERE 1 C,
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeHERE 2 C,
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeCONSTANT 2NDC
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeCONSTANT 1STC
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1STC 2NDC U< -> <TRUE> } \ HERE MUST GROW WITH ALLOT
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1STC CHAR+ -> 2NDC } \ ... BY ONE CHAR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1STC 1 CHARS + -> 2NDC }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1STC C@ 2NDC C@ -> 1 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 3 1STC C! -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1STC C@ 2NDC C@ -> 3 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 4 2NDC C! -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1STC C@ 2NDC C@ -> 3 4 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeALIGN 1 ALLOT HERE ALIGN HERE 3 CELLS ALLOT
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeCONSTANT A-ADDR CONSTANT UA-ADDR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ UA-ADDR ALIGNED -> A-ADDR }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 A-ADDR C! A-ADDR C@ -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1234 A-ADDR ! A-ADDR @ -> 1234 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 123 456 A-ADDR 2! A-ADDR 2@ -> 123 456 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 A-ADDR CHAR+ C! A-ADDR CHAR+ C@ -> 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 3 A-ADDR CELL+ C! A-ADDR CELL+ C@ -> 3 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1234 A-ADDR CELL+ ! A-ADDR CELL+ @ -> 1234 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 123 456 A-ADDR CELL+ 2! A-ADDR CELL+ 2@ -> 123 456 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: BITS ( X -- U )
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 0 SWAP BEGIN DUP WHILE DUP MSB AND IF >R 1+ R> THEN 2* REPEAT DROP ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome( CHARACTERS >= 1 AU, <= SIZE OF CELL, >= 8 BITS )
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 CHARS 1 < -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 CHARS 1 CELLS > -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome( TBD: HOW TO FIND NUMBER OF BITS? )
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome( CELLS >= 1 AU, INTEGRAL MULTIPLE OF CHAR SIZE, >= 16 BITS )
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 CELLS 1 < -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 CELLS 1 CHARS MOD -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1S BITS 10 < -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 1ST ! -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 1ST +! -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1ST @ -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 1ST +! 1ST @ -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING CHAR [CHAR] [ ] BL S"
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ BL -> 20 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ CHAR X -> 58 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ CHAR HELLO -> 48 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GC1 [CHAR] X ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GC2 [CHAR] HELLO ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GC1 -> 58 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GC2 -> 48 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GC3 [ GC1 ] LITERAL ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GC3 -> 58 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GC4 S" XY" ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GC4 SWAP DROP -> 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GC4 DROP DUP C@ SWAP CHAR+ C@ -> 58 59 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING ' ['] FIND EXECUTE IMMEDIATE COUNT LITERAL POSTPONE STATE
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GT1 123 ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ ' GT1 EXECUTE -> 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GT2 ['] GT1 ; IMMEDIATE -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GT2 EXECUTE -> 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeHERE 3 C, CHAR G C, CHAR T C, CHAR 1 C, CONSTANT GT1STRING
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeHERE 3 C, CHAR G C, CHAR T C, CHAR 2 C, CONSTANT GT2STRING
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GT1STRING FIND -> ' GT1 -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GT2STRING FIND -> ' GT2 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome( HOW TO SEARCH FOR NON-EXISTENT WORD? )
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GT3 GT2 LITERAL ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GT3 -> ' GT1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GT1STRING COUNT -> GT1STRING CHAR+ 3 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GT4 POSTPONE GT1 ; IMMEDIATE -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GT5 GT4 ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GT5 -> 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GT6 345 ; IMMEDIATE -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GT7 POSTPONE GT6 ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GT7 -> 345 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GT8 STATE @ ; IMMEDIATE -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GT8 -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GT9 GT8 LITERAL ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GT9 0= -> <FALSE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING IF ELSE THEN BEGIN WHILE REPEAT UNTIL RECURSE
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GI1 IF 123 THEN ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GI2 IF 123 ELSE 234 THEN ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 GI1 -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 GI1 -> 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 GI1 -> 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 GI2 -> 234 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 GI2 -> 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 GI1 -> 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GI3 BEGIN DUP 5 < WHILE DUP 1+ REPEAT ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 GI3 -> 0 1 2 3 4 5 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 4 GI3 -> 4 5 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 5 GI3 -> 5 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 6 GI3 -> 6 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GI4 BEGIN DUP 1+ DUP 5 > UNTIL ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 3 GI4 -> 3 4 5 6 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 5 GI4 -> 5 6 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 6 GI4 -> 6 7 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GI5 BEGIN DUP 2 > WHILE DUP 5 < WHILE DUP 1+ REPEAT 123 ELSE 345 THEN ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 GI5 -> 1 345 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 GI5 -> 2 345 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 3 GI5 -> 3 4 5 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 4 GI5 -> 4 5 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 5 GI5 -> 5 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GI6 ( N -- 0,1,..N ) DUP IF DUP >R 1- RECURSE R> THEN ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 GI6 -> 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 GI6 -> 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 GI6 -> 0 1 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 3 GI6 -> 0 1 2 3 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 4 GI6 -> 0 1 2 3 4 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING DO LOOP +LOOP I J UNLOOP LEAVE EXIT
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GD1 DO I LOOP ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 4 1 GD1 -> 1 2 3 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 -1 GD1 -> -1 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MID-UINT+1 MID-UINT GD1 -> MID-UINT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GD2 DO I -1 +LOOP ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 4 GD2 -> 4 3 2 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 2 GD2 -> 2 1 0 -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MID-UINT MID-UINT+1 GD2 -> MID-UINT+1 MID-UINT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GD3 DO 1 0 DO J LOOP LOOP ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 4 1 GD3 -> 1 2 3 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 -1 GD3 -> -1 0 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MID-UINT+1 MID-UINT GD3 -> MID-UINT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GD4 DO 1 0 DO J LOOP -1 +LOOP ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 4 GD4 -> 4 3 2 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ -1 2 GD4 -> 2 1 0 -1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MID-UINT MID-UINT+1 GD4 -> MID-UINT+1 MID-UINT }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GD5 123 SWAP 0 DO I 4 > IF DROP 234 LEAVE THEN LOOP ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 GD5 -> 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 5 GD5 -> 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 6 GD5 -> 234 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GD6 ( PAT: {0 0},{0 0}{1 0}{1 1},{0 0}{1 0}{1 1}{2 0}{2 1}{2 2} )
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 0 SWAP 0 DO
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome I 1+ 0 DO I J + 3 = IF I UNLOOP I UNLOOP EXIT THEN 1+ LOOP
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome LOOP ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 GD6 -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 GD6 -> 3 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 3 GD6 -> 4 1 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING DEFINING WORDS: : ; CONSTANT VARIABLE CREATE DOES> >BODY
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 123 CONSTANT X123 -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ X123 -> 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : EQU CONSTANT ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ X123 EQU Y123 -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ Y123 -> 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ VARIABLE V1 -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 123 V1 ! -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ V1 @ -> 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : NOP : POSTPONE ; ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ NOP NOP1 NOP NOP2 -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ NOP1 -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ NOP2 -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : DOES1 DOES> @ 1 + ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : DOES2 DOES> @ 2 + ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ CREATE CR1 -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ CR1 -> HERE }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ ' CR1 >BODY -> HERE }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 , -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ CR1 @ -> 1 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ DOES1 -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ CR1 -> 2 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ DOES2 -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ CR1 -> 3 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : WEIRD: CREATE DOES> 1 + DOES> 2 + ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ WEIRD: W1 -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ ' W1 >BODY -> HERE }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ W1 -> HERE 1 + }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ W1 -> HERE 2 + }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING EVALUATE
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GE1 S" 123" ; IMMEDIATE
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GE2 S" 123 1+" ; IMMEDIATE
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GE3 S" : GE4 345 ;" ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GE5 EVALUATE ; IMMEDIATE
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GE1 EVALUATE -> 123 } ( TEST EVALUATE IN INTERP. STATE )
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GE2 EVALUATE -> 124 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GE3 EVALUATE -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GE4 -> 345 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GE6 GE1 GE5 ; -> } ( TEST EVALUATE IN COMPILE STATE )
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GE6 -> 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GE7 GE2 GE5 ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GE7 -> 124 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING SOURCE >IN WORD
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GS1 S" SOURCE" 2DUP EVALUATE
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome >R SWAP >R = R> R> = ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GS1 -> <TRUE> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeVARIABLE SCANS
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: RESCAN? -1 SCANS +! SCANS @ IF 0 >IN ! THEN ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 2 SCANS !
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome345 RESCAN?
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome-> 345 345 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GS2 5 SCANS ! S" 123 RESCAN?" EVALUATE ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GS2 -> 123 123 123 123 123 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GS3 WORD COUNT SWAP C@ ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ BL GS3 HELLO -> 5 CHAR H }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ CHAR " GS3 GOODBYE" -> 7 CHAR G }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ BL GS3
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeDROP -> 0 } \ BLANK LINE RETURN ZERO-LENGTH STRING
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GS4 SOURCE >IN ! DROP ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GS4 123 456
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome-> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING <# # #S #> HOLD SIGN BASE >NUMBER HEX DECIMAL
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: S= \ ( ADDR1 C1 ADDR2 C2 -- T/F ) COMPARE TWO STRINGS.
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome >R SWAP R@ = IF \ MAKE SURE STRINGS HAVE SAME LENGTH
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome R> ?DUP IF \ IF NON-EMPTY STRINGS
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 0 DO
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome OVER C@ OVER C@ - IF 2DROP <FALSE> UNLOOP EXIT THEN
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome SWAP CHAR+ SWAP CHAR+
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome LOOP
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome THEN
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 2DROP <TRUE> \ IF WE GET HERE, STRINGS MATCH
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome ELSE
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome R> DROP 2DROP <FALSE> \ LENGTHS MISMATCH
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome THEN ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GP1 <# 41 HOLD 42 HOLD 0 0 #> S" BA" S= ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GP1 -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GP2 <# -1 SIGN 0 SIGN -1 SIGN 0 0 #> S" --" S= ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GP2 -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GP3 <# 1 0 # # #> S" 01" S= ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GP3 -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GP4 <# 1 0 #S #> S" 1" S= ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GP4 -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome24 CONSTANT MAX-BASE \ BASE 2 .. 36
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: COUNT-BITS
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 0 0 INVERT BEGIN DUP WHILE >R 1+ R> 2* REPEAT DROP ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeCOUNT-BITS 2* CONSTANT #BITS-UD \ NUMBER OF BITS IN UD
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GP5
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome BASE @ <TRUE>
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome MAX-BASE 1+ 2 DO \ FOR EACH POSSIBLE BASE
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome I BASE ! \ TBD: ASSUMES BASE WORKS
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome I 0 <# #S #> S" 10" S= AND
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome LOOP
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome SWAP BASE ! ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GP5 -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GP6
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome BASE @ >R 2 BASE !
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome MAX-UINT MAX-UINT <# #S #> \ MAXIMUM UD TO BINARY
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome R> BASE ! \ S: C-ADDR U
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome DUP #BITS-UD = SWAP
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 0 DO \ S: C-ADDR FLAG
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome OVER C@ [CHAR] 1 = AND \ ALL ONES
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome >R CHAR+ R>
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome LOOP SWAP DROP ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GP6 -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GP7
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome BASE @ >R MAX-BASE BASE !
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome <TRUE>
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome A 0 DO
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome I 0 <# #S #>
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 1 = SWAP C@ I 30 + = AND AND
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome LOOP
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome MAX-BASE A DO
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome I 0 <# #S #>
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 1 = SWAP C@ 41 I A - + = AND AND
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome LOOP
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome R> BASE ! ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GP7 -> <TRUE> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ >NUMBER TESTS
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeCREATE GN-BUF 0 C,
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GN-STRING GN-BUF 1 ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GN-CONSUMED GN-BUF CHAR+ 0 ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GN' [CHAR] ' WORD CHAR+ C@ GN-BUF C! GN-STRING ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 GN' 0' >NUMBER -> 0 0 GN-CONSUMED }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 GN' 1' >NUMBER -> 1 0 GN-CONSUMED }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 1 0 GN' 1' >NUMBER -> BASE @ 1+ 0 GN-CONSUMED }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 GN' -' >NUMBER -> 0 0 GN-STRING } \ SHOULD FAIL TO CONVERT THESE
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 GN' +' >NUMBER -> 0 0 GN-STRING }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 GN' .' >NUMBER -> 0 0 GN-STRING }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: >NUMBER-BASED
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome BASE @ >R BASE ! >NUMBER R> BASE ! ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 GN' 2' 10 >NUMBER-BASED -> 2 0 GN-CONSUMED }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 GN' 2' 2 >NUMBER-BASED -> 0 0 GN-STRING }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 GN' F' 10 >NUMBER-BASED -> F 0 GN-CONSUMED }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 GN' G' 10 >NUMBER-BASED -> 0 0 GN-STRING }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 GN' G' MAX-BASE >NUMBER-BASED -> 10 0 GN-CONSUMED }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 GN' Z' MAX-BASE >NUMBER-BASED -> 23 0 GN-CONSUMED }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GN1 \ ( UD BASE -- UD' LEN ) UD SHOULD EQUAL UD' AND LEN SHOULD BE ZERO.
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome BASE @ >R BASE !
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome <# #S #>
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 0 0 2SWAP >NUMBER SWAP DROP \ RETURN LENGTH ONLY
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome R> BASE ! ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 2 GN1 -> 0 0 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-UINT 0 2 GN1 -> MAX-UINT 0 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-UINT DUP 2 GN1 -> MAX-UINT DUP 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ 0 0 MAX-BASE GN1 -> 0 0 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-UINT 0 MAX-BASE GN1 -> MAX-UINT 0 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ MAX-UINT DUP MAX-BASE GN1 -> MAX-UINT DUP 0 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: GN2 \ ( -- 16 10 )
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome BASE @ >R HEX BASE @ DECIMAL BASE @ R> BASE ! ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GN2 -> 10 A }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING FILL MOVE
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeCREATE FBUF 00 C, 00 C, 00 C,
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeCREATE SBUF 12 C, 34 C, 56 C,
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: SEEBUF FBUF C@ FBUF CHAR+ C@ FBUF CHAR+ CHAR+ C@ ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ FBUF 0 20 FILL -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ SEEBUF -> 00 00 00 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ FBUF 1 20 FILL -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ SEEBUF -> 20 00 00 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ FBUF 3 20 FILL -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ SEEBUF -> 20 20 20 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ FBUF FBUF 3 CHARS MOVE -> } \ BIZARRE SPECIAL CASE
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ SEEBUF -> 20 20 20 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ SBUF FBUF 0 CHARS MOVE -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ SEEBUF -> 20 20 20 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ SBUF FBUF 1 CHARS MOVE -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ SEEBUF -> 12 20 20 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ SBUF FBUF 3 CHARS MOVE -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ SEEBUF -> 12 34 56 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ FBUF FBUF CHAR+ 2 CHARS MOVE -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ SEEBUF -> 12 12 34 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ FBUF CHAR+ FBUF 2 CHARS MOVE -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ SEEBUF -> 12 34 34 }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING OUTPUT: . ." CR EMIT SPACE SPACES TYPE U.
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: OUTPUT-TEST
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome ." YOU SHOULD SEE THE STANDARD GRAPHIC CHARACTERS:" CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 41 BL DO I EMIT LOOP CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 61 41 DO I EMIT LOOP CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 7F 61 DO I EMIT LOOP CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome ." YOU SHOULD SEE 0-9 SEPARATED BY A SPACE:" CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 9 1+ 0 DO I . LOOP CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome ." YOU SHOULD SEE 0-9 (WITH NO SPACES):" CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome [CHAR] 9 1+ [CHAR] 0 DO I 0 SPACES EMIT LOOP CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome ." YOU SHOULD SEE A-G SEPARATED BY A SPACE:" CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome [CHAR] G 1+ [CHAR] A DO I EMIT SPACE LOOP CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome ." YOU SHOULD SEE 0-5 SEPARATED BY TWO SPACES:" CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 5 1+ 0 DO I [CHAR] 0 + EMIT 2 SPACES LOOP CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome ." YOU SHOULD SEE TWO SEPARATE LINES:" CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome S" LINE 1" TYPE CR S" LINE 2" TYPE CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome ." YOU SHOULD SEE THE NUMBER RANGES OF SIGNED AND UNSIGNED NUMBERS:" CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome ." SIGNED: " MIN-INT . MAX-INT . CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome ." UNSIGNED: " 0 U. MAX-UINT U. CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ OUTPUT-TEST -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING INPUT: ACCEPT
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeCREATE ABUF 80 CHARS ALLOT
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: ACCEPT-TEST
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome CR ." PLEASE TYPE UP TO 80 CHARACTERS:" CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome ABUF 80 ACCEPT
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome CR ." RECEIVED: " [CHAR] " EMIT
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome ABUF SWAP TYPE [CHAR] " EMIT CR
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ ACCEPT-TEST -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ------------------------------------------------------------------------
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeTESTING DICTIONARY SEARCH RULES
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ : GDX 123 ; : GDX GDX 234 ; -> }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{ GDX -> 123 234 }