1 \ @(#) t_strings.fth 97/12/10 1.1
\r
2 \ Test ANS Forth String Word Set
\r
4 \ Copyright 1994 3DO, Phil Burk
\r
6 include? }T{ t_tools.fth
\r
8 marker task-t_string.fth
\r
16 \ ==========================================================
\r
18 T{ 1 2 3 }T{ 1 2 3 }T
\r
21 : STR2 S" Hello World" ;
\r
24 \ ----------------------------------------------------- -TRAILING
\r
25 T{ STR1 -TRAILING }T{ STR1 DROP 5 }T
\r
26 T{ STR2 -TRAILING }T{ STR2 }T
\r
27 T{ STR3 -TRAILING }T{ STR3 }T
\r
29 \ ----------------------------------------------------- /STRING
\r
30 T{ STR2 6 /STRING }T{ STR2 DROP 6 CHARS + STR2 NIP 6 - }T
\r
33 \ ----------------------------------------------------- BLANK
\r
34 : T.COMMA.SEQ ( n -- , lay down N sequential bytes )
\r
37 CREATE T-BLANK-DATA 64 T.COMMA.SEQ
\r
38 T{ T-BLANK-DATA 8 + C@ }T{ 8 }T
\r
39 T-BLANK-DATA 7 + 3 BLANK
\r
40 T{ T-BLANK-DATA 6 + C@ }T{ 6 }T
\r
41 T{ T-BLANK-DATA 7 + C@ }T{ BL }T
\r
42 T{ T-BLANK-DATA 8 + C@ }T{ BL }T
\r
43 T{ T-BLANK-DATA 9 + C@ }T{ BL }T
\r
44 T{ T-BLANK-DATA 10 + C@ }T{ 10 }T
\r
47 \ ----------------------------------------------------- CMOVE
\r
48 : T.COMMA.SEQ ( n -- , lay down N sequential bytes )
\r
51 CREATE T-BLANK-DATA 64 T.COMMA.SEQ
\r
52 T-BLANK-DATA 7 + T-BLANK-DATA 6 + 3 CMOVE
\r
53 T{ T-BLANK-DATA 5 + C@ }T{ 5 }T
\r
54 T{ T-BLANK-DATA 6 + C@ }T{ 7 }T
\r
55 T{ T-BLANK-DATA 7 + C@ }T{ 8 }T
\r
56 T{ T-BLANK-DATA 8 + C@ }T{ 9 }T
\r
57 T{ T-BLANK-DATA 9 + C@ }T{ 9 }T
\r
60 \ ----------------------------------------------------- CMOVE>
\r
61 : T.COMMA.SEQ ( n -- , lay down N sequential bytes )
\r
64 CREATE T-BLANK-DATA 64 T.COMMA.SEQ
\r
65 T{ T-BLANK-DATA 6 + T-BLANK-DATA 7 + 3 CMOVE>
\r
66 T{ T-BLANK-DATA 5 + C@ }T{ 5 }T
\r
67 T{ T-BLANK-DATA 6 + C@ }T{ 6 }T
\r
68 T{ T-BLANK-DATA 7 + C@ }T{ 6 }T
\r
69 T{ T-BLANK-DATA 8 + C@ }T{ 7 }T
\r
70 T{ T-BLANK-DATA 9 + C@ }T{ 8 }T
\r
71 T{ T-BLANK-DATA 10 + C@ }T{ 10 }T
\r
74 \ ----------------------------------------------------- COMPARE
\r
75 T{ : T.COMPARE.1 S" abcd" S" abcd" compare ; t.compare.1 }T{ 0 }T
\r
76 T{ : T.COMPARE.2 S" abcd" S" abcde" compare ; t.compare.2 }T{ -1 }T
\r
77 T{ : T.COMPARE.3 S" abcdef" S" abcde" compare ; t.compare.3 }T{ 1 }T
\r
78 T{ : T.COMPARE.4 S" abGd" S" abcde" compare ; t.compare.4 }T{ -1 }T
\r
79 T{ : T.COMPARE.5 S" abcd" S" aXcde" compare ; t.compare.5 }T{ 1 }T
\r
80 T{ : T.COMPARE.6 S" abGd" S" abcd" compare ; t.compare.6 }T{ -1 }T
\r
81 T{ : T.COMPARE.7 S" World" S" World" compare ; t.compare.7 }T{ 0 }T
\r
84 \ ----------------------------------------------------- SEARCH
\r
85 : STR-SEARCH S" ABCDefghIJKL" ;
\r
86 T{ : T.SEARCH.1 STR-SEARCH S" ABCD" SEARCH ; T.SEARCH.1 }T{ STR-SEARCH TRUE }T
\r
87 T{ : T.SEARCH.2 STR-SEARCH S" efg" SEARCH ; T.SEARCH.2 }T{
\r
88 STR-SEARCH 4 - SWAP 4 CHARS + SWAP TRUE }T
\r
89 T{ : T.SEARCH.3 STR-SEARCH S" IJKL" SEARCH ; T.SEARCH.3 }T{
\r
90 STR-SEARCH DROP 8 CHARS + 4 TRUE }T
\r
91 T{ : T.SEARCH.4 STR-SEARCH STR-SEARCH SEARCH ; T.SEARCH.4 }T{
\r
94 T{ : T.SEARCH.5 STR-SEARCH S" CDex" SEARCH ; T.SEARCH.5 }T{
\r
96 T{ : T.SEARCH.6 STR-SEARCH S" KLM" SEARCH ; T.SEARCH.6 }T{
\r
100 \ ----------------------------------------------------- SLITERAL
\r
101 CREATE FAKE-STRING CHAR H C, CHAR e C, CHAR l C, CHAR l C, CHAR o C,
\r
103 T{ : T.SLITERAL.1 [ FAKE-STRING 5 ] SLITERAL ; T.SLITERAL.1 FAKE-STRING 5 COMPARE
\r