1 - Forth Interest Group
1 - Forth Interest Group
1 - Forth Interest Group
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
: UP-STRING (au--)<br />
0 DO DUP C@ UP-CHAR OVER C! CHAR+ LOOP DROP<br />
SEE UP-STRING CR<br />
The third time the file is included:<br />
ANEW Up-Char-Test-Run<br />
1 Up-Char-Test +! CR . ( Test# ) Up-Char-Test CR<br />
CREATE upper-case-map<br />
256 CHARS ALLOT<br />
( Initialize the map to change characters into themselves. )<br />
:: 256 0 DO I upper-case-map I CHARS + C! LOOP ;;<br />
( Replace the lower-case letters with upper-case. )<br />
:: [ CHAR] a 26 BOUNDS DO<br />
I BL XOR upper-case-map I CHARS + C! LOOP<br />
. . , ,<br />
( Convert to upper-case by 'addr + C@' inline. )<br />
: UP-CHAR S" CHARS upper-case-map + C@ " EVALUATE ; IMMEDIATE<br />
: DOWN-CHAR BL XOR UP-CHAR BL XOR ;<br />
( Convert string to upper-case. )<br />
: UP-STRING (au--1<br />
0 DO DUP C@ UP-CHAR OVER C! CHAR+ LOOP DROP<br />
SEE UP-STRING CR<br />
Source Listing<br />
1 LACKING Up-Char-Test VARIABLE Up-Char-Test 0 Up-Char-Test !<br />
3 ANEW Up-Char-Test-Run<br />
/ 5 1 Up-Char-Test +! CR . ( Test# ) Up-Char-Test CR<br />
I<br />
I<br />
7 Up-Char-Test @ 1 = [ IF]<br />
: BETWEEN 1+ WITHIN ; ( x min max -- flag )<br />
11 : UP-CHAR ( c -- C ) DUP [ CHAR] a &CHAR] z BETWEEN BL AND XOR ;<br />
13 SEE WITHIN SEE BETWEEN SEE UP-CHAR<br />
1 15 [ ELSE]<br />
I<br />
17 Up-Char-Test @ 2 = [ IF]<br />
I<br />
19 ( Eliminate nesting UP-CHAR BETWEEN WITHIN )<br />
2 0 : UP-CHAR (c--C)<br />
2 1 S" DUP [ CHAR] a - 26 U< BL AND XOR " EVALUATE<br />
22 ; IMMEDIATE<br />
Continued on page 27 /<br />
<strong>Forth</strong> Dimensions XlWl 29