Files
LithosAnanake/capsules/v4/post79.4th
T
rajamesandClaude Opus 5.5 2930349bbf feat(v4.0.0): POST passes and is part of the boot; U* and U/MOD
The boot is now nucleus, forth79.4th, POST, prompt, on both products.

- forth79.4th: U* and U/MOD, the capsule's first colon definitions.  They
  are in the FORTH-79 Required Word Set and neither v3 nor v4 had them.
- post79.4th: 550 cases, 126 of the 130 required words.  443 are v3's with
  v3's result.  The rest follow three rulings (2026-10-05): address-
  dependent cases are checked for count, not value; where v3 departs from
  FORTH-79 the standard's result is expected; words v3 has no case for get
  cases written by hand.  v4/tools/post79_rules.py holds each exception
  with its reason and docs/v4.0.0/POST79.md lists them all.
- every case starts from an empty stack, DECIMAL and FORTH DEFINITIONS
- the boot requires POST's tally line with fail=0

Verified: tests=550 pass=550 fail=0 and identical PARITY lines on hosted
amd64, aarch64 and riscv64 (make -C v4 hosted-check) and on bare metal,
clean qemu with STARFORTH_V4=1, on the same three (logs/20261005-1619xx,
-1621xx, -1625xx).  A U/MOD broken on purpose fails five cases and stops
the boot.  make -C v4 test passes.

Not shown: all words but those two are still assembled, so POST has so far
tested the assembled words.  Nothing was typed at a bare-metal prompt.
Open: PAD 42 OVER ! faults on v4 (D-1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 16:28:01 -04:00

1835 lines
33 KiB
Forth

Block 7000
( post79.4th -- POST for the FORTH-79 Required Word Set on v4. )
( Generated by v4/tools/mkpost.py from v3's POST cases: do not )
( edit. docs/v4.0.0/NUCLEUS.md section 6. )
VARIABLE T# VARIABLE TPASS VARIABLE TFAIL VARIABLE TOPEN
VARIABLE TBAD VARIABLE TWANT VARIABLE TLEN VARIABLE TSUM
VARIABLE TDEP
CREATE TBUF 64 ALLOT CREATE TSTK 16 ALLOT CREATE TNAME 8 ALLOT
0 T# ! 0 TPASS ! 0 TFAIL ! 0 TOPEN !
: TB ( -- baddr ) TBUF 4 * ;
: TN ( -- baddr ) TNAME 4 * ;
( T-EMIT is given every character a case prints: the first 255 )
( are kept, all are counted and summed. )
: T-EMIT ( c -- )
255 AND DUP TSUM @ 31 * + 16777215 AND TSUM !
TLEN @ 255 < IF TB TLEN @ + C! ELSE DROP THEN 1 TLEN +! ;
Block 7001
: T-CLEAR ( i*x -- ) BEGIN DEPTH WHILE DROP REPEAT ;
: T. ( n -- ) 0 <# #S #> TYPE ;
( what a failing case printed, and the stack it left )
: T-SHOW ( -- )
." out<" TB TLEN @ 255 MIN TYPE ." > stack<"
TDEP @ BEGIN DUP WHILE 1- DUP TSTK + @ . REPEAT DROP ." >" ;
( the verdict on the case that is open, if one is )
: T-CLOSE ( -- )
TOPEN @ IF
(CATCH) @ -1 = TWANT @ = 0= IF 1 TBAD ! THEN
TBAD @ IF 1 TFAIL +!
." POST FAIL: " TN COUNT TYPE T-SHOW CR
ELSE 1 TPASS +! THEN
0 TOPEN ! 0 (CATCH) !
THEN ;
Block 7002
( T{ name begin a case: clean stack, decimal, FORTH )
: T{ ( i*x -- ) T-CLOSE T-CLEAR
DECIMAL [COMPILE] FORTH DEFINITIONS
BL WORD COUNT 31 MIN DUP TN C! TN 1+ SWAP CMOVE
1 T# +! 1 TOPEN ! 0 TBAD ! 0 TWANT ! 0 TLEN ! 0 TSUM !
0 TDEP ! 1 (CATCH) ! ;
( T| ... a line of the case, what it prints captured )
: T| ' T-EMIT (EMIT-HOOK) ! ; IMMEDIATE
: T-END ( -- ) 0 (EMIT-HOOK) ! DECIMAL ;
( -> ... the case is over: set its stack aside, top first )
: -> ( i*x -- ) T-END 0
BEGIN DEPTH 1 > WHILE
DUP 16 < IF SWAP OVER TSTK + ! ELSE SWAP DROP 1 TBAD ! THEN
1+ REPEAT
16 MIN TDEP ! ;
Block 7003
( ->ERR the case is over, and must have ended in an error )
: ->ERR ( i*x -- ) T-END -1 TWANT ! T-CLEAR ;
( ... }T the stack the case must have left, in order )
: }T ( i*x -- )
DEPTH TDEP @ = 0= IF 1 TBAD ! T-CLEAR EXIT THEN
0 BEGIN DEPTH 1 > WHILE
SWAP OVER TSTK + @ = 0= IF 1 TBAD ! THEN 1+ REPEAT DROP ;
( n }TD only how many values the case must have left )
: }TD ( n -- ) TDEP @ = 0= IF 1 TBAD ! THEN ;
( len sum T= what the case must have printed )
: T= ( len sum -- ) TSUM @ = 0= IF 1 TBAD ! THEN
TLEN @ = 0= IF 1 TBAD ! THEN ;
Block 7004
( the tally; a failure is an error, which ends the boot )
: T-REPORT ( -- ) T-CLOSE 0 (CATCH) ! DECIMAL
." PARITY:V4_POST tests=" T# @ T. ." pass=" TPASS @ T.
." fail=" TFAIL @ T. CR
TFAIL @ IF -1 NODE-ERROR ! THEN ;
Block 7005
T{ DUP.basic
T| 5 DUP . . CR
-> }T 5 16397428 T=
T{ DUP.zero
T| 0 DUP . . CR
-> }T 5 11775018 T=
T{ DUP.negative
T| -42 DUP . . CR
-> }T 9 15322016 T=
T{ DUP.max_int
T| 2147483647 DUP . . CR
-> }T 23 2334858 T=
T{ DUP.min_int
T| -2147483648 DUP . . CR
-> }T 25 386046 T=
Block 7006
T{ DUP.empty_stack
T| DUP
->ERR
T{ DROP.basic
T| 5 7 DROP . CR
-> }T 3 51935 T=
T{ DROP.zero
T| 42 0 DROP . CR
-> }T 4 1598184 T=
T{ DROP.negative
T| 10 -5 DROP . CR
-> }T 4 1506889 T=
T{ DROP.double_drop
T| 1 2 3 DROP DROP . CR
-> }T 3 48091 T=
Block 7007
T{ DROP.triple_drop
T| 1 2 3 4 DROP DROP DROP . CR
-> }T 3 48091 T=
T{ DROP.sequential
T| 5 DROP 6 DROP 7 . CR
-> }T 3 53857 T=
T{ DROP.single_item
T| 99 DROP DEPTH . CR
-> }T 3 47130 T=
T{ DROP.depth_change
T| DEPTH 1 2 DROP DEPTH SWAP - . CR
-> 0 }T 3 48091 T=
T{ DROP.preserve_depth
T| DEPTH 5 6 DROP DROP DEPTH = . CR
-> }T 3 47130 T=
Block 7008
T{ DROP.max_int
T| 2147483647 DROP DEPTH . CR
-> }T 3 47130 T=
T{ DROP.min_int
T| -2147483648 DROP DEPTH . CR
-> }T 3 47130 T=
T{ DROP.with_dup
T| 5 DUP DROP . CR
-> }T 3 51935 T=
T{ DROP.with_swap
T| 1 2 SWAP DROP . CR
-> }T 3 49052 T=
T{ DROP.complex
T| 1 2 3 ROT DROP SWAP DROP . CR
-> }T 3 50013 T=
Block 7009
T{ DROP.empty_stack
T| DROP
->ERR
T{ SWAP.basic
T| 5 7 SWAP . . CR
-> }T 5 16399350 T=
T{ SWAP.same_values
T| 42 42 SWAP . . CR
-> }T 7 15838026 T=
T{ SWAP.zero_nonzero
T| 0 99 SWAP . . CR
-> }T 6 12996858 T=
T{ SWAP.negative
T| -5 10 SWAP . . CR
-> }T 7 12792257 T=
Block 7010
T{ SWAP.one_item
T| 42 SWAP
->ERR
T{ SWAP.empty_stack
T| SWAP
->ERR
T{ OVER.basic
T| 5 7 OVER . . . CR
-> }T 7 6011851 T=
T{ OVER.zeros
T| 0 0 OVER . . . CR
-> }T 7 7986234 T=
T{ OVER.mixed
T| -1 42 OVER . . . CR
-> }T 10 1455732 T=
Block 7011
T{ OVER.one_item
T| 42 OVER
->ERR
T{ OVER.empty_stack
T| OVER
->ERR
T{ ROT.basic
T| 1 2 3 ROT . . . CR
-> }T 7 9069952 T=
T{ ROT.zeros
T| 0 0 0 ROT . . . CR
-> }T 7 7986234 T=
T{ ROT.mixed
T| -1 0 1 ROT . . . CR
-> }T 8 201263 T=
Block 7012
T{ ROT.two_items
T| 1 2 ROT
->ERR
T{ ROT.one_item
T| 42 ROT
->ERR
T{ ROT.empty_stack
T| ROT
->ERR
T{ DEPTH.empty
T| DEPTH . CR
-> }T 3 47130 T=
T{ DEPTH.one_item
T| 42 DEPTH . CR
-> 42 }T 3 48091 T=
Block 7013
T{ DEPTH.multiple
T| 1 2 3 DEPTH . CR
-> 1 2 3 }T 3 50013 T=
T{ PICK.pick_0
T| 1 2 3 0 PICK . CR
->ERR
T{ PICK.pick_1
T| 1 2 3 1 PICK . CR
-> 1 2 3 }T 3 50013 T=
T{ PICK.pick_2
T| 1 2 3 2 PICK . CR
-> 1 2 3 }T 3 49052 T=
T{ ROLL.roll_1
T| 1 2 3 1 ROLL . . . CR
-> }T 7 4767936 T=
Block 7014
T{ ROLL.roll_2
T| 1 2 3 2 ROLL . . . CR
-> }T 7 7380224 T=
T{ ?DUP.nonzero
T| 42 ?DUP . . CR
-> }T 7 15838026 T=
T{ ?DUP.negative
T| -5 ?DUP . . CR
-> }T 7 12677898 T=
T{ ?DUP.zero
T| 0 ?DUP DEPTH . CR
-> 0 }T 3 48091 T=
T{ ?DUP.empty_stack
T| ?DUP
->ERR
Block 7015
T{ >R.basic
T| : RS1 42 >R R@ . R> . CR ; RS1
-> }T 7 15838026 T=
T{ >R.zero
T| : RS2 0 >R R@ . R> . CR ; RS2
-> }T 5 11775018 T=
T{ >R.negative
T| : RS3 -123 >R R@ . R> . CR ; RS3
-> }T 11 14101290 T=
T{ >R.multiple
T| : RS4 1 2 >R >R R@ . R> . R@ . R> . CR ; RS4
-> }T 9 12265744 T=
T{ >R.empty_stack
T| >R
->ERR
Block 7016
T{ R>.basic
T| : RS5 42 >R R> . CR ; RS5
-> }T 4 1598184 T=
T{ R>.lifo_order
T| : RS6 1 2 >R >R R> . R> . CR ; RS6
-> }T 5 12700461 T=
T{ R>.empty_rstack
T| R>
->ERR
T{ R@.basic
T| : RS7 42 >R R@ . R> DROP CR ; RS7
-> }T 4 1598184 T=
T{ R@.non_destructive
T| : RS8 99 >R R@ R@ = . R> DROP CR ; RS8
-> }T 4 1388686 T=
Block 7017
T{ R@.empty_rstack
T| R@
->ERR
T{ !.basic
T| 42 HERE ! HERE @ . CR
-> }T 4 1598184 T=
T{ !.zero
T| 0 HERE ! HERE @ . CR
-> }T 3 47130 T=
T{ !.negative
T| -999 HERE ! HERE @ . CR
-> }T 6 529078 T=
T{ !.overwrite
T| 111 HERE ! 222 HERE ! HERE @ . CR
-> }T 5 14160220 T=
Block 7018
T{ !.max_int
T| 2147483647 HERE ! HERE @ . CR
-> }T 12 4848918 T=
T{ !.min_int
T| -2147483648 HERE ! HERE @ . CR
-> }T 13 5383556 T=
T{ !.empty_stack
T| !
->ERR
T{ !.one_item
T| 42 !
->ERR
T{ @.after_store
T| 123 HERE ! HERE @ . CR
-> }T 5 13237660 T=
Block 7019
T{ @.multiple_reads
T| 456 HERE ! HERE @ HERE @ = . CR
-> }T 4 1388686 T=
T{ @.empty_stack
T| @
->ERR
T{ C!.basic
T| 65 HERE C! HERE C@ . CR
-> }T 4 1660649 T=
T{ C!.zero
T| 0 HERE C! HERE C@ . CR
-> }T 3 47130 T=
T{ C!.high_byte
T| 255 HERE C! HERE C@ . CR
-> }T 5 14252476 T=
Block 7020
T{ C!.truncation
T| 256 HERE C! HERE C@ . CR
-> }T 3 47130 T=
T{ C@.after_cstore
T| 97 HERE C! HERE C@ . CR
-> }T 4 1751944 T=
T{ C@.zero_byte
T| 0 HERE C! HERE C@ . CR
-> }T 3 47130 T=
T{ ,.basic
T| 42 , HERE 1 - @ . CR
-> }T 4 1598184 T=
T{ ,.negative
T| -999 , HERE 1 - @ . CR
-> }T 6 529078 T=
Block 7021
T{ HERE.basic
T| HERE HERE = . CR
-> }T 4 1388686 T=
T{ HERE.after_comma
T| HERE 42 , HERE SWAP - 1 CELLS = 0 SWAP /
-> 0 }T 0 0 T=
T{ ALLOT.basic
T| HERE 10 ALLOT HERE SWAP - . CR
-> }T 4 1506889 T=
T{ ALLOT.zero
T| HERE 0 ALLOT HERE SWAP - . CR
-> }T 3 47130 T=
T{ ALLOT.negative
T| HERE -4 ALLOT HERE SWAP - . CR
-> }T 4 1391569 T=
Block 7022
T{ PAD.basic
T| PAD PAD = . CR
-> }T 4 1388686 T=
T{ PAD.different_from_here
T| PAD HERE = . CR
-> }T 3 47130 T=
T{ +!.basic
T| 10 HERE ! 5 HERE +! HERE @ . CR
-> }T 4 1511694 T=
T{ +!.by_zero
T| 42 HERE ! 0 HERE +! HERE @ . CR
-> }T 4 1598184 T=
T{ +!.negative
T| 10 HERE ! -3 HERE +! HERE @ . CR
-> }T 3 53857 T=
Block 7023
T{ +!.accumulate
T| 0 HERE ! 1 HERE +! 2 HERE +! 3 HERE +! HERE @ . CR
-> }T 3 52896 T=
T{ +!.empty_stack
T| +!
->ERR
T{ FILL.basic
T| HERE 8 65 FILL HERE C@ . HERE 1+ C@ . CR
-> }T 7 14524330 T=
T{ FILL.zero_n
T| HERE 0 88 FILL
-> }T 0 0 T=
T{ FILL.zero_byte
T| HERE 4 0 FILL HERE C@ . CR
-> }T 3 47130 T=
Block 7024
T{ FILL.empty_stack
T| FILL
->ERR
T{ MOVE.basic
T| 65 HERE ! 66 HERE 1+ ! HERE HERE 16 + 2 MOVE HERE 16 + @ .
T| HERE 17 + @ . CR
-> }T 7 14525291 T=
T{ MOVE.zero_n
T| HERE HERE 8 + 0 MOVE
-> }T 0 0 T=
T{ MOVE.empty_stack
T| MOVE
->ERR
T{ +.basic
T| 5 7 + . CR
-> }T 4 1508811 T=
Block 7025
T{ +.zero_add
T| 42 0 + . CR
-> }T 4 1598184 T=
T{ +.negative
T| -5 3 + . CR
-> }T 4 1389647 T=
T{ +.both_negative
T| -5 -3 + . CR
-> }T 4 1395413 T=
T{ +.overflow
T| 2147483647 1 + . CR
-> }T 12 4849879 T=
T{ +.underflow
T| -2147483648 -1 + . CR
-> }T 13 5384517 T=
Block 7026
T{ +.empty_stack
T| +
->ERR
T{ +.one_item
T| 42 +
->ERR
T{ -.basic
T| 10 3 - . CR
-> }T 3 53857 T=
T{ -.zero_sub
T| 42 0 - . CR
-> }T 4 1598184 T=
T{ -.from_zero
T| 0 5 - . CR
-> }T 4 1392530 T=
Block 7027
T{ -.negative
T| 5 -3 - . CR
-> }T 3 54818 T=
T{ -.same_values
T| 42 42 - . CR
-> }T 3 47130 T=
T{ -.overflow
T| -2147483648 1 - . CR
-> }T 13 5384517 T=
T{ -.underflow
T| 2147483647 -1 - . CR
-> }T 12 4849879 T=
T{ -.empty_stack
T| -
->ERR
Block 7028
T{ -.one_item
T| 42 -
->ERR
T{ *.basic
T| 6 7 * . CR
-> }T 4 1598184 T=
T{ *.by_zero
T| 42 0 * . CR
-> }T 3 47130 T=
T{ *.by_one
T| 42 1 * . CR
-> }T 4 1598184 T=
T{ *.by_negative
T| 6 -7 * . CR
-> }T 5 9602197 T=
Block 7029
T{ *.negative_negative
T| -6 -7 * . CR
-> }T 4 1598184 T=
T{ *.large_numbers
T| 32767 2 * . CR
-> }T 7 273505 T=
T{ *.overflow
T| 65536 65536 * . CR
-> }T 12 6984600 T=
T{ *.empty_stack
T| *
->ERR
T{ *.one_item
T| 42 *
->ERR
Block 7030
T{ /.basic
T| 15 3 / . CR
-> }T 3 51935 T=
T{ /.by_one
T| 42 1 / . CR
-> }T 4 1598184 T=
T{ /.negative_dividend
T| -15 3 / . CR
-> }T 4 1392530 T=
T{ /.negative_divisor
T| 15 -3 / . CR
-> }T 4 1392530 T=
T{ /.both_negative
T| -15 -3 / . CR
-> }T 3 51935 T=
Block 7031
T{ /.truncation
T| 7 3 / . CR
-> }T 3 49052 T=
T{ /.by_zero
T| 42 0 /
->ERR
T{ /.empty_stack
T| /
->ERR
T{ /.one_item
T| 42 /
->ERR
T{ MOD.basic
T| 17 5 MOD . CR
-> }T 3 49052 T=
Block 7032
T{ MOD.exact_division
T| 15 3 MOD . CR
-> }T 3 47130 T=
T{ MOD.by_one
T| 42 1 MOD . CR
-> }T 3 47130 T=
T{ MOD.negative_dividend
T| -17 5 MOD . CR
-> }T 4 1389647 T=
T{ MOD.negative_divisor
T| 17 -5 MOD . CR
-> }T 3 49052 T=
T{ MOD.small_by_large
T| 3 7 MOD . CR
-> }T 3 50013 T=
Block 7033
T{ MOD.by_zero
T| 42 0 MOD
->ERR
T{ MOD.empty_stack
T| MOD
->ERR
T{ MOD.one_item
T| 42 MOD
->ERR
T{ /MOD.basic
T| 17 5 /MOD . . CR
-> }T 5 14547503 T=
T{ /MOD.exact
T| 15 3 /MOD . . CR
-> }T 5 16392623 T=
Block 7034
T{ /MOD.negative
T| -17 5 /MOD . . CR
-> }T 7 5748361 T=
T{ /MOD.by_zero
T| 42 0 /MOD
->ERR
T{ /MOD.empty_stack
T| /MOD
->ERR
T{ /MOD.one_item
T| 42 /MOD
->ERR
T{ ABS.positive
T| 42 ABS . CR
-> }T 4 1598184 T=
Block 7035
T{ ABS.negative
T| -42 ABS . CR
-> }T 4 1598184 T=
T{ ABS.zero
T| 0 ABS . CR
-> }T 3 47130 T=
T{ ABS.min_int
T| -2147483648 ABS . CR
-> }T 12 4849879 T=
T{ ABS.empty_stack
T| ABS
->ERR
T{ NEGATE.positive
T| 42 NEGATE . CR
-> }T 5 9602197 T=
Block 7036
T{ NEGATE.negative
T| -42 NEGATE . CR
-> }T 4 1598184 T=
T{ NEGATE.zero
T| 0 NEGATE . CR
-> }T 3 47130 T=
T{ NEGATE.min_int
T| -2147483648 NEGATE . CR
-> }T 12 4849879 T=
T{ NEGATE.empty_stack
T| NEGATE
->ERR
T{ MIN.basic
T| 5 3 MIN . CR
-> }T 3 50013 T=
Block 7037
T{ MIN.equal
T| 42 42 MIN . CR
-> }T 4 1598184 T=
T{ MIN.negative
T| -5 -3 MIN . CR
-> }T 4 1392530 T=
T{ MIN.mixed
T| -1 1 MIN . CR
-> }T 4 1388686 T=
T{ MIN.one_item
T| 42 MIN
->ERR
T{ MIN.empty_stack
T| MIN
->ERR
Block 7038
T{ MAX.basic
T| 5 3 MAX . CR
-> }T 3 51935 T=
T{ MAX.equal
T| 42 42 MAX . CR
-> }T 4 1598184 T=
T{ MAX.negative
T| -5 -3 MAX . CR
-> }T 4 1390608 T=
T{ MAX.mixed
T| -1 1 MAX . CR
-> }T 3 48091 T=
T{ MAX.one_item
T| 42 MAX
->ERR
Block 7039
T{ MAX.empty_stack
T| MAX
->ERR
T{ 1+.basic
T| 5 1+ . CR
-> }T 3 52896 T=
T{ 1+.zero
T| 0 1+ . CR
-> }T 3 48091 T=
T{ 1+.negative
T| -1 1+ . CR
-> }T 3 47130 T=
T{ 1+.chain
T| 3 1+ 1+ 1+ . CR
-> }T 3 52896 T=
Block 7040
T{ 1+.overflow
T| 2147483647 1+ . CR
-> }T 12 4849879 T=
T{ 1+.empty_stack
T| 1+
->ERR
T{ 1-.basic
T| 5 1- . CR
-> }T 3 50974 T=
T{ 1-.to_zero
T| 1 1- . CR
-> }T 3 47130 T=
T{ 1-.to_negative
T| 0 1- . CR
-> }T 4 1388686 T=
Block 7041
T{ 1-.chain
T| 6 1- 1- 1- . CR
-> }T 3 50013 T=
T{ 1-.underflow
T| -2147483648 1- . CR
-> }T 13 5384517 T=
T{ 1-.empty_stack
T| 1-
->ERR
T{ 2+.basic
T| 5 2+ . CR
-> }T 3 53857 T=
T{ 2+.zero
T| 0 2+ . CR
-> }T 3 49052 T=
Block 7042
T{ 2+.negative
T| -3 2+ . CR
-> }T 4 1388686 T=
T{ 2+.empty_stack
T| 2+
->ERR
T{ 2-.basic
T| 7 2- . CR
-> }T 3 51935 T=
T{ 2-.zero
T| 2 2- . CR
-> }T 3 47130 T=
T{ 2-.negative
T| 0 2- . CR
-> }T 4 1389647 T=
Block 7043
T{ 2-.empty_stack
T| 2-
->ERR
T{ AND.both_true
T| -1 -1 AND . CR
-> }T 4 1388686 T=
T{ AND.first_false
T| 0 -1 AND . CR
-> }T 3 47130 T=
T{ AND.second_false
T| -1 0 AND . CR
-> }T 3 47130 T=
T{ AND.both_false
T| 0 0 AND . CR
-> }T 3 47130 T=
Block 7044
T{ AND.bitwise
T| 85 51 AND . CR
-> }T 4 1513616 T=
T{ AND.empty_stack
T| AND
->ERR
T{ AND.one_item
T| 42 AND
->ERR
T{ OR.both_true
T| -1 -1 OR . CR
-> }T 4 1388686 T=
T{ OR.first_false
T| 0 -1 OR . CR
-> }T 4 1388686 T=
Block 7045
T{ OR.second_false
T| -1 0 OR . CR
-> }T 4 1388686 T=
T{ OR.both_false
T| 0 0 OR . CR
-> }T 3 47130 T=
T{ OR.bitwise
T| 85 51 OR . CR
-> }T 5 13213635 T=
T{ OR.empty_stack
T| OR
->ERR
T{ OR.one_item
T| 42 OR
->ERR
Block 7046
T{ XOR.both_true
T| -1 -1 XOR . CR
-> }T 3 47130 T=
T{ XOR.first_false
T| 0 -1 XOR . CR
-> }T 4 1388686 T=
T{ XOR.second_false
T| -1 0 XOR . CR
-> }T 4 1388686 T=
T{ XOR.both_false
T| 0 0 XOR . CR
-> }T 3 47130 T=
T{ XOR.bitwise
T| 85 51 XOR . CR
-> }T 5 13177117 T=
Block 7047
T{ XOR.empty_stack
T| XOR
->ERR
T{ XOR.one_item
T| 42 XOR
->ERR
T{ NOT.true
T| -1 NOT . CR
-> }T 3 47130 T=
T{ NOT.false
T| 0 NOT . CR
-> }T 4 1388686 T=
T{ NOT.positive
T| 42 NOT . CR
-> }T 3 47130 T=
Block 7048
T{ NOT.negative
T| -42 NOT . CR
-> }T 3 47130 T=
T{ NOT.empty_stack
T| NOT
->ERR
T{ =.equal
T| 42 42 = . CR
-> }T 4 1388686 T=
T{ =.not_equal
T| 42 43 = . CR
-> }T 3 47130 T=
T{ =.zero_equal
T| 0 0 = . CR
-> }T 4 1388686 T=
Block 7049
T{ =.negative_equal
T| -42 -42 = . CR
-> }T 4 1388686 T=
T{ =.negative_positive
T| -42 42 = . CR
-> }T 3 47130 T=
T{ =.empty_stack
T| =
->ERR
T{ =.one_item
T| 42 =
->ERR
T{ <.less_than
T| 5 7 < . CR
-> }T 4 1388686 T=
Block 7050
T{ <.greater_than
T| 7 5 < . CR
-> }T 3 47130 T=
T{ <.equal
T| 5 5 < . CR
-> }T 3 47130 T=
T{ <.negative_positive
T| -5 5 < . CR
-> }T 4 1388686 T=
T{ <.negative_negative
T| -7 -5 < . CR
-> }T 4 1388686 T=
T{ <.empty_stack
T| <
->ERR
Block 7051
T{ <.one_item
T| 42 <
->ERR
T{ >.greater_than
T| 7 5 > . CR
-> }T 4 1388686 T=
T{ >.less_than
T| 5 7 > . CR
-> }T 3 47130 T=
T{ >.equal
T| 5 5 > . CR
-> }T 3 47130 T=
T{ >.positive_negative
T| 5 -5 > . CR
-> }T 4 1388686 T=
Block 7052
T{ >.negative_negative
T| -5 -7 > . CR
-> }T 4 1388686 T=
T{ >.empty_stack
T| >
->ERR
T{ >.one_item
T| 42 >
->ERR
T{ 0=.zero
T| 0 0= . CR
-> }T 4 1388686 T=
T{ 0=.positive
T| 42 0= . CR
-> }T 3 47130 T=
Block 7053
T{ 0=.negative
T| -42 0= . CR
-> }T 3 47130 T=
T{ 0=.empty_stack
T| 0=
->ERR
T{ 0<.negative
T| -42 0< . CR
-> }T 4 1388686 T=
T{ 0<.zero
T| 0 0< . CR
-> }T 3 47130 T=
T{ 0<.positive
T| 42 0< . CR
-> }T 3 47130 T=
Block 7054
T{ 0<.empty_stack
T| 0<
->ERR
T{ 0>.positive
T| 42 0> . CR
-> }T 4 1388686 T=
T{ 0>.zero
T| 0 0> . CR
-> }T 3 47130 T=
T{ 0>.negative
T| -42 0> . CR
-> }T 3 47130 T=
T{ 0>.empty_stack
T| 0>
->ERR
Block 7055
T{ U<.less
T| 3 5 U< . CR
-> }T 4 1388686 T=
T{ U<.equal
T| 5 5 U< . CR
-> }T 3 47130 T=
T{ U<.greater
T| 7 5 U< . CR
-> }T 3 47130 T=
T{ U<.zero_one
T| 0 1 U< . CR
-> }T 4 1388686 T=
T{ U<.empty_stack
T| U<
->ERR
Block 7056
T{ */.basic
T| 6 7 4 */ . CR
-> }T 4 1506889 T=
T{ */.exact_division
T| 12 5 3 */ . CR
-> }T 4 1536680 T=
T{ */.zero_multiply
T| 0 999 123 */ . CR
-> }T 3 47130 T=
T{ */.by_one
T| 42 5 1 */ . CR
-> }T 5 14128507 T=
T{ */.truncation
T| 7 3 2 */ . CR
-> }T 4 1506889 T=
Block 7057
T{ */.negative_multiply
T| -6 7 4 */ . CR
-> }T 5 9510902 T=
T{ */.negative_divisor
T| 6 7 -4 */ . CR
-> }T 5 9510902 T=
T{ */.div_by_zero
T| 6 7 0 */
->ERR
T{ */.empty_stack
T| */
->ERR
T{ */.two_items
T| 1 2 */
->ERR
Block 7058
T{ */MOD.basic
T| 17 3 5 */MOD . . CR
-> }T 6 5318234 T=
T{ */MOD.exact_division
T| 15 4 3 */MOD . . CR
-> }T 6 391992 T=
T{ */MOD.zero_multiply
T| 0 999 123 */MOD . . CR
-> }T 5 11775018 T=
T{ */MOD.by_one
T| 42 5 1 */MOD . . CR
-> }T 7 4765003 T=
T{ */MOD.remainder
T| 7 8 5 */MOD . . CR
-> }T 6 6241755 T=
Block 7059
T{ */MOD.negative
T| -7 3 4 */MOD . . CR
-> }T 7 12674054 T=
T{ */MOD.div_by_zero
T| 6 7 0 */MOD
->ERR
T{ */MOD.empty_stack
T| */MOD
->ERR
T{ D+.basic
T| 100 200 300 400 D+ . . CR
-> }T 9 6378548 T=
T{ D+.zero_add
T| 42 99 0 0 D+ . . CR
-> }T 7 6471656 T=
Block 7060
T{ D+.negative
T| -100 -200 50 75 D+ . . CR
-> }T 10 13971193 T=
T{ D+.carry
T| 2147483647 0 1 0 D+ . . CR
-> }T 14 4234951 T=
T{ D+.both_negative
T| -100 -200 -300 -400 D+ . . CR
-> }T 11 5003369 T=
T{ D+.three_items
T| 1 2 3 D+
->ERR
T{ D+.empty_stack
T| D+
->ERR
Block 7061
T{ DNEGATE.positive
T| 100 200 DNEGATE . . CR
-> }T 11 13922440 T=
T{ DNEGATE.negative
T| -100 -200 DNEGATE . . CR
-> }T 9 14912460 T=
T{ DNEGATE.zero
T| 0 0 DNEGATE . . CR
-> }T 5 11775018 T=
T{ DNEGATE.max_positive
T| 2147483647 0 DNEGATE . . CR
-> }T 16 11447367 T=
T{ DNEGATE.one_item
T| 42 DNEGATE
->ERR
Block 7062
T{ DNEGATE.empty_stack
T| DNEGATE
->ERR
T{ D<.less_than
T| 100 200 300 400 D< . CR
-> }T 4 1388686 T=
T{ D<.greater_than
T| 300 400 100 200 D< . CR
-> }T 3 47130 T=
T{ D<.equal
T| 100 200 100 200 D< . CR
-> }T 3 47130 T=
T{ D<.negative_positive
T| -100 -1 100 0 D< . CR
-> }T 4 1388686 T=
Block 7063
T{ D<.negative_negative
T| -300 -1 -100 -1 D< . CR
-> }T 4 1388686 T=
T{ D<.high_word_diff
T| 100 200 100 300 D< . CR
-> }T 4 1388686 T=
T{ D<.three_items
T| 1 2 3 D<
->ERR
T{ D<.empty_stack
T| D<
->ERR
T{ BASE.decimal
T| DECIMAL 42 . CR
-> }T 4 1598184 T=
Block 7064
T{ BASE.hex
T| HEX FF . CR
-> }T 4 2153642 T=
T{ BASE.octal
T| OCTAL 52 . CR
-> }T 4 1627975 T=
T{ BASE.base_store
T| 16 BASE ! 255 . CR
-> }T 5 14252476 T=
T{ BASE.base_fetch
T| BASE @ . CR
-> }T 4 1506889 T=
T{ DECIMAL.from_hex
T| HEX FF DECIMAL . CR
-> }T 5 14252476 T=
Block 7065
T{ DECIMAL.from_octal
T| OCTAL 52 DECIMAL . CR
-> }T 4 1598184 T=
T{ DECIMAL.state_persist
T| DECIMAL 42 . CR 42 . CR HEX 42 . CR
-> }T 12 9440440 T=
T{ <#.basic
T| DECIMAL 42 S>D <# #S #> TYPE CR
-> }T 3 51532 T=
T{ <#.empty
T| 0 0 <# #> TYPE CR
-> }T 1 10 T=
T{ <#.negative
T| -42 DUP ABS 0 <# #S ROT SIGN #> TYPE CR
-> }T 4 1392127 T=
Block 7066
T{ #.single_digit
T| 15 0 <# # #> TYPE CR
-> }T 2 1653 T=
T{ #.multiple
T| 15 0 <# # # #> TYPE CR
-> }T 3 48742 T=
T{ #.zero_pad
T| 5 0 <# # # #> TYPE CR
-> }T 3 47781 T=
T{ #S.basic
T| 42 0 <# #S #> TYPE CR
-> }T 3 51532 T=
T{ #S.zero
T| 0 0 <# #S #> TYPE CR
-> }T 2 1498 T=
Block 7067
T{ #S.large
T| 1234567890 0 <# #S #> TYPE CR
-> }T 11 7265487 T=
T{ SIGN.negative
T| -42 DUP ABS 0 <# #S ROT SIGN #> TYPE CR
-> }T 4 1392127 T=
T{ SIGN.positive
T| 42 DUP ABS 0 <# #S ROT SIGN #> TYPE CR
-> }T 3 51532 T=
T{ SIGN.zero
T| 0 DUP ABS 0 <# #S ROT SIGN #> TYPE CR
-> }T 2 1498 T=
T{ #>.normal
T| 42 0 <# #S #> TYPE CR
-> }T 3 51532 T=
Block 7068
T{ #>.empty
T| 0 0 <# #> TYPE CR
-> }T 1 10 T=
T{ #>.stack_effect
T| 42 0 <# #S #> SWAP DROP . CR
-> }T 3 49052 T=
T{ HOLD.basic
T| 42 0 <# 46 HOLD #S #> TYPE CR
-> }T 4 1598618 T=
T{ HOLD.overflow
T| <# 257 HOLD #>
->ERR
T{ COUNT.basic
T| 4 PAD C! PAD COUNT . PAD - . CR
-> }T 5 15470063 T=
Block 7069
T{ COUNT.empty
T| 0 PAD C! PAD COUNT . PAD - . CR
-> }T 5 11775979 T=
T{ COUNT.max_length
T| 255 PAD C! PAD COUNT . PAD - . CR
-> }T 7 6459661 T=
T{ COUNT.string_bounds
T| HERE COUNT SWAP 1- = . CR
-> }T 3 47130 T=
T{ COUNT.empty_stack
T| COUNT
->ERR
T{ -TRAILING.basic
T| HERE S" Test " -TRAILING TYPE CR
-> 1 }TD 6 6975864 T=
Block 7070
T{ -TRAILING.all_spaces
T| HERE S" " -TRAILING TYPE CR
-> 1 }TD 1 10 T=
T{ -TRAILING.no_spaces
T| HERE S" Test" -TRAILING TYPE CR
-> 1 }TD 5 13589912 T=
T{ -TRAILING.empty
T| HERE 0 -TRAILING TYPE CR
-> }T 1 10 T=
T{ CMOVE.basic
T| 65 PAD C! 66 PAD 1+ C! PAD PAD 10 + 2 CMOVE PAD 10 + C@ . PAD
T| 11 + C@ . CR
-> }T 7 14525291 T=
T{ CMOVE.empty
T| HERE HERE 10 + 0 CMOVE
-> }T 0 0 T=
Block 7071
T{ CMOVE.overlap
T| HERE DUP 1+ 5 CMOVE
-> }T 0 0 T=
T{ >IN.initial
T| >IN @ . CR
-> }T 3 55779 T=
T{ >IN.advances
T| : TWIN >IN @ >IN @ - . CR ; TWIN
-> }T 3 47130 T=
T{ ..positive
T| 42 . CR
-> }T 4 1598184 T=
T{ ..negative
T| -42 . CR
-> }T 5 9602197 T=
Block 7072
T{ ..zero
T| 0 . CR
-> }T 3 47130 T=
T{ ..max_int
T| 2147483647 . CR
-> }T 12 4848918 T=
T{ ..min_int
T| -2147483648 . CR
-> }T 13 5383556 T=
T{ ..multiple
T| 1 2 3 . . . CR
-> }T 7 4767936 T=
T{ ..empty_stack
T| .
->ERR
Block 7073
T{ CR.basic
T| 42 . CR 43 . CR
-> }T 8 16061841 T=
T{ CR.multiple
T| CR CR CR
-> }T 3 9930 T=
T{ CR.no_stack_effect
T| DEPTH CR DEPTH = . CR
-> }T 4 345040 T=
T{ CR.after_output
T| 1 2 3 . . . CR
-> }T 7 4767936 T=
T{ SPACE.basic
T| 42 . SPACE 43 . CR
-> }T 8 2824871 T=
Block 7074
T{ SPACE.multiple
T| SPACE SPACE SPACE
-> }T 3 31776 T=
T{ SPACE.no_stack_effect
T| DEPTH SPACE DEPTH = . CR
-> }T 4 1000442 T=
T{ SPACE.with_text
T| 65 EMIT SPACE 66 EMIT CR
-> }T 4 1969223 T=
T{ SPACES.zero
T| 0 SPACES
-> }T 0 0 T=
T{ SPACES.one
T| 1 SPACES
-> }T 1 32 T=
Block 7075
T{ SPACES.multiple
T| 5 SPACES
-> }T 5 13760544 T=
T{ SPACES.large
T| 20 SPACES
-> }T 20 10692608 T=
T{ SPACES.negative
T| -5 SPACES
-> }T 0 0 T=
T{ SPACES.with_output
T| 42 . 3 SPACES 43 . CR
-> }T 10 11278119 T=
T{ SPACES.empty_stack
T| SPACES
->ERR
Block 7076
T{ EMIT.letter_A
T| 65 EMIT CR
-> }T 2 2025 T=
T{ EMIT.letter_Z
T| 90 EMIT CR
-> }T 2 2800 T=
T{ EMIT.digit
T| 48 EMIT CR
-> }T 2 1498 T=
T{ EMIT.space_char
T| 32 EMIT CR
-> }T 2 1002 T=
T{ EMIT.newline
T| 10 EMIT
-> }T 1 10 T=
Block 7077
T{ EMIT.high_ascii
T| 127 EMIT CR
-> }T 2 3947 T=
T{ EMIT.truncation
T| 321 EMIT CR
-> }T 2 2025 T=
T{ EMIT.negative
T| -1 EMIT CR
-> }T 2 7915 T=
T{ EMIT.sequence
T| 72 EMIT 73 EMIT 10 EMIT
-> }T 3 71465 T=
T{ EMIT.empty_stack
T| EMIT
->ERR
Block 7078
T{ TYPE.basic_string
T| 72 PAD C! 105 PAD 1+ C! PAD 2 TYPE CR
-> }T 3 72457 T=
T{ TYPE.empty_string
T| HERE 0 TYPE CR
-> }T 1 10 T=
T{ TYPE.single_char
T| HERE 65 OVER C! 1 TYPE CR
-> }T 2 2025 T=
T{ TYPE.numbers
T| 49 PAD C! 50 PAD 1+ C! PAD 2 TYPE CR
-> }T 3 48649 T=
T{ TYPE.zero_length
T| PAD 0 TYPE
-> }T 0 0 T=
Block 7079
T{ TYPE.one_item
T| PAD TYPE
->ERR
T{ TYPE.empty_stack
T| TYPE
->ERR
T{ COUNT.basic~2
T| 4 PAD C! PAD COUNT . PAD - . CR
-> }T 5 15470063 T=
T{ COUNT.empty~2
T| 0 PAD C! PAD COUNT . PAD - . CR
-> }T 5 11775979 T=
T{ COUNT.max_length~2
T| 255 PAD C! PAD COUNT . PAD - . CR
-> }T 7 6459661 T=
Block 7080
T{ COUNT.zero_addr_plus_one
T| HERE COUNT SWAP 1- = . CR
-> }T 3 47130 T=
T{ COUNT.empty_stack~2
T| COUNT
->ERR
T{ WORD.empty_stack
T| WORD
->ERR
T{ BLOCK.basic
T| 1 BLOCK DUP . CR
-> 1 }TD
T{ BLOCK.zero_block
T| 0 BLOCK
->ERR
Block 7081
T{ BLOCK.large_block
T| 65536 BLOCK
->ERR
T{ BLOCK.negative
T| -1 BLOCK
->ERR
T{ BLOCK.empty_stack
T| BLOCK
->ERR
T{ BUFFER.basic
T| 1 BUFFER DUP . CR
-> 1 }TD
T{ BUFFER.zero_block
T| 0 BUFFER
->ERR
Block 7082
T{ BUFFER.flush_dirty
T| 2 BLOCK 1+ 2 BUFFER
-> 2 }TD 0 0 T=
T{ BUFFER.empty_stack
T| BUFFER
->ERR
T{ UPDATE.basic
T| 1 BLOCK UPDATE
-> 1 }TD 0 0 T=
T{ UPDATE.multiple
T| 1 BLOCK UPDATE UPDATE
-> 1 }TD 0 0 T=
T{ UPDATE.no_block
T| 0 SCR ! UPDATE
-> }T 0 0 T=
Block 7083
T{ SAVE-BUFFERS.basic
T| SAVE-BUFFERS
-> }T 0 0 T=
T{ SAVE-BUFFERS.dirty_blocks
T| 1 BLOCK UPDATE SAVE-BUFFERS
-> 1 }TD 0 0 T=
T{ SAVE-BUFFERS.no_dirty
T| SAVE-BUFFERS
-> }T 0 0 T=
T{ EMPTY-BUFFERS.basic
T| EMPTY-BUFFERS
-> }T 0 0 T=
T{ EMPTY-BUFFERS.after_use
T| 1 BLOCK EMPTY-BUFFERS
-> 1 }TD 0 0 T=
Block 7084
T{ EMPTY-BUFFERS.dirty_blocks
T| 1 BLOCK UPDATE EMPTY-BUFFERS
-> 1 }TD 0 0 T=
T{ LOAD.basic
T| 1 LOAD
-> }T 0 0 T=
T{ LOAD.zero_block
T| 0 LOAD
->ERR
T{ LOAD.nonexistent
T| 9999 LOAD
->ERR
T{ LOAD.empty_stack
T| LOAD
->ERR
Block 7085
T{ LIST.basic
T| 1 LIST
-> 0 }TD
T{ LIST.zero_block
T| 0 LIST
->ERR
T{ LIST.nonexistent
T| 9999 LIST
->ERR
T{ LIST.empty_stack
T| LIST
->ERR
T{ SCR.basic
T| SCR @ . CR
-> }T 3 48091 T=
Block 7086
T{ SCR.after_list
T| 1 LIST SCR @ . CR
-> 0 }TD
T{ SCR.after_load
T| 1 LOAD SCR @ . CR
-> }T 3 48091 T=
T{ HERE.basic~2
T| HERE HERE = . CR
-> }T 4 1388686 T=
T{ HERE.after_comma~2
T| HERE 42 , HERE SWAP - 1 CELLS = 0 SWAP /
-> 0 }T 0 0 T=
T{ HERE.after_c_comma
T| HERE 65 C, HERE SWAP - . CR
-> }T 3 48091 T=
Block 7087
T{ HERE.after_allot
T| HERE 10 ALLOT HERE SWAP - . CR
-> }T 4 1506889 T=
T{ HERE.stability
T| HERE DUP HERE = . CR
-> 1 }TD 4 1388686 T=
T{ ALLOT.basic~2
T| HERE 10 ALLOT HERE SWAP - . CR
-> }T 4 1506889 T=
T{ ALLOT.zero~2
T| HERE 0 ALLOT HERE SWAP - . CR
-> }T 3 47130 T=
T{ ALLOT.negative~2
T| HERE -4 ALLOT HERE SWAP - . CR
-> }T 4 1391569 T=
Block 7088
T{ ALLOT.large
T| HERE 100 ALLOT HERE SWAP - . CR
-> }T 5 13175195 T=
T{ ALLOT.after_use
T| ALIGN HERE 10 ALLOT 42 OVER ! @ . CR
-> }T 4 1598184 T=
T{ ALLOT.empty_stack
T| ALLOT
->ERR
T{ ,.basic~2
T| 42 , HERE 1 CELLS - @ . CR
-> }T 4 1598184 T=
T{ ,.negative~2
T| -999 , HERE 1 CELLS - @ . CR
-> }T 6 529078 T=
Block 7089
T{ ,.zero
T| 0 , HERE 1 CELLS - @ . CR
-> }T 3 47130 T=
T{ ,.max_int
T| 2147483647 , HERE 1 CELLS - @ . CR
-> }T 12 4848918 T=
T{ ,.min_int
T| -2147483648 , HERE 1 CELLS - @ . CR
-> }T 13 5383556 T=
T{ ,.multiple
T| 10 , 20 , HERE 1 CELLS - @ . HERE 1 CELLS - @ . CR
-> }T 7 12227402 T=
T{ ,.empty_stack
T| ,
->ERR
Block 7090
T{ PAD.basic~2
T| PAD PAD = . CR
-> }T 4 1388686 T=
T{ PAD.different_from_here~2
T| PAD HERE = . CR
-> }T 3 47130 T=
T{ PAD.stability
T| PAD DUP PAD = . CR
-> 1 }TD 4 1388686 T=
T{ CREATE.basic
T| CREATE test1 42 , test1 @ . CR
-> }T 4 1598184 T=
T{ CREATE.empty_name
T| CREATE
->ERR
Block 7091
T{ CREATE.redefine_shadows
T| CREATE T 1 , CREATE T 2 , T @ . CR
-> }T 3 49052 T=
T{ CREATE.duplicate
T| CREATE test2 CREATE test2
-> }T 0 0 T=
T{ CREATE.long_name
T| CREATE abcdefghijklmnopqrstuvwxyz
-> }T 0 0 T=
T{ FORGET.basic
T| CREATE temp1 FORGET temp1
-> }T 0 0 T=
T{ IMMEDIATE.basic
T| : test3 42 ; IMMEDIATE test3 . CR
-> }T 4 1598184 T=
Block 7092
T{ IMMEDIATE.already_immediate
T| : test4 43 ; IMMEDIATE IMMEDIATE
-> }T 0 0 T=
T{ FIND.existing
T| FIND DUP . CR
-> 0 }TD
T{ FIND.user_word
T| : test5 44 ; FIND test5 . CR
-> 0 }TD
T{ FIND.nonexistent
T| FIND nonexistent . CR
-> }T 3 47130 T=
T{ FIND.empty
T| FIND
-> 0 }T 0 0 T=
Block 7093
T{ DEFINITIONS.basic
T| FORTH DEFINITIONS
-> }T 0 0 T=
T{ DEFINITIONS.multiple
T| FORTH DEFINITIONS DEFINITIONS
-> }T 0 0 T=
T{ VOCABULARY.basic
T| VOCABULARY TEST-VOC1 TEST-VOC1 DEFINITIONS
-> }T 0 0 T=
T{ VOCABULARY.create_and_switch
T| VOCABULARY MYVOC MYVOC DEFINITIONS CONTEXT @ . CR
-> 0 }TD
T{ VOCABULARY.word_isolation
T| VOCABULARY ISOLATED ISOLATED DEFINITIONS : ISOWORD 99 ; FORTH
T| DEFINITIONS
-> }T 0 0 T=
Block 7094
T{ VOCABULARY.cross_vocab_access
T| VOCABULARY V1 V1 DEFINITIONS : V1WORD 11 ; FORTH V1WORD . CR
->ERR
T{ VOCABULARY.multiple_vocabs
T| VOCABULARY VA VOCABULARY VB VOCABULARY VC VA DEFINITIONS
-> }T 0 0 T=
T{ VOCABULARY.duplicate
T| VOCABULARY TESTVOC VOCABULARY TESTVOC
-> }T 0 0 T=
T{ VOCABULARY.empty_name
T| VOCABULARY
->ERR
T{ FORTH.basic
T| FORTH DEFINITIONS
-> }T 0 0 T=
Block 7095
T{ FORTH.persistence
T| FORTH : TEST1 42 ; TEST1 . CR
-> }T 4 1598184 T=
T{ FORTH.from_other
T| VOCABULARY OTHER-VOC OTHER-VOC FORTH
-> }T 0 0 T=
T{ DEFINITIONS.basic~2
T| FORTH DEFINITIONS
-> }T 0 0 T=
T{ DEFINITIONS.new_vocab
T| VOCABULARY TEST-VOC6 TEST-VOC6 DEFINITIONS
-> }T 0 0 T=
T{ DEFINITIONS.word_creation
T| VOCABULARY TEST-VOC7 TEST-VOC7 DEFINITIONS : TEST2 43 ;
-> }T 0 0 T=
Block 7096
T{ CONTEXT.basic
T| CONTEXT @ . CR
-> 0 }TD
T{ CONTEXT.initial
T| FORTH CONTEXT @ . CR
-> 0 }TD
T{ CURRENT.basic
T| CURRENT @ . CR
-> 0 }TD
T{ CURRENT.after_def
T| VOCABULARY TEST-VOC8 TEST-VOC8 DEFINITIONS CURRENT @ . CR
-> 0 }TD
T{ ABORT.basic
T| ABORT
-> }T 0 0 T=
Block 7097
T{ ABORT.with_data
T| 1 2 3 ABORT DEPTH . CR
-> }T 0 0 T=
T{ ABORT.in_definition_runtime
T| : BAD-WORD ABORT ; 123 BAD-WORD DEPTH . CR
-> }T 0 0 T=
T{ :.basic
T| : TEST1 42 ; TEST1 . CR
-> }T 4 1598184 T=
T{ :.empty_name
T| :
->ERR
T{ ;.alone
T| ;
->ERR
Block 7098
T{ ;.immediate
T| : TEST4 42 ; IMMEDIATE TEST4 . CR
-> }T 4 1598184 T=
T{ CONSTANT.basic
T| 42 CONSTANT MEANING MEANING . CR
-> }T 4 1598184 T=
T{ CONSTANT.zero
T| 0 CONSTANT ZERO ZERO . CR
-> }T 3 47130 T=
T{ CONSTANT.negative
T| -1 CONSTANT MINUS MINUS . CR
-> }T 4 1388686 T=
T{ CONSTANT.empty_stack
T| CONSTANT
->ERR
Block 7099
T{ VARIABLE.basic
T| VARIABLE VAR1 42 VAR1 ! VAR1 @ . CR
-> }T 4 1598184 T=
T{ VARIABLE.multiple
T| VARIABLE VAR2 VARIABLE VAR3
-> }T 0 0 T=
T{ VARIABLE.store_fetch
T| VARIABLE VAR4 -99 VAR4 ! VAR4 @ . CR
-> }T 5 9757879 T=
T{ CREATE.basic~2
T| CREATE OBJ1
-> }T 0 0 T=
T{ CREATE.with_data
T| CREATE OBJ2 42 , OBJ2 @ . CR
-> }T 4 1598184 T=
Block 7100
T{ CREATE.empty_name~2
T| CREATE
->ERR
T{ DOES>.basic
T| : CONST CREATE , DOES> @ ; 42 CONST MEANING MEANING . CR
-> }T 4 1598184 T=
T{ DOES>.multiple
T| : ARRAY CREATE DOES> SWAP CELLS + ; CREATE ARR 10 CELLS ALLOT
-> }T 0 0 T=
T{ DOES>.outside
T| DOES>
->ERR
T{ [.basic
T| : TEST5 [ 42 ] LITERAL ; TEST5 . CR
-> }T 4 1598184 T=
Block 7101
T{ [.outside
T| [
-> }T 0 0 T=
T{ ].nested
T| : TEST6 [ ] 42 ; TEST6 . CR
-> }T 4 1598184 T=
T{ IF.true
T| : TEST1 IF 42 ELSE 24 THEN ; -1 TEST1 . CR
-> }T 4 1598184 T=
T{ IF.false
T| : TEST2 IF 42 ELSE 24 THEN ; 0 TEST2 . CR
-> }T 4 1540524 T=
T{ IF.nested
T| : TEST3 IF IF 1 ELSE 2 THEN ELSE 3 THEN ; -1 -1 TEST3 . CR
-> }T 3 48091 T=
Block 7102
T{ IF.no_else
T| : TEST4 IF 42 THEN ; -1 TEST4 . CR
-> }T 4 1598184 T=
T{ IF.empty_stack
T| IF
->ERR
T{ ELSE.alone
T| ELSE
->ERR
T{ THEN.alone
T| THEN
->ERR
T{ BEGIN.until
T| : TEST5 0 BEGIN 1+ DUP 5 = UNTIL ; TEST5 . CR
-> }T 3 51935 T=
Block 7103
T{ BEGIN.while
T| : TEST6 0 BEGIN DUP 5 < WHILE 1+ REPEAT ; TEST6 . CR
-> }T 3 51935 T=
T{ BEGIN.alone
T| BEGIN
->ERR
T{ UNTIL.basic
T| : TEST8 BEGIN DUP 1- DUP 0= UNTIL ; 5 TEST8 . CR
-> 5 4 3 2 1 }T 3 47130 T=
T{ UNTIL.immediate
T| : TEST9 BEGIN 1 UNTIL ; IMMEDIATE
-> }T 0 0 T=
T{ UNTIL.no_begin
T| UNTIL
->ERR
Block 7104
T{ WHILE.basic
T| : TEST10 BEGIN DUP 5 < WHILE 1+ REPEAT ; 0 TEST10 . CR
-> }T 3 51935 T=
T{ WHILE.zero_times
T| : TEST11 BEGIN DUP 0< WHILE 1+ REPEAT ; 0 TEST11 . CR
-> }T 3 47130 T=
T{ WHILE.no_begin
T| WHILE
->ERR
T{ REPEAT.basic
T| : TEST12 BEGIN DUP 5 < WHILE 1+ REPEAT ; 0 TEST12 . CR
-> }T 3 51935 T=
T{ REPEAT.no_while
T| REPEAT
->ERR
Block 7105
T{ DO.basic
T| : TEST13 5 0 DO I . LOOP ; TEST13 CR
-> }T 11 12528484 T=
T{ DO.negative
T| : TEST14 -1 -5 DO I . LOOP ; TEST14 CR
-> }T 13 11696776 T=
T{ DO.empty
T| : TEST15 0 0 DO LOOP ;
-> }T 0 0 T=
T{ DO.nested
T| : TEST16 3 0 DO 3 0 DO J I + . LOOP LOOP ; TEST16 CR
-> }T 19 14426156 T=
T{ LOOP.basic
T| : TEST20 5 0 DO I . LOOP ; TEST20 CR
-> }T 11 12528484 T=
Block 7106
T{ LOOP.no_do
T| LOOP
->ERR
T{ +LOOP.basic
T| : TEST21 10 0 DO I . 2 +LOOP ; TEST21 CR
-> }T 11 16410222 T=
T{ +LOOP.negative
T| : TEST22 0 10 DO I . -1 +LOOP ; TEST22 CR
-> }T 24 15411990 T=
T{ +LOOP.variable
T| : TEST23 10 0 DO I . DUP +LOOP ; 3 TEST23 CR
-> 3 }T 9 8104156 T=
T{ I.basic
T| : TI 4 0 DO I . LOOP CR ; TI
-> }T 9 7781840 T=
Block 7107
T{ I.single
T| : TI1 1 0 DO I . LOOP CR ; TI1
-> }T 3 47130 T=
T{ I.offset
T| : TI2 5 3 DO I . LOOP CR ; TI2
-> }T 5 14549425 T=
T{ I.in_expr
T| : TI3 3 0 DO I 2 * . LOOP CR ; TI3
-> }T 7 9837120 T=
T{ J.basic
T| : TJ 2 0 DO 3 0 DO J . LOOP LOOP CR ; TJ
-> }T 13 4074221 T=
T{ J.paired
T| : TJ2 2 0 DO 2 0 DO J I + . LOOP LOOP CR ; TJ2
-> }T 9 6857358 T=
Block 7108
T{ EXIT.early_return
T| : TEX 5 EXIT 99 ; TEX . CR
-> }T 3 51935 T=
T{ EXIT.cond_exit_pos
T| : TEX2 DUP 0> IF EXIT THEN NEGATE ; 3 TEX2 . CR
-> }T 3 50013 T=
T{ EXIT.cond_exit_neg
T| : TEX2 DUP 0> IF EXIT THEN NEGATE ; -4 TEX2 . CR
-> }T 3 50974 T=
T{ EXIT.no_skipped
T| : TEX3 1 2 EXIT 3 ; TEX3 . . CR
-> }T 5 13623021 T=
T{ LEAVE.basic
T| : TLV 0 5 0 DO I 3 = IF LEAVE THEN 1+ LOOP ; TLV . CR
-> }T 3 50974 T=
Block 7109
T{ LEAVE.at_start
T| : TLV2 0 5 0 DO LEAVE 1+ LOOP ; TLV2 . CR
-> }T 3 48091 T=
T{ LEAVE.qdloop
T| : TLV3 0 5 0 ?DO I 2 = IF LEAVE THEN 1+ LOOP ; TLV3 . CR
-> }T 3 50013 T=
T{ U*.small
T| 3 4 U* . . CR
-> }T 6 12751803 T=
T{ U*.zero
T| 0 5 U* . . CR
-> }T 5 11775018 T=
T{ U*.full
T| -1 -1 U* 2+ . 1 = . CR
-> }T 6 12631678 T=
Block 7110
T{ U/MOD.small
T| 7 0 2 U/MOD . . CR
-> }T 5 14546542 T=
T{ U/MOD.exact
T| 12 0 4 U/MOD . . CR
-> }T 5 14545581 T=
T{ U/MOD.double
T| 0 1 2 U/MOD 2* . . CR
-> }T 5 11775018 T=
T{ U/MOD.inverse
T| -1 -1 U* -1 U/MOD 1+ . . CR
-> }T 5 11775018 T=
T{ U/MOD.carry
T| -1 -2 -1 U/MOD 1+ . 2+ . CR
-> }T 5 11775018 T=
Block 7111
T{ U/MOD.by_zero
T| 1 0 0 U/MOD
->ERR
T{ ?.basic
T| VARIABLE Q1 42 Q1 ! Q1 ? CR
-> }T 4 1598184 T=
T{ EXECUTE.found
T| : E1 7 ; FIND E1 EXECUTE . CR
-> }T 3 53857 T=
T{ U..small
T| 42 U. CR
-> }T 4 1598184 T=
T{ U..unsigned
T| -1 U. CR
-> }T 22 3892143 T=
Block 7112
T{ CONVERT.digits
T| : C1 0 0 BL WORD CONVERT DROP ; C1 123 . . CR
-> }T 7 9448876 T=
T{ '.found
T| ' DUP 0= . CR
-> }T 3 47130 T=
T{ .".in_definition
T| : Q3 ." hi there" ; Q3 CR
-> }T 9 13319717 T=
T{ LITERAL.basic
T| : Q4 [ 5 ] LITERAL ; Q4 . CR
-> }T 3 51935 T=
T{ STATE.interpreting
T| STATE @ . CR
-> }T 3 47130 T=
Block 7113
T{ STATE.compiling
T| : Q5 STATE @ 0= . ; IMMEDIATE : Q6 Q5 ; CR
-> }T 3 47130 T=
T{ COMPILE.basic
T| : Q7 COMPILE DUP ; IMMEDIATE : Q8 Q7 ; 3 Q8 . . CR
-> }T 5 14548464 T=
T{ [COMPILE].basic
T| : Q9 [COMPILE] IF ; IMMEDIATE : Q10 Q9 1 ELSE 2 THEN ; 0 Q10
T| . -1 Q10 . CR
-> }T 5 13623021 T=
T{ (.comment
T| 1 ( 2 ) 3 . . CR
-> }T 5 14546542 T=
T{ BLK.terminal
T| BLK @ . CR
-> }T 3 47130 T=
Block 7114
T{ 79-STANDARD.present
T| 79-STANDARD
-> }T 0 0 T=
T{ WORD.next_word
T| : W1 BL WORD COUNT TYPE ; W1 HELLO
-> }T 5 1515698 T=
T{ WORD.delimiter
T| : W2 44 WORD COUNT TYPE ; W2 A B,
-> }T 3 63523 T=
T{ WORD.count
T| : W3 BL WORD C@ . ; W3 ABC
-> }T 2 1613 T=
T{ WORD.skips_leading
T| : W4 BL WORD COUNT TYPE ; W4 X
-> }T 1 88 T=
Block 7115
T-REPORT
FORGET T# DECIMAL